1
0
mirror of https://invent.kde.org/system/dolphin synced 2024-07-02 16:31:23 +00:00

Dolphin settings revamp

It includes a move of the settings in the Navigation and Startup sections to the Interface (formerly Behavior) section.
It also includes a new tab in the View (formerly View Mode) section, called General where some settings regarding Display style, Browsing and Miscellaneous settings
The Interface section has new tabs named Folders & Tabs and Status & Location bars respectively where most of the Startup and Navigation settings moved.

The `dolphin/kcms/kcm_dolphinnavigation` kcm is removed.
This commit is contained in:
Dimosthenis Krallis 2023-08-18 07:07:48 +00:00 committed by Méven Car
parent f413e83a22
commit 489b56b68b
29 changed files with 576 additions and 766 deletions

View File

@ -288,25 +288,24 @@ target_sources(dolphinstatic PRIVATE
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
@ -348,25 +347,24 @@ target_sources(dolphinstatic PRIVATE
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
@ -500,7 +498,6 @@ install(TARGETS dolphin ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
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
@ -515,32 +512,37 @@ if(NOT WIN32)
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
@ -553,20 +555,15 @@ if(NOT WIN32)
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()

View File

@ -10,9 +10,7 @@
#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
@ -50,30 +48,18 @@ DolphinSettingsDialog::DolphinSettingsDialog(const QUrl &url, QWidget *parent, K
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);
// 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);
// 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"));
// 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,
@ -113,10 +99,8 @@ DolphinSettingsDialog::DolphinSettingsDialog(const QUrl &url, QWidget *parent, K
}
#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);

View File

@ -1,195 +0,0 @@
/*
* 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"

View File

@ -1,77 +0,0 @@
/*
* 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"

View File

@ -1,40 +0,0 @@
/*
* 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

View File

@ -1,12 +1,10 @@
/*
* 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"
@ -24,25 +22,27 @@
#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);
@ -67,7 +67,7 @@ StartupSettingsPage::StartupSettingsPage(const QUrl &url, QWidget *parent)
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);
@ -75,10 +75,10 @@ StartupSettingsPage::StartupSettingsPage(const QUrl &url, QWidget *parent)
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);
@ -91,48 +91,73 @@ StartupSettingsPage::StartupSettingsPage(const QUrl &url, QWidget *parent)
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, &StartupSettingsPage::slotSettingsChanged);
connect(m_editableUrl, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged);
connect(m_filterBar, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged);
connect(m_splitView, &QCheckBox::toggled, this, &FoldersTabsSettingsPage::slotSettingsChanged);
connect(m_filterBar, &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_openExternallyCalledFolderInNewTab, &QCheckBox::toggled, this, &FoldersTabsSettingsPage::slotSettingsChanged);
connect(m_showFullPathInTitlebar, &QCheckBox::toggled, this, &FoldersTabsSettingsPage::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);
@ -157,15 +182,16 @@ void StartupSettingsPage::applySettings()
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);
@ -173,7 +199,7 @@ void StartupSettingsPage::restoreDefaults()
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
@ -185,13 +211,13 @@ void StartupSettingsPage::slotSettingsChanged()
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);
@ -201,33 +227,37 @@ void StartupSettingsPage::selectHomeUrl()
}
}
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"

View File

@ -3,30 +3,30 @@
*
* 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;
@ -34,6 +34,11 @@ public:
/** @see SettingsPageBase::restoreDefaults() */
void restoreDefaults() override;
public:
QWidget *m_homeUrlBoxLayoutContainer;
QWidget *m_buttonBoxLayoutContainer;
QRadioButton *m_homeUrlRadioButton;
private Q_SLOTS:
void slotSettingsChanged();
void updateInitialViewOptions();
@ -48,17 +53,17 @@ private:
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

View File

@ -4,19 +4,19 @@
* 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()
{
@ -25,50 +25,50 @@ GeneralSettingsPage::GeneralSettingsPage(const QUrl &url, QWidget *parent)
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"

View File

@ -3,8 +3,8 @@
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef GENERALSETTINGSPAGE_H
#define GENERALSETTINGSPAGE_H
#ifndef INTERFACESETTINGSPAGE_H
#define INTERFACESETTINGSPAGE_H
#include "settings/settingspagebase.h"
@ -14,21 +14,20 @@ class QUrl;
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;

View File

@ -0,0 +1,128 @@
/*
* 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"

View File

@ -0,0 +1,55 @@
/*
* 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

View File

@ -6,9 +6,10 @@
#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>
@ -30,10 +31,10 @@ DolphinGeneralConfigModule::DolphinGeneralConfigModule(QWidget *parent, const QV
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);
@ -44,7 +45,7 @@ DolphinGeneralConfigModule::DolphinGeneralConfigModule(QWidget *parent, const QV
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);

View File

@ -1,48 +0,0 @@
/*
* 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"

View File

@ -1,32 +0,0 @@
/*
* 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

View File

@ -1,63 +0,0 @@
{
"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"
}

View File

@ -1,82 +0,0 @@
/*
* 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"

View File

@ -1,41 +0,0 @@
/*
* 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

View File

@ -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()

View File

@ -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;

View File

@ -0,0 +1,133 @@
/*
* 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"

View File

@ -3,11 +3,11 @@
*
* 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>
@ -16,15 +16,15 @@ class QLabel;
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;
@ -34,26 +34,17 @@ public:
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

View File

@ -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,

View File

@ -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() */