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.
selectionmode/bottombar.cpp
selectionmode/bottombarcontentscontainer.cpp
selectionmode/topbar.cpp
- settings/general/behaviorsettingspage.cpp
- settings/general/configurepreviewplugindialog.cpp
- settings/general/confirmationssettingspage.cpp
- settings/general/generalsettingspage.cpp
- settings/general/previewssettingspage.cpp
- settings/general/statusbarsettingspage.cpp
+ settings/interface/folderstabssettingspage.cpp
+ settings/interface/statusandlocationbarssettingspage.cpp
+ settings/interface/configurepreviewplugindialog.cpp
+ settings/interface/confirmationssettingspage.cpp
+ settings/interface/interfacesettingspage.cpp
+ settings/interface/previewssettingspage.cpp
settings/dolphinsettingsdialog.cpp
- settings/navigation/navigationsettingspage.cpp
settings/contextmenu/contextmenusettingspage.cpp
settings/settingspagebase.cpp
settings/serviceitemdelegate.cpp
settings/servicemodel.cpp
- settings/startup/startupsettingspage.cpp
settings/trash/trashsettingspage.cpp
settings/viewmodes/dolphinfontrequester.cpp
settings/viewmodes/viewsettingspage.cpp
settings/viewmodes/viewmodesettings.cpp
settings/viewmodes/viewsettingstab.cpp
settings/viewmodes/contentdisplaytab.cpp
+ settings/viewmodes/generalviewsettingspage.cpp
statusbar/dolphinstatusbar.cpp
statusbar/mountpointobserver.cpp
statusbar/mountpointobservercache.cpp
selectionmode/bottombar.h
selectionmode/bottombarcontentscontainer.h
selectionmode/topbar.h
- settings/general/behaviorsettingspage.h
- settings/general/configurepreviewplugindialog.h
- settings/general/confirmationssettingspage.h
- settings/general/generalsettingspage.h
- settings/general/previewssettingspage.h
- settings/general/statusbarsettingspage.h
+ settings/interface/folderstabssettingspage.h
+ settings/interface/statusandlocationbarssettingspage.h
+ settings/interface/configurepreviewplugindialog.h
+ settings/interface/confirmationssettingspage.h
+ settings/interface/interfacesettingspage.h
+ settings/interface/previewssettingspage.h
settings/dolphinsettingsdialog.h
- settings/navigation/navigationsettingspage.h
settings/contextmenu/contextmenusettingspage.h
settings/settingspagebase.h
settings/serviceitemdelegate.h
settings/servicemodel.h
- settings/startup/startupsettingspage.h
settings/trash/trashsettingspage.h
settings/viewmodes/dolphinfontrequester.h
settings/viewmodes/viewsettingspage.h
settings/viewmodes/viewmodesettings.h
settings/viewmodes/viewsettingstab.h
settings/viewmodes/contentdisplaytab.h
+ settings/viewmodes/generalviewsettingspage.h
statusbar/dolphinstatusbar.h
statusbar/mountpointobserver.h
statusbar/mountpointobservercache.h
if(NOT WIN32)
# The settings are still accessible from the hamburger menu
add_library(kcm_dolphinviewmodes MODULE)
- add_library(kcm_dolphinnavigation MODULE)
add_library(kcm_dolphingeneral MODULE)
target_sources(kcm_dolphinviewmodes PRIVATE
settings/viewmodes/viewsettingstab.h
views/zoomlevelinfo.h)
- target_sources(kcm_dolphinnavigation PRIVATE
- settings/kcm/kcmdolphinnavigation.cpp
- settings/navigation/navigationsettingspage.cpp
- settings/settingspagebase.cpp
- settings/kcm/kcmdolphinnavigation.h
- settings/navigation/navigationsettingspage.h
- settings/settingspagebase.h
- )
-
target_sources(kcm_dolphingeneral PRIVATE
settings/kcm/kcmdolphingeneral.cpp
- settings/general/behaviorsettingspage.cpp
- settings/general/previewssettingspage.cpp
- settings/general/configurepreviewplugindialog.cpp
- settings/general/confirmationssettingspage.cpp
+ settings/interface/folderstabssettingspage.cpp
+ settings/interface/statusandlocationbarssettingspage.cpp
+ settings/interface/previewssettingspage.cpp
+ settings/interface/configurepreviewplugindialog.cpp
+ settings/interface/confirmationssettingspage.cpp
settings/settingspagebase.cpp
settings/serviceitemdelegate.cpp
settings/servicemodel.cpp
+ dolphin_generalsettings.cpp
+ dolphindebug.cpp
+ dolphinmainwindowinterface.cpp
+ views/viewproperties.cpp
+ dolphin_directoryviewpropertysettings.cpp
+ global.cpp
settings/kcm/kcmdolphingeneral.h
- settings/general/behaviorsettingspage.h
- settings/general/previewssettingspage.h
- settings/general/configurepreviewplugindialog.h
- settings/general/confirmationssettingspage.h
+ settings/interface/folderstabssettingspage.h
+ settings/interface/statusandlocationbarssettingspage.h
+ settings/interface/previewssettingspage.h
+ settings/interface/configurepreviewplugindialog.h
+ settings/interface/confirmationssettingspage.h
settings/settingspagebase.h
settings/serviceitemdelegate.h
settings/servicemodel.h
+ dolphin_generalsettings.h
+ dolphindebug.h
+ dolphinmainwindowinterface.h
+ views/viewproperties.h
+ dolphin_directoryviewpropertysettings.h
+ global.h
)
kconfig_add_kcfg_files(kcm_dolphinviewmodes
settings/dolphin_versioncontrolsettings.kcfgc
)
- kconfig_add_kcfg_files(kcm_dolphinnavigation
- settings/dolphin_generalsettings.kcfgc)
-
kconfig_add_kcfg_files(kcm_dolphingeneral
settings/dolphin_generalsettings.kcfgc)
target_link_libraries(kcm_dolphinviewmodes dolphinprivate)
- target_link_libraries(kcm_dolphinnavigation dolphinprivate)
target_link_libraries(kcm_dolphingeneral dolphinprivate)
install( FILES org.kde.dolphin.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR} )
install(TARGETS kcm_dolphinviewmodes DESTINATION ${KDE_INSTALL_PLUGINDIR}/dolphin/kcms )
- install(TARGETS kcm_dolphinnavigation DESTINATION ${KDE_INSTALL_PLUGINDIR}/dolphin/kcms )
install(TARGETS kcm_dolphingeneral DESTINATION ${KDE_INSTALL_PLUGINDIR}/dolphin/kcms )
endif()
#include "contextmenu/contextmenusettingspage.h"
#include "dolphin_generalsettings.h"
#include "dolphinmainwindow.h"
-#include "general/generalsettingspage.h"
-#include "navigation/navigationsettingspage.h"
-#include "startup/startupsettingspage.h"
+#include "interface/interfacesettingspage.h"
#include "trash/trashsettingspage.h"
#include "viewmodes/viewsettingspage.h"
#if HAVE_KUSERFEEDBACK
connect(box->button(QDialogButtonBox::Apply), &QAbstractButton::clicked, this, &DolphinSettingsDialog::applySettings);
connect(box->button(QDialogButtonBox::RestoreDefaults), &QAbstractButton::clicked, this, &DolphinSettingsDialog::restoreDefaults);
- // General
- GeneralSettingsPage *generalSettingsPage = new GeneralSettingsPage(url, this);
- KPageWidgetItem *generalSettingsFrame = addPage(generalSettingsPage, i18nc("@title:group General settings", "General"));
- generalSettingsFrame->setIcon(QIcon::fromTheme(QStringLiteral("system-file-manager")));
- connect(generalSettingsPage, &GeneralSettingsPage::changed, this, &DolphinSettingsDialog::enableApply);
-
- // Startup
- StartupSettingsPage *startupSettingsPage = new StartupSettingsPage(url, this);
- KPageWidgetItem *startupSettingsFrame = addPage(startupSettingsPage, i18nc("@title:group", "Startup"));
- startupSettingsFrame->setIcon(QIcon::fromTheme(QStringLiteral("preferences-desktop-launch-feedback")));
- connect(startupSettingsPage, &StartupSettingsPage::changed, this, &DolphinSettingsDialog::enableApply);
-
- // View Modes
- ViewSettingsPage *viewSettingsPage = new ViewSettingsPage(this);
- KPageWidgetItem *viewSettingsFrame = addPage(viewSettingsPage, i18nc("@title:group", "View Modes"));
+ // Interface
+ InterfaceSettingsPage *interfaceSettingsPage = new InterfaceSettingsPage(this);
+ KPageWidgetItem *interfaceSettingsFrame = addPage(interfaceSettingsPage, i18nc("@title:group Interface settings", "Interface"));
+ interfaceSettingsFrame->setIcon(QIcon::fromTheme(QStringLiteral("system-file-manager")));
+ connect(interfaceSettingsPage, &InterfaceSettingsPage::changed, this, &DolphinSettingsDialog::enableApply);
+
+ // View
+ ViewSettingsPage *viewSettingsPage = new ViewSettingsPage(url, this);
+ KPageWidgetItem *viewSettingsFrame = addPage(viewSettingsPage, i18nc("@title:group", "View"));
viewSettingsFrame->setIcon(QIcon::fromTheme(QStringLiteral("preferences-desktop-icons")));
connect(viewSettingsPage, &ViewSettingsPage::changed, this, &DolphinSettingsDialog::enableApply);
- // Navigation
- NavigationSettingsPage *navigationSettingsPage = new NavigationSettingsPage(this);
- KPageWidgetItem *navigationSettingsFrame = addPage(navigationSettingsPage, i18nc("@title:group", "Navigation"));
- navigationSettingsFrame->setIcon(QIcon::fromTheme(QStringLiteral("preferences-desktop-navigation")));
- connect(navigationSettingsPage, &NavigationSettingsPage::changed, this, &DolphinSettingsDialog::enableApply);
-
// Context Menu
auto contextMenuSettingsPage = new ContextMenuSettingsPage(this,
actions,
}
#endif
- m_pages.append(generalSettingsPage);
- m_pages.append(startupSettingsPage);
+ m_pages.append(interfaceSettingsPage);
m_pages.append(viewSettingsPage);
- m_pages.append(navigationSettingsPage);
m_pages.append(contextMenuSettingsPage);
if (trashSettingsPage) {
m_pages.append(trashSettingsPage);
+++ /dev/null
-/*
- * SPDX-FileCopyrightText: 2006 Peter Penz (peter.penz@gmx.at) and Patrice Tremblay
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#include "behaviorsettingspage.h"
-
-#include "global.h"
-#include "views/viewproperties.h"
-
-#include <KLocalizedString>
-
-#include <QButtonGroup>
-#include <QCheckBox>
-#include <QFormLayout>
-#include <QRadioButton>
-#include <QSpacerItem>
-
-BehaviorSettingsPage::BehaviorSettingsPage(const QUrl &url, QWidget *parent)
- : SettingsPageBase(parent)
- , m_url(url)
- , m_localViewProps(nullptr)
- , m_globalViewProps(nullptr)
- , m_showToolTips(nullptr)
- , m_showSelectionToggle(nullptr)
- , m_naturalSorting(nullptr)
- , m_caseSensitiveSorting(nullptr)
- , m_caseInsensitiveSorting(nullptr)
- , m_renameInline(nullptr)
- , m_useTabForSplitViewSwitch(nullptr)
-{
- QFormLayout *topLayout = new QFormLayout(this);
-
- // View properties
- 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", "View: "), m_globalViewProps);
- topLayout->addRow(QString(), m_localViewProps);
-
- topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed));
-
- // Sorting properties
- 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 *sortingModeGroup = new QButtonGroup(this);
- sortingModeGroup->addButton(m_naturalSorting);
- sortingModeGroup->addButton(m_caseInsensitiveSorting);
- sortingModeGroup->addButton(m_caseSensitiveSorting);
- topLayout->addRow(i18nc("@title:group", "Sorting mode: "), m_naturalSorting);
- topLayout->addRow(QString(), m_caseInsensitiveSorting);
- topLayout->addRow(QString(), m_caseSensitiveSorting);
-
- // Split Views
- topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed));
-
- // 'Switch between panes of split views with tab key'
- m_useTabForSplitViewSwitch = new QCheckBox(i18nc("option:check split view panes", "Switch between panes with Tab key"));
- topLayout->addRow(i18nc("@title:group", "Split view: "), m_useTabForSplitViewSwitch);
-
- // 'Close active pane when turning off split view'
- m_closeActiveSplitView = new QCheckBox(i18nc("option:check", "Turning off split view closes active pane"));
- topLayout->addRow(QString(), m_closeActiveSplitView);
- m_closeActiveSplitView->setToolTip(i18n("When deactivated, turning off split view will close the inactive pane"));
-
- 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, &BehaviorSettingsPage::changed);
- connect(m_globalViewProps, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
-#if HAVE_BALOO
- connect(m_showToolTips, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed);
-#endif
- connect(m_showSelectionToggle, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed);
- connect(m_naturalSorting, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
- connect(m_caseInsensitiveSorting, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
- connect(m_caseSensitiveSorting, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
- connect(m_renameInline, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed);
- connect(m_useTabForSplitViewSwitch, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed);
- connect(m_closeActiveSplitView, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed);
-}
-
-BehaviorSettingsPage::~BehaviorSettingsPage()
-{
-}
-
-void BehaviorSettingsPage::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());
- setSortingChoiceValue(settings);
- settings->setRenameInline(m_renameInline->isChecked());
- settings->setUseTabForSwitchingSplitView(m_useTabForSplitViewSwitch->isChecked());
- settings->setCloseActiveSplitView(m_closeActiveSplitView->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 BehaviorSettingsPage::restoreDefaults()
-{
- GeneralSettings *settings = GeneralSettings::self();
- settings->useDefaults(true);
- loadSettings();
- settings->useDefaults(false);
-}
-
-void BehaviorSettingsPage::loadSettings()
-{
- const bool useGlobalViewProps = GeneralSettings::globalViewProps();
- m_localViewProps->setChecked(!useGlobalViewProps);
- m_globalViewProps->setChecked(useGlobalViewProps);
-
-#if HAVE_BALOO
- m_showToolTips->setChecked(GeneralSettings::showToolTips());
-#endif
- m_showSelectionToggle->setChecked(GeneralSettings::showSelectionToggle());
- m_renameInline->setChecked(GeneralSettings::renameInline());
- m_useTabForSplitViewSwitch->setChecked(GeneralSettings::useTabForSwitchingSplitView());
- m_closeActiveSplitView->setChecked(GeneralSettings::closeActiveSplitView());
-
- loadSortingChoiceSettings();
-}
-
-void BehaviorSettingsPage::setSortingChoiceValue(GeneralSettings *settings)
-{
- 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 BehaviorSettingsPage::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();
- }
-}
-
-#include "moc_behaviorsettingspage.cpp"
+++ /dev/null
-/*
- * SPDX-FileCopyrightText: 2009 Peter Penz <peter.penz19@gmail.com>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#include "statusbarsettingspage.h"
-
-#include "dolphin_generalsettings.h"
-
-#include <KLocalizedString>
-
-#include <QCheckBox>
-#include <QVBoxLayout>
-
-StatusBarSettingsPage::StatusBarSettingsPage(QWidget *parent)
- : SettingsPageBase(parent)
- , m_showStatusBar(nullptr)
- , m_showZoomSlider(nullptr)
- , m_showSpaceInfo(nullptr)
-{
- m_showStatusBar = new QCheckBox(i18nc("@option:check", "Show status bar"), this);
- m_showZoomSlider = new QCheckBox(i18nc("@option:check", "Show zoom slider"), this);
- m_showSpaceInfo = new QCheckBox(i18nc("@option:check", "Show space information"), this);
-
- QVBoxLayout *topLayout = new QVBoxLayout(this);
- topLayout->addWidget(m_showStatusBar);
- topLayout->addWidget(m_showZoomSlider);
- topLayout->addWidget(m_showSpaceInfo);
- topLayout->addStretch();
-
- loadSettings();
-
- connect(m_showStatusBar, &QCheckBox::toggled, this, &StatusBarSettingsPage::changed);
- connect(m_showStatusBar, &QCheckBox::toggled, this, &StatusBarSettingsPage::onShowStatusBarToggled);
- connect(m_showZoomSlider, &QCheckBox::toggled, this, &StatusBarSettingsPage::changed);
- connect(m_showSpaceInfo, &QCheckBox::toggled, this, &StatusBarSettingsPage::changed);
-}
-
-StatusBarSettingsPage::~StatusBarSettingsPage()
-{
-}
-
-void StatusBarSettingsPage::onShowStatusBarToggled()
-{
- const bool checked = m_showStatusBar->isChecked();
- m_showZoomSlider->setEnabled(checked);
- m_showSpaceInfo->setEnabled(checked);
-}
-
-void StatusBarSettingsPage::applySettings()
-{
- GeneralSettings *settings = GeneralSettings::self();
- settings->setShowStatusBar(m_showStatusBar->isChecked());
- settings->setShowZoomSlider(m_showZoomSlider->isChecked());
- settings->setShowSpaceInfo(m_showSpaceInfo->isChecked());
- settings->save();
-}
-
-void StatusBarSettingsPage::restoreDefaults()
-{
- GeneralSettings *settings = GeneralSettings::self();
- settings->useDefaults(true);
- loadSettings();
- settings->useDefaults(false);
-}
-
-void StatusBarSettingsPage::loadSettings()
-{
- m_showStatusBar->setChecked(GeneralSettings::showStatusBar());
- m_showZoomSlider->setChecked(GeneralSettings::showZoomSlider());
- m_showSpaceInfo->setChecked(GeneralSettings::showSpaceInfo());
-
- onShowStatusBarToggled();
-}
-
-#include "moc_statusbarsettingspage.cpp"
+++ /dev/null
-/*
- * SPDX-FileCopyrightText: 2009 Peter Penz <peter.penz19@gmail.com>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-#ifndef STATUSBARSETTINGSPAGE_H
-#define STATUSBARSETTINGSPAGE_H
-
-#include "settings/settingspagebase.h"
-
-class QCheckBox;
-
-/**
- * @brief Tab page for the 'Status Bar' settings of the Dolphin settings dialog.
- */
-class StatusBarSettingsPage : public SettingsPageBase
-{
- Q_OBJECT
-
-public:
- explicit StatusBarSettingsPage(QWidget *parent);
- ~StatusBarSettingsPage() override;
-
- /** @see SettingsPageBase::applySettings() */
- void applySettings() override;
-
- /** @see SettingsPageBase::restoreDefaults() */
- void restoreDefaults() override;
-
-private:
- void loadSettings();
- void onShowStatusBarToggled();
-
-private:
- QCheckBox *m_showStatusBar;
- QCheckBox *m_showZoomSlider;
- QCheckBox *m_showSpaceInfo;
-};
-
-#endif
/*
- * SPDX-FileCopyrightText: 2008 Peter Penz <peter.penz19@gmail.com>
+ * SPDX-FileCopyrightText: 2006 Peter Penz (peter.penz@gmx.at) and Patrice Tremblay
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
-#include "startupsettingspage.h"
-
-#include "dolphin_generalsettings.h"
+#include "folderstabssettingspage.h"
#include "dolphinmainwindow.h"
#include "dolphinviewcontainer.h"
#include "global.h"
#include <QLineEdit>
#include <QPushButton>
#include <QRadioButton>
+#include <QSpacerItem>
-StartupSettingsPage::StartupSettingsPage(const QUrl &url, QWidget *parent)
+FoldersTabsSettingsPage::FoldersTabsSettingsPage(QWidget *parent)
: SettingsPageBase(parent)
- , m_url(url)
- , m_homeUrl(nullptr)
, m_homeUrlBoxLayoutContainer(nullptr)
, m_buttonBoxLayoutContainer(nullptr)
- , m_rememberOpenedTabsRadioButton(nullptr)
, m_homeUrlRadioButton(nullptr)
+ , m_homeUrl(nullptr)
+ , m_rememberOpenedTabsRadioButton(nullptr)
+ , m_openNewTabAfterLastTab(nullptr)
+ , m_openNewTabAfterCurrentTab(nullptr)
, m_splitView(nullptr)
- , m_editableUrl(nullptr)
- , m_showFullPath(nullptr)
, m_filterBar(nullptr)
, m_showFullPathInTitlebar(nullptr)
, m_openExternallyCalledFolderInNewTab(nullptr)
+ , m_useTabForSplitViewSwitch(nullptr)
{
QFormLayout *topLayout = new QFormLayout(this);
- m_rememberOpenedTabsRadioButton = new QRadioButton(i18nc("@option:radio Startup Settings", "Folders, tabs, and window state from last time"));
+ // Show on startup
+ m_rememberOpenedTabsRadioButton = new QRadioButton(i18nc("@option:radio Show on startup", "Folders, tabs, and window state from last time"));
m_homeUrlRadioButton = new QRadioButton();
// HACK: otherwise the radio button has too much spacing in a grid layout
m_homeUrlRadioButton->setMaximumWidth(24);
selectHomeUrlButton->setAccessibleName(i18nc("@action:button", "Select Home Location"));
#endif
- connect(selectHomeUrlButton, &QPushButton::clicked, this, &StartupSettingsPage::selectHomeUrl);
+ connect(selectHomeUrlButton, &QPushButton::clicked, this, &FoldersTabsSettingsPage::selectHomeUrl);
m_buttonBoxLayoutContainer = new QWidget(this);
QHBoxLayout *buttonBoxLayout = new QHBoxLayout(m_buttonBoxLayoutContainer);
QPushButton *useCurrentButton = new QPushButton(i18nc("@action:button", "Use Current Location"));
buttonBoxLayout->addWidget(useCurrentButton);
- connect(useCurrentButton, &QPushButton::clicked, this, &StartupSettingsPage::useCurrentLocation);
+ connect(useCurrentButton, &QPushButton::clicked, this, &FoldersTabsSettingsPage::useCurrentLocation);
QPushButton *useDefaultButton = new QPushButton(i18nc("@action:button", "Use Default Location"));
buttonBoxLayout->addWidget(useDefaultButton);
- connect(useDefaultButton, &QPushButton::clicked, this, &StartupSettingsPage::useDefaultLocation);
+ connect(useDefaultButton, &QPushButton::clicked, this, &FoldersTabsSettingsPage::useDefaultLocation);
QGridLayout *startInLocationLayout = new QGridLayout();
startInLocationLayout->setHorizontalSpacing(0);
topLayout->addRow(QString(), startInLocationLayout);
topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed));
-
- m_splitView = new QCheckBox(i18nc("@option:check Startup Settings", "Begin in split view mode"));
- topLayout->addRow(i18n("New windows:"), m_splitView);
- m_filterBar = new QCheckBox(i18nc("@option:check Startup Settings", "Show filter bar"));
+ // Opening Folders
+ m_openExternallyCalledFolderInNewTab = new QCheckBox(i18nc("@option:check Opening Folders", "Keep a single Dolphin window, opening new folders in tabs"));
+ topLayout->addRow(i18nc("@label:checkbox", "Opening Folders:"), m_openExternallyCalledFolderInNewTab);
+ // Window
+ m_showFullPathInTitlebar = new QCheckBox(i18nc("@option:check Startup Settings", "Show full path in title bar"));
+ topLayout->addRow(i18nc("@label:checkbox", "Window:"), m_showFullPathInTitlebar);
+ m_filterBar = new QCheckBox(i18nc("@option:check Window Startup Settings", "Show filter bar"));
topLayout->addRow(QString(), m_filterBar);
- m_editableUrl = new QCheckBox(i18nc("@option:check Startup Settings", "Make location bar editable"));
- topLayout->addRow(QString(), m_editableUrl);
topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed));
- m_openExternallyCalledFolderInNewTab = new QCheckBox(i18nc("@option:check Startup Settings", "Open new folders in tabs"));
- topLayout->addRow(i18nc("@label:checkbox", "General:"), m_openExternallyCalledFolderInNewTab);
- m_showFullPath = new QCheckBox(i18nc("@option:check Startup Settings", "Show full path inside location bar"));
- topLayout->addRow(QString(), m_showFullPath);
- m_showFullPathInTitlebar = new QCheckBox(i18nc("@option:check Startup Settings", "Show full path in title bar"));
- topLayout->addRow(QString(), m_showFullPathInTitlebar);
+ // Tabs properties
+ m_openNewTabAfterCurrentTab = new QRadioButton(i18nc("option:radio", "After current tab"));
+ m_openNewTabAfterLastTab = new QRadioButton(i18nc("option:radio", "At end of tab bar"));
+ QButtonGroup *tabsBehaviorGroup = new QButtonGroup(this);
+ tabsBehaviorGroup->addButton(m_openNewTabAfterCurrentTab);
+ tabsBehaviorGroup->addButton(m_openNewTabAfterLastTab);
+ topLayout->addRow(i18nc("@title:group", "Open new tabs: "), m_openNewTabAfterCurrentTab);
+ topLayout->addRow(QString(), m_openNewTabAfterLastTab);
+
+ // Split Views
+ topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed));
+
+ // 'Switch between panes of split views with tab key'
+ m_useTabForSplitViewSwitch = new QCheckBox(i18nc("option:check split view panes", "Switch between panes with Tab key"));
+ topLayout->addRow(i18nc("@title:group", "Split view: "), m_useTabForSplitViewSwitch);
+
+ // 'Close active pane when turning off split view'
+ m_closeActiveSplitView = new QCheckBox(i18nc("option:check", "Turning off split view closes active pane"));
+ topLayout->addRow(QString(), m_closeActiveSplitView);
+ m_closeActiveSplitView->setToolTip(i18n("When deactivated, turning off split view will close the inactive pane"));
+
+ // 'Begin in split view mode'
+ m_splitView = new QCheckBox(i18nc("@option:check Startup Settings", "Begin in split view mode"));
+ topLayout->addRow(i18n("New windows:"), m_splitView);
loadSettings();
updateInitialViewOptions();
- connect(m_homeUrl, &QLineEdit::textChanged, this, &StartupSettingsPage::slotSettingsChanged);
- connect(m_rememberOpenedTabsRadioButton, &QRadioButton::toggled, this, &StartupSettingsPage::slotSettingsChanged);
- connect(m_homeUrlRadioButton, &QRadioButton::toggled, this, &StartupSettingsPage::slotSettingsChanged);
+ connect(m_homeUrl, &QLineEdit::textChanged, this, &FoldersTabsSettingsPage::slotSettingsChanged);
+ connect(m_rememberOpenedTabsRadioButton, &QRadioButton::toggled, this, &FoldersTabsSettingsPage::slotSettingsChanged);
+ connect(m_homeUrlRadioButton, &QRadioButton::toggled, this, &FoldersTabsSettingsPage::slotSettingsChanged);
+
+ connect(m_splitView, &QCheckBox::toggled, this, &FoldersTabsSettingsPage::slotSettingsChanged);
+ connect(m_filterBar, &QCheckBox::toggled, this, &FoldersTabsSettingsPage::slotSettingsChanged);
- connect(m_splitView, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged);
- connect(m_editableUrl, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged);
- connect(m_filterBar, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged);
+ connect(m_openExternallyCalledFolderInNewTab, &QCheckBox::toggled, this, &FoldersTabsSettingsPage::slotSettingsChanged);
+ connect(m_showFullPathInTitlebar, &QCheckBox::toggled, this, &FoldersTabsSettingsPage::slotSettingsChanged);
- connect(m_openExternallyCalledFolderInNewTab, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged);
- connect(m_showFullPath, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged);
- connect(m_showFullPathInTitlebar, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged);
+ connect(m_useTabForSplitViewSwitch, &QCheckBox::toggled, this, &FoldersTabsSettingsPage::changed);
+ connect(m_closeActiveSplitView, &QCheckBox::toggled, this, &FoldersTabsSettingsPage::changed);
+
+ connect(m_openNewTabAfterCurrentTab, &QRadioButton::toggled, this, &FoldersTabsSettingsPage::changed);
+ connect(m_openNewTabAfterLastTab, &QRadioButton::toggled, this, &FoldersTabsSettingsPage::changed);
}
-StartupSettingsPage::~StartupSettingsPage()
+FoldersTabsSettingsPage::~FoldersTabsSettingsPage()
{
}
-void StartupSettingsPage::applySettings()
+void FoldersTabsSettingsPage::applySettings()
{
GeneralSettings *settings = GeneralSettings::self();
+ settings->setUseTabForSwitchingSplitView(m_useTabForSplitViewSwitch->isChecked());
+ settings->setCloseActiveSplitView(m_closeActiveSplitView->isChecked());
const QUrl url(QUrl::fromUserInput(m_homeUrl->text(), QString(), QUrl::AssumeLocalFile));
if (url.isValid() && KProtocolManager::supportsListing(url)) {
KIO::StatJob *job = KIO::statDetails(url, KIO::StatJob::SourceSide, KIO::StatDetail::StatBasic, KIO::JobFlag::HideProgressInfo);
settings->setRememberOpenedTabs(m_rememberOpenedTabsRadioButton->isChecked());
settings->setSplitView(m_splitView->isChecked());
- settings->setEditableUrl(m_editableUrl->isChecked());
settings->setFilterBar(m_filterBar->isChecked());
settings->setOpenExternallyCalledFolderInNewTab(m_openExternallyCalledFolderInNewTab->isChecked());
- settings->setShowFullPath(m_showFullPath->isChecked());
settings->setShowFullPathInTitlebar(m_showFullPathInTitlebar->isChecked());
+
+ settings->setOpenNewTabAfterLastTab(m_openNewTabAfterLastTab->isChecked());
+
settings->save();
}
-void StartupSettingsPage::restoreDefaults()
+void FoldersTabsSettingsPage::restoreDefaults()
{
GeneralSettings *settings = GeneralSettings::self();
settings->useDefaults(true);
settings->useDefaults(false);
}
-void StartupSettingsPage::slotSettingsChanged()
+void FoldersTabsSettingsPage::slotSettingsChanged()
{
// Provide a hint that the startup settings have been changed. This allows the views
// to apply the startup settings only if they have been explicitly changed by the user
Q_EMIT changed();
}
-void StartupSettingsPage::updateInitialViewOptions()
+void FoldersTabsSettingsPage::updateInitialViewOptions()
{
m_homeUrlBoxLayoutContainer->setEnabled(m_homeUrlRadioButton->isChecked());
m_buttonBoxLayoutContainer->setEnabled(m_homeUrlRadioButton->isChecked());
}
-void StartupSettingsPage::selectHomeUrl()
+void FoldersTabsSettingsPage::selectHomeUrl()
{
const QUrl homeUrl(QUrl::fromUserInput(m_homeUrl->text(), QString(), QUrl::AssumeLocalFile));
QUrl url = QFileDialog::getExistingDirectoryUrl(this, QString(), homeUrl);
}
}
-void StartupSettingsPage::useCurrentLocation()
+void FoldersTabsSettingsPage::useCurrentLocation()
{
m_homeUrl->setText(m_url.toDisplayString(QUrl::PreferLocalFile));
}
-void StartupSettingsPage::useDefaultLocation()
+void FoldersTabsSettingsPage::useDefaultLocation()
{
m_homeUrl->setText(QDir::homePath());
}
-void StartupSettingsPage::loadSettings()
+void FoldersTabsSettingsPage::loadSettings()
{
const QUrl url(Dolphin::homeUrl());
m_homeUrl->setText(url.toDisplayString(QUrl::PreferLocalFile));
m_rememberOpenedTabsRadioButton->setChecked(GeneralSettings::rememberOpenedTabs());
m_homeUrlRadioButton->setChecked(!GeneralSettings::rememberOpenedTabs());
m_splitView->setChecked(GeneralSettings::splitView());
- m_editableUrl->setChecked(GeneralSettings::editableUrl());
- m_showFullPath->setChecked(GeneralSettings::showFullPath());
m_filterBar->setChecked(GeneralSettings::filterBar());
m_showFullPathInTitlebar->setChecked(GeneralSettings::showFullPathInTitlebar());
m_openExternallyCalledFolderInNewTab->setChecked(GeneralSettings::openExternallyCalledFolderInNewTab());
+
+ m_useTabForSplitViewSwitch->setChecked(GeneralSettings::useTabForSwitchingSplitView());
+ m_closeActiveSplitView->setChecked(GeneralSettings::closeActiveSplitView());
+
+ m_openNewTabAfterLastTab->setChecked(GeneralSettings::openNewTabAfterLastTab());
+ m_openNewTabAfterCurrentTab->setChecked(!m_openNewTabAfterLastTab->isChecked());
}
-void StartupSettingsPage::showSetDefaultDirectoryError()
+void FoldersTabsSettingsPage::showSetDefaultDirectoryError()
{
KMessageBox::error(this, i18nc("@info", "The location for the home folder is invalid or does not exist, it will not be applied."));
}
-#include "moc_startupsettingspage.cpp"
+#include "moc_folderstabssettingspage.cpp"
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
-#ifndef STARTUPSETTINGSPAGE_H
-#define STARTUPSETTINGSPAGE_H
+#ifndef FOLDERSTABSSETTINGSPAGE_H
+#define FOLDERSTABSSETTINGSPAGE_H
+#include "dolphin_generalsettings.h"
#include "settings/settingspagebase.h"
#include <QUrl>
+#include <qobject.h>
class QCheckBox;
class QLineEdit;
+class QLabel;
class QRadioButton;
/**
- * @brief Page for the 'Startup' settings of the Dolphin settings dialog.
- *
- * The startup settings allow to set the home URL and to configure the
- * state of the view mode, split mode and the filter bar when starting Dolphin.
+ * @brief Tab page for the 'Behavior' settings of the Dolphin settings dialog.
*/
-class StartupSettingsPage : public SettingsPageBase
+class FoldersTabsSettingsPage : public SettingsPageBase
{
Q_OBJECT
public:
- StartupSettingsPage(const QUrl &url, QWidget *parent);
- ~StartupSettingsPage() override;
+ FoldersTabsSettingsPage(QWidget *parent);
+ ~FoldersTabsSettingsPage() override;
/** @see SettingsPageBase::applySettings() */
void applySettings() override;
/** @see SettingsPageBase::restoreDefaults() */
void restoreDefaults() override;
+public:
+ QWidget *m_homeUrlBoxLayoutContainer;
+ QWidget *m_buttonBoxLayoutContainer;
+ QRadioButton *m_homeUrlRadioButton;
+
private Q_SLOTS:
void slotSettingsChanged();
void updateInitialViewOptions();
private:
QUrl m_url;
QLineEdit *m_homeUrl;
- QWidget *m_homeUrlBoxLayoutContainer;
- QWidget *m_buttonBoxLayoutContainer;
QRadioButton *m_rememberOpenedTabsRadioButton;
- QRadioButton *m_homeUrlRadioButton;
+
+ QRadioButton *m_openNewTabAfterLastTab;
+ QRadioButton *m_openNewTabAfterCurrentTab;
QCheckBox *m_splitView;
- QCheckBox *m_editableUrl;
- QCheckBox *m_showFullPath;
QCheckBox *m_filterBar;
QCheckBox *m_showFullPathInTitlebar;
QCheckBox *m_openExternallyCalledFolderInNewTab;
+ QCheckBox *m_useTabForSplitViewSwitch;
+ QCheckBox *m_closeActiveSplitView;
};
#endif
* SPDX-License-Identifier: GPL-2.0-or-later
*/
-#include "generalsettingspage.h"
+#include "interfacesettingspage.h"
-#include "behaviorsettingspage.h"
#include "confirmationssettingspage.h"
+#include "folderstabssettingspage.h"
#include "previewssettingspage.h"
-#include "statusbarsettingspage.h"
+#include "statusandlocationbarssettingspage.h"
#include <KLocalizedString>
#include <QTabWidget>
#include <QVBoxLayout>
-GeneralSettingsPage::GeneralSettingsPage(const QUrl &url, QWidget *parent)
+InterfaceSettingsPage::InterfaceSettingsPage(QWidget *parent)
: SettingsPageBase(parent)
, m_pages()
{
QTabWidget *tabWidget = new QTabWidget(this);
- // initialize 'Behavior' tab
- BehaviorSettingsPage *behaviorPage = new BehaviorSettingsPage(url, tabWidget);
- tabWidget->addTab(behaviorPage, i18nc("@title:tab Behavior settings", "Behavior"));
- connect(behaviorPage, &BehaviorSettingsPage::changed, this, &GeneralSettingsPage::changed);
+ // initialize 'Folders & Tabs' tab
+ FoldersTabsSettingsPage *foldersTabsPage = new FoldersTabsSettingsPage(tabWidget);
+ tabWidget->addTab(foldersTabsPage, i18nc("@title:tab Folders & Tabs settings", "Folders && Tabs"));
+ connect(foldersTabsPage, &FoldersTabsSettingsPage::changed, this, &InterfaceSettingsPage::changed);
// initialize 'Previews' tab
PreviewsSettingsPage *previewsPage = new PreviewsSettingsPage(tabWidget);
tabWidget->addTab(previewsPage, i18nc("@title:tab Previews settings", "Previews"));
- connect(previewsPage, &PreviewsSettingsPage::changed, this, &GeneralSettingsPage::changed);
+ connect(previewsPage, &PreviewsSettingsPage::changed, this, &InterfaceSettingsPage::changed);
// initialize 'Context Menu' tab
ConfirmationsSettingsPage *confirmationsPage = new ConfirmationsSettingsPage(tabWidget);
tabWidget->addTab(confirmationsPage, i18nc("@title:tab Confirmations settings", "Confirmations"));
- connect(confirmationsPage, &ConfirmationsSettingsPage::changed, this, &GeneralSettingsPage::changed);
+ connect(confirmationsPage, &ConfirmationsSettingsPage::changed, this, &InterfaceSettingsPage::changed);
- // initialize 'Status Bar' tab
- StatusBarSettingsPage *statusBarPage = new StatusBarSettingsPage(tabWidget);
- tabWidget->addTab(statusBarPage, i18nc("@title:tab Status Bar settings", "Status Bar"));
- connect(statusBarPage, &StatusBarSettingsPage::changed, this, &GeneralSettingsPage::changed);
+ // initialize 'Status & location bars' tab
+ StatusAndLocationBarsSettingsPage *statusAndLocationBarsPage = new StatusAndLocationBarsSettingsPage(tabWidget, foldersTabsPage);
+ tabWidget->addTab(statusAndLocationBarsPage, i18nc("@title:tab Status & Location bars settings", "Status && Location bars"));
+ connect(statusAndLocationBarsPage, &StatusAndLocationBarsSettingsPage::changed, this, &InterfaceSettingsPage::changed);
- m_pages.append(behaviorPage);
+ m_pages.append(foldersTabsPage);
m_pages.append(previewsPage);
m_pages.append(confirmationsPage);
- m_pages.append(statusBarPage);
+ m_pages.append(statusAndLocationBarsPage);
topLayout->addWidget(tabWidget, 0, {});
}
-GeneralSettingsPage::~GeneralSettingsPage()
+InterfaceSettingsPage::~InterfaceSettingsPage()
{
}
-void GeneralSettingsPage::applySettings()
+void InterfaceSettingsPage::applySettings()
{
for (SettingsPageBase *page : qAsConst(m_pages)) {
page->applySettings();
}
}
-void GeneralSettingsPage::restoreDefaults()
+void InterfaceSettingsPage::restoreDefaults()
{
for (SettingsPageBase *page : qAsConst(m_pages)) {
page->restoreDefaults();
}
}
-#include "moc_generalsettingspage.cpp"
+#include "moc_interfacesettingspage.cpp"
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
-#ifndef GENERALSETTINGSPAGE_H
-#define GENERALSETTINGSPAGE_H
+#ifndef INTERFACESETTINGSPAGE_H
+#define INTERFACESETTINGSPAGE_H
#include "settings/settingspagebase.h"
class SettingsPageBase;
/**
- * @brief Page for the 'General' settings of the Dolphin settings dialog.
+ * @brief Page for the 'Interface' settings of the Dolphin settings dialog.
*
- * The general settings include:
- * - Behavior
+ * The interface settings include:
+ * - Folders & Tabs
* - Previews
* - Context Menu
- * - Status Bar
*/
-class GeneralSettingsPage : public SettingsPageBase
+class InterfaceSettingsPage : public SettingsPageBase
{
Q_OBJECT
public:
- GeneralSettingsPage(const QUrl &url, QWidget *parent);
- ~GeneralSettingsPage() override;
+ InterfaceSettingsPage(QWidget *parent);
+ ~InterfaceSettingsPage() override;
/** @see SettingsPageBase::applySettings() */
void applySettings() override;
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2023 Dimosthenis Krallis <dimosthenis.krallis@outlook.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "statusandlocationbarssettingspage.h"
+#include "dolphinmainwindow.h"
+#include "dolphinviewcontainer.h"
+#include "settings/interface/folderstabssettingspage.h"
+
+#include <KLocalizedString>
+
+#include <QCheckBox>
+#include <QFormLayout>
+
+#include <QRadioButton>
+#include <QSpacerItem>
+
+StatusAndLocationBarsSettingsPage::StatusAndLocationBarsSettingsPage(QWidget *parent, FoldersTabsSettingsPage *foldersPage)
+ : SettingsPageBase(parent)
+ , m_editableUrl(nullptr)
+ , m_showFullPath(nullptr)
+ , m_showStatusBar(nullptr)
+ , m_showZoomSlider(nullptr)
+ , m_showSpaceInfo(nullptr)
+{
+ // We need to update some urls at the Folders & Tabs tab. We get that from foldersPage and set it on a private attribute
+ // foldersTabsPage. That way, we can modify the necessary stuff from here. Specifically, any changes on locationUpdateInitialViewOptions()
+ // which is a copy of updateInitialViewOptions() on Folders & Tabs.
+ foldersTabsPage = foldersPage;
+
+ QFormLayout *topLayout = new QFormLayout(this);
+
+ // Status bar
+ m_showStatusBar = new QCheckBox(i18nc("@option:check", "Show status bar"), this);
+ m_showZoomSlider = new QCheckBox(i18nc("@option:check", "Show zoom slider"), this);
+ m_showSpaceInfo = new QCheckBox(i18nc("@option:check", "Show space information"), this);
+
+ topLayout->addRow(i18nc("@title:group", "Status Bar: "), m_showStatusBar);
+ topLayout->addRow(QString(), m_showZoomSlider);
+ topLayout->addRow(QString(), m_showSpaceInfo);
+
+ topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed));
+
+ // Location bar
+ m_editableUrl = new QCheckBox(i18nc("@option:check Startup Settings", "Make location bar editable"));
+ topLayout->addRow(i18n("Location bar:"), m_editableUrl);
+
+ m_showFullPath = new QCheckBox(i18nc("@option:check Startup Settings", "Show full path inside location bar"));
+ topLayout->addRow(QString(), m_showFullPath);
+
+ loadSettings();
+
+ locationUpdateInitialViewOptions();
+
+ connect(m_editableUrl, &QCheckBox::toggled, this, &StatusAndLocationBarsSettingsPage::locationSlotSettingsChanged);
+ connect(m_showFullPath, &QCheckBox::toggled, this, &StatusAndLocationBarsSettingsPage::locationSlotSettingsChanged);
+
+ connect(m_showStatusBar, &QCheckBox::toggled, this, &StatusAndLocationBarsSettingsPage::changed);
+ connect(m_showStatusBar, &QCheckBox::toggled, this, &StatusAndLocationBarsSettingsPage::onShowStatusBarToggled);
+ connect(m_showZoomSlider, &QCheckBox::toggled, this, &StatusAndLocationBarsSettingsPage::changed);
+ connect(m_showSpaceInfo, &QCheckBox::toggled, this, &StatusAndLocationBarsSettingsPage::changed);
+}
+
+StatusAndLocationBarsSettingsPage::~StatusAndLocationBarsSettingsPage()
+{
+}
+
+void StatusAndLocationBarsSettingsPage::applySettings()
+{
+ GeneralSettings *settings = GeneralSettings::self();
+
+ settings->setEditableUrl(m_editableUrl->isChecked());
+ settings->setShowFullPath(m_showFullPath->isChecked());
+
+ settings->setShowStatusBar(m_showStatusBar->isChecked());
+ settings->setShowZoomSlider(m_showZoomSlider->isChecked());
+ settings->setShowSpaceInfo(m_showSpaceInfo->isChecked());
+
+ settings->save();
+}
+
+void StatusAndLocationBarsSettingsPage::onShowStatusBarToggled()
+{
+ const bool checked = m_showStatusBar->isChecked();
+ m_showZoomSlider->setEnabled(checked);
+ m_showSpaceInfo->setEnabled(checked);
+}
+
+void StatusAndLocationBarsSettingsPage::restoreDefaults()
+{
+ GeneralSettings *settings = GeneralSettings::self();
+ settings->useDefaults(true);
+ loadSettings();
+ settings->useDefaults(false);
+}
+
+void StatusAndLocationBarsSettingsPage::locationSlotSettingsChanged()
+{
+ // Provide a hint that the startup settings have been changed. This allows the views
+ // to apply the startup settings only if they have been explicitly changed by the user
+ // (see bug #254947).
+ GeneralSettings::setModifiedStartupSettings(true);
+
+ // Enable and disable home URL controls appropriately
+ locationUpdateInitialViewOptions();
+ Q_EMIT changed();
+}
+
+void StatusAndLocationBarsSettingsPage::locationUpdateInitialViewOptions()
+{
+ foldersTabsPage->m_homeUrlBoxLayoutContainer->setEnabled(foldersTabsPage->m_homeUrlRadioButton->isChecked());
+ foldersTabsPage->m_buttonBoxLayoutContainer->setEnabled(foldersTabsPage->m_homeUrlRadioButton->isChecked());
+}
+
+void StatusAndLocationBarsSettingsPage::loadSettings()
+{
+ m_editableUrl->setChecked(GeneralSettings::editableUrl());
+ m_showFullPath->setChecked(GeneralSettings::showFullPath());
+ m_showStatusBar->setChecked(GeneralSettings::showStatusBar());
+ m_showZoomSlider->setChecked(GeneralSettings::showZoomSlider());
+ m_showSpaceInfo->setChecked(GeneralSettings::showSpaceInfo());
+
+ onShowStatusBarToggled();
+}
+
+#include "moc_statusandlocationbarssettingspage.cpp"
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2009 Peter Penz <peter.penz19@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+#ifndef STATUSANDLOCATIONBARSSETTINGSPAGE_H
+#define STATUSANDLOCATIONBARSSETTINGSPAGE_H
+
+#include "dolphin_generalsettings.h"
+#include "folderstabssettingspage.h"
+#include "settings/settingspagebase.h"
+
+#include <QUrl>
+
+class QCheckBox;
+class QLineEdit;
+class QLabel;
+class QRadioButton;
+
+/**
+ * @brief Tab page for the 'Behavior' settings of the Dolphin settings dialog.
+ */
+class StatusAndLocationBarsSettingsPage : public SettingsPageBase
+{
+ Q_OBJECT
+
+public:
+ StatusAndLocationBarsSettingsPage(QWidget *parent, FoldersTabsSettingsPage *foldersPage);
+ ~StatusAndLocationBarsSettingsPage() override;
+
+ /** @see SettingsPageBase::applySettings() */
+ void applySettings() override;
+
+ /** @see SettingsPageBase::restoreDefaults() */
+ void restoreDefaults() override;
+
+private Q_SLOTS:
+ void locationSlotSettingsChanged();
+ void locationUpdateInitialViewOptions();
+
+private:
+ void loadSettings();
+ void onShowStatusBarToggled();
+
+private:
+ FoldersTabsSettingsPage *foldersTabsPage;
+ QCheckBox *m_editableUrl;
+ QCheckBox *m_showFullPath;
+
+ QCheckBox *m_showStatusBar;
+ QCheckBox *m_showZoomSlider;
+ QCheckBox *m_showSpaceInfo;
+};
+
+#endif
#include "kcmdolphingeneral.h"
-#include "settings/general/behaviorsettingspage.h"
-#include "settings/general/confirmationssettingspage.h"
-#include "settings/general/previewssettingspage.h"
+#include "settings/interface/confirmationssettingspage.h"
+#include "settings/interface/folderstabssettingspage.h"
+#include "settings/interface/interfacesettingspage.h"
+#include "settings/interface/previewssettingspage.h"
#include <KLocalizedString>
#include <KPluginFactory>
QTabWidget *tabWidget = new QTabWidget(this);
- // initialize 'Behavior' tab
- BehaviorSettingsPage *behaviorPage = new BehaviorSettingsPage(QUrl::fromLocalFile(QDir::homePath()), tabWidget);
- tabWidget->addTab(behaviorPage, i18nc("@title:tab Behavior settings", "Behavior"));
- connect(behaviorPage, &BehaviorSettingsPage::changed, this, &DolphinGeneralConfigModule::markAsChanged);
+ // initialize 'Folders & Tabs' tab
+ FoldersTabsSettingsPage *foldersTabsPage = new FoldersTabsSettingsPage(tabWidget);
+ tabWidget->addTab(foldersTabsPage, i18nc("@title:tab Behavior settings", "Behavior"));
+ connect(foldersTabsPage, &FoldersTabsSettingsPage::changed, this, &DolphinGeneralConfigModule::markAsChanged);
// initialize 'Previews' tab
PreviewsSettingsPage *previewsPage = new PreviewsSettingsPage(tabWidget);
ConfirmationsSettingsPage *confirmationsPage = new ConfirmationsSettingsPage(tabWidget);
tabWidget->addTab(confirmationsPage, i18nc("@title:tab Confirmations settings", "Confirmations"));
connect(confirmationsPage, &ConfirmationsSettingsPage::changed, this, &DolphinGeneralConfigModule::markAsChanged);
- m_pages.append(behaviorPage);
+ m_pages.append(foldersTabsPage);
m_pages.append(previewsPage);
m_pages.append(confirmationsPage);
+++ /dev/null
-/*
- * SPDX-FileCopyrightText: 2009 Peter Penz <peter.penz19@gmail.com>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#include "kcmdolphinnavigation.h"
-
-#include "settings/navigation/navigationsettingspage.h"
-#include <kconfigwidgets_version.h>
-
-#include <KPluginFactory>
-
-#include <QVBoxLayout>
-
-K_PLUGIN_CLASS_WITH_JSON(DolphinNavigationConfigModule, "kcmdolphinnavigation.json")
-
-DolphinNavigationConfigModule::DolphinNavigationConfigModule(QWidget *parent, const QVariantList &args)
- : KCModule(parent, args)
- , m_navigation(nullptr)
-{
- setButtons(KCModule::Default | KCModule::Help | KCModule::Apply);
-
- QVBoxLayout *topLayout = new QVBoxLayout(this);
- topLayout->setContentsMargins(0, 0, 0, 0);
-
- m_navigation = new NavigationSettingsPage(this);
- connect(m_navigation, &NavigationSettingsPage::changed, this, &DolphinNavigationConfigModule::markAsChanged);
- topLayout->addWidget(m_navigation, 0, {});
-}
-
-DolphinNavigationConfigModule::~DolphinNavigationConfigModule()
-{
-}
-
-void DolphinNavigationConfigModule::save()
-{
- m_navigation->applySettings();
-}
-
-void DolphinNavigationConfigModule::defaults()
-{
- m_navigation->restoreDefaults();
-}
-
-#include "kcmdolphinnavigation.moc"
-
-#include "moc_kcmdolphinnavigation.cpp"
+++ /dev/null
-/*
- * SPDX-FileCopyrightText: 2009 Peter Penz <peter.penz19@gmail.com>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#ifndef KCMDOLPHINNAVIGATION_H
-#define KCMDOLPHINNAVIGATION_H
-
-#include <KCModule>
-
-class NavigationSettingsPage;
-
-/**
- * @brief Allow to configure the Dolphin navigation.
- */
-class DolphinNavigationConfigModule : public KCModule
-{
- Q_OBJECT
-
-public:
- DolphinNavigationConfigModule(QWidget *parent, const QVariantList &args);
- ~DolphinNavigationConfigModule() override;
-
- void save() override;
- void defaults() override;
-
-private:
- NavigationSettingsPage *m_navigation;
-};
-
-#endif
+++ /dev/null
-{
- "KPlugin": {
- "Icon": "preferences-desktop-navigation",
- "Name": "Navigation",
- "Name[ar]": "التّنقّل",
- "Name[az]": "Naviqasiya",
- "Name[be]": "Навігацыя",
- "Name[bg]": "Навигация",
- "Name[ca@valencia]": "Navegació",
- "Name[ca]": "Navegació",
- "Name[cs]": "Navigace",
- "Name[da]": "Navigation",
- "Name[de]": "Navigation",
- "Name[en_GB]": "Navigation",
- "Name[eo]": "Navigado",
- "Name[es]": "Navegación",
- "Name[et]": "Liikumine",
- "Name[eu]": "Nabigatzea",
- "Name[fi]": "Selaus",
- "Name[fr]": "Navigation",
- "Name[gl]": "Navegación",
- "Name[he]": "ניווט",
- "Name[hi]": "संचालन",
- "Name[hu]": "Navigálás",
- "Name[ia]": "Navigation",
- "Name[id]": "Navigasi",
- "Name[ie]": "Navigation",
- "Name[is]": "Skoðun",
- "Name[it]": "Navigazione",
- "Name[ja]": "ナビゲーション",
- "Name[ka]": "ნავიგაცია",
- "Name[ko]": "탐색",
- "Name[lt]": "Naršymas",
- "Name[lv]": "Navigācija",
- "Name[ml]": "നാവിഗേഷന്",
- "Name[my]": "လမ်းညွှန်",
- "Name[nb]": "Navigasjon",
- "Name[nl]": "Navigatie",
- "Name[nn]": "Navigasjon",
- "Name[pa]": "ਨੇਵੀਗੇਸ਼ਨ",
- "Name[pl]": "Poruszanie się",
- "Name[pt]": "Navegação",
- "Name[pt_BR]": "Navegação",
- "Name[ro]": "Navigare",
- "Name[ru]": "Навигация",
- "Name[se]": "Navigašuvdna",
- "Name[sk]": "Navigácia",
- "Name[sl]": "Krmarjenje",
- "Name[sr@ijekavian]": "Навигација",
- "Name[sr@ijekavianlatin]": "Navigacija",
- "Name[sr@latin]": "Navigacija",
- "Name[sr]": "Навигација",
- "Name[sv]": "Navigering",
- "Name[ta]": "உலாவல்",
- "Name[tr]": "Dolaşım",
- "Name[uk]": "Навігація",
- "Name[vi]": "Điều hướng",
- "Name[x-test]": "xxNavigationxx",
- "Name[zh_CN]": "导航",
- "Name[zh_TW]": "導覽"
- },
- "X-DocPath": "dolphin/configuring-dolphin.html#preferences-dialog-navigation"
-}
+++ /dev/null
-/*
- * SPDX-FileCopyrightText: 2009 Peter Penz <peter.penz19@gmail.com>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#include "navigationsettingspage.h"
-
-#include "dolphin_generalsettings.h"
-#include "global.h"
-
-#include <KLocalizedString>
-
-#include <QButtonGroup>
-#include <QCheckBox>
-#include <QFormLayout>
-#include <QRadioButton>
-
-NavigationSettingsPage::NavigationSettingsPage(QWidget *parent)
- : SettingsPageBase(parent)
- , m_openArchivesAsFolder(nullptr)
- , m_autoExpandFolders(nullptr)
- , m_openNewTabAfterLastTab(nullptr)
- , m_openNewTabAfterCurrentTab(nullptr)
-{
- QFormLayout *topLayout = new QFormLayout(this);
-
- // Tabs properties
- m_openNewTabAfterCurrentTab = new QRadioButton(i18nc("option:radio", "After current tab"));
- m_openNewTabAfterLastTab = new QRadioButton(i18nc("option:radio", "At end of tab bar"));
- QButtonGroup *tabsBehaviorGroup = new QButtonGroup(this);
- tabsBehaviorGroup->addButton(m_openNewTabAfterCurrentTab);
- tabsBehaviorGroup->addButton(m_openNewTabAfterLastTab);
- topLayout->addRow(i18nc("@title:group", "Open new tabs: "), m_openNewTabAfterCurrentTab);
- topLayout->addRow(QString(), m_openNewTabAfterLastTab);
-
- topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed));
-
- 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", "General: "), m_openArchivesAsFolder);
- topLayout->addRow(QString(), m_autoExpandFolders);
-
- loadSettings();
-
- connect(m_openArchivesAsFolder, &QCheckBox::toggled, this, &NavigationSettingsPage::changed);
- connect(m_autoExpandFolders, &QCheckBox::toggled, this, &NavigationSettingsPage::changed);
- connect(m_openNewTabAfterCurrentTab, &QRadioButton::toggled, this, &NavigationSettingsPage::changed);
- connect(m_openNewTabAfterLastTab, &QRadioButton::toggled, this, &NavigationSettingsPage::changed);
-}
-
-NavigationSettingsPage::~NavigationSettingsPage()
-{
-}
-
-void NavigationSettingsPage::applySettings()
-{
- GeneralSettings *settings = GeneralSettings::self();
- settings->setBrowseThroughArchives(m_openArchivesAsFolder->isChecked());
- settings->setAutoExpandFolders(m_autoExpandFolders->isChecked());
- settings->setOpenNewTabAfterLastTab(m_openNewTabAfterLastTab->isChecked());
-
- settings->save();
-}
-
-void NavigationSettingsPage::restoreDefaults()
-{
- GeneralSettings *settings = GeneralSettings::self();
- settings->useDefaults(true);
- loadSettings();
- settings->useDefaults(false);
-}
-
-void NavigationSettingsPage::loadSettings()
-{
- m_openArchivesAsFolder->setChecked(GeneralSettings::browseThroughArchives());
- m_autoExpandFolders->setChecked(GeneralSettings::autoExpandFolders());
- m_openNewTabAfterLastTab->setChecked(GeneralSettings::openNewTabAfterLastTab());
- m_openNewTabAfterCurrentTab->setChecked(!m_openNewTabAfterLastTab->isChecked());
-}
-
-#include "moc_navigationsettingspage.cpp"
+++ /dev/null
-/*
- * SPDX-FileCopyrightText: 2009 Peter Penz <peter.penz19@gmail.com>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-#ifndef NAVIGATIONSETTINGSPAGE_H
-#define NAVIGATIONSETTINGSPAGE_H
-
-#include "settings/settingspagebase.h"
-
-class QCheckBox;
-class QRadioButton;
-
-/**
- * @brief Page for the 'Navigation' settings of the Dolphin settings dialog.
- */
-class NavigationSettingsPage : public SettingsPageBase
-{
- Q_OBJECT
-
-public:
- explicit NavigationSettingsPage(QWidget *parent);
- ~NavigationSettingsPage() override;
-
- /** @see SettingsPageBase::applySettings() */
- void applySettings() override;
-
- /** @see SettingsPageBase::restoreDefaults() */
- void restoreDefaults() override;
-
-private:
- void loadSettings();
-
-private:
- QCheckBox *m_openArchivesAsFolder;
- QCheckBox *m_autoExpandFolders;
- QRadioButton *m_openNewTabAfterLastTab;
- QRadioButton *m_openNewTabAfterCurrentTab;
-};
-
-#endif
#include "contentdisplaytab.h"
#include "dolphin_contentdisplaysettings.h"
+#include "dolphin_generalsettings.h"
#include <KFormat>
#include <KLocalizedString>
ContentDisplayTab::ContentDisplayTab(QWidget *parent)
: SettingsPageBase(parent)
+ , m_naturalSorting(nullptr)
+ , m_caseSensitiveSorting(nullptr)
+ , m_caseInsensitiveSorting(nullptr)
, m_numberOfItems(nullptr)
, m_sizeOfContents(nullptr)
, m_recursiveDirectorySizeLimit(nullptr)
{
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"));
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();
}
settings->setDirectorySizeCount(m_numberOfItems->isChecked());
settings->setRecursiveDirectorySizeLimit(m_recursiveDirectorySizeLimit->value());
#endif
-
+ setSortingChoiceValue();
settings->setUseShortRelativeDates(m_useRelatetiveDates->isChecked());
if (m_useSymbolicPermissions->isChecked()) {
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()
#ifndef GENERALTAB_H
#define GENERALTAB_H
+#include "dolphin_contentdisplaysettings.h"
+#include "dolphin_generalsettings.h"
#include "settings/settingspagebase.h"
class QRadioButton;
private:
void loadSettings();
+ void setSortingChoiceValue();
+ void loadSortingChoiceSettings();
+
+ QRadioButton *m_naturalSorting;
+ QRadioButton *m_caseSensitiveSorting;
+ QRadioButton *m_caseInsensitiveSorting;
QRadioButton *m_numberOfItems;
QRadioButton *m_sizeOfContents;
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2006 Peter Penz (peter.penz@gmx.at) 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"
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
-#ifndef BEHAVIORSETTINGSPAGE_H
-#define BEHAVIORSETTINGSPAGE_H
+#ifndef GENERALVIEWSETTINGSPAGE_H
+#define GENERALVIEWSETTINGSPAGE_H
-#include "dolphin_generalsettings.h"
#include "settings/settingspagebase.h"
+#include <qradiobutton.h>
#include <QUrl>
class QRadioButton;
/**
- * @brief Tab page for the 'Behavior' settings of the Dolphin settings dialog.
+ * @brief Tab page for the 'View tab' settings of the Dolphin settings dialog.
*/
-class BehaviorSettingsPage : public SettingsPageBase
+class GeneralViewSettingsPage : public SettingsPageBase
{
Q_OBJECT
public:
- BehaviorSettingsPage(const QUrl &url, QWidget *parent);
- ~BehaviorSettingsPage() override;
+ explicit GeneralViewSettingsPage(const QUrl &url, QWidget *parent);
+ ~GeneralViewSettingsPage() override;
/** @see SettingsPageBase::applySettings() */
void applySettings() override;
private:
void loadSettings();
- void setSortingChoiceValue(GeneralSettings *settings);
- void loadSortingChoiceSettings();
private:
QUrl m_url;
-
QRadioButton *m_localViewProps;
QRadioButton *m_globalViewProps;
-
QCheckBox *m_showToolTips;
QLabel *m_configureToolTips;
QCheckBox *m_showSelectionToggle;
-
- QRadioButton *m_naturalSorting;
- QRadioButton *m_caseSensitiveSorting;
- QRadioButton *m_caseInsensitiveSorting;
-
QCheckBox *m_renameInline;
- QCheckBox *m_useTabForSplitViewSwitch;
- QCheckBox *m_closeActiveSplitView;
+ QCheckBox *m_openArchivesAsFolder;
+ QCheckBox *m_autoExpandFolders;
};
#endif
#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()
{
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,
Q_OBJECT
public:
- explicit ViewSettingsPage(QWidget *parent);
+ explicit ViewSettingsPage(const QUrl &url, QWidget *parent);
~ViewSettingsPage() override;
/** @see SettingsPageBase::applySettings() */