diff --git a/scriptengines/javascript/plasmoid/appletinterface.cpp b/scriptengines/javascript/plasmoid/appletinterface.cpp index 7cfa1a671..fbb82a615 100644 --- a/scriptengines/javascript/plasmoid/appletinterface.cpp +++ b/scriptengines/javascript/plasmoid/appletinterface.cpp @@ -35,7 +35,6 @@ #include Q_DECLARE_METATYPE(AppletInterface*) -Q_DECLARE_METATYPE(Plasma::Package) AppletInterface::AppletInterface(SimpleJavaScriptApplet *parent) : QObject(parent), @@ -141,7 +140,7 @@ void AppletInterface::setActiveConfig(const QString &name) Plasma::ConfigLoader *loader = m_configs.value(name, 0); if (!loader) { - QString path = file("config", name + ".xml"); + QString path = m_appletScriptEngine->filePath("config", name + ".xml"); if (path.isEmpty()) { return; } @@ -196,31 +195,12 @@ QScriptValue AppletInterface::readConfig(const QString &entry) const QString AppletInterface::file(const QString &fileType) { - return file(fileType.toLocal8Bit().constData(), QString()); + return m_appletScriptEngine->filePath(fileType, QString()); } QString AppletInterface::file(const QString &fileType, const QString &filePath) { - return file(fileType, filePath, context()); -} - -QString AppletInterface::file(const QString &fileType, const QString &filePath, QScriptContext *c) -{ - while (c) { - QScriptValue v = c->activationObject().property("__plasma_package"); - //kDebug() << "variant in parent context?" << v.isVariant(); - if (v.isVariant()) { - const QString path = v.toVariant().value().filePath(fileType.toLocal8Bit().constData(), filePath); - if (!path.isEmpty()) { - return path; - } - } - - c = c->parentContext(); - } - - //kDebug() << "old school attempt"; - return m_appletScriptEngine->package()->filePath(fileType.toLocal8Bit().constData(), filePath); + return m_appletScriptEngine->filePath(fileType, filePath); } QList AppletInterface::contextualActions() const @@ -348,23 +328,7 @@ int AppletInterface::apiVersion() const bool AppletInterface::include(const QString &script) { - QString path; - /* - QScriptContext *c = context(); - if (c && c->parentContext()) { - QScriptValue v = c->parentContext()->activationObject().property("__plasma_package"); - //kDebug() << "variant in parent context?" << v.isVariant() << t.restart(); - if (v.isVariant()) { - Plasma::Package p = v.toVariant().value(); - //kDebug() << "path to package is" << p.path(); - path = p.filePath("scripts", script); - } - } - */ - if (path.isEmpty()) { - kDebug() << "kicking it old school"; - path = file("scripts", script); - } + const QString path = m_appletScriptEngine->filePath("scripts", script); if (path.isEmpty()) { return false; diff --git a/scriptengines/javascript/plasmoid/appletinterface.h b/scriptengines/javascript/plasmoid/appletinterface.h index e0b78efe8..2569b43de 100644 --- a/scriptengines/javascript/plasmoid/appletinterface.h +++ b/scriptengines/javascript/plasmoid/appletinterface.h @@ -25,7 +25,6 @@ #include #include #include -#include #include #include @@ -46,7 +45,7 @@ namespace Plasma class Extender; } // namespace Plasa -class AppletInterface : public QObject, QScriptable +class AppletInterface : public QObject { Q_OBJECT Q_ENUMS(FormFactor) @@ -268,7 +267,6 @@ enum IntervalAlignment { Q_INVOKABLE QString file(const QString &fileType); Q_INVOKABLE QString file(const QString &fileType, const QString &filePath); - QString file(const QString &fileType, const QString &filePath, QScriptContext *context); Q_INVOKABLE bool include(const QString &script); diff --git a/scriptengines/javascript/plasmoid/simplejavascriptapplet.cpp b/scriptengines/javascript/plasmoid/simplejavascriptapplet.cpp index cae8d99e3..3d05e8a15 100644 --- a/scriptengines/javascript/plasmoid/simplejavascriptapplet.cpp +++ b/scriptengines/javascript/plasmoid/simplejavascriptapplet.cpp @@ -705,9 +705,9 @@ QString SimpleJavaScriptApplet::findSvg(QScriptContext *context, QScriptEngine * return file; } - QString path = interface->file("images", file + ".svg", context); + QString path = interface->file("images", file + ".svg"); if (path.isEmpty()) { - path = interface->file("images", file + ".svgz", context); + path = interface->file("images", file + ".svgz"); if (path.isEmpty()) { return file; @@ -856,6 +856,16 @@ void SimpleJavaScriptApplet::collectGarbage() m_engine->collectGarbage(); } +QString SimpleJavaScriptApplet::filePath(const QString &type, const QString &file) const +{ + const QString path = m_env->filePathFromScriptContext(type.toLocal8Bit().constData(), file); + if (!path.isEmpty()) { + return path; + } + + return package()->filePath(type.toLocal8Bit().constData(), file); +} + /* * Workaround the fact that QtScripts handling of variants seems a bit broken. */ diff --git a/scriptengines/javascript/plasmoid/simplejavascriptapplet.h b/scriptengines/javascript/plasmoid/simplejavascriptapplet.h index 3c640a715..579e271af 100644 --- a/scriptengines/javascript/plasmoid/simplejavascriptapplet.h +++ b/scriptengines/javascript/plasmoid/simplejavascriptapplet.h @@ -54,6 +54,7 @@ public: bool include(const QString &path); QSet loadedExtensions() const; QScriptValue variantToScriptValue(QVariant var); + QString filePath(const QString &type, const QString &file) const; bool eventFilter(QObject *watched, QEvent *event);