diff --git a/scriptengines/javascript/simplebindings/qscriptbookkeeping.cpp b/scriptengines/javascript/simplebindings/qscriptbookkeeping.cpp index 329ab41c1..aca698c67 100644 --- a/scriptengines/javascript/simplebindings/qscriptbookkeeping.cpp +++ b/scriptengines/javascript/simplebindings/qscriptbookkeeping.cpp @@ -185,6 +185,42 @@ void extenderFromQScriptValue(const QScriptValue &scriptValue, ExtenderPtr &exte extender = static_cast(obj); } +typedef Plasma::Service *ServicePtr; +QScriptValue qScriptValueFromService(QScriptEngine *engine, const ServicePtr &service) +{ + return engine->newQObject(const_cast(service), QScriptEngine::AutoOwnership, QScriptEngine::PreferExistingWrapperObject); +} + +void serviceFromQScriptValue(const QScriptValue &scriptValue, ServicePtr &service) +{ + QObject *obj = scriptValue.toQObject(); + service = static_cast(obj); +} + +typedef Plasma::DataEngine *DataEnginePtr; +QScriptValue qScriptValueFromDataEngine(QScriptEngine *engine, const DataEnginePtr &dataEngine) +{ + return engine->newQObject(const_cast(dataEngine), QScriptEngine::AutoOwnership, QScriptEngine::PreferExistingWrapperObject); +} + +void dataEngineFromQScriptValue(const QScriptValue &scriptValue, DataEnginePtr &dataEngine) +{ + QObject *obj = scriptValue.toQObject(); + dataEngine = static_cast(obj); +} + +typedef Plasma::ServiceJob *ServiceJobPtr; +QScriptValue qScriptValueFromServiceJob(QScriptEngine *engine, const ServiceJobPtr &serviceJob) +{ + return engine->newQObject(const_cast(serviceJob), QScriptEngine::AutoOwnership, QScriptEngine::PreferExistingWrapperObject); +} + +void serviceJobFromQScriptValue(const QScriptValue &scriptValue, ServiceJobPtr &serviceJob) +{ + QObject *obj = scriptValue.toQObject(); + serviceJob = static_cast(obj); +} + void registerSimpleAppletMetaTypes(QScriptEngine *engine) { qScriptRegisterMetaType(engine, qScriptValueFromQGraphicsWidget, qGraphicsWidgetFromQScriptValue); @@ -194,9 +230,12 @@ void registerSimpleAppletMetaTypes(QScriptEngine *engine) qScriptRegisterMetaType(engine, qScriptValueFromKIOJob, qKIOJobFromQScriptValue); qScriptRegisterMetaType(engine, qScriptValueFromAnimation, abstractAnimationFromQScriptValue); + qScriptRegisterMetaType(engine, qScriptValueFromExtender , extenderFromQScriptValue); + qScriptRegisterMetaType(engine, qScriptValueFromControls, controlsFromScriptValue, QScriptValue()); qRegisterMetaType("Plasma::DataEngine::Data"); qRegisterMetaType("DataEngine::Data"); qScriptRegisterMapMetaType(engine); - qScriptRegisterMetaType(engine, qScriptValueFromExtender , extenderFromQScriptValue); - qScriptRegisterMetaType(engine, qScriptValueFromControls, controlsFromScriptValue, QScriptValue()); + qScriptRegisterMetaType(engine, qScriptValueFromService, serviceFromQScriptValue); + qScriptRegisterMetaType(engine, qScriptValueFromDataEngine, dataEngineFromQScriptValue); + qScriptRegisterMetaType(engine, qScriptValueFromServiceJob, serviceJobFromQScriptValue); } diff --git a/scriptengines/javascript/simplejavascriptapplet.cpp b/scriptengines/javascript/simplejavascriptapplet.cpp index 29c13f37e..279769a2b 100644 --- a/scriptengines/javascript/simplejavascriptapplet.cpp +++ b/scriptengines/javascript/simplejavascriptapplet.cpp @@ -534,13 +534,6 @@ void SimpleJavaScriptApplet::setupObjects() global.setProperty("AnimationGroup", m_engine->newFunction(SimpleJavaScriptApplet::animationGroup)); global.setProperty("ParallelAnimationGroup", m_engine->newFunction(SimpleJavaScriptApplet::parallelAnimationGroup)); - // Bindings for data engine - m_engine->setDefaultPrototype(qMetaTypeId(), m_engine->newQObject(new DataEngine(), QScriptEngine::ScriptOwnership)); - m_engine->setDefaultPrototype(qMetaTypeId(), m_engine->newQObject(new DummyService(), QScriptEngine::ScriptOwnership)); - m_engine->setDefaultPrototype(qMetaTypeId(), - m_engine->newQObject(new ServiceJob(QString(), QString(), QMap()), - QScriptEngine::ScriptOwnership )); - bindI18N(m_engine); global.setProperty("dataEngine", m_engine->newFunction(SimpleJavaScriptApplet::dataEngine)); global.setProperty("service", m_engine->newFunction(SimpleJavaScriptApplet::service));