From c1f3d903d85844f28e0b084b46e6c41ccad3bf6e Mon Sep 17 00:00:00 2001 From: "Aaron J. Seigo" Date: Wed, 20 Jan 2010 23:13:40 +0000 Subject: [PATCH] * much simpler way of registering DataEngine::Data * register the metatype by name with Qt so it can find it; this allows DataEngine::query() to work properly svn path=/trunk/KDE/kdebase/runtime/; revision=1077821 --- scriptengines/javascript/CMakeLists.txt | 2 - .../javascript/javascriptdataengine.cpp | 4 +- .../javascript/simplebindings/dataengine.cpp | 38 ------------------- .../javascript/simplebindings/dataengine.h | 13 +++---- .../simplebindings/qscriptbookkeeping.cpp | 7 +++- 5 files changed, 14 insertions(+), 50 deletions(-) delete mode 100644 scriptengines/javascript/simplebindings/dataengine.cpp diff --git a/scriptengines/javascript/CMakeLists.txt b/scriptengines/javascript/CMakeLists.txt index 6c610ceda..e7505c2dd 100644 --- a/scriptengines/javascript/CMakeLists.txt +++ b/scriptengines/javascript/CMakeLists.txt @@ -10,7 +10,6 @@ set(simple_javascript_engine_SRCS simplebindings/bytearrayclass.cpp simplebindings/bytearrayprototype.cpp simplebindings/color.cpp - simplebindings/dataengine.cpp simplebindings/easingcurve.cpp simplebindings/font.cpp simplebindings/filedialogproxy.cpp @@ -70,7 +69,6 @@ install(FILES plasma-scriptengine-runner-javascript.desktop DESTINATION ${SERVIC set(javascript_dataengine_engine_SRCS javascriptdataengine.cpp scriptenv.cpp - simplebindings/dataengine.cpp simplebindings/variant.cpp ) kde4_add_plugin(plasma_dataenginescript_javascript ${javascript_dataengine_engine_SRCS}) diff --git a/scriptengines/javascript/javascriptdataengine.cpp b/scriptengines/javascript/javascriptdataengine.cpp index c60930177..300527bac 100644 --- a/scriptengines/javascript/javascriptdataengine.cpp +++ b/scriptengines/javascript/javascriptdataengine.cpp @@ -49,7 +49,9 @@ bool JavaScriptDataEngine::init() global.setProperty("removeData", m_qscriptEngine->newFunction(JavaScriptDataEngine::jsRemoveData)); global.setProperty("removeAllSources", m_qscriptEngine->newFunction(JavaScriptDataEngine::jsRemoveAllSources)); - qScriptRegisterMetaType(m_qscriptEngine, qScriptValueFromData, 0, QScriptValue()); + qRegisterMetaType("Plasma::DataEngine::Data"); + qRegisterMetaType("DataEngine::Data"); + qScriptRegisterMapMetaType(m_qscriptEngine); /** TODO: Service bindings m_qscriptEngine->setDefaultPrototype(qMetaTypeId(), m_qscriptEngine->newQObject(new DummyService())); diff --git a/scriptengines/javascript/simplebindings/dataengine.cpp b/scriptengines/javascript/simplebindings/dataengine.cpp deleted file mode 100644 index de7cf27db..000000000 --- a/scriptengines/javascript/simplebindings/dataengine.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2007 Richard J. Moore - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License version 2 as - * published by the Free Software Foundation - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "dataengine.h" - -QScriptValue qScriptValueFromData(QScriptEngine *engine, const DataEngine::Data &data) -{ - DataEngine::Data::const_iterator begin = data.begin(); - DataEngine::Data::const_iterator end = data.end(); - DataEngine::Data::const_iterator it; - - QScriptValue obj = engine->newObject(); - - for (it = begin; it != end; ++it) { - //kDebug() << "setting" << it.key() << "to" << it.value(); - QString prop = it.key(); - prop.replace(' ', '_'); - obj.setProperty(prop, variantToScriptValue(engine, it.value())); - } - - return obj; -} - diff --git a/scriptengines/javascript/simplebindings/dataengine.h b/scriptengines/javascript/simplebindings/dataengine.h index aac465c37..daa0f8e17 100644 --- a/scriptengines/javascript/simplebindings/dataengine.h +++ b/scriptengines/javascript/simplebindings/dataengine.h @@ -40,20 +40,22 @@ Q_DECLARE_METATYPE(DataEngine::Data) template QScriptValue qScriptValueFromMap(QScriptEngine *eng, const M &map) { - kDebug() << "qScriptValueFromMap called"; - + //kDebug() << "qScriptValueFromMap called"; QScriptValue obj = eng->newObject(); typename M::const_iterator begin = map.constBegin(); typename M::const_iterator end = map.constEnd(); typename M::const_iterator it; - for (it = begin; it != end; ++it) + for (it = begin; it != end; ++it) { obj.setProperty(it.key(), qScriptValueFromValue(eng, it.value())); + } + return obj; } template void qScriptValueToMap(const QScriptValue &value, M &map) { + //kDebug() << "qScriptValueToMap called"; QScriptValueIterator it(value); while (it.hasNext()) { it.next(); @@ -70,11 +72,8 @@ int qScriptRegisterMapMetaType( #endif ) { - return qScriptRegisterMetaType(engine, qScriptValueFromMap, - qScriptValueToMap, prototype); + return qScriptRegisterMetaType(engine, qScriptValueFromMap, qScriptValueToMap, prototype); } -QScriptValue qScriptValueFromData(QScriptEngine *engine, const DataEngine::Data &data); - #endif // DATAENGINE_H diff --git a/scriptengines/javascript/simplebindings/qscriptbookkeeping.cpp b/scriptengines/javascript/simplebindings/qscriptbookkeeping.cpp index f289f8e04..47b2a49d2 100644 --- a/scriptengines/javascript/simplebindings/qscriptbookkeeping.cpp +++ b/scriptengines/javascript/simplebindings/qscriptbookkeeping.cpp @@ -184,6 +184,7 @@ void extenderFromQScriptValue(const QScriptValue &scriptValue, ExtenderPtr &exte QObject *obj = scriptValue.toQObject(); extender = static_cast(obj); } +using namespace Plasma; void registerSimpleAppletMetaTypes(QScriptEngine *engine) { @@ -194,7 +195,9 @@ void registerSimpleAppletMetaTypes(QScriptEngine *engine) qScriptRegisterMetaType(engine, qScriptValueFromKIOJob, qKIOJobFromQScriptValue); qScriptRegisterMetaType(engine, qScriptValueFromAnimation, abstractAnimationFromQScriptValue); - qScriptRegisterMetaType(engine, qScriptValueFromData, 0, QScriptValue()); - qScriptRegisterMetaType(engine, qScriptValueFromExtender , extenderFromQScriptValue); + qRegisterMetaType("Plasma::DataEngine::Data"); + qRegisterMetaType("DataEngine::Data"); + qScriptRegisterMapMetaType(engine); + qScriptRegisterMetaType(engine, qScriptValueFromExtender, extenderFromQScriptValue); qScriptRegisterMetaType(engine, qScriptValueFromControls, controlsFromScriptValue, QScriptValue()); }