#include "dolphin_generalsettings.h"
#include "dolphin_versioncontrolsettings.h"
-#include <KConfig>
-#include <KConfigGroup>
#include <KDesktopFile>
#include <kdesktopfileactions.h>
-#include <KIcon>
-#include <KLocale>
+#include <QIcon>
+#include <KLocalizedString>
#include <KMessageBox>
#include <KNS3/Button>
+#include <KPluginMetaData>
#include <KService>
#include <KServiceTypeTrader>
-#include <KStandardDirs>
#include <settings/serviceitemdelegate.h>
#include <settings/servicemodel.h>
-#include <QCheckBox>
#include <QGridLayout>
-#include <QGroupBox>
#include <QLabel>
#include <QListWidget>
-#include <QPushButton>
#include <QSortFilterProxyModel>
-#include <QShowEvent>
namespace
{
const bool ShowDeleteDefault = false;
- const char* VersionControlServicePrefix = "_version_control_";
- const char* DeleteService = "_delete";
- const char* CopyToMoveToService ="_copy_to_move_to";
+ const char VersionControlServicePrefix[] = "_version_control_";
+ const char DeleteService[] = "_delete";
+ const char CopyToMoveToService[] ="_copy_to_move_to";
}
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);
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);
return;
}
- KConfig config("kservicemenurc", KConfig::NoGlobals);
+ KConfig config(QStringLiteral("kservicemenurc"), KConfig::NoGlobals);
KConfigGroup showGroup = config.group("Show");
QStringList enabledPlugins;
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();
} else if (service == QLatin1String(CopyToMoveToService)) {
GeneralSettings::setShowCopyMoveMenu(checked);
- GeneralSettings::self()->writeConfig();
+ GeneralSettings::self()->save();
} else {
showGroup.writeEntry(service, checked);
}
if (m_enabledVcsPlugins != enabledPlugins) {
VersionControlSettings::setEnabledPlugins(enabledPlugins);
- VersionControlSettings::self()->writeConfig();
+ VersionControlSettings::self()->save();
KMessageBox::information(window(),
i18nc("@info", "Dolphin must be restarted to apply the "
"updated version control systems settings."),
QString(), // default title
- QLatin1String("ShowVcsRestartInformation"));
+ QStringLiteral("ShowVcsRestartInformation"));
}
}
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());
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 = KStandardDirs::locate("services", service->entryPath());
+ const QString file = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kservices5/" % service->entryPath());
const QList<KServiceAction> serviceActions =
KDesktopFileActions::userDefinedServices(file, true);
}
// 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)) {
}
}
+ // 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);
}
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));
m_serviceModel->setData(index, checked, Qt::CheckStateRole);
}
-#include "servicessettingspage.moc"