┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/settings/viewmodes
diff options
context:
space:
mode:
authorDimosthenis Krallis <[email protected]>2023-08-18 07:07:48 +0000
committerMéven Car <[email protected]>2023-08-18 07:07:48 +0000
commit489b56b68bb29e81337e115c490eea4403001b71 (patch)
tree4d88f18b937387cb2b8b025f1bdf7efde12f7c4f /src/settings/viewmodes
parentf413e83a2266db274409dfc01bf157b74eea922a (diff)
Dolphin settings revamp
It includes a move of the settings in the Navigation and Startup sections to the Interface (formerly Behavior) section. It also includes a new tab in the View (formerly View Mode) section, called General where some settings regarding Display style, Browsing and Miscellaneous settings The Interface section has new tabs named Folders & Tabs and Status & Location bars respectively where most of the Startup and Navigation settings moved. The `dolphin/kcms/kcm_dolphinnavigation` kcm is removed.
Diffstat (limited to 'src/settings/viewmodes')
-rw-r--r--src/settings/viewmodes/contentdisplaytab.cpp54
-rw-r--r--src/settings/viewmodes/contentdisplaytab.h8
-rw-r--r--src/settings/viewmodes/generalviewsettingspage.cpp133
-rw-r--r--src/settings/viewmodes/generalviewsettingspage.h50
-rw-r--r--src/settings/viewmodes/viewsettingspage.cpp9
-rw-r--r--src/settings/viewmodes/viewsettingspage.h2
6 files changed, 252 insertions, 4 deletions
diff --git a/src/settings/viewmodes/contentdisplaytab.cpp b/src/settings/viewmodes/contentdisplaytab.cpp
index aa320b79e..f674e194e 100644
--- a/src/settings/viewmodes/contentdisplaytab.cpp
+++ b/src/settings/viewmodes/contentdisplaytab.cpp
@@ -6,6 +6,7 @@
#include "contentdisplaytab.h"
#include "dolphin_contentdisplaysettings.h"
+#include "dolphin_generalsettings.h"
#include <KFormat>
#include <KLocalizedString>
@@ -18,6 +19,9 @@
ContentDisplayTab::ContentDisplayTab(QWidget *parent)
: SettingsPageBase(parent)
+ , m_naturalSorting(nullptr)
+ , m_caseSensitiveSorting(nullptr)
+ , m_caseInsensitiveSorting(nullptr)
, m_numberOfItems(nullptr)
, m_sizeOfContents(nullptr)
, m_recursiveDirectorySizeLimit(nullptr)
@@ -29,6 +33,19 @@ ContentDisplayTab::ContentDisplayTab(QWidget *parent)
{
QFormLayout *topLayout = new QFormLayout(this);
+ // Sorting Order
+ m_naturalSorting = new QRadioButton(i18nc("option:radio", "Natural"));
+ m_caseInsensitiveSorting = new QRadioButton(i18nc("option:radio", "Alphabetical, case insensitive"));
+ m_caseSensitiveSorting = new QRadioButton(i18nc("option:radio", "Alphabetical, case sensitive"));
+
+ QButtonGroup *sortingOrderGroup = new QButtonGroup(this);
+ sortingOrderGroup->addButton(m_naturalSorting);
+ sortingOrderGroup->addButton(m_caseInsensitiveSorting);
+ sortingOrderGroup->addButton(m_caseSensitiveSorting);
+ topLayout->addRow(i18nc("@title:group", "Sorting mode: "), m_naturalSorting);
+ topLayout->addRow(QString(), m_caseInsensitiveSorting);
+ topLayout->addRow(QString(), m_caseSensitiveSorting);
+
#ifndef Q_OS_WIN
// Sorting properties
m_numberOfItems = new QRadioButton(i18nc("option:radio", "Number of items"));
@@ -95,6 +112,9 @@ ContentDisplayTab::ContentDisplayTab(QWidget *parent)
connect(m_useSymbolicPermissions, &QRadioButton::toggled, this, &SettingsPageBase::changed);
connect(m_useNumericPermissions, &QRadioButton::toggled, this, &SettingsPageBase::changed);
connect(m_useCombinedPermissions, &QRadioButton::toggled, this, &SettingsPageBase::changed);
+ connect(m_naturalSorting, &QRadioButton::toggled, this, &SettingsPageBase::changed);
+ connect(m_caseInsensitiveSorting, &QRadioButton::toggled, this, &SettingsPageBase::changed);
+ connect(m_caseSensitiveSorting, &QRadioButton::toggled, this, &SettingsPageBase::changed);
loadSettings();
}
@@ -106,7 +126,7 @@ void ContentDisplayTab::applySettings()
settings->setDirectorySizeCount(m_numberOfItems->isChecked());
settings->setRecursiveDirectorySizeLimit(m_recursiveDirectorySizeLimit->value());
#endif
-
+ setSortingChoiceValue();
settings->setUseShortRelativeDates(m_useRelatetiveDates->isChecked());
if (m_useSymbolicPermissions->isChecked()) {
@@ -137,6 +157,38 @@ void ContentDisplayTab::loadSettings()
m_useSymbolicPermissions->setChecked(settings->usePermissionsFormat() == ContentDisplaySettings::EnumUsePermissionsFormat::SymbolicFormat);
m_useNumericPermissions->setChecked(settings->usePermissionsFormat() == ContentDisplaySettings::EnumUsePermissionsFormat::NumericFormat);
m_useCombinedPermissions->setChecked(settings->usePermissionsFormat() == ContentDisplaySettings::EnumUsePermissionsFormat::CombinedFormat);
+ loadSortingChoiceSettings();
+}
+
+void ContentDisplayTab::setSortingChoiceValue()
+{
+ auto settings = GeneralSettings::self();
+ using Choice = GeneralSettings::EnumSortingChoice;
+ if (m_naturalSorting->isChecked()) {
+ settings->setSortingChoice(Choice::NaturalSorting);
+ } else if (m_caseInsensitiveSorting->isChecked()) {
+ settings->setSortingChoice(Choice::CaseInsensitiveSorting);
+ } else if (m_caseSensitiveSorting->isChecked()) {
+ settings->setSortingChoice(Choice::CaseSensitiveSorting);
+ }
+}
+
+void ContentDisplayTab::loadSortingChoiceSettings()
+{
+ using Choice = GeneralSettings::EnumSortingChoice;
+ switch (GeneralSettings::sortingChoice()) {
+ case Choice::NaturalSorting:
+ m_naturalSorting->setChecked(true);
+ break;
+ case Choice::CaseInsensitiveSorting:
+ m_caseInsensitiveSorting->setChecked(true);
+ break;
+ case Choice::CaseSensitiveSorting:
+ m_caseSensitiveSorting->setChecked(true);
+ break;
+ default:
+ Q_UNREACHABLE();
+ }
}
void ContentDisplayTab::restoreDefaults()
diff --git a/src/settings/viewmodes/contentdisplaytab.h b/src/settings/viewmodes/contentdisplaytab.h
index 5484bf413..3550569fd 100644
--- a/src/settings/viewmodes/contentdisplaytab.h
+++ b/src/settings/viewmodes/contentdisplaytab.h
@@ -6,6 +6,8 @@
#ifndef GENERALTAB_H
#define GENERALTAB_H
+#include "dolphin_contentdisplaysettings.h"
+#include "dolphin_generalsettings.h"
#include "settings/settingspagebase.h"
class QRadioButton;
@@ -25,6 +27,12 @@ public:
private:
void loadSettings();
+ void setSortingChoiceValue();
+ void loadSortingChoiceSettings();
+
+ QRadioButton *m_naturalSorting;
+ QRadioButton *m_caseSensitiveSorting;
+ QRadioButton *m_caseInsensitiveSorting;
QRadioButton *m_numberOfItems;
QRadioButton *m_sizeOfContents;
diff --git a/src/settings/viewmodes/generalviewsettingspage.cpp b/src/settings/viewmodes/generalviewsettingspage.cpp
new file mode 100644
index 000000000..0b2a96cb5
--- /dev/null
+++ b/src/settings/viewmodes/generalviewsettingspage.cpp
@@ -0,0 +1,133 @@
+/*
+ * SPDX-FileCopyrightText: 2006 Peter Penz ([email protected]) and Patrice Tremblay
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "generalviewsettingspage.h"
+#include "dolphin_generalsettings.h"
+#include "dolphinmainwindow.h"
+#include "views/viewproperties.h"
+
+#include <KLocalizedString>
+
+#include <QButtonGroup>
+#include <QCheckBox>
+#include <QFormLayout>
+#include <QVBoxLayout>
+
+GeneralViewSettingsPage::GeneralViewSettingsPage(const QUrl &url, QWidget *parent)
+ : SettingsPageBase(parent)
+ , m_url(url)
+ , m_localViewProps(nullptr)
+ , m_globalViewProps(nullptr)
+ , m_showToolTips(nullptr)
+ , m_showSelectionToggle(nullptr)
+ , m_renameInline(nullptr)
+{
+ QFormLayout *topLayout = new QFormLayout(this);
+
+ // Display style
+ m_globalViewProps = new QRadioButton(i18nc("@option:radio", "Use common display style for all folders"));
+ m_localViewProps = new QRadioButton(i18nc("@option:radio", "Remember display style for each folder"));
+ m_localViewProps->setToolTip(i18nc("@info", "Dolphin will create a hidden .directory file in each folder you change view properties for."));
+
+ QButtonGroup *viewGroup = new QButtonGroup(this);
+ viewGroup->addButton(m_globalViewProps);
+ viewGroup->addButton(m_localViewProps);
+ topLayout->addRow(i18nc("@title:group", "Display style: "), m_globalViewProps);
+ topLayout->addRow(QString(), m_localViewProps);
+
+ topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed));
+
+ // Browsing
+ m_openArchivesAsFolder = new QCheckBox(i18nc("@option:check", "Open archives as folder"));
+ m_autoExpandFolders = new QCheckBox(i18nc("option:check", "Open folders during drag operations"));
+ topLayout->addRow(i18nc("@title:group", "Browsing: "), m_openArchivesAsFolder);
+ topLayout->addRow(QString(), m_autoExpandFolders);
+
+ topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed));
+
+#if HAVE_BALOO
+ // 'Show tooltips'
+ m_showToolTips = new QCheckBox(i18nc("@option:check", "Show tooltips"));
+ topLayout->addRow(i18nc("@title:group", "Miscellaneous: "), m_showToolTips);
+#endif
+
+ // 'Show selection marker'
+ m_showSelectionToggle = new QCheckBox(i18nc("@option:check", "Show selection marker"));
+#if HAVE_BALOO
+ topLayout->addRow(QString(), m_showSelectionToggle);
+#else
+ topLayout->addRow(i18nc("@title:group", "Miscellaneous: "), m_showSelectionToggle);
+#endif
+
+ // 'Inline renaming of items'
+ m_renameInline = new QCheckBox(i18nc("option:check", "Rename inline"));
+ topLayout->addRow(QString(), m_renameInline);
+
+ loadSettings();
+
+ connect(m_localViewProps, &QRadioButton::toggled, this, &GeneralViewSettingsPage::changed);
+ connect(m_globalViewProps, &QRadioButton::toggled, this, &GeneralViewSettingsPage::changed);
+
+ connect(m_openArchivesAsFolder, &QCheckBox::toggled, this, &GeneralViewSettingsPage::changed);
+ connect(m_autoExpandFolders, &QCheckBox::toggled, this, &GeneralViewSettingsPage::changed);
+#if HAVE_BALOO
+ connect(m_showToolTips, &QCheckBox::toggled, this, &GeneralViewSettingsPage::changed);
+#endif
+ connect(m_showSelectionToggle, &QCheckBox::toggled, this, &GeneralViewSettingsPage::changed);
+ connect(m_renameInline, &QCheckBox::toggled, this, &GeneralViewSettingsPage::changed);
+}
+
+GeneralViewSettingsPage::~GeneralViewSettingsPage()
+{
+}
+
+void GeneralViewSettingsPage::applySettings()
+{
+ GeneralSettings *settings = GeneralSettings::self();
+ ViewProperties props(m_url); // read current view properties
+ const bool useGlobalViewProps = m_globalViewProps->isChecked();
+ settings->setGlobalViewProps(useGlobalViewProps);
+#if HAVE_BALOO
+ settings->setShowToolTips(m_showToolTips->isChecked());
+#endif
+ settings->setShowSelectionToggle(m_showSelectionToggle->isChecked());
+ settings->setRenameInline(m_renameInline->isChecked());
+ settings->setAutoExpandFolders(m_autoExpandFolders->isChecked());
+ settings->save();
+ if (useGlobalViewProps) {
+ // Remember the global view properties by applying the current view properties.
+ // It is important that GeneralSettings::globalViewProps() is set before
+ // the class ViewProperties is used, as ViewProperties uses this setting
+ // to find the destination folder for storing the view properties.
+ ViewProperties globalProps(m_url);
+ globalProps.setDirProperties(props);
+ }
+}
+
+void GeneralViewSettingsPage::restoreDefaults()
+{
+ GeneralSettings *settings = GeneralSettings::self();
+ settings->useDefaults(true);
+ loadSettings();
+ settings->useDefaults(false);
+}
+
+void GeneralViewSettingsPage::loadSettings()
+{
+ const bool useGlobalViewProps = GeneralSettings::globalViewProps();
+ m_openArchivesAsFolder->setChecked(GeneralSettings::browseThroughArchives());
+ m_autoExpandFolders->setChecked(GeneralSettings::autoExpandFolders());
+#if HAVE_BALOO
+ m_showToolTips->setChecked(GeneralSettings::showToolTips());
+#endif
+ m_showSelectionToggle->setChecked(GeneralSettings::showSelectionToggle());
+ m_renameInline->setChecked(GeneralSettings::renameInline());
+
+ m_localViewProps->setChecked(!useGlobalViewProps);
+ m_globalViewProps->setChecked(useGlobalViewProps);
+}
+
+#include "moc_generalviewsettingspage.cpp"
diff --git a/src/settings/viewmodes/generalviewsettingspage.h b/src/settings/viewmodes/generalviewsettingspage.h
new file mode 100644
index 000000000..47838b939
--- /dev/null
+++ b/src/settings/viewmodes/generalviewsettingspage.h
@@ -0,0 +1,50 @@
+/*
+ * SPDX-FileCopyrightText: 2006 Peter Penz <[email protected]>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+#ifndef GENERALVIEWSETTINGSPAGE_H
+#define GENERALVIEWSETTINGSPAGE_H
+
+#include "settings/settingspagebase.h"
+#include <qradiobutton.h>
+
+#include <QUrl>
+
+class QCheckBox;
+class QLabel;
+class QRadioButton;
+
+/**
+ * @brief Tab page for the 'View tab' settings of the Dolphin settings dialog.
+ */
+class GeneralViewSettingsPage : public SettingsPageBase
+{
+ Q_OBJECT
+
+public:
+ explicit GeneralViewSettingsPage(const QUrl &url, QWidget *parent);
+ ~GeneralViewSettingsPage() override;
+
+ /** @see SettingsPageBase::applySettings() */
+ void applySettings() override;
+
+ /** @see SettingsPageBase::restoreDefaults() */
+ void restoreDefaults() override;
+
+private:
+ void loadSettings();
+
+private:
+ QUrl m_url;
+ QRadioButton *m_localViewProps;
+ QRadioButton *m_globalViewProps;
+ QCheckBox *m_showToolTips;
+ QLabel *m_configureToolTips;
+ QCheckBox *m_showSelectionToggle;
+ QCheckBox *m_renameInline;
+ QCheckBox *m_openArchivesAsFolder;
+ QCheckBox *m_autoExpandFolders;
+};
+
+#endif
diff --git a/src/settings/viewmodes/viewsettingspage.cpp b/src/settings/viewmodes/viewsettingspage.cpp
index 0d4d4277b..8e101c3d2 100644
--- a/src/settings/viewmodes/viewsettingspage.cpp
+++ b/src/settings/viewmodes/viewsettingspage.cpp
@@ -7,14 +7,14 @@
#include "viewsettingspage.h"
#include "contentdisplaytab.h"
+#include "generalviewsettingspage.h"
#include "viewsettingstab.h"
-
#include <KLocalizedString>
#include <QTabWidget>
#include <QVBoxLayout>
-ViewSettingsPage::ViewSettingsPage(QWidget *parent)
+ViewSettingsPage::ViewSettingsPage(const QUrl &url, QWidget *parent)
: SettingsPageBase(parent)
, m_tabs()
{
@@ -23,6 +23,11 @@ ViewSettingsPage::ViewSettingsPage(QWidget *parent)
tabWidget = new QTabWidget(this);
+ // General View tab
+ GeneralViewSettingsPage *generalViewPage = new GeneralViewSettingsPage(url, tabWidget);
+ tabWidget->addTab(generalViewPage, QIcon::fromTheme(QStringLiteral("description")), i18nc("@title:tab General View settings", "General"));
+ connect(generalViewPage, &GeneralViewSettingsPage::changed, this, &ViewSettingsPage::changed);
+
// Content Display Tab
contentDisplayTab = new ContentDisplayTab(tabWidget);
tabWidget->addTab(contentDisplayTab,
diff --git a/src/settings/viewmodes/viewsettingspage.h b/src/settings/viewmodes/viewsettingspage.h
index e52f6b2c0..76743252b 100644
--- a/src/settings/viewmodes/viewsettingspage.h
+++ b/src/settings/viewmodes/viewsettingspage.h
@@ -24,7 +24,7 @@ class ViewSettingsPage : public SettingsPageBase
Q_OBJECT
public:
- explicit ViewSettingsPage(QWidget *parent);
+ explicit ViewSettingsPage(const QUrl &url, QWidget *parent);
~ViewSettingsPage() override;
/** @see SettingsPageBase::applySettings() */