From f48cf072f9daf5f083bcc26ccb86c9564a8ac2a1 Mon Sep 17 00:00:00 2001 From: Vlad Zagorodniy Date: Mon, 2 Jul 2018 17:58:33 +0300 Subject: [PATCH] [kcmkwin/kwindesktop] Use PackageLoader to get effect metadata Summary: `KPluginInfo(KService::Ptr)` is deprecated in favor of using plugin loaders. Test Plan: * Go to System Settins -> Desktop Behavior > Virtual Desktops * Open Switching tab * Select Fade desktop * Click the info button Reviewers: #kwin, apol, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13851 --- kcmkwin/kwindesktop/CMakeLists.txt | 1 + kcmkwin/kwindesktop/main.cpp | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/kcmkwin/kwindesktop/CMakeLists.txt b/kcmkwin/kwindesktop/CMakeLists.txt index 06ebd993b1..77572bee73 100644 --- a/kcmkwin/kwindesktop/CMakeLists.txt +++ b/kcmkwin/kwindesktop/CMakeLists.txt @@ -18,6 +18,7 @@ target_link_libraries(kcm_kwindesktop KF5::Completion KF5::GlobalAccel KF5::I18n + KF5::Package KF5::WindowSystem KF5::XmlGui ${X11_LIBRARIES} diff --git a/kcmkwin/kwindesktop/main.cpp b/kcmkwin/kwindesktop/main.cpp index 1b90300e7c..31b8e2edf0 100644 --- a/kcmkwin/kwindesktop/main.cpp +++ b/kcmkwin/kwindesktop/main.cpp @@ -33,6 +33,8 @@ along with this program. If not, see . #include #include #include +#include +#include #include #include #include @@ -570,12 +572,17 @@ void KWinDesktopConfig::slotAboutEffectClicked() delete aboutPlugin; }; if (fromKService) { - KServiceTypeTrader* trader = KServiceTypeTrader::self(); - KService::List services; - services = trader->query("KWin/Effect", "[X-KDE-PluginInfo-Name] == 'kwin4_effect_" + effect + '\''); - if (services.isEmpty()) + const QString pluginId = QStringLiteral("kwin4_effect_%1").arg(effect); + const auto effectsMetaData = KPackage::PackageLoader::self()->findPackages( + QStringLiteral("KWin/Effect"), + QStringLiteral("kwin/effects/"), + [&pluginId](const KPluginMetaData &meta) { + return meta.pluginId() == pluginId; + }); + if (effectsMetaData.isEmpty()) { return; - KPluginInfo pluginInfo(services.first()); + } + KPluginInfo pluginInfo(effectsMetaData.first()); const QString name = pluginInfo.name(); const QString comment = pluginInfo.comment();