aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/v8/qv8typewrapper.cpp
diff options
context:
space:
mode:
authorChris Adams <christopher.adams@nokia.com>2011-08-22 17:01:04 +1000
committerQt by Nokia <qt-info@nokia.com>2011-08-31 05:03:34 +0200
commit9140731319269c75f24e80075750971e00844906 (patch)
treebeaf13b75b87e648aab8ed0d69b30e1d30176aff /src/declarative/qml/v8/qv8typewrapper.cpp
parent1646db78918f740c5e5a7e487914f56d732f4a17 (diff)
Add enums support to QObject module APIs
This commit adds support for retrieving enum values from QObject module APIs. Task-number: QTBUG-21033 Task-number: QTBUG-21056 Change-Id: Ib2bd107f3f5905e2d2d35f8a20c55045ef9bb322 Reviewed-on: http://codereview.qt.nokia.com/3291 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Martin Jones <martin.jones@nokia.com> Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
Diffstat (limited to 'src/declarative/qml/v8/qv8typewrapper.cpp')
-rw-r--r--src/declarative/qml/v8/qv8typewrapper.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/declarative/qml/v8/qv8typewrapper.cpp b/src/declarative/qml/v8/qv8typewrapper.cpp
index dc99cbbcb6..f46aaab320 100644
--- a/src/declarative/qml/v8/qv8typewrapper.cpp
+++ b/src/declarative/qml/v8/qv8typewrapper.cpp
@@ -185,6 +185,24 @@ v8::Handle<v8::Value> QV8TypeWrapper::Getter(v8::Local<v8::String> property,
}
if (moduleApi->qobjectApi) {
+ // check for enum value
+ if (QV8Engine::startsWithUpper(property)) {
+ if (resource->mode == IncludeEnums) {
+ QString name = v8engine->toString(property);
+
+ // ### Optimize
+ QByteArray enumName = name.toUtf8();
+ const QMetaObject *metaObject = moduleApi->qobjectApi->metaObject();
+ for (int ii = metaObject->enumeratorCount() - 1; ii >= 0; --ii) {
+ QMetaEnum e = metaObject->enumerator(ii);
+ int value = e.keyToValue(enumName.constData());
+ if (value != -1)
+ return v8::Integer::New(value);
+ }
+ }
+ }
+
+ // check for property.
v8::Handle<v8::Value> rv = v8engine->qobjectWrapper()->getProperty(moduleApi->qobjectApi, propertystring, QV8QObjectWrapper::IgnoreRevision);
return rv;
} else if (moduleApi->scriptApi.isValid()) {