┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt1
-rw-r--r--src/settings/contextmenu/contextmenusettingspage.cpp20
2 files changed, 21 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 544c5f47d..88ccc058c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -152,6 +152,7 @@ endif()
ecm_set_disabled_deprecation_versions(
QT 5.15
KF 5.90
+ KSERVICE 5.89 # We use KServiceTypeTrader in a compat code path
)
add_subdirectory(src)
diff --git a/src/settings/contextmenu/contextmenusettingspage.cpp b/src/settings/contextmenu/contextmenusettingspage.cpp
index daf15bc1b..2205fadd0 100644
--- a/src/settings/contextmenu/contextmenusettingspage.cpp
+++ b/src/settings/contextmenu/contextmenusettingspage.cpp
@@ -20,6 +20,7 @@
#include <KMessageBox>
#include <KPluginMetaData>
#include <KService>
+#include <KServiceTypeTrader>
#include <kio_version.h>
#include <kiocore_export.h>
#include <kservice_export.h>
@@ -281,6 +282,13 @@ void ContextMenuSettingsPage::loadServices()
const auto locations = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("kio/servicemenus"), QStandardPaths::LocateDirectory);
QStringList files = KFileUtils::findAllUniqueFiles(locations);
+#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 90)
+ const KService::List services = KServiceTypeTrader::self()->query(QStringLiteral("KonqPopupMenu/Plugin"));
+ for (const KService::Ptr &service : services) {
+ files << QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kservices5/" % service->entryPath());
+ }
+#endif
+
for (const auto &file : qAsConst(files)) {
const QList<KServiceAction> serviceActions = KDesktopFileActions::userDefinedServices(KService(file), true);
@@ -299,6 +307,18 @@ void ContextMenuSettingsPage::loadServices()
}
}
+ // Load service plugins, this is deprecated in KIO 5.82
+#if KIOCORE_BUILD_DEPRECATED_SINCE(5, 82)
+ const KService::List pluginServices = KServiceTypeTrader::self()->query(QStringLiteral("KFileItemAction/Plugin"));
+ for (const KService::Ptr &service : pluginServices) {
+ const QString desktopEntryName = service->desktopEntryName();
+ if (!isInServicesList(desktopEntryName)) {
+ const bool checked = showGroup.readEntry(desktopEntryName, true);
+ addRow(service->icon(), service->name(), desktopEntryName, checked);
+ }
+ }
+#endif
+
// Load JSON-based plugins that implement the KFileItemActionPlugin interface
const auto jsonPlugins = KPluginMetaData::findPlugins(QStringLiteral("kf" QT_STRINGIFY(QT_VERSION_MAJOR)) + QStringLiteral("/kfileitemaction"));