summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMilian Wolff <milian.wolff@kdab.com>2013-03-18 17:41:05 +0100
committerPierre Rossi <pierre.rossi@gmail.com>2013-11-01 13:57:49 +0100
commitd1af727765c3b0dbc3dc91e8d672e9c4142b0170 (patch)
tree6f4a1f197c205ac7fd81b15190deda96e005af77 /src
parentb1d0a375185925506e893d3b32cf19a941a73141 (diff)
downloadqtwebchannel-d1af727765c3b0dbc3dc91e8d672e9c4142b0170.tar.gz
Add support for Q_ENUMS access via the web channel.
Enums that are marked by Q_ENUMS in a Q_OBJECT or Q_GADGET are thus accessible in JavaScript via obj.EnumName.EnumKey. Change-Id: Ia3e92da9bc05e06011f250ec8f5cf6ac26a3b0f4 Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/qobject.js4
-rw-r--r--src/qtmetaobjectpublisher.cpp10
2 files changed, 14 insertions, 0 deletions
diff --git a/src/qobject.js b/src/qobject.js
index e2e20f6..fe0f54e 100644
--- a/src/qobject.js
+++ b/src/qobject.js
@@ -108,6 +108,10 @@ function QObject(name, data, webChannel)
for (i in data.properties) {
bindGetterSetter(data.properties[i]);
}
+
+ for (i in data.enums) {
+ object[i] = data.enums[i];
+ }
}
window.setupQObjectWebChannel = function(webChannel, doneCallback)
diff --git a/src/qtmetaobjectpublisher.cpp b/src/qtmetaobjectpublisher.cpp
index ed736e4..e441199 100644
--- a/src/qtmetaobjectpublisher.cpp
+++ b/src/qtmetaobjectpublisher.cpp
@@ -59,6 +59,7 @@ QVariantMap QtMetaObjectPublisher::classInfoForObject(QObject *object) const
return data;
}
QStringList qtSignals, qtMethods, qtProperties;
+ QVariantMap qtEnums;
const QMetaObject* metaObject = object->metaObject();
for (int i = 0; i < metaObject->propertyCount(); ++i)
qtProperties.append(metaObject->property(i).name());
@@ -71,8 +72,17 @@ QVariantMap QtMetaObjectPublisher::classInfoForObject(QObject *object) const
if (method.methodType() == QMetaMethod::Signal)
qtSignals << signature << name;
}
+ for (int i = 0; i < metaObject->enumeratorCount(); ++i) {
+ QMetaEnum enumerator = metaObject->enumerator(i);
+ QVariantMap values;
+ for (int k = 0; k < enumerator.keyCount(); ++k) {
+ values[enumerator.key(k)] = enumerator.value(k);
+ }
+ qtEnums[enumerator.name()] = values;
+ }
data["signals"] = qtSignals;
data["methods"] = qtMethods;
data["properties"] = qtProperties;
+ data["enums"] = qtEnums;
return data;
}