]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/settings/services/servicessettingspage.cpp
Load KFileItemAction plugins with json metadata
[dolphin.git] / src / settings / services / servicessettingspage.cpp
index 4cfa2327c9fa77a6124b4d90040a9784cc8180c5..e124fb2c58393a94a34b64a17f9561e426b36579 100644 (file)
@@ -30,6 +30,7 @@
 #include <KLocalizedString>
 #include <KMessageBox>
 #include <KNS3/Button>
+#include <KPluginMetaData>
 #include <KService>
 #include <KServiceTypeTrader>
 #include <QStandardPaths>
@@ -228,6 +229,19 @@ void ServicesSettingsPage::loadServices()
         }
     }
 
+    // Load JSON-based plugins that implement the KFileItemActionPlugin interface
+    const auto jsonPlugins = KPluginLoader::findPlugins(QString(), [](const KPluginMetaData& metaData) {
+        return metaData.serviceTypes().contains(QStringLiteral("KFileItemAction/Plugin"));
+    });
+
+    foreach (const auto& jsonMetadata, jsonPlugins) {
+        const QString desktopEntryName = jsonMetadata.pluginId();
+        if (!isInServicesList(desktopEntryName)) {
+            const bool checked = showGroup.readEntry(desktopEntryName, true);
+            addRow(jsonMetadata.iconName(), jsonMetadata.name(), desktopEntryName, checked);
+        }
+    }
+
     m_sortModel->sort(Qt::DisplayRole);
 }