X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/01e4f60a0931aba506b184d384a4e2f926b2233c..48b58f830a585b773435c9af5ee2fe8f0c7c641d:/src/settings/services/servicessettingspage.cpp diff --git a/src/settings/services/servicessettingspage.cpp b/src/settings/services/servicessettingspage.cpp index da49c7d0a..45acccd9f 100644 --- a/src/settings/services/servicessettingspage.cpp +++ b/src/settings/services/servicessettingspage.cpp @@ -21,30 +21,22 @@ #include "dolphin_generalsettings.h" #include "dolphin_versioncontrolsettings.h" +#include "settings/serviceitemdelegate.h" +#include "settings/servicemodel.h" -#include -#include #include -#include -#include -#include +#include #include #include +#include #include #include -#include - -#include -#include +#include -#include #include -#include #include #include -#include #include -#include namespace { @@ -57,9 +49,9 @@ namespace ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) : SettingsPageBase(parent), m_initialized(false), - m_serviceModel(0), - m_sortModel(0), - m_listView(0), + m_serviceModel(nullptr), + m_sortModel(nullptr), + m_listView(nullptr), m_enabledVcsPlugins() { QVBoxLayout* topLayout = new QVBoxLayout(this); @@ -81,7 +73,7 @@ ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) : connect(m_listView, &QListView::clicked, this, &ServicesSettingsPage::changed); KNS3::Button* downloadButton = new KNS3::Button(i18nc("@action:button", "Download New Services..."), - "servicemenu.knsrc", + QStringLiteral("servicemenu.knsrc"), this); connect(downloadButton, &KNS3::Button::dialogFinished, this, &ServicesSettingsPage::loadServices); @@ -103,7 +95,7 @@ void ServicesSettingsPage::applySettings() return; } - KConfig config("kservicemenurc", KConfig::NoGlobals); + KConfig config(QStringLiteral("kservicemenurc"), KConfig::NoGlobals); KConfigGroup showGroup = config.group("Show"); QStringList enabledPlugins; @@ -119,7 +111,7 @@ void ServicesSettingsPage::applySettings() enabledPlugins.append(model->data(index, Qt::DisplayRole).toString()); } } else if (service == QLatin1String(DeleteService)) { - KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig("kdeglobals", KConfig::NoGlobals); + KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig(QStringLiteral("kdeglobals"), KConfig::NoGlobals); KConfigGroup configGroup(globalConfig, "KDE"); configGroup.writeEntry("ShowDeleteCommand", checked); configGroup.sync(); @@ -141,7 +133,7 @@ void ServicesSettingsPage::applySettings() i18nc("@info", "Dolphin must be restarted to apply the " "updated version control systems settings."), QString(), // default title - QLatin1String("ShowVcsRestartInformation")); + QStringLiteral("ShowVcsRestartInformation")); } } @@ -167,15 +159,15 @@ void ServicesSettingsPage::showEvent(QShowEvent* event) loadVersionControlSystems(); // Add "Show 'Delete' command" as service - KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig("kdeglobals", KConfig::IncludeGlobals); + KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig(QStringLiteral("kdeglobals"), KConfig::IncludeGlobals); KConfigGroup configGroup(globalConfig, "KDE"); - addRow("edit-delete", + addRow(QStringLiteral("edit-delete"), i18nc("@option:check", "Delete"), DeleteService, configGroup.readEntry("ShowDeleteCommand", ShowDeleteDefault)); // Add "Show 'Copy To' and 'Move To' commands" as service - addRow("edit-copy", + addRow(QStringLiteral("edit-copy"), i18nc("@option:check", "'Copy To' and 'Move To' commands"), CopyToMoveToService, GeneralSettings::showCopyMoveMenu()); @@ -189,11 +181,11 @@ void ServicesSettingsPage::showEvent(QShowEvent* event) void ServicesSettingsPage::loadServices() { - const KConfig config("kservicemenurc", KConfig::NoGlobals); + const KConfig config(QStringLiteral("kservicemenurc"), KConfig::NoGlobals); const KConfigGroup showGroup = config.group("Show"); // Load generic services - const KService::List entries = KServiceTypeTrader::self()->query("KonqPopupMenu/Plugin"); + const KService::List entries = KServiceTypeTrader::self()->query(QStringLiteral("KonqPopupMenu/Plugin")); foreach (const KService::Ptr& service, entries) { const QString file = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kservices5/" % service->entryPath()); const QList serviceActions = @@ -219,7 +211,7 @@ void ServicesSettingsPage::loadServices() } // Load service plugins that implement the KFileItemActionPlugin interface - const KService::List pluginServices = KServiceTypeTrader::self()->query("KFileItemAction/Plugin"); + const KService::List pluginServices = KServiceTypeTrader::self()->query(QStringLiteral("KFileItemAction/Plugin")); foreach (const KService::Ptr& service, pluginServices) { const QString desktopEntryName = service->desktopEntryName(); if (!isInServicesList(desktopEntryName)) { @@ -228,6 +220,19 @@ void ServicesSettingsPage::loadServices() } } + // Load JSON-based plugins that implement the KFileItemActionPlugin interface + const auto jsonPlugins = KPluginLoader::findPlugins(QStringLiteral("kf5/kfileitemaction"), [](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); } @@ -236,10 +241,10 @@ void ServicesSettingsPage::loadVersionControlSystems() const QStringList enabledPlugins = VersionControlSettings::enabledPlugins(); // Create a checkbox for each available version control plugin - const KService::List pluginServices = KServiceTypeTrader::self()->query("FileViewVersionControlPlugin"); + const KService::List pluginServices = KServiceTypeTrader::self()->query(QStringLiteral("FileViewVersionControlPlugin")); for (KService::List::ConstIterator it = pluginServices.constBegin(); it != pluginServices.constEnd(); ++it) { const QString pluginName = (*it)->name(); - addRow("code-class", + addRow(QStringLiteral("code-class"), pluginName, VersionControlServicePrefix + pluginName, enabledPlugins.contains(pluginName));