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

List:       kde-commits
Subject:    [plasma-workspace] shell: port away from sycoca everything possible
From:       Marco Martin <notmart () gmail ! com>
Date:       2015-04-30 16:47:12
Message-ID: E1YnrcG-0001vO-Qb () scm ! kde ! org
[Download RAW message or body]

Git commit 9846f4b0afa9601ee2d56a504581b718536ce1b7 by Marco Martin.
Committed on 30/04/2015 at 16:44.
Pushed by mart into branch 'master'.

port away from sycoca everything possible

use package and kplugin listing instead of sycoca to list layout templates
and wallpapers

M  +1    -0    shell/CMakeLists.txt
M  +1    -9    shell/scripting/applet.cpp
M  +4    -11   shell/scripting/scriptengine.cpp
M  +17   -13   shell/shellcorona.cpp

http://commits.kde.org/plasma-workspace/9846f4b0afa9601ee2d56a504581b718536ce1b7

diff --git a/shell/CMakeLists.txt b/shell/CMakeLists.txt
index c90f6dc..3c431cc 100644
--- a/shell/CMakeLists.txt
+++ b/shell/CMakeLists.txt
@@ -82,6 +82,7 @@ target_link_libraries(plasmashell
  KF5::Screen
  KF5::Declarative
  KF5::XmlGui
+ KF5::Package
 )
 target_include_directories(plasmashell PRIVATE "${CMAKE_BINARY_DIR}")
 target_compile_definitions(plasmashell PRIVATE \
                -DPROJECT_VERSION="${PROJECT_VERSION}")
diff --git a/shell/scripting/applet.cpp b/shell/scripting/applet.cpp
index 02a3aab..ea3271e 100644
--- a/shell/scripting/applet.cpp
+++ b/shell/scripting/applet.cpp
@@ -22,7 +22,6 @@
 #include <QAction>
 
 #include <kservice.h>
-#include <kservicetypetrader.h>
 #include <kdeclarative/configpropertymap.h>
 #include <kconfigloader.h>
 
@@ -233,14 +232,7 @@ QString Applet::version() const
         return QString();
     }
 
-    QString type = app->pluginInfo().pluginName();
-    KService::List services = KServiceTypeTrader::self()->query("Plasma/Applet", \
                "[X-KDE-PluginInfo-Name] == '" + type + "'");
-    if (services.isEmpty()) {
-        return QString();
-    }
-
-    KPluginInfo info(services.first());
-    return info.version();
+    return app->pluginInfo().version();
 }
 
 void Applet::setLocked(bool locked)
diff --git a/shell/scripting/scriptengine.cpp b/shell/scripting/scriptengine.cpp
index c4c60a1..537ed60 100644
--- a/shell/scripting/scriptengine.cpp
+++ b/shell/scripting/scriptengine.cpp
@@ -730,17 +730,10 @@ QScriptValue ScriptEngine::knownWallpaperPlugins(QScriptContext \
                *context, QScrip
         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);
+    QList<KPluginMetaData> wallpapers = \
KPackage::PackageLoader::self()->listPackages("Plasma/Wallpaper", QString()); +    \
QScriptValue rv = engine->newArray(wallpapers.size()); +    for (auto wp : \
wallpapers) { +        rv.setProperty(wp.name(), engine->newArray(0));
     }
 
     return rv;
diff --git a/shell/shellcorona.cpp b/shell/shellcorona.cpp
index 0164ed8..558788d 100644
--- a/shell/shellcorona.cpp
+++ b/shell/shellcorona.cpp
@@ -37,7 +37,6 @@
 #include <kactivities/controller.h>
 #include <kactivities/consumer.h>
 #include <ksycoca.h>
-#include <kservicetypetrader.h>
 #include <KGlobalAccel>
 #include <KAuthorized>
 #include <KWindowSystem>
@@ -1284,9 +1283,12 @@ void ShellCorona::checkAddPanelAction(const QStringList \
&sycocaChanges)  m_addPanelsMenu = 0;
 
     KPluginInfo::List panelContainmentPlugins = \
                Plasma::PluginLoader::listContainmentsOfType("Panel");
-    const QString constraint = QString("[X-Plasma-Shell] == '%1' and 'panel' ~in \
                [X-Plasma-ContainmentCategories]")
-                                      .arg(qApp->applicationName());
-    KService::List templates = \
KServiceTypeTrader::self()->query("Plasma/LayoutTemplate", constraint); +
+    auto filter = [](const KPluginMetaData &md) -> bool
+    {
+        return md.value("X-Plasma-Shell") == qApp->applicationName() && \
md.value("X-Plasma-ContainmentCategories").contains("panel"); +    };
+    QList<KPluginMetaData> templates = \
KPackage::PackageLoader::self()->findPackages("Plasma/LayoutTemplate", QString(), \
filter);  
     if (panelContainmentPlugins.count() + templates.count() == 1) {
         m_addPanelAction = new QAction(i18n("Add Panel"), this);
@@ -1314,23 +1316,25 @@ void ShellCorona::populateAddPanelsMenu()
     const KPluginInfo emptyInfo;
 
     KPluginInfo::List panelContainmentPlugins = \
                Plasma::PluginLoader::listContainmentsOfType("Panel");
-    QMap<QString, QPair<KPluginInfo, KService::Ptr> > sorted;
+    QMap<QString, QPair<KPluginInfo, KPluginMetaData> > sorted;
     foreach (const KPluginInfo &plugin, panelContainmentPlugins) {
-        sorted.insert(plugin.name(), qMakePair(plugin, KService::Ptr(0)));
+        sorted.insert(plugin.name(), qMakePair(plugin, KPluginMetaData()));
     }
 
-    const QString constraint = QString("[X-Plasma-Shell] == '%1' and 'panel' in \
                [X-Plasma-ContainmentCategories]")
-                                      .arg(qApp->applicationName());
-    KService::List templates = \
                KServiceTypeTrader::self()->query("Plasma/LayoutTemplate", \
                constraint);
-    foreach (const KService::Ptr &service, templates) {
-        sorted.insert(service->name(), qMakePair(emptyInfo, service));
+    auto filter = [](const KPluginMetaData &md) -> bool
+    {
+        return md.value("X-Plasma-Shell") == qApp->applicationName() && \
md.value("X-Plasma-ContainmentCategories").contains("panel"); +    };
+    QList<KPluginMetaData> templates = \
KPackage::PackageLoader::self()->findPackages("Plasma/LayoutTemplate", QString(), \
filter); +    for (auto tpl : templates) {
+        sorted.insert(tpl.name(), qMakePair(emptyInfo, tpl));
     }
 
-    QMapIterator<QString, QPair<KPluginInfo, KService::Ptr> > it(sorted);
+    QMapIterator<QString, QPair<KPluginInfo, KPluginMetaData> > it(sorted);
     KPackage::Package package = \
KPackage::PackageLoader::self()->loadPackage("Plasma/LayoutTemplate");  while \
(it.hasNext()) {  it.next();
-        QPair<KPluginInfo, KService::Ptr> pair = it.value();
+        QPair<KPluginInfo, KPluginMetaData> pair = it.value();
         if (pair.first.isValid()) {
             KPluginInfo plugin = pair.first;
             QAction *action = m_addPanelsMenu->addAction(i18n("Empty %1", \
plugin.name()));


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

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