┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/settings/viewmodes
diff options
context:
space:
mode:
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.cpp24
-rw-r--r--src/settings/viewmodes/viewsettingspage.h4
-rw-r--r--src/settings/viewmodes/viewsettingstab.cpp4
-rw-r--r--src/settings/viewmodes/viewsettingstab.h8
8 files changed, 264 insertions, 21 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..5e740640d 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,
@@ -45,6 +50,8 @@ ViewSettingsPage::ViewSettingsPage(QWidget *parent)
tabWidget->addTab(detailsTab, QIcon::fromTheme(QStringLiteral("view-list-tree")), i18nc("@title:tab", "Details"));
connect(detailsTab, &ViewSettingsTab::changed, this, &ViewSettingsPage::changed);
+ m_tabs.append(generalViewPage);
+ m_tabs.append(contentDisplayTab);
m_tabs.append(iconsTab);
m_tabs.append(compactTab);
m_tabs.append(detailsTab);
@@ -58,23 +65,16 @@ ViewSettingsPage::~ViewSettingsPage()
void ViewSettingsPage::applySettings()
{
- contentDisplayTab->applySettings();
-
- for (ViewSettingsTab *tab : qAsConst(m_tabs)) {
+ for (SettingsPageBase *tab : qAsConst(m_tabs)) {
tab->applySettings();
}
}
void ViewSettingsPage::restoreDefaults()
{
- if (tabWidget->currentWidget() == contentDisplayTab) {
- contentDisplayTab->restoreDefaults();
- return;
- }
-
- for (ViewSettingsTab *tab : qAsConst(m_tabs)) {
+ for (SettingsPageBase *tab : qAsConst(m_tabs)) {
if (tabWidget->currentWidget() == tab) {
- tab->restoreDefaultSettings();
+ tab->restoreDefaults();
return;
}
}
diff --git a/src/settings/viewmodes/viewsettingspage.h b/src/settings/viewmodes/viewsettingspage.h
index e52f6b2c0..eae2a6427 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() */
@@ -36,7 +36,7 @@ public:
private:
ContentDisplayTab *contentDisplayTab;
QTabWidget *tabWidget;
- QList<ViewSettingsTab *> m_tabs;
+ QList<SettingsPageBase *> m_tabs;
};
#endif
diff --git a/src/settings/viewmodes/viewsettingstab.cpp b/src/settings/viewmodes/viewsettingstab.cpp
index ae80a2558..5aca58ba1 100644
--- a/src/settings/viewmodes/viewsettingstab.cpp
+++ b/src/settings/viewmodes/viewsettingstab.cpp
@@ -26,7 +26,7 @@
#include <QSpinBox>
ViewSettingsTab::ViewSettingsTab(Mode mode, QWidget *parent)
- : QWidget(parent)
+ : SettingsPageBase(parent)
, m_mode(mode)
, m_defaultSizeSlider(nullptr)
, m_previewSizeSlider(nullptr)
@@ -186,7 +186,7 @@ void ViewSettingsTab::applySettings()
settings.save();
}
-void ViewSettingsTab::restoreDefaultSettings()
+void ViewSettingsTab::restoreDefaults()
{
ViewModeSettings settings(m_mode);
settings.useDefaults(true);
diff --git a/src/settings/viewmodes/viewsettingstab.h b/src/settings/viewmodes/viewsettingstab.h
index 6be8fc3b5..fd4cc85a7 100644
--- a/src/settings/viewmodes/viewsettingstab.h
+++ b/src/settings/viewmodes/viewsettingstab.h
@@ -7,7 +7,7 @@
#ifndef VIEWSETTINGSTAB_H
#define VIEWSETTINGSTAB_H
-#include <QWidget>
+#include "settings/settingspagebase.h"
class DolphinFontRequester;
class QComboBox;
@@ -19,7 +19,7 @@ class QRadioButton;
/**
* @brief Represents one tab of the view-settings page.
*/
-class ViewSettingsTab : public QWidget
+class ViewSettingsTab : public SettingsPageBase
{
Q_OBJECT
@@ -29,8 +29,8 @@ public:
explicit ViewSettingsTab(Mode mode, QWidget *parent = nullptr);
~ViewSettingsTab() override;
- void applySettings();
- void restoreDefaultSettings();
+ void applySettings() override;
+ void restoreDefaults() override;
Q_SIGNALS:
void changed();