X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/b5e276d115c55241b0b193ee184f3bd206da8d33..99cc976a8564cbdae63e4261fcb2292a33148dbc:/src/settings/contextmenu/contextmenusettingspage.cpp diff --git a/src/settings/contextmenu/contextmenusettingspage.cpp b/src/settings/contextmenu/contextmenusettingspage.cpp index e04a7c65f..c92bad43e 100644 --- a/src/settings/contextmenu/contextmenusettingspage.cpp +++ b/src/settings/contextmenu/contextmenusettingspage.cpp @@ -21,6 +21,8 @@ #include #include +#include + #include #include #include @@ -120,6 +122,8 @@ bool ContextMenuSettingsPage::entryVisible(const QString& id) return ContextMenuSettings::showCopyLocation(); } else if (id == "duplicate") { return ContextMenuSettings::showDuplicateHere(); + } else if (id == "open_terminal") { + return ContextMenuSettings::showOpenTerminal(); } return false; } @@ -140,6 +144,8 @@ void ContextMenuSettingsPage::setEntryVisible(const QString& id, bool visible) ContextMenuSettings::setShowCopyLocation(visible); } else if (id == "duplicate") { ContextMenuSettings::setShowDuplicateHere(visible); + } else if (id == "open_terminal") { + ContextMenuSettings::setShowOpenTerminal(visible); } } @@ -274,7 +280,8 @@ void ContextMenuSettingsPage::loadServices() } } - // Load service plugins that implement the KFileItemActionPlugin interface + // Load service plugins, this is deprecated in KIO 5.82 +#if KIO_VERSION < QT_VERSION_CHECK(6, 0, 0) const KService::List pluginServices = KServiceTypeTrader::self()->query(QStringLiteral("KFileItemAction/Plugin")); for (const KService::Ptr &service : pluginServices) { const QString desktopEntryName = service->desktopEntryName(); @@ -283,11 +290,10 @@ void ContextMenuSettingsPage::loadServices() addRow(service->icon(), service->name(), desktopEntryName, checked); } } +#endif // Load JSON-based plugins that implement the KFileItemActionPlugin interface - const auto jsonPlugins = KPluginLoader::findPlugins(QStringLiteral("kf5/kfileitemaction"), [](const KPluginMetaData& metaData) { - return metaData.serviceTypes().contains(QLatin1String("KFileItemAction/Plugin")); - }); + const auto jsonPlugins = KPluginLoader::findPlugins(QStringLiteral("kf5/kfileitemaction")); for (const auto &jsonMetadata : jsonPlugins) { const QString desktopEntryName = jsonMetadata.pluginId(); @@ -306,9 +312,24 @@ void ContextMenuSettingsPage::loadVersionControlSystems() const QStringList enabledPlugins = VersionControlSettings::enabledPlugins(); // Create a checkbox for each available version control plugin + QSet loadedPlugins; + + const QVector plugins = KPluginLoader::findPlugins(QStringLiteral("dolphin/vcs")); + for (const auto &plugin : plugins) { + const QString pluginName = plugin.name(); + addRow(QStringLiteral("code-class"), + pluginName, + VersionControlServicePrefix + pluginName, + enabledPlugins.contains(pluginName)); + 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,