]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/settings/contextmenu/contextmenusettingspage.cpp
"Group by" exists, group sorting rule is separate from sorting rule. Very WIP and...
[dolphin.git] / src / settings / contextmenu / contextmenusettingspage.cpp
index 5e755d249d97cd39fade45a25c308d7cb6756a4c..64b78d2bdc9fb37d3e20bbeeee18105968fef0f6 100644 (file)
@@ -7,13 +7,11 @@
 #include "contextmenusettingspage.h"
 
 #include "dolphin_contextmenusettings.h"
-#include "dolphin_generalsettings.h"
 #include "dolphin_versioncontrolsettings.h"
 #include "global.h"
 #include "settings/servicemodel.h"
 
 #include <KDesktopFile>
-#include <KDesktopFileActions>
 #include <KFileUtils>
 #include <KLocalizedString>
 #include <KMessageBox>
@@ -112,12 +110,16 @@ bool ContextMenuSettingsPage::entryVisible(const QString &id)
         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") {
@@ -138,12 +140,16 @@ void ContextMenuSettingsPage::setEntryVisible(const QString &id, bool visible)
         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") {
@@ -164,23 +170,22 @@ void ContextMenuSettingsPage::applySettings()
     }
 
     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).value<Qt::CheckState>() == Qt::Checked;
+    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)) {
@@ -201,24 +206,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 {
@@ -230,14 +226,13 @@ void ContextMenuSettingsPage::applySettings()
 
 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::Checked : Qt::Unchecked, Qt::CheckStateRole);
+        m_serviceModel->setData(index, checked ? Qt::Checked : Qt::Unchecked, Qt::CheckStateRole);
     }
 }
 
@@ -250,7 +245,7 @@ void ContextMenuSettingsPage::showEvent(QShowEvent *event)
 
         // 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
@@ -279,14 +274,14 @@ void ContextMenuSettingsPage::showEvent(QShowEvent *event)
 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 : std::as_const(files)) {
-        const QList<KServiceAction> serviceActions = KDesktopFileActions::userDefinedServices(KService(file), true);
+        const QList<KServiceAction> serviceActions = KService(file).actions();
 
         const KDesktopFile desktopFile(file);
         const QString subMenuName = desktopFile.desktopGroup().readEntry("X-KDE-Submenu");