]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/settings/contextmenu/contextmenusettingspage.cpp
Merge remote-tracking branch 'origin/master' into kf6
[dolphin.git] / src / settings / contextmenu / contextmenusettingspage.cpp
index 0dcc1d12b3ccb8559d5d06f3376699ee7b10cefc..1c83e477ea43305d559b85fd805705c6a8752182 100644 (file)
@@ -7,10 +7,8 @@
 #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>
@@ -64,7 +62,7 @@ ContextMenuSettingsPage::ContextMenuSettingsPage(QWidget *parent, const KActionC
                                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);
     });
@@ -72,7 +70,6 @@ ContextMenuSettingsPage::ContextMenuSettingsPage(QWidget *parent, const KActionC
     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);
@@ -81,7 +78,6 @@ ContextMenuSettingsPage::ContextMenuSettingsPage(QWidget *parent, const KActionC
     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);
 
@@ -91,7 +87,7 @@ ContextMenuSettingsPage::ContextMenuSettingsPage(QWidget *parent, const KActionC
 
 #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();
@@ -121,6 +117,8 @@ bool ContextMenuSettingsPage::entryVisible(const QString &id)
         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") {
@@ -147,6 +145,8 @@ void ContextMenuSettingsPage::setEntryVisible(const QString &id, bool visible)
         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") {
@@ -175,7 +175,7 @@ void ContextMenuSettingsPage::applySettings()
     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();
+        const bool checked = model->data(index, Qt::CheckStateRole).value<Qt::CheckState>() == Qt::Checked;
 
         if (service.startsWith(VersionControlServicePrefix)) {
             if (checked) {
@@ -204,24 +204,15 @@ void ContextMenuSettingsPage::applySettings()
         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 {
@@ -240,7 +231,7 @@ void ContextMenuSettingsPage::restoreDefaults()
 
         const bool checked =
             !service.startsWith(VersionControlServicePrefix) && service != QLatin1String(DeleteService) && service != QLatin1String(CopyToMoveToService);
-        model->setData(index, checked, Qt::CheckStateRole);
+        model->setData(index, checked ? Qt::Checked : Qt::Unchecked, Qt::CheckStateRole);
     }
 }
 
@@ -267,7 +258,7 @@ void ContextMenuSettingsPage::showEvent(QShowEvent *event)
             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));
                 }
             }
         }
@@ -288,7 +279,7 @@ void ContextMenuSettingsPage::loadServices()
     const auto locations = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("kio/servicemenus"), QStandardPaths::LocateDirectory);
     QStringList files = KFileUtils::findAllUniqueFiles(locations);
 
-    for (const auto &file : qAsConst(files)) {
+    for (const auto &file : std::as_const(files)) {
         const QList<KServiceAction> serviceActions = KDesktopFileActions::userDefinedServices(KService(file), true);
 
         const KDesktopFile desktopFile(file);
@@ -307,7 +298,7 @@ void ContextMenuSettingsPage::loadServices()
     }
 
     // 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();
@@ -357,5 +348,7 @@ void ContextMenuSettingsPage::addRow(const QString &icon, const QString &text, c
     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"