[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/workspace/libs/plasmagenericshell/scripting
From:       Aaron J. Seigo <aseigo () kde ! org>
Date:       2011-01-15 21:36:52
Message-ID: 20110115213652.91A9BAC8B4 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1214674 by aseigo:

wallpaperPlugins


 M  +35 -5     scriptengine.cpp  
 M  +1 -0      scriptengine.h  


--- trunk/KDE/kdebase/workspace/libs/plasmagenericshell/scripting/scriptengine.cpp #1214673:1214674
@@ -39,6 +39,7 @@
 #include <Plasma/Containment>
 #include <Plasma/Corona>
 #include <Plasma/Package>
+#include <Plasma/Wallpaper>
 
 #include "appinterface.h"
 #include "containment.h"
@@ -479,12 +480,12 @@
 {
     Q_UNUSED(engine)
     if (context->argumentCount() == 0) {
-        return QString();
+        return QDir::homePath();
     }
 
     const QString type = context->argument(0).toString();
     if (type.isEmpty()) {
-        return QString();
+        return QDir::homePath();
     }
 
     if (context->argumentCount() > 1) {
@@ -492,9 +493,7 @@
         return KStandardDirs::locateLocal(type.toLatin1(), filename);
     }
 
-    if (type.compare("home", Qt::CaseInsensitive) == 0) {
-        return QDir::homePath();
-    } else if (type.compare("desktop", Qt::CaseInsensitive) == 0) {
+    if (type.compare("desktop", Qt::CaseInsensitive) == 0) {
         return KGlobalSettings::desktopPath();
     } else if (type.compare("autostart", Qt::CaseInsensitive) == 0) {
         return KGlobalSettings::autostartPath();
@@ -513,6 +512,36 @@
     return QString();
 }
 
+QScriptValue ScriptEngine::wallpaperPlugins(QScriptContext *context, QScriptEngine *engine)
+{
+    Q_UNUSED(engine)
+
+    QString formFactor;
+    if (context->argumentCount() > 0) {
+        formFactor = context->argument(0).toString();
+    }
+
+    QString constraint;
+    if (!formFactor.isEmpty()) {
+        constraint.append("[X-Plasma-FormFactors] ~~ '").append(formFactor).append("'");
+    }
+
+    KService::List services = KServiceTypeTrader::self()->query("Plasma/Wallpaper", constraint);
+    QScriptValue rv = engine->newArray(services.size());
+    foreach (const KService::Ptr service, services) {
+        QList<KServiceAction> modeActions = service->actions();
+        QScriptValue modes = engine->newArray(modeActions.size());
+        int i = 0;
+        foreach (const KServiceAction &action, modeActions) {
+            modes.setProperty(i++, action.name());
+        }
+
+        rv.setProperty(service->name(), modes);
+    }
+
+    return rv;
+}
+
 void ScriptEngine::setupEngine()
 {
     QScriptValue v = globalObject();
@@ -539,6 +568,7 @@
     m_scriptSelf.setProperty("defaultApplication", newFunction(ScriptEngine::defaultApplication));
     m_scriptSelf.setProperty("userDataPath", newFunction(ScriptEngine::userDataPath));
     m_scriptSelf.setProperty("applicationPath", newFunction(ScriptEngine::applicationPath));
+    m_scriptSelf.setProperty("wallpaperPlugins", newFunction(ScriptEngine::wallpaperPlugins));
 
     setGlobalObject(m_scriptSelf);
 }
--- trunk/KDE/kdebase/workspace/libs/plasmagenericshell/scripting/scriptengine.h #1214673:1214674
@@ -80,6 +80,7 @@
     static QScriptValue defaultApplication(QScriptContext *context, QScriptEngine *engine);
     static QScriptValue applicationPath(QScriptContext *context, QScriptEngine *engine);
     static QScriptValue userDataPath(QScriptContext *context, QScriptEngine *engine);
+    static QScriptValue wallpaperPlugins(QScriptContext *context, QScriptEngine *engine);
 
     // helpers
     static QScriptValue createContainment(const QString &type, const QString &defautPlugin,
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic