diff --git a/scriptengines/javascript/common/scriptenv.cpp b/scriptengines/javascript/common/scriptenv.cpp index 4d096bcd7..8a75db2c0 100644 --- a/scriptengines/javascript/common/scriptenv.cpp +++ b/scriptengines/javascript/common/scriptenv.cpp @@ -81,6 +81,7 @@ void ScriptEnv::addMainObjectProperties(QScriptValue &value) value.setProperty("loadAddon", m_engine->newFunction(ScriptEnv::loadAddon)); value.setProperty("addEventListener", m_engine->newFunction(ScriptEnv::addEventListener)); value.setProperty("removeEventListener", m_engine->newFunction(ScriptEnv::removeEventListener)); + value.setProperty("hasExtension", m_engine->newFunction(ScriptEnv::hasExtension)); } QScriptEngine *ScriptEnv::engine() const @@ -519,6 +520,20 @@ QScriptValue ScriptEnv::removeEventListener(QScriptContext *context, QScriptEngi return env->removeEventListener(context->argument(0).toString(), context->argument(1)); } +QScriptValue ScriptEnv::hasExtension(QScriptContext *context, QScriptEngine *engine) +{ + if (context->argumentCount() < 1) { + return false; + } + + ScriptEnv *env = ScriptEnv::findScriptEnv(engine); + if (!env) { + return false; + } + + return env->m_extensions.contains(context->argument(0).toString().toLower()); +} + QScriptValue ScriptEnv::callFunction(QScriptValue &func, const QScriptValueList &args, const QScriptValue &activator) { if (!func.isFunction()) { diff --git a/scriptengines/javascript/common/scriptenv.h b/scriptengines/javascript/common/scriptenv.h index 12af4bac0..c6f34c606 100644 --- a/scriptengines/javascript/common/scriptenv.h +++ b/scriptengines/javascript/common/scriptenv.h @@ -85,6 +85,7 @@ private: static QScriptValue registerAddon(QScriptContext *context, QScriptEngine *engine); static QScriptValue addEventListener(QScriptContext *context, QScriptEngine *engine); static QScriptValue removeEventListener(QScriptContext *context, QScriptEngine *engine); + static QScriptValue hasExtension(QScriptContext *context, QScriptEngine *engine); //static QScriptValue addonFilePath(QScriptContext *context, QScriptEngine *engine); private Q_SLOTS: diff --git a/scriptengines/javascript/plasmoid/appletinterface.cpp b/scriptengines/javascript/plasmoid/appletinterface.cpp index e3574238d..986e66224 100644 --- a/scriptengines/javascript/plasmoid/appletinterface.cpp +++ b/scriptengines/javascript/plasmoid/appletinterface.cpp @@ -341,11 +341,6 @@ bool AppletInterface::include(const QString &script) return m_appletScriptEngine->include(path); } -bool AppletInterface::hasExtension(const QString &extension) const -{ - return m_appletScriptEngine->loadedExtensions().contains(extension.toLower()); -} - void AppletInterface::debug(const QString &msg) { kDebug() << msg; @@ -372,16 +367,6 @@ Plasma::Extender *AppletInterface::extender() const return m_appletScriptEngine->extender(); } -void AppletInterface::addEventListener(const QString &event, const QScriptValue &func) -{ - m_appletScriptEngine->addEventListener(event, func); -} - -void AppletInterface::removeEventListener(const QString &event, const QScriptValue &func) -{ - m_appletScriptEngine->removeEventListener(event, func); -} - void AppletInterface::gc() { QTimer::singleShot(0, m_appletScriptEngine, SLOT(collectGarbage())); diff --git a/scriptengines/javascript/plasmoid/appletinterface.h b/scriptengines/javascript/plasmoid/appletinterface.h index ad850d410..66f5645c9 100644 --- a/scriptengines/javascript/plasmoid/appletinterface.h +++ b/scriptengines/javascript/plasmoid/appletinterface.h @@ -269,16 +269,12 @@ enum IntervalAlignment { Q_INVOKABLE QString file(const QString &fileType, const QString &filePath); Q_INVOKABLE bool include(const QString &script); - Q_INVOKABLE bool hasExtension(const QString &extension) const; Q_INVOKABLE void debug(const QString &msg); Q_INVOKABLE QObject *findChild(const QString &name) const; Q_INVOKABLE Plasma::Extender *extender() const; - Q_INVOKABLE void addEventListener(const QString &event, const QScriptValue &func); - Q_INVOKABLE void removeEventListener(const QString &event, const QScriptValue &func); - Plasma::DataEngine *dataEngine(const QString &name); const Plasma::Package *package() const; diff --git a/scriptengines/javascript/plasmoid/simplejavascriptapplet.cpp b/scriptengines/javascript/plasmoid/simplejavascriptapplet.cpp index ec9c7bff4..fc87e5a1b 100644 --- a/scriptengines/javascript/plasmoid/simplejavascriptapplet.cpp +++ b/scriptengines/javascript/plasmoid/simplejavascriptapplet.cpp @@ -253,22 +253,6 @@ void SimpleJavaScriptApplet::callPlasmoidFunction(const QString &functionName, c } } -void SimpleJavaScriptApplet::addEventListener(const QString &event, const QScriptValue &func) -{ - ScriptEnv *env = ScriptEnv::findScriptEnv(m_engine); - if (env) { - env->addEventListener(event, func); - } -} - -void SimpleJavaScriptApplet::removeEventListener(const QString &event, const QScriptValue &func) -{ - ScriptEnv *env = ScriptEnv::findScriptEnv(m_engine); - if (env) { - env->removeEventListener(event, func); - } -} - void SimpleJavaScriptApplet::constraintsEvent(Plasma::Constraints constraints) { ScriptEnv *env = ScriptEnv::findScriptEnv(m_engine); @@ -537,6 +521,7 @@ void SimpleJavaScriptApplet::setupObjects() const bool isPopupApplet = qobject_cast(applet()); m_interface = isPopupApplet ? new PopupAppletInterface(this) : new AppletInterface(this); m_self = m_engine->newQObject(m_interface); + m_env->addMainObjectProperties(m_self); m_self.setScope(global); global.setProperty("plasmoid", m_self); @@ -596,11 +581,6 @@ void SimpleJavaScriptApplet::setupObjects() installWidgets(m_engine); } -QSet SimpleJavaScriptApplet::loadedExtensions() const -{ - return m_env->loadedExtensions(); -} - QScriptValue SimpleJavaScriptApplet::dataEngine(QScriptContext *context, QScriptEngine *engine) { if (context->argumentCount() != 1) { diff --git a/scriptengines/javascript/plasmoid/simplejavascriptapplet.h b/scriptengines/javascript/plasmoid/simplejavascriptapplet.h index bb97607b8..f067a5fb1 100644 --- a/scriptengines/javascript/plasmoid/simplejavascriptapplet.h +++ b/scriptengines/javascript/plasmoid/simplejavascriptapplet.h @@ -55,8 +55,6 @@ public: bool include(const QString &path); QSet loadedExtensions() const; QScriptValue variantToScriptValue(QVariant var); - void addEventListener(const QString &event, const QScriptValue &func); - void removeEventListener(const QString &event, const QScriptValue &func); bool eventFilter(QObject *watched, QEvent *event);