┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt68
-rw-r--r--src/dolphincontextmenu.cpp8
-rw-r--r--src/dolphintabwidget.cpp3
-rw-r--r--src/dolphinviewcontainer.cpp22
-rw-r--r--src/dolphinviewcontainer.h5
-rw-r--r--src/kitemviews/kfileitemmodelrolesupdater.cpp8
-rw-r--r--src/org.kde.dolphin.appdata.xml2
-rw-r--r--src/settings/dolphinsettingsdialog.cpp36
-rw-r--r--src/settings/general/behaviorsettingspage.cpp195
-rw-r--r--src/settings/general/statusbarsettingspage.cpp77
-rw-r--r--src/settings/general/statusbarsettingspage.h40
-rw-r--r--src/settings/interface/confirmationssettingspage.cpp (renamed from src/settings/general/confirmationssettingspage.cpp)0
-rw-r--r--src/settings/interface/confirmationssettingspage.h (renamed from src/settings/general/confirmationssettingspage.h)0
-rw-r--r--src/settings/interface/folderstabssettingspage.cpp (renamed from src/settings/startup/startupsettingspage.cpp)130
-rw-r--r--src/settings/interface/folderstabssettingspage.h (renamed from src/settings/startup/startupsettingspage.h)33
-rw-r--r--src/settings/interface/interfacesettingspage.cpp (renamed from src/settings/general/generalsettingspage.cpp)40
-rw-r--r--src/settings/interface/interfacesettingspage.h (renamed from src/settings/general/generalsettingspage.h)17
-rw-r--r--src/settings/interface/previewssettingspage.cpp (renamed from src/settings/general/previewssettingspage.cpp)0
-rw-r--r--src/settings/interface/previewssettingspage.h (renamed from src/settings/general/previewssettingspage.h)0
-rw-r--r--src/settings/interface/statusandlocationbarssettingspage.cpp128
-rw-r--r--src/settings/interface/statusandlocationbarssettingspage.h55
-rw-r--r--src/settings/kcm/kcmdolphingeneral.cpp17
-rw-r--r--src/settings/kcm/kcmdolphinnavigation.json63
-rw-r--r--src/settings/kcm/kcmdolphinviewmodes.cpp2
-rw-r--r--src/settings/navigation/navigationsettingspage.cpp82
-rw-r--r--src/settings/navigation/navigationsettingspage.h41
-rw-r--r--src/settings/viewmodes/contentdisplaytab.cpp54
-rw-r--r--src/settings/viewmodes/contentdisplaytab.h8
-rw-r--r--src/settings/viewmodes/generalviewsettingspage.cpp133
-rw-r--r--src/settings/viewmodes/generalviewsettingspage.h (renamed from src/settings/general/behaviorsettingspage.h)27
-rw-r--r--src/settings/viewmodes/viewsettingspage.cpp24
-rw-r--r--src/settings/viewmodes/viewsettingspage.h4
-rw-r--r--src/settings/viewmodes/viewsettingstab.cpp4
-rw-r--r--src/settings/viewmodes/viewsettingstab.h8
-rw-r--r--src/views/dolphinview.cpp5
-rw-r--r--src/views/dolphinview.h6
36 files changed, 636 insertions, 709 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index fa7de5cc2..1a229f6a7 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -293,23 +293,22 @@ target_sources(dolphinstatic PRIVATE
selectionmode/bottombar.cpp
selectionmode/bottombarcontentscontainer.cpp
selectionmode/topbar.cpp
- settings/general/behaviorsettingspage.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/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/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
@@ -351,23 +350,22 @@ target_sources(dolphinstatic PRIVATE
selectionmode/bottombar.h
selectionmode/bottombarcontentscontainer.h
selectionmode/topbar.h
- settings/general/behaviorsettingspage.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/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/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
@@ -501,7 +499,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
@@ -509,6 +506,7 @@ if(NOT WIN32)
settings/viewmodes/dolphinfontrequester.cpp
settings/viewmodes/viewmodesettings.cpp
settings/viewmodes/viewsettingstab.cpp
+ settings/settingspagebase.cpp
views/zoomlevelinfo.cpp
settings/kcm/kcmdolphinviewmodes.h
settings/viewmodes/dolphinfontrequester.h
@@ -516,28 +514,33 @@ 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/confirmationssettingspage.cpp
+ settings/interface/folderstabssettingspage.cpp
+ settings/interface/statusandlocationbarssettingspage.cpp
+ settings/interface/previewssettingspage.cpp
+ settings/interface/confirmationssettingspage.cpp
settings/settingspagebase.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/confirmationssettingspage.h
+ settings/interface/folderstabssettingspage.h
+ settings/interface/statusandlocationbarssettingspage.h
+ settings/interface/previewssettingspage.h
+ settings/interface/confirmationssettingspage.h
settings/settingspagebase.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
@@ -550,20 +553,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()
diff --git a/src/dolphincontextmenu.cpp b/src/dolphincontextmenu.cpp
index e1c7b7ad2..87a30e9ef 100644
--- a/src/dolphincontextmenu.cpp
+++ b/src/dolphincontextmenu.cpp
@@ -204,14 +204,14 @@ void DolphinContextMenu::addItemContextMenu()
m_mainWindow->activeViewContainer()->view()->markUrlAsCurrent(m_fileInfo.url());
});
- addAction(QIcon::fromTheme(QStringLiteral("window-new")), i18nc("@action:inmenu", "Open Path in New Window"), [this]() {
- Dolphin::openNewWindow({m_fileInfo.url()}, m_mainWindow, Dolphin::OpenNewWindowFlag::Select);
- });
-
addAction(QIcon::fromTheme(QStringLiteral("tab-new")), i18nc("@action:inmenu", "Open Path in New Tab"), [this]() {
m_mainWindow->openNewTab(KIO::upUrl(m_fileInfo.url()));
});
+ addAction(QIcon::fromTheme(QStringLiteral("window-new")), i18nc("@action:inmenu", "Open Path in New Window"), [this]() {
+ Dolphin::openNewWindow({m_fileInfo.url()}, m_mainWindow, Dolphin::OpenNewWindowFlag::Select);
+ });
+
addSeparator();
} else {
// Insert 'Open With" entries
diff --git a/src/dolphintabwidget.cpp b/src/dolphintabwidget.cpp
index ff2f246ae..edc1cb7d8 100644
--- a/src/dolphintabwidget.cpp
+++ b/src/dolphintabwidget.cpp
@@ -15,6 +15,7 @@
#include <KIO/CommandLauncherJob>
#include <KLocalizedString>
#include <KShell>
+#include <KStringHandler>
#include <kio/global.h>
#include <QApplication>
@@ -507,7 +508,7 @@ QString DolphinTabWidget::tabName(DolphinTabPage *tabPage) const
// Make sure that a '&' inside the directory name is displayed correctly
// and not misinterpreted as a keyboard shortcut in QTabBar::setTabText()
- return name.replace('&', QLatin1String("&&"));
+ return KStringHandler::rsqueeze(name.replace('&', QLatin1String("&&")), 40 /* default maximum visible folder name visible */);
}
DolphinViewContainer *DolphinTabWidget::viewContainerAt(DolphinTabWidget::ViewIndex viewIndex) const
diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp
index 1199da6c5..c0ef1997a 100644
--- a/src/dolphinviewcontainer.cpp
+++ b/src/dolphinviewcontainer.cpp
@@ -23,6 +23,7 @@
#if HAVE_KACTIVITIES
#include <KActivities/ResourceInstance>
#endif
+#include <KApplicationTrader>
#include <KFileItemActions>
#include <KFilePlacesModel>
#include <KIO/JobUiDelegateFactory>
@@ -130,6 +131,7 @@ DolphinViewContainer::DolphinViewContainer(const QUrl &url, QWidget *parent)
connect(m_view, &DolphinView::writeStateChanged, this, &DolphinViewContainer::writeStateChanged);
connect(m_view, &DolphinView::requestItemInfo, this, &DolphinViewContainer::showItemInfo);
connect(m_view, &DolphinView::itemActivated, this, &DolphinViewContainer::slotItemActivated);
+ connect(m_view, &DolphinView::fileMiddleClickActivated, this, &DolphinViewContainer::slotfileMiddleClickActivated);
connect(m_view, &DolphinView::itemsActivated, this, &DolphinViewContainer::slotItemsActivated);
connect(m_view, &DolphinView::redirection, this, &DolphinViewContainer::redirect);
connect(m_view, &DolphinView::directoryLoadingStarted, this, &DolphinViewContainer::slotDirectoryLoadingStarted);
@@ -730,6 +732,26 @@ void DolphinViewContainer::slotItemActivated(const KFileItem &item)
job->start();
}
+void DolphinViewContainer::slotfileMiddleClickActivated(const KFileItem &item)
+{
+ KService::List services = KApplicationTrader::queryByMimeType(item.mimetype());
+
+ if (services.length() >= 2) {
+ auto service = services.at(1);
+
+ KIO::ApplicationLauncherJob *job = new KIO::ApplicationLauncherJob(service, this);
+ job->setUrls({item.url()});
+
+#if KIO_VERSION >= QT_VERSION_CHECK(5, 98, 0)
+ job->setUiDelegate(KIO::createDefaultJobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, this));
+#else
+ job->setUiDelegate(new KIO::JobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, this));
+#endif
+ connect(job, &KIO::OpenUrlJob::finished, this, &DolphinViewContainer::slotOpenUrlFinished);
+ job->start();
+ }
+}
+
void DolphinViewContainer::slotItemsActivated(const KFileItemList &items)
{
Q_ASSERT(items.count() >= 2);
diff --git a/src/dolphinviewcontainer.h b/src/dolphinviewcontainer.h
index f9c62296e..0c8b184fe 100644
--- a/src/dolphinviewcontainer.h
+++ b/src/dolphinviewcontainer.h
@@ -327,6 +327,11 @@ private Q_SLOTS:
void slotItemsActivated(const KFileItemList &items);
/**
+ * Handles middle click of file. It opens the file passed using the second application associated with the file's mimetype.
+ */
+ void slotfileMiddleClickActivated(const KFileItem &item);
+
+ /**
* Shows the information for the item \a item inside the statusbar. If the
* item is null, the default statusbar information is shown.
*/
diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp
index eeb1f2063..490630888 100644
--- a/src/kitemviews/kfileitemmodelrolesupdater.cpp
+++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp
@@ -1267,7 +1267,11 @@ bool KFileItemModelRolesUpdater::applyResolvedRoles(int index, ResolveHint hint)
void KFileItemModelRolesUpdater::startDirectorySizeCounting(const KFileItem &item, int index)
{
- if (ContentDisplaySettings::directorySizeCount() || item.isSlow() || !item.isLocalFile()) {
+ if (!item.isLocalFile()) {
+ return;
+ }
+
+ if (ContentDisplaySettings::directorySizeCount() || item.isSlow()) {
// fastpath no recursion necessary
auto data = m_model->data(index);
@@ -1290,7 +1294,7 @@ void KFileItemModelRolesUpdater::startDirectorySizeCounting(const KFileItem &ite
m_model->setData(index, data);
connect(m_model, &KFileItemModel::itemsChanged, this, &KFileItemModelRolesUpdater::slotItemsChanged);
- auto listJob = KIO::listDir(url);
+ auto listJob = KIO::listDir(url, KIO::HideProgressInfo);
QObject::connect(listJob, &KIO::ListJob::entries, this, [this, index](const KJob * /*job*/, const KIO::UDSEntryList &list) {
auto data = m_model->data(index);
int origCount = data.value("count").toInt();
diff --git a/src/org.kde.dolphin.appdata.xml b/src/org.kde.dolphin.appdata.xml
index 57a1e4a89..a23b9ddc2 100644
--- a/src/org.kde.dolphin.appdata.xml
+++ b/src/org.kde.dolphin.appdata.xml
@@ -494,10 +494,10 @@
<binary>dolphin</binary>
</provides>
<releases>
+ <release version="23.08.0" date="2023-08-24"/>
<release version="23.04.3" date="2023-07-06"/>
<release version="23.04.2" date="2023-06-08"/>
<release version="23.04.1" date="2023-05-11"/>
- <release version="23.04.0" date="2023-04-20"/>
</releases>
<content_rating type="oars-1.1"/>
</component>
diff --git a/src/settings/dolphinsettingsdialog.cpp b/src/settings/dolphinsettingsdialog.cpp
index 8c200c747..45aa7b65a 100644
--- a/src/settings/dolphinsettingsdialog.cpp
+++ b/src/settings/dolphinsettingsdialog.cpp
@@ -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);
diff --git a/src/settings/general/behaviorsettingspage.cpp b/src/settings/general/behaviorsettingspage.cpp
deleted file mode 100644
index 662fcc26a..000000000
--- a/src/settings/general/behaviorsettingspage.cpp
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2006 Peter Penz ([email protected]) 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"
diff --git a/src/settings/general/statusbarsettingspage.cpp b/src/settings/general/statusbarsettingspage.cpp
deleted file mode 100644
index 40e34e4f6..000000000
--- a/src/settings/general/statusbarsettingspage.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2009 Peter Penz <[email protected]>
- *
- * 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"
diff --git a/src/settings/general/statusbarsettingspage.h b/src/settings/general/statusbarsettingspage.h
deleted file mode 100644
index adff05dc1..000000000
--- a/src/settings/general/statusbarsettingspage.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2009 Peter Penz <[email protected]>
- *
- * 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
diff --git a/src/settings/general/confirmationssettingspage.cpp b/src/settings/interface/confirmationssettingspage.cpp
index 61c3a14b6..61c3a14b6 100644
--- a/src/settings/general/confirmationssettingspage.cpp
+++ b/src/settings/interface/confirmationssettingspage.cpp
diff --git a/src/settings/general/confirmationssettingspage.h b/src/settings/interface/confirmationssettingspage.h
index 56dd1a78c..56dd1a78c 100644
--- a/src/settings/general/confirmationssettingspage.h
+++ b/src/settings/interface/confirmationssettingspage.h
diff --git a/src/settings/startup/startupsettingspage.cpp b/src/settings/interface/folderstabssettingspage.cpp
index f92ead179..85a0e8e13 100644
--- a/src/settings/startup/startupsettingspage.cpp
+++ b/src/settings/interface/folderstabssettingspage.cpp
@@ -1,12 +1,10 @@
/*
- * SPDX-FileCopyrightText: 2008 Peter Penz <[email protected]>
+ * SPDX-FileCopyrightText: 2006 Peter Penz ([email protected]) 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, &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::stat(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"
diff --git a/src/settings/startup/startupsettingspage.h b/src/settings/interface/folderstabssettingspage.h
index b1cf387fa..89e5c0982 100644
--- a/src/settings/startup/startupsettingspage.h
+++ b/src/settings/interface/folderstabssettingspage.h
@@ -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
diff --git a/src/settings/general/generalsettingspage.cpp b/src/settings/interface/interfacesettingspage.cpp
index 61c2e3adc..e941cf467 100644
--- a/src/settings/general/generalsettingspage.cpp
+++ b/src/settings/interface/interfacesettingspage.cpp
@@ -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"
diff --git a/src/settings/general/generalsettingspage.h b/src/settings/interface/interfacesettingspage.h
index bb9099af0..1faee1afb 100644
--- a/src/settings/general/generalsettingspage.h
+++ b/src/settings/interface/interfacesettingspage.h
@@ -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;
diff --git a/src/settings/general/previewssettingspage.cpp b/src/settings/interface/previewssettingspage.cpp
index dd1ce942e..dd1ce942e 100644
--- a/src/settings/general/previewssettingspage.cpp
+++ b/src/settings/interface/previewssettingspage.cpp
diff --git a/src/settings/general/previewssettingspage.h b/src/settings/interface/previewssettingspage.h
index d6d22ae21..d6d22ae21 100644
--- a/src/settings/general/previewssettingspage.h
+++ b/src/settings/interface/previewssettingspage.h
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 <[email protected]>
+ *
+ * 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"
diff --git a/src/settings/interface/statusandlocationbarssettingspage.h b/src/settings/interface/statusandlocationbarssettingspage.h
new file mode 100644
index 000000000..c22ff2041
--- /dev/null
+++ b/src/settings/interface/statusandlocationbarssettingspage.h
@@ -0,0 +1,55 @@
+/*
+ * SPDX-FileCopyrightText: 2009 Peter Penz <[email protected]>
+ *
+ * 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
diff --git a/src/settings/kcm/kcmdolphingeneral.cpp b/src/settings/kcm/kcmdolphingeneral.cpp
index efb9d40db..9d2004289 100644
--- a/src/settings/kcm/kcmdolphingeneral.cpp
+++ b/src/settings/kcm/kcmdolphingeneral.cpp
@@ -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(QObject *parent, const KP
QTabWidget *tabWidget = new QTabWidget(widget());
- // 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(QObject *parent, const KP
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);
diff --git a/src/settings/kcm/kcmdolphinnavigation.json b/src/settings/kcm/kcmdolphinnavigation.json
deleted file mode 100644
index 8bf2cbfd8..000000000
--- a/src/settings/kcm/kcmdolphinnavigation.json
+++ /dev/null
@@ -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"
-}
diff --git a/src/settings/kcm/kcmdolphinviewmodes.cpp b/src/settings/kcm/kcmdolphinviewmodes.cpp
index 41d12aa2c..b0e7a42a4 100644
--- a/src/settings/kcm/kcmdolphinviewmodes.cpp
+++ b/src/settings/kcm/kcmdolphinviewmodes.cpp
@@ -68,7 +68,7 @@ void DolphinViewModesConfigModule::save()
void DolphinViewModesConfigModule::defaults()
{
for (ViewSettingsTab *tab : qAsConst(m_tabs)) {
- tab->restoreDefaultSettings();
+ tab->restoreDefaults();
}
reparseConfiguration();
}
diff --git a/src/settings/navigation/navigationsettingspage.cpp b/src/settings/navigation/navigationsettingspage.cpp
deleted file mode 100644
index 3b38e52e7..000000000
--- a/src/settings/navigation/navigationsettingspage.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2009 Peter Penz <[email protected]>
- *
- * 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"
diff --git a/src/settings/navigation/navigationsettingspage.h b/src/settings/navigation/navigationsettingspage.h
deleted file mode 100644
index e0f92884f..000000000
--- a/src/settings/navigation/navigationsettingspage.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2009 Peter Penz <[email protected]>
- *
- * 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
diff --git a/src/settings/viewmodes/contentdisplaytab.cpp b/src/settings/viewmodes/contentdisplaytab.cpp
index aa320b79e..f674e194e 100644
--- a/src/settings/viewmodes/contentdisplaytab.cpp
+++ b/src/settings/viewmodes/contentdisplaytab.cpp
@@ -6,6 +6,7 @@
#include "contentdisplaytab.h"
#include "dolphin_contentdisplaysettings.h"
+#include "dolphin_generalsettings.h"
#include <KFormat>
#include <KLocalizedString>
@@ -18,6 +19,9 @@
ContentDisplayTab::ContentDisplayTab(QWidget *parent)
: SettingsPageBase(parent)
+ , m_naturalSorting(nullptr)
+ , m_caseSensitiveSorting(nullptr)
+ , m_caseInsensitiveSorting(nullptr)
, m_numberOfItems(nullptr)
, m_sizeOfContents(nullptr)
, m_recursiveDirectorySizeLimit(nullptr)
@@ -29,6 +33,19 @@ ContentDisplayTab::ContentDisplayTab(QWidget *parent)
{
QFormLayout *topLayout = new QFormLayout(this);
+ // Sorting Order
+ m_naturalSorting = new QRadioButton(i18nc("option:radio", "Natural"));
+ m_caseInsensitiveSorting = new QRadioButton(i18nc("option:radio", "Alphabetical, case insensitive"));
+ m_caseSensitiveSorting = new QRadioButton(i18nc("option:radio", "Alphabetical, case sensitive"));
+
+ QButtonGroup *sortingOrderGroup = new QButtonGroup(this);
+ sortingOrderGroup->addButton(m_naturalSorting);
+ sortingOrderGroup->addButton(m_caseInsensitiveSorting);
+ sortingOrderGroup->addButton(m_caseSensitiveSorting);
+ topLayout->addRow(i18nc("@title:group", "Sorting mode: "), m_naturalSorting);
+ topLayout->addRow(QString(), m_caseInsensitiveSorting);
+ topLayout->addRow(QString(), m_caseSensitiveSorting);
+
#ifndef Q_OS_WIN
// Sorting properties
m_numberOfItems = new QRadioButton(i18nc("option:radio", "Number of items"));
@@ -95,6 +112,9 @@ ContentDisplayTab::ContentDisplayTab(QWidget *parent)
connect(m_useSymbolicPermissions, &QRadioButton::toggled, this, &SettingsPageBase::changed);
connect(m_useNumericPermissions, &QRadioButton::toggled, this, &SettingsPageBase::changed);
connect(m_useCombinedPermissions, &QRadioButton::toggled, this, &SettingsPageBase::changed);
+ connect(m_naturalSorting, &QRadioButton::toggled, this, &SettingsPageBase::changed);
+ connect(m_caseInsensitiveSorting, &QRadioButton::toggled, this, &SettingsPageBase::changed);
+ connect(m_caseSensitiveSorting, &QRadioButton::toggled, this, &SettingsPageBase::changed);
loadSettings();
}
@@ -106,7 +126,7 @@ void ContentDisplayTab::applySettings()
settings->setDirectorySizeCount(m_numberOfItems->isChecked());
settings->setRecursiveDirectorySizeLimit(m_recursiveDirectorySizeLimit->value());
#endif
-
+ setSortingChoiceValue();
settings->setUseShortRelativeDates(m_useRelatetiveDates->isChecked());
if (m_useSymbolicPermissions->isChecked()) {
@@ -137,6 +157,38 @@ void ContentDisplayTab::loadSettings()
m_useSymbolicPermissions->setChecked(settings->usePermissionsFormat() == ContentDisplaySettings::EnumUsePermissionsFormat::SymbolicFormat);
m_useNumericPermissions->setChecked(settings->usePermissionsFormat() == ContentDisplaySettings::EnumUsePermissionsFormat::NumericFormat);
m_useCombinedPermissions->setChecked(settings->usePermissionsFormat() == ContentDisplaySettings::EnumUsePermissionsFormat::CombinedFormat);
+ loadSortingChoiceSettings();
+}
+
+void ContentDisplayTab::setSortingChoiceValue()
+{
+ auto settings = GeneralSettings::self();
+ using Choice = GeneralSettings::EnumSortingChoice;
+ if (m_naturalSorting->isChecked()) {
+ settings->setSortingChoice(Choice::NaturalSorting);
+ } else if (m_caseInsensitiveSorting->isChecked()) {
+ settings->setSortingChoice(Choice::CaseInsensitiveSorting);
+ } else if (m_caseSensitiveSorting->isChecked()) {
+ settings->setSortingChoice(Choice::CaseSensitiveSorting);
+ }
+}
+
+void ContentDisplayTab::loadSortingChoiceSettings()
+{
+ using Choice = GeneralSettings::EnumSortingChoice;
+ switch (GeneralSettings::sortingChoice()) {
+ case Choice::NaturalSorting:
+ m_naturalSorting->setChecked(true);
+ break;
+ case Choice::CaseInsensitiveSorting:
+ m_caseInsensitiveSorting->setChecked(true);
+ break;
+ case Choice::CaseSensitiveSorting:
+ m_caseSensitiveSorting->setChecked(true);
+ break;
+ default:
+ Q_UNREACHABLE();
+ }
}
void ContentDisplayTab::restoreDefaults()
diff --git a/src/settings/viewmodes/contentdisplaytab.h b/src/settings/viewmodes/contentdisplaytab.h
index 5484bf413..3550569fd 100644
--- a/src/settings/viewmodes/contentdisplaytab.h
+++ b/src/settings/viewmodes/contentdisplaytab.h
@@ -6,6 +6,8 @@
#ifndef GENERALTAB_H
#define GENERALTAB_H
+#include "dolphin_contentdisplaysettings.h"
+#include "dolphin_generalsettings.h"
#include "settings/settingspagebase.h"
class QRadioButton;
@@ -25,6 +27,12 @@ public:
private:
void loadSettings();
+ void setSortingChoiceValue();
+ void loadSortingChoiceSettings();
+
+ QRadioButton *m_naturalSorting;
+ QRadioButton *m_caseSensitiveSorting;
+ QRadioButton *m_caseInsensitiveSorting;
QRadioButton *m_numberOfItems;
QRadioButton *m_sizeOfContents;
diff --git a/src/settings/viewmodes/generalviewsettingspage.cpp b/src/settings/viewmodes/generalviewsettingspage.cpp
new file mode 100644
index 000000000..0b2a96cb5
--- /dev/null
+++ b/src/settings/viewmodes/generalviewsettingspage.cpp
@@ -0,0 +1,133 @@
+/*
+ * SPDX-FileCopyrightText: 2006 Peter Penz ([email protected]) and Patrice Tremblay
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "generalviewsettingspage.h"
+#include "dolphin_generalsettings.h"
+#include "dolphinmainwindow.h"
+#include "views/viewproperties.h"
+
+#include <KLocalizedString>
+
+#include <QButtonGroup>
+#include <QCheckBox>
+#include <QFormLayout>
+#include <QVBoxLayout>
+
+GeneralViewSettingsPage::GeneralViewSettingsPage(const QUrl &url, QWidget *parent)
+ : SettingsPageBase(parent)
+ , m_url(url)
+ , m_localViewProps(nullptr)
+ , m_globalViewProps(nullptr)
+ , m_showToolTips(nullptr)
+ , m_showSelectionToggle(nullptr)
+ , m_renameInline(nullptr)
+{
+ QFormLayout *topLayout = new QFormLayout(this);
+
+ // Display style
+ m_globalViewProps = new QRadioButton(i18nc("@option:radio", "Use common display style for all folders"));
+ m_localViewProps = new QRadioButton(i18nc("@option:radio", "Remember display style for each folder"));
+ m_localViewProps->setToolTip(i18nc("@info", "Dolphin will create a hidden .directory file in each folder you change view properties for."));
+
+ QButtonGroup *viewGroup = new QButtonGroup(this);
+ viewGroup->addButton(m_globalViewProps);
+ viewGroup->addButton(m_localViewProps);
+ topLayout->addRow(i18nc("@title:group", "Display style: "), m_globalViewProps);
+ topLayout->addRow(QString(), m_localViewProps);
+
+ topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed));
+
+ // Browsing
+ m_openArchivesAsFolder = new QCheckBox(i18nc("@option:check", "Open archives as folder"));
+ m_autoExpandFolders = new QCheckBox(i18nc("option:check", "Open folders during drag operations"));
+ topLayout->addRow(i18nc("@title:group", "Browsing: "), m_openArchivesAsFolder);
+ topLayout->addRow(QString(), m_autoExpandFolders);
+
+ topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed));
+
+#if HAVE_BALOO
+ // 'Show tooltips'
+ m_showToolTips = new QCheckBox(i18nc("@option:check", "Show tooltips"));
+ topLayout->addRow(i18nc("@title:group", "Miscellaneous: "), m_showToolTips);
+#endif
+
+ // 'Show selection marker'
+ m_showSelectionToggle = new QCheckBox(i18nc("@option:check", "Show selection marker"));
+#if HAVE_BALOO
+ topLayout->addRow(QString(), m_showSelectionToggle);
+#else
+ topLayout->addRow(i18nc("@title:group", "Miscellaneous: "), m_showSelectionToggle);
+#endif
+
+ // 'Inline renaming of items'
+ m_renameInline = new QCheckBox(i18nc("option:check", "Rename inline"));
+ topLayout->addRow(QString(), m_renameInline);
+
+ loadSettings();
+
+ connect(m_localViewProps, &QRadioButton::toggled, this, &GeneralViewSettingsPage::changed);
+ connect(m_globalViewProps, &QRadioButton::toggled, this, &GeneralViewSettingsPage::changed);
+
+ connect(m_openArchivesAsFolder, &QCheckBox::toggled, this, &GeneralViewSettingsPage::changed);
+ connect(m_autoExpandFolders, &QCheckBox::toggled, this, &GeneralViewSettingsPage::changed);
+#if HAVE_BALOO
+ connect(m_showToolTips, &QCheckBox::toggled, this, &GeneralViewSettingsPage::changed);
+#endif
+ connect(m_showSelectionToggle, &QCheckBox::toggled, this, &GeneralViewSettingsPage::changed);
+ connect(m_renameInline, &QCheckBox::toggled, this, &GeneralViewSettingsPage::changed);
+}
+
+GeneralViewSettingsPage::~GeneralViewSettingsPage()
+{
+}
+
+void GeneralViewSettingsPage::applySettings()
+{
+ GeneralSettings *settings = GeneralSettings::self();
+ ViewProperties props(m_url); // read current view properties
+ const bool useGlobalViewProps = m_globalViewProps->isChecked();
+ settings->setGlobalViewProps(useGlobalViewProps);
+#if HAVE_BALOO
+ settings->setShowToolTips(m_showToolTips->isChecked());
+#endif
+ settings->setShowSelectionToggle(m_showSelectionToggle->isChecked());
+ settings->setRenameInline(m_renameInline->isChecked());
+ settings->setAutoExpandFolders(m_autoExpandFolders->isChecked());
+ settings->save();
+ if (useGlobalViewProps) {
+ // Remember the global view properties by applying the current view properties.
+ // It is important that GeneralSettings::globalViewProps() is set before
+ // the class ViewProperties is used, as ViewProperties uses this setting
+ // to find the destination folder for storing the view properties.
+ ViewProperties globalProps(m_url);
+ globalProps.setDirProperties(props);
+ }
+}
+
+void GeneralViewSettingsPage::restoreDefaults()
+{
+ GeneralSettings *settings = GeneralSettings::self();
+ settings->useDefaults(true);
+ loadSettings();
+ settings->useDefaults(false);
+}
+
+void GeneralViewSettingsPage::loadSettings()
+{
+ const bool useGlobalViewProps = GeneralSettings::globalViewProps();
+ m_openArchivesAsFolder->setChecked(GeneralSettings::browseThroughArchives());
+ m_autoExpandFolders->setChecked(GeneralSettings::autoExpandFolders());
+#if HAVE_BALOO
+ m_showToolTips->setChecked(GeneralSettings::showToolTips());
+#endif
+ m_showSelectionToggle->setChecked(GeneralSettings::showSelectionToggle());
+ m_renameInline->setChecked(GeneralSettings::renameInline());
+
+ m_localViewProps->setChecked(!useGlobalViewProps);
+ m_globalViewProps->setChecked(useGlobalViewProps);
+}
+
+#include "moc_generalviewsettingspage.cpp"
diff --git a/src/settings/general/behaviorsettingspage.h b/src/settings/viewmodes/generalviewsettingspage.h
index ba8ce6384..47838b939 100644
--- a/src/settings/general/behaviorsettingspage.h
+++ b/src/settings/viewmodes/generalviewsettingspage.h
@@ -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
diff --git a/src/settings/viewmodes/viewsettingspage.cpp b/src/settings/viewmodes/viewsettingspage.cpp
index 0d4d4277b..5e740640d 100644
--- a/src/settings/viewmodes/viewsettingspage.cpp
+++ b/src/settings/viewmodes/viewsettingspage.cpp
@@ -7,14 +7,14 @@
#include "viewsettingspage.h"
#include "contentdisplaytab.h"
+#include "generalviewsettingspage.h"
#include "viewsettingstab.h"
-
#include <KLocalizedString>
#include <QTabWidget>
#include <QVBoxLayout>
-ViewSettingsPage::ViewSettingsPage(QWidget *parent)
+ViewSettingsPage::ViewSettingsPage(const QUrl &url, QWidget *parent)
: SettingsPageBase(parent)
, m_tabs()
{
@@ -23,6 +23,11 @@ ViewSettingsPage::ViewSettingsPage(QWidget *parent)
tabWidget = new QTabWidget(this);
+ // General View tab
+ GeneralViewSettingsPage *generalViewPage = new GeneralViewSettingsPage(url, tabWidget);
+ tabWidget->addTab(generalViewPage, QIcon::fromTheme(QStringLiteral("description")), i18nc("@title:tab General View settings", "General"));
+ connect(generalViewPage, &GeneralViewSettingsPage::changed, this, &ViewSettingsPage::changed);
+
// Content Display Tab
contentDisplayTab = new ContentDisplayTab(tabWidget);
tabWidget->addTab(contentDisplayTab,
@@ -45,6 +50,8 @@ ViewSettingsPage::ViewSettingsPage(QWidget *parent)
tabWidget->addTab(detailsTab, QIcon::fromTheme(QStringLiteral("view-list-tree")), i18nc("@title:tab", "Details"));
connect(detailsTab, &ViewSettingsTab::changed, this, &ViewSettingsPage::changed);
+ m_tabs.append(generalViewPage);
+ m_tabs.append(contentDisplayTab);
m_tabs.append(iconsTab);
m_tabs.append(compactTab);
m_tabs.append(detailsTab);
@@ -58,23 +65,16 @@ ViewSettingsPage::~ViewSettingsPage()
void ViewSettingsPage::applySettings()
{
- contentDisplayTab->applySettings();
-
- for (ViewSettingsTab *tab : qAsConst(m_tabs)) {
+ for (SettingsPageBase *tab : qAsConst(m_tabs)) {
tab->applySettings();
}
}
void ViewSettingsPage::restoreDefaults()
{
- if (tabWidget->currentWidget() == contentDisplayTab) {
- contentDisplayTab->restoreDefaults();
- return;
- }
-
- for (ViewSettingsTab *tab : qAsConst(m_tabs)) {
+ for (SettingsPageBase *tab : qAsConst(m_tabs)) {
if (tabWidget->currentWidget() == tab) {
- tab->restoreDefaultSettings();
+ tab->restoreDefaults();
return;
}
}
diff --git a/src/settings/viewmodes/viewsettingspage.h b/src/settings/viewmodes/viewsettingspage.h
index e52f6b2c0..eae2a6427 100644
--- a/src/settings/viewmodes/viewsettingspage.h
+++ b/src/settings/viewmodes/viewsettingspage.h
@@ -24,7 +24,7 @@ class ViewSettingsPage : public SettingsPageBase
Q_OBJECT
public:
- explicit ViewSettingsPage(QWidget *parent);
+ explicit ViewSettingsPage(const QUrl &url, QWidget *parent);
~ViewSettingsPage() override;
/** @see SettingsPageBase::applySettings() */
@@ -36,7 +36,7 @@ public:
private:
ContentDisplayTab *contentDisplayTab;
QTabWidget *tabWidget;
- QList<ViewSettingsTab *> m_tabs;
+ QList<SettingsPageBase *> m_tabs;
};
#endif
diff --git a/src/settings/viewmodes/viewsettingstab.cpp b/src/settings/viewmodes/viewsettingstab.cpp
index ae80a2558..5aca58ba1 100644
--- a/src/settings/viewmodes/viewsettingstab.cpp
+++ b/src/settings/viewmodes/viewsettingstab.cpp
@@ -26,7 +26,7 @@
#include <QSpinBox>
ViewSettingsTab::ViewSettingsTab(Mode mode, QWidget *parent)
- : QWidget(parent)
+ : SettingsPageBase(parent)
, m_mode(mode)
, m_defaultSizeSlider(nullptr)
, m_previewSizeSlider(nullptr)
@@ -186,7 +186,7 @@ void ViewSettingsTab::applySettings()
settings.save();
}
-void ViewSettingsTab::restoreDefaultSettings()
+void ViewSettingsTab::restoreDefaults()
{
ViewModeSettings settings(m_mode);
settings.useDefaults(true);
diff --git a/src/settings/viewmodes/viewsettingstab.h b/src/settings/viewmodes/viewsettingstab.h
index 6be8fc3b5..fd4cc85a7 100644
--- a/src/settings/viewmodes/viewsettingstab.h
+++ b/src/settings/viewmodes/viewsettingstab.h
@@ -7,7 +7,7 @@
#ifndef VIEWSETTINGSTAB_H
#define VIEWSETTINGSTAB_H
-#include <QWidget>
+#include "settings/settingspagebase.h"
class DolphinFontRequester;
class QComboBox;
@@ -19,7 +19,7 @@ class QRadioButton;
/**
* @brief Represents one tab of the view-settings page.
*/
-class ViewSettingsTab : public QWidget
+class ViewSettingsTab : public SettingsPageBase
{
Q_OBJECT
@@ -29,8 +29,8 @@ public:
explicit ViewSettingsTab(Mode mode, QWidget *parent = nullptr);
~ViewSettingsTab() override;
- void applySettings();
- void restoreDefaultSettings();
+ void applySettings() override;
+ void restoreDefaults() override;
Q_SIGNALS:
void changed();
diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp
index 3db81ec18..3beb246a1 100644
--- a/src/views/dolphinview.cpp
+++ b/src/views/dolphinview.cpp
@@ -1110,6 +1110,7 @@ void DolphinView::slotItemMiddleClicked(int index)
const KFileItem &item = m_model->fileItem(index);
const QUrl &url = openItemAsFolderUrl(item);
const auto modifiers = QGuiApplication::keyboardModifiers();
+ const QString &archiveProtocol = KProtocolManager::protocolForArchiveMimetype(item.mimetype());
if (!url.isEmpty()) {
// keep in sync with KUrlNavigator::slotNavigatorButtonClicked
if (modifiers & Qt::ShiftModifier) {
@@ -1117,13 +1118,15 @@ void DolphinView::slotItemMiddleClicked(int index)
} else {
Q_EMIT tabRequested(url);
}
- } else if (isTabsForFilesEnabled()) {
+ } else if (!archiveProtocol.isEmpty() && isTabsForFilesEnabled()) {
// keep in sync with KUrlNavigator::slotNavigatorButtonClicked
if (modifiers & Qt::ShiftModifier) {
Q_EMIT activeTabRequested(item.url());
} else {
Q_EMIT tabRequested(item.url());
}
+ } else {
+ Q_EMIT fileMiddleClickActivated(item);
}
}
diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h
index 21ca49c24..f851724c2 100644
--- a/src/views/dolphinview.h
+++ b/src/views/dolphinview.h
@@ -453,6 +453,12 @@ Q_SIGNALS:
void itemActivated(const KFileItem &item);
/**
+ * Is emitted when clicking on a file with the middle mouse button.
+ * @note: This will not be emitted for folders or file archives that will/can be opened like folders.
+ */
+ void fileMiddleClickActivated(const KFileItem &item);
+
+ /**
* Is emitted when multiple items have been activated by e. g.
* context menu open with.
*/