From 5f75ed8359211e470c6f3e323a4df27d1472e8c7 Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Thu, 19 Feb 2009 22:06:16 +0000 Subject: [PATCH] auto registers all the enums in widgets declared as Q_ENUMS, accessed as widget.EnumValue svn path=/trunk/KDE/kdebase/workspace/plasma/scriptengines/javascript/; revision=928727 --- scriptengines/javascript/simplejavascriptapplet.cpp | 13 ++++++++----- .../tests/script-mediaplayer/contents/code/main.js | 3 +-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/scriptengines/javascript/simplejavascriptapplet.cpp b/scriptengines/javascript/simplejavascriptapplet.cpp index be7b584f9..f9d33a8a9 100644 --- a/scriptengines/javascript/simplejavascriptapplet.cpp +++ b/scriptengines/javascript/simplejavascriptapplet.cpp @@ -670,11 +670,6 @@ void SimpleJavaScriptApplet::installWidgets(QScriptEngine *engine) s_widgetLoader = new UiLoader; } - //two customs things needed for VideoWidget - registerEnums(m_engine, globalObject, VideoWidget::staticMetaObject); - - qScriptRegisterMetaType(m_engine, qScriptValueFromControls, controlsFromScriptValue, QScriptValue()); - foreach (const QString &widget, s_widgetLoader->availableWidgets()) { QScriptValue fun = engine->newFunction(createWidget); QScriptValue name = engine->toScriptValue(widget); @@ -715,6 +710,14 @@ QScriptValue SimpleJavaScriptApplet::createWidget(QScriptContext *context, QScri QScriptValue fun = engine->newQObject(w); fun.setPrototype(context->callee().property("prototype")); + //register enums will be accessed for instance as frame.Sunken for Frame shadow... + registerEnums(engine, fun, *w->metaObject()); + + //FIXME: still don't have a better approach than try to cast for every widget that could have flags.. + if (qobject_cast(w)) { + qScriptRegisterMetaType(engine, qScriptValueFromControls, controlsFromScriptValue, QScriptValue()); + } + return fun; } diff --git a/scriptengines/javascript/tests/script-mediaplayer/contents/code/main.js b/scriptengines/javascript/tests/script-mediaplayer/contents/code/main.js index e14cf4455..e435df720 100644 --- a/scriptengines/javascript/tests/script-mediaplayer/contents/code/main.js +++ b/scriptengines/javascript/tests/script-mediaplayer/contents/code/main.js @@ -1,8 +1,7 @@ layout = new LinearLayout(plasmoid); video = new VideoWidget(); -video.usedControls = DefaultControls; +video.usedControls = video.DefaultControls; layout.addItem(video); video.url = startupArguments[0]; video.play(); -