#include "contextmenusettingspage.h"
#include "dolphin_contextmenusettings.h"
-#include "dolphin_generalsettings.h"
#include "dolphin_versioncontrolsettings.h"
#include "global.h"
-#include "settings/serviceitemdelegate.h"
#include "settings/servicemodel.h"
#include <KDesktopFile>
-#include <KDesktopFileActions>
#include <KFileUtils>
#include <KLocalizedString>
#include <KMessageBox>
this);
label->setWordWrap(true);
m_searchLineEdit = new QLineEdit(this);
- m_searchLineEdit->setPlaceholderText(i18nc("@label:textbox", "Search..."));
+ m_searchLineEdit->setPlaceholderText(i18nc("@label:textbox", "Search…"));
connect(m_searchLineEdit, &QLineEdit::textChanged, this, [this](const QString &filter) {
m_sortModel->setFilterFixedString(filter);
});
m_listView = new QListView(this);
QScroller::grabGesture(m_listView->viewport(), QScroller::TouchGesture);
- auto *delegate = new ServiceItemDelegate(m_listView, m_listView);
m_serviceModel = new ServiceModel(this);
m_sortModel = new QSortFilterProxyModel(this);
m_sortModel->setSourceModel(m_serviceModel);
m_sortModel->setFilterRole(Qt::DisplayRole);
m_sortModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
m_listView->setModel(m_sortModel);
- m_listView->setItemDelegate(delegate);
m_listView->setVerticalScrollMode(QListView::ScrollPerPixel);
connect(m_listView, &QListView::clicked, this, &ContextMenuSettingsPage::changed);
#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();
return ContextMenuSettings::showAddToPlaces();
} else if (id == "sort") {
return ContextMenuSettings::showSortBy();
+ } else if (id == "group") {
+ return ContextMenuSettings::showGroupBy();
} else if (id == "view_mode") {
return ContextMenuSettings::showViewMode();
} else if (id == "open_in_new_tab") {
return ContextMenuSettings::showOpenInNewTab();
} else if (id == "open_in_new_window") {
return ContextMenuSettings::showOpenInNewWindow();
+ } else if (id == "open_in_split_view") {
+ return ContextMenuSettings::showOpenInSplitView();
} else if (id == "copy_location") {
return ContextMenuSettings::showCopyLocation();
} else if (id == "duplicate") {
ContextMenuSettings::setShowAddToPlaces(visible);
} else if (id == "sort") {
ContextMenuSettings::setShowSortBy(visible);
+ } else if (id == "group") {
+ ContextMenuSettings::setShowGroupBy(visible);
} else if (id == "view_mode") {
ContextMenuSettings::setShowViewMode(visible);
} else if (id == "open_in_new_tab") {
ContextMenuSettings::setShowOpenInNewTab(visible);
} else if (id == "open_in_new_window") {
ContextMenuSettings::setShowOpenInNewWindow(visible);
+ } else if (id == "open_in_split_view") {
+ return ContextMenuSettings::setShowOpenInSplitView(visible);
} else if (id == "copy_location") {
ContextMenuSettings::setShowCopyLocation(visible);
} else if (id == "duplicate") {
}
KConfig config(QStringLiteral("kservicemenurc"), KConfig::NoGlobals);
- KConfigGroup showGroup = config.group("Show");
+ KConfigGroup showGroup = config.group(QStringLiteral("Show"));
QStringList enabledPlugins;
- const 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 = model->data(index, Qt::CheckStateRole).toBool();
+ for (int i = 0; i < m_serviceModel->rowCount(); ++i) {
+ const QModelIndex index = m_serviceModel->index(i, 0);
+ const QString service = m_serviceModel->data(index, ServiceModel::DesktopEntryNameRole).toString();
+ const bool checked = m_serviceModel->data(index, Qt::CheckStateRole).value<Qt::CheckState>() == Qt::Checked;
if (service.startsWith(VersionControlServicePrefix)) {
if (checked) {
- enabledPlugins.append(model->data(index, Qt::DisplayRole).toString());
+ enabledPlugins.append(m_serviceModel->data(index, Qt::DisplayRole).toString());
}
} else if (service == QLatin1String(DeleteService)) {
KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig(QStringLiteral("kdeglobals"), KConfig::NoGlobals);
- KConfigGroup configGroup(globalConfig, "KDE");
+ KConfigGroup configGroup(globalConfig, QStringLiteral("KDE"));
configGroup.writeEntry("ShowDeleteCommand", checked);
configGroup.sync();
} else if (service == QLatin1String(CopyToMoveToService)) {
VersionControlSettings::self()->save();
if (!laterSelected) {
-#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();
- for (int i = 0; i < model->rowCount(); ++i) {
- const QModelIndex index = model->index(i, 0);
- const QString service = model->data(index, ServiceModel::DesktopEntryNameRole).toString();
+ for (int i = 0; i < m_serviceModel->rowCount(); ++i) {
+ const QModelIndex index = m_serviceModel->index(i, 0);
+ const QString service = m_serviceModel->data(index, ServiceModel::DesktopEntryNameRole).toString();
const bool checked =
!service.startsWith(VersionControlServicePrefix) && service != QLatin1String(DeleteService) && service != QLatin1String(CopyToMoveToService);
- model->setData(index, checked, Qt::CheckStateRole);
+ m_serviceModel->setData(index, checked ? Qt::Checked : Qt::Unchecked, Qt::CheckStateRole);
}
}
// Add "Show 'Delete' command" as service
KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig(QStringLiteral("kdeglobals"), KConfig::IncludeGlobals);
- KConfigGroup configGroup(globalConfig, "KDE");
+ KConfigGroup configGroup(globalConfig, QStringLiteral("KDE"));
addRow(QStringLiteral("edit-delete"), i18nc("@option:check", "Delete"), DeleteService, configGroup.readEntry("ShowDeleteCommand", ShowDeleteDefault));
// Add "Show 'Copy To' and 'Move To' commands" as service
for (const QString &id : m_actionIds) {
const QAction *action = m_actions->action(id);
if (action) {
- addRow(action->icon().name(), action->text(), id, entryVisible(id));
+ addRow(action->icon().name(), KLocalizedString::removeAcceleratorMarker(action->text()), id, entryVisible(id));
}
}
}
void ContextMenuSettingsPage::loadServices()
{
const KConfig config(QStringLiteral("kservicemenurc"), KConfig::NoGlobals);
- const KConfigGroup showGroup = config.group("Show");
+ const KConfigGroup showGroup = config.group(QStringLiteral("Show"));
// Load generic services
const auto locations = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("kio/servicemenus"), QStandardPaths::LocateDirectory);
QStringList files = KFileUtils::findAllUniqueFiles(locations);
- for (const auto &file : qAsConst(files)) {
- const QList<KServiceAction> serviceActions = KDesktopFileActions::userDefinedServices(KService(file), true);
+ for (const auto &file : std::as_const(files)) {
+ const QList<KServiceAction> serviceActions = KService(file).actions();
const KDesktopFile desktopFile(file);
const QString subMenuName = desktopFile.desktopGroup().readEntry("X-KDE-Submenu");
}
// Load JSON-based plugins that implement the KFileItemActionPlugin interface
- const auto jsonPlugins = KPluginMetaData::findPlugins(QStringLiteral("kf" QT_STRINGIFY(QT_MAJOR_VERSION)) + QStringLiteral("/kfileitemaction"));
+ const auto jsonPlugins = KPluginMetaData::findPlugins(QStringLiteral("kf6/kfileitemaction"));
for (const auto &jsonMetadata : jsonPlugins) {
const QString desktopEntryName = jsonMetadata.pluginId();
m_serviceModel->setData(index, icon, Qt::DecorationRole);
m_serviceModel->setData(index, text, Qt::DisplayRole);
m_serviceModel->setData(index, value, ServiceModel::DesktopEntryNameRole);
- m_serviceModel->setData(index, checked, Qt::CheckStateRole);
+ m_serviceModel->setData(index, checked ? Qt::Checked : Qt::Unchecked, Qt::CheckStateRole);
}
+
+#include "moc_contextmenusettingspage.cpp"