From 489b56b68bb29e81337e115c490eea4403001b71 Mon Sep 17 00:00:00 2001 From: Dimosthenis Krallis Date: Fri, 18 Aug 2023 07:07:48 +0000 Subject: 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. --- .../statusandlocationbarssettingspage.cpp | 128 +++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 src/settings/interface/statusandlocationbarssettingspage.cpp (limited to 'src/settings/interface/statusandlocationbarssettingspage.cpp') diff --git a/src/settings/interface/statusandlocationbarssettingspage.cpp b/src/settings/interface/statusandlocationbarssettingspage.cpp new file mode 100644 index 000000000..5e0536a6e --- /dev/null +++ b/src/settings/interface/statusandlocationbarssettingspage.cpp @@ -0,0 +1,128 @@ +/* + * SPDX-FileCopyrightText: 2023 Dimosthenis Krallis + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "statusandlocationbarssettingspage.h" +#include "dolphinmainwindow.h" +#include "dolphinviewcontainer.h" +#include "settings/interface/folderstabssettingspage.h" + +#include + +#include +#include + +#include +#include + +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" -- cgit v1.3