[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