File 0001-Use-KPackage-in-kcmscripts.patch of Package kwin5
From 9f55a53b78bf694655634f920339b92a88f22e92 Mon Sep 17 00:00:00 2001
From: David Edmundson <kde@davidedmundson.co.uk>
Date: Fri, 7 Oct 2016 13:27:19 +0100
Subject: [PATCH 1/5] Use KPackage in kcmscripts
Test Plan: Tested all but show OSD appeared
Reviewers: #plasma, graesslin
Reviewed By: #plasma, graesslin
Subscribers: graesslin, plasma-devel, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D2977
---
kcmkwin/kwinscripts/CMakeLists.txt | 1 +
kcmkwin/kwinscripts/module.cpp | 18 +++++++++++++++---
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/kcmkwin/kwinscripts/CMakeLists.txt b/kcmkwin/kwinscripts/CMakeLists.txt
index ad19db60c..c6cd344ce 100644
--- a/kcmkwin/kwinscripts/CMakeLists.txt
+++ b/kcmkwin/kwinscripts/CMakeLists.txt
@@ -18,6 +18,7 @@ target_link_libraries(kcm_kwin_scripts
KF5::KCMUtils
KF5::KIOCore
KF5::I18n
+ KF5::Package
KF5::Plasma
KF5::NewStuff
)
diff --git a/kcmkwin/kwinscripts/module.cpp b/kcmkwin/kwinscripts/module.cpp
index 7ecf96367..6b0519f58 100644
--- a/kcmkwin/kwinscripts/module.cpp
+++ b/kcmkwin/kwinscripts/module.cpp
@@ -33,8 +33,10 @@
#include <KMessageBox>
#include <KMessageWidget>
#include <KPluginInfo>
-#include <KServiceTypeTrader>
+#include <KPackage/PackageLoader>
+#include <KPackage/Package>
#include <Plasma/Package>
+
#include <KNewStuff3/KNS3/DownloadDialog>
#include "version.h"
@@ -95,8 +97,18 @@ void Module::importScript()
void Module::updateListViewContents()
{
- KService::List offers = KServiceTypeTrader::self()->query("KWin/Script", "not (exist [X-KWin-Exclude-Listing]) or [X-KWin-Exclude-Listing] == false");
- QList<KPluginInfo> scriptinfos = KPluginInfo::fromServices(offers);
+ auto filter = [](const KPluginMetaData &md) {
+ if (md.value(QStringLiteral("X-KWin-Exclude-Listing")) == QLatin1String("true") ) {
+ return false;
+ }
+ return true;
+ };
+
+ const QString scriptFolder = QStringLiteral("kwin/scripts/");
+ const auto scripts = KPackage::PackageLoader::self()->findPackages(QStringLiteral("KWin/Script"), scriptFolder, filter);
+
+ QList<KPluginInfo> scriptinfos = KPluginInfo::fromMetaData(scripts.toVector());
+
ui->scriptSelector->addPlugins(scriptinfos, KPluginSelector::ReadConfigFile, QString(), QString(), m_kwinConfig);
}
--
2.13.2