diff options
author | Milian Wolff <milian.wolff@kdab.com> | 2013-03-18 17:41:05 +0100 |
---|---|---|
committer | Pierre Rossi <pierre.rossi@gmail.com> | 2013-11-01 13:57:49 +0100 |
commit | d1af727765c3b0dbc3dc91e8d672e9c4142b0170 (patch) | |
tree | 6f4a1f197c205ac7fd81b15190deda96e005af77 /src | |
parent | b1d0a375185925506e893d3b32cf19a941a73141 (diff) | |
download | qtwebchannel-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.js | 4 | ||||
-rw-r--r-- | src/qtmetaobjectpublisher.cpp | 10 |
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; } |