diff options
Diffstat (limited to 'src/settings/contextmenu/contextmenusettingspage.cpp')
| -rw-r--r-- | src/settings/contextmenu/contextmenusettingspage.cpp | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/src/settings/contextmenu/contextmenusettingspage.cpp b/src/settings/contextmenu/contextmenusettingspage.cpp index 8ebac2e12..cec1f9649 100644 --- a/src/settings/contextmenu/contextmenusettingspage.cpp +++ b/src/settings/contextmenu/contextmenusettingspage.cpp @@ -14,13 +14,14 @@ #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,10 +273,14 @@ 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 QList<KServiceAction> serviceActions = KDesktopFileActions::userDefinedServices(file, true); + 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); const QString subMenuName = desktopFile.desktopGroup().readEntry("X-KDE-Submenu"); @@ -307,7 +312,7 @@ void ContextMenuSettingsPage::loadServices() #endif // Load JSON-based plugins that implement the KFileItemActionPlugin interface - const auto jsonPlugins = KPluginLoader::findPlugins(QStringLiteral("kf5/kfileitemaction")); + const auto jsonPlugins = KPluginMetaData::findPlugins(QStringLiteral("kf5/kfileitemaction")); for (const auto &jsonMetadata : jsonPlugins) { const QString desktopEntryName = jsonMetadata.pluginId(); @@ -328,7 +333,7 @@ void ContextMenuSettingsPage::loadVersionControlSystems() // Create a checkbox for each available version control plugin QSet<QString> loadedPlugins; - const QVector<KPluginMetaData> plugins = KPluginLoader::findPlugins(QStringLiteral("dolphin/vcs")); + const QVector<KPluginMetaData> plugins = KPluginMetaData::findPlugins(QStringLiteral("dolphin/vcs")); for (const auto &plugin : plugins) { const QString pluginName = plugin.name(); addRow(QStringLiteral("code-class"), @@ -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); } |
