diff options
Diffstat (limited to 'src/settings/viewmodes')
| -rw-r--r-- | src/settings/viewmodes/contentdisplaytab.cpp | 54 | ||||
| -rw-r--r-- | src/settings/viewmodes/contentdisplaytab.h | 8 | ||||
| -rw-r--r-- | src/settings/viewmodes/generalviewsettingspage.cpp | 133 | ||||
| -rw-r--r-- | src/settings/viewmodes/generalviewsettingspage.h | 50 | ||||
| -rw-r--r-- | src/settings/viewmodes/viewsettingspage.cpp | 24 | ||||
| -rw-r--r-- | src/settings/viewmodes/viewsettingspage.h | 4 | ||||
| -rw-r--r-- | src/settings/viewmodes/viewsettingstab.cpp | 4 | ||||
| -rw-r--r-- | src/settings/viewmodes/viewsettingstab.h | 8 |
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(); |
