#include "contextmenusettingspage.h"
+#include "dolphin_contextmenusettings.h"
#include "dolphin_generalsettings.h"
#include "dolphin_versioncontrolsettings.h"
-#include "dolphin_contextmenusettings.h"
+#include "global.h"
#include "settings/serviceitemdelegate.h"
#include "settings/servicemodel.h"
-#include "global.h"
#include <KDesktopFile>
#include <KDesktopFileActions>
#include <KMessageBox>
#include <KPluginMetaData>
#include <KService>
-#include <KServiceTypeTrader>
#include <kio_version.h>
#include <kiocore_export.h>
#include <kservice_export.h>
+#include <kwidgetsaddons_version.h>
-#include <QtGlobal>
#include <KNSWidgets/Button>
+#include <QtGlobal>
+#include <QApplication>
#include <QGridLayout>
#include <QLabel>
+#include <QLineEdit>
#include <QListWidget>
#include <QScroller>
#include <QShowEvent>
#include <QSortFilterProxyModel>
-#include <QLineEdit>
-#include <QApplication>
namespace
{
- const bool ShowDeleteDefault = false;
- const char VersionControlServicePrefix[] = "_version_control_";
- const char DeleteService[] = "_delete";
- const char CopyToMoveToService[] ="_copy_to_move_to";
+const bool ShowDeleteDefault = false;
+const char VersionControlServicePrefix[] = "_version_control_";
+const char DeleteService[] = "_delete";
+const char CopyToMoveToService[] = "_copy_to_move_to";
- bool laterSelected = false;
+bool laterSelected = false;
}
-ContextMenuSettingsPage::ContextMenuSettingsPage(QWidget* parent,
- const KActionCollection* actions,
- const QStringList& actionIds) :
- SettingsPageBase(parent),
- m_initialized(false),
- m_serviceModel(nullptr),
- m_sortModel(nullptr),
- m_listView(nullptr),
- m_enabledVcsPlugins(),
- m_actions(actions),
- m_actionIds(actionIds)
+ContextMenuSettingsPage::ContextMenuSettingsPage(QWidget *parent, const KActionCollection *actions, const QStringList &actionIds)
+ : SettingsPageBase(parent)
+ , m_initialized(false)
+ , m_serviceModel(nullptr)
+ , m_sortModel(nullptr)
+ , m_listView(nullptr)
+ , m_enabledVcsPlugins()
+ , m_actions(actions)
+ , m_actionIds(actionIds)
{
- QVBoxLayout* topLayout = new QVBoxLayout(this);
+ QVBoxLayout *topLayout = new QVBoxLayout(this);
- QLabel* label = new QLabel(i18nc("@label:textbox",
+ QLabel *label = new QLabel(i18nc("@label:textbox",
"Select which services should "
- "be shown in the context menu:"), this);
+ "be shown in the context menu:"),
+ this);
label->setWordWrap(true);
m_searchLineEdit = new QLineEdit(this);
m_searchLineEdit->setPlaceholderText(i18nc("@label:textbox", "Search..."));
- connect(m_searchLineEdit, &QLineEdit::textChanged, this, [this](const QString &filter){
+ connect(m_searchLineEdit, &QLineEdit::textChanged, this, [this](const QString &filter) {
m_sortModel->setFilterFixedString(filter);
});
#ifndef Q_OS_WIN
using NewStuffButton = KNSWidgets::Button;
- auto *downloadButton = new NewStuffButton(i18nc("@action:button", "Download New Services..."),
- QStringLiteral("servicemenu.knsrc"),
- this);
+ auto *downloadButton = new NewStuffButton(i18nc("@action:button", "Download New Services..."), QStringLiteral("servicemenu.knsrc"), this);
connect(downloadButton, &NewStuffButton::dialogFinished, this, [this](const auto &changedEntries) {
- if (!changedEntries.isEmpty()) {
- m_serviceModel->clear();
- loadServices();
- }
+ if (!changedEntries.isEmpty()) {
+ m_serviceModel->clear();
+ loadServices();
+ }
});
topLayout->addWidget(downloadButton);
#endif // Q_OS_WIN
std::sort(m_enabledVcsPlugins.begin(), m_enabledVcsPlugins.end());
}
-ContextMenuSettingsPage::~ContextMenuSettingsPage() {
+ContextMenuSettingsPage::~ContextMenuSettingsPage()
+{
}
-bool ContextMenuSettingsPage::entryVisible(const QString& id)
+bool ContextMenuSettingsPage::entryVisible(const QString &id)
{
if (id == "add_to_places") {
return ContextMenuSettings::showAddToPlaces();
return false;
}
-void ContextMenuSettingsPage::setEntryVisible(const QString& id, bool visible)
+void ContextMenuSettingsPage::setEntryVisible(const QString &id, bool visible)
{
if (id == "add_to_places") {
ContextMenuSettings::setShowAddToPlaces(visible);
VersionControlSettings::self()->save();
if (!laterSelected) {
- KMessageBox::ButtonCode promptRestart = KMessageBox::questionYesNo(window(),
- i18nc("@info", "Dolphin must be restarted to apply the "
- "updated version control system settings."),
- i18nc("@info", "Restart now?"),
- KGuiItem(QApplication::translate("KStandardGuiItem", "&Restart"), QStringLiteral("dialog-restart")),
- KGuiItem(QApplication::translate("KStandardGuiItem", "&Later"), QStringLiteral("dialog-later"))
- );
+#if KWIDGETSADDONS_VERSION >= QT_VERSION_CHECK(5, 100, 0)
+ KMessageBox::ButtonCode promptRestart =
+ KMessageBox::questionTwoActions(window(),
+#else
+ KMessageBox::ButtonCode promptRestart =
+ KMessageBox::questionYesNo(window(),
+#endif
+ i18nc("@info",
+ "Dolphin must be restarted to apply the "
+ "updated version control system settings."),
+ i18nc("@info", "Restart now?"),
+ KGuiItem(QApplication::translate("KStandardGuiItem", "&Restart"), QStringLiteral("dialog-restart")),
+ KGuiItem(QApplication::translate("KStandardGuiItem", "&Later"), QStringLiteral("dialog-later")));
+#if KWIDGETSADDONS_VERSION >= QT_VERSION_CHECK(5, 100, 0)
+ if (promptRestart == KMessageBox::ButtonCode::PrimaryAction) {
+#else
if (promptRestart == KMessageBox::ButtonCode::Yes) {
+#endif
Dolphin::openNewWindow();
qApp->quit();
} else {
void ContextMenuSettingsPage::restoreDefaults()
{
- QAbstractItemModel* model = m_listView->model();
+ QAbstractItemModel *model = m_listView->model();
for (int i = 0; i < model->rowCount(); ++i) {
const QModelIndex index = model->index(i, 0);
const QString service = model->data(index, ServiceModel::DesktopEntryNameRole).toString();
- const bool checked = !service.startsWith(VersionControlServicePrefix)
- && service != QLatin1String(DeleteService)
- && service != QLatin1String(CopyToMoveToService);
+ const bool checked =
+ !service.startsWith(VersionControlServicePrefix) && service != QLatin1String(DeleteService) && service != QLatin1String(CopyToMoveToService);
model->setData(index, checked, Qt::CheckStateRole);
}
}
-void ContextMenuSettingsPage::showEvent(QShowEvent* event)
+void ContextMenuSettingsPage::showEvent(QShowEvent *event)
{
if (!event->spontaneous() && !m_initialized) {
loadServices();
// Add "Show 'Delete' command" as service
KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig(QStringLiteral("kdeglobals"), KConfig::IncludeGlobals);
KConfigGroup configGroup(globalConfig, "KDE");
- addRow(QStringLiteral("edit-delete"),
- i18nc("@option:check", "Delete"),
- DeleteService,
- configGroup.readEntry("ShowDeleteCommand", ShowDeleteDefault));
+ addRow(QStringLiteral("edit-delete"), i18nc("@option:check", "Delete"), DeleteService, configGroup.readEntry("ShowDeleteCommand", ShowDeleteDefault));
// Add "Show 'Copy To' and 'Move To' commands" as service
addRow(QStringLiteral("edit-copy"),
CopyToMoveToService,
ContextMenuSettings::showCopyMoveMenu());
- if (m_actions){
+ if (m_actions) {
// Add other built-in actions
- for (const QString& id : m_actionIds) {
- const QAction* action = m_actions->action(id);
+ for (const QString &id : m_actionIds) {
+ const QAction *action = m_actions->action(id);
if (action) {
addRow(action->icon().name(), action->text(), id, entryVisible(id));
}
const auto locations = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("kio/servicemenus"), QStandardPaths::LocateDirectory);
QStringList files = KFileUtils::findAllUniqueFiles(locations);
-#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 90)
- const KService::List services = KServiceTypeTrader::self()->query(QStringLiteral("KonqPopupMenu/Plugin"));
- for (const KService::Ptr &service : services) {
- files << QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kservices5/" % service->entryPath());
- }
-#endif
-
for (const auto &file : qAsConst(files)) {
const QList<KServiceAction> serviceActions = KDesktopFileActions::userDefinedServices(KService(file), true);
const bool addService = !action.noDisplay() && !action.isSeparator() && !isInServicesList(serviceName);
if (addService) {
- const QString itemName = subMenuName.isEmpty()
- ? action.text()
- : i18nc("@item:inmenu", "%1: %2", subMenuName, action.text());
+ const QString itemName = subMenuName.isEmpty() ? action.text() : i18nc("@item:inmenu", "%1: %2", subMenuName, action.text());
const bool checked = showGroup.readEntry(serviceName, true);
addRow(action.icon(), itemName, serviceName, checked);
}
}
}
- // Load service plugins, this is deprecated in KIO 5.82
-#if KIOCORE_BUILD_DEPRECATED_SINCE(5, 82)
- const KService::List pluginServices = KServiceTypeTrader::self()->query(QStringLiteral("KFileItemAction/Plugin"));
- for (const KService::Ptr &service : pluginServices) {
- const QString desktopEntryName = service->desktopEntryName();
- if (!isInServicesList(desktopEntryName)) {
- const bool checked = showGroup.readEntry(desktopEntryName, true);
- addRow(service->icon(), service->name(), desktopEntryName, checked);
- }
- }
-#endif
-
// Load JSON-based plugins that implement the KFileItemActionPlugin interface
- const auto jsonPlugins = KPluginMetaData::findPlugins(QStringLiteral("kf5/kfileitemaction"));
+ const auto jsonPlugins = KPluginMetaData::findPlugins(QStringLiteral("kf" QT_STRINGIFY(QT_MAJOR_VERSION)) + QStringLiteral("/kfileitemaction"));
for (const auto &jsonMetadata : jsonPlugins) {
const QString desktopEntryName = jsonMetadata.pluginId();
const QVector<KPluginMetaData> plugins = KPluginMetaData::findPlugins(QStringLiteral("dolphin/vcs"));
for (const auto &plugin : plugins) {
const QString pluginName = plugin.name();
- addRow(QStringLiteral("code-class"),
- pluginName,
- VersionControlServicePrefix + pluginName,
- enabledPlugins.contains(pluginName));
+ addRow(QStringLiteral("code-class"), pluginName, VersionControlServicePrefix + pluginName, enabledPlugins.contains(pluginName));
loadedPlugins += pluginName;
}
return false;
}
-void ContextMenuSettingsPage::addRow(const QString &icon,
- const QString &text,
- const QString &value,
- bool checked)
+void ContextMenuSettingsPage::addRow(const QString &icon, const QString &text, const QString &value, bool checked)
{
m_serviceModel->insertRow(0);