]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/settings/contextmenu/contextmenusettingspage.cpp
Merge branch 'release/22.04'
[dolphin.git] / src / settings / contextmenu / contextmenusettingspage.cpp
index cfbfefe52573d9d780ccab9d6a8a329ec75f39ce..cec1f96491d4c6039fc03e7ac0dc845c2b34896a 100644 (file)
 #include "global.h"
 
 #include <KDesktopFile>
+#include <KDesktopFileActions>
+#include <KFileUtils>
 #include <KLocalizedString>
 #include <KMessageBox>
 #include <KNS3/Button>
 #include <KPluginMetaData>
 #include <KService>
 #include <KServiceTypeTrader>
-#include <KDesktopFileActions>
 
 #include <kio_version.h>
 
@@ -272,9 +273,13 @@ void ContextMenuSettingsPage::loadServices()
     const KConfigGroup showGroup = config.group("Show");
 
     // Load generic services
-    const KService::List entries = KServiceTypeTrader::self()->query(QStringLiteral("KonqPopupMenu/Plugin"));
-    for (const KService::Ptr &service : entries) {
-        const QString file = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kservices5/" % service->entryPath());
+    const auto locations = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("kio/servicemenus"), QStandardPaths::LocateDirectory);
+    QStringList files = KFileUtils::findAllUniqueFiles(locations);
+    const KService::List services = KServiceTypeTrader::self()->query(QStringLiteral("KonqPopupMenu/Plugin"));
+    for (const KService::Ptr &service : services) {
+        files << QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kservices5/" % service->entryPath());
+    }
+    for (const auto &file : qAsConst(files)) {
         const QList<KServiceAction> serviceActions = KDesktopFileActions::userDefinedServices(KService(file), true);
 
         const KDesktopFile desktopFile(file);
@@ -338,18 +343,6 @@ void ContextMenuSettingsPage::loadVersionControlSystems()
         loadedPlugins += pluginName;
     }
 
-    const KService::List pluginServices = KServiceTypeTrader::self()->query(QStringLiteral("FileViewVersionControlPlugin"));
-    for (const auto &plugin : pluginServices) {
-        const QString pluginName = plugin->name();
-        if (loadedPlugins.contains(pluginName)) {
-            continue;
-        }
-        addRow(QStringLiteral("code-class"),
-               pluginName,
-               VersionControlServicePrefix + pluginName,
-               enabledPlugins.contains(pluginName));
-    }
-
     m_sortModel->sort(Qt::DisplayRole);
 }