┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dolphinmainwindow.cpp75
-rw-r--r--src/dolphintabpage.cpp16
-rw-r--r--src/settings/dolphin_generalsettings.kcfg11
-rw-r--r--src/settings/interface/folderstabssettingspage.cpp41
-rw-r--r--src/settings/interface/folderstabssettingspage.h4
5 files changed, 111 insertions, 36 deletions
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index 72ed98f77..9e25f94e8 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -1117,7 +1117,21 @@ void DolphinMainWindow::popoutSplitView()
DolphinTabPage *tabPage = m_tabWidget->currentTabPage();
if (!tabPage->splitViewEnabled())
return;
- openNewWindow((GeneralSettings::closeActiveSplitView() ? tabPage->activeViewContainer() : tabPage->inactiveViewContainer())->url());
+ using Choice = GeneralSettings::EnumCloseSplitViewChoice;
+ switch (GeneralSettings::closeSplitViewChoice()) {
+ case Choice::ActiveView:
+ openNewWindow(tabPage->activeViewContainer()->url());
+ break;
+ case Choice::InactiveView:
+ openNewWindow(tabPage->inactiveViewContainer()->url());
+ break;
+ case Choice::RightView:
+ openNewWindow(tabPage->secondaryViewContainer()->url());
+ break;
+ default:
+ Q_UNREACHABLE();
+ }
+
tabPage->setSplitViewEnabled(false, WithAnimation);
updateSplitActions();
}
@@ -2805,22 +2819,57 @@ void DolphinMainWindow::updateSplitActions()
const DolphinTabPage *tabPage = m_tabWidget->currentTabPage();
if (tabPage->splitViewEnabled()) {
- if (GeneralSettings::closeActiveSplitView() ? tabPage->primaryViewActive() : !tabPage->primaryViewActive()) {
- m_splitViewAction->setText(i18nc("@action:intoolbar Close left view", "Close"));
- m_splitViewAction->setToolTip(i18nc("@info", "Close left view"));
- m_splitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-left-close")));
- m_splitViewMenuAction->setText(i18nc("@action:inmenu Close left view", "Close Left View"));
+ using Choice = GeneralSettings::EnumCloseSplitViewChoice;
+ switch (GeneralSettings::closeSplitViewChoice()) {
+ case Choice::ActiveView:
+ if (tabPage->primaryViewActive()) {
+ m_splitViewAction->setText(i18nc("@action:intoolbar Close left view", "Close"));
+ m_splitViewAction->setToolTip(i18nc("@info View refer here to split view", "Close Left View"));
+ m_splitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-left-close")));
+ m_splitViewMenuAction->setText(i18nc("@action:inmenu View refer here to split view", "Close Left View"));
- popoutSplitAction->setText(i18nc("@action:intoolbar Move left view to a new window", "Pop out Left View"));
- popoutSplitAction->setToolTip(i18nc("@info", "Move left view to a new window"));
- } else {
+ popoutSplitAction->setText(i18nc("@action:intoolbar Move left split view to a new window", "Pop out Left View"));
+ popoutSplitAction->setToolTip(i18nc("@info View refer here to split view", "Move left split view to a new window"));
+ } else {
+ m_splitViewAction->setText(i18nc("@action:intoolbar Close right view", "Close"));
+ m_splitViewAction->setToolTip(i18nc("@info View refer here to split view", "Close Right View"));
+ m_splitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-right-close")));
+ m_splitViewMenuAction->setText(i18nc("@action:inmenu View refer here to split view", "Close Right View"));
+
+ popoutSplitAction->setText(i18nc("@action:intoolbar Move right split view to a new window", "Pop out Right View"));
+ popoutSplitAction->setToolTip(i18nc("@info View refer here to split view", "Move right split view to a new window"));
+ }
+ break;
+ case Choice::InactiveView:
+ if (!tabPage->primaryViewActive()) {
+ m_splitViewAction->setText(i18nc("@action:intoolbar Close left view", "Close"));
+ m_splitViewAction->setToolTip(i18nc("@info View refer here to split view", "Close Left View"));
+ m_splitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-left-close")));
+ m_splitViewMenuAction->setText(i18nc("@action:inmenu View refer here to split view", "Close Left View"));
+
+ popoutSplitAction->setText(i18nc("@action:intoolbar Move left split view to a new window", "Pop out Left View"));
+ popoutSplitAction->setToolTip(i18nc("@info View refer here to split view", "Move left split view to a new window"));
+ } else {
+ m_splitViewAction->setText(i18nc("@action:intoolbar Close right view", "Close"));
+ m_splitViewAction->setToolTip(i18nc("@info View refer here to split view", "Close Right View"));
+ m_splitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-right-close")));
+ m_splitViewMenuAction->setText(i18nc("@action:inmenu View refer here to split view", "Close Right View"));
+
+ popoutSplitAction->setText(i18nc("@action:intoolbar Move right split view to a new window", "Pop out Right View"));
+ popoutSplitAction->setToolTip(i18nc("@info View refer here to split view", "Move right split view to a new window"));
+ }
+ break;
+ case Choice::RightView:
m_splitViewAction->setText(i18nc("@action:intoolbar Close right view", "Close"));
- m_splitViewAction->setToolTip(i18nc("@info", "Close right view"));
+ m_splitViewAction->setToolTip(i18nc("@info View refer here to split view", "Close Right View"));
m_splitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-right-close")));
- m_splitViewMenuAction->setText(i18nc("@action:inmenu Close left view", "Close Right View"));
+ m_splitViewMenuAction->setText(i18nc("@action:inmenu View refer here to split view", "Close Right View"));
- popoutSplitAction->setText(i18nc("@action:intoolbar Move right view to a new window", "Pop out Right View"));
- popoutSplitAction->setToolTip(i18nc("@info", "Move right view to a new window"));
+ popoutSplitAction->setText(i18nc("@action:intoolbar Move right split view to a new window", "Pop out Right View"));
+ popoutSplitAction->setToolTip(i18nc("@info View refer here to split view", "Move right split view to a new window"));
+ break;
+ default:
+ Q_UNREACHABLE();
}
popoutSplitAction->setEnabled(true);
if (!m_splitViewAction->menu()) {
diff --git a/src/dolphintabpage.cpp b/src/dolphintabpage.cpp
index 1ceda7d9f..8373d17b8 100644
--- a/src/dolphintabpage.cpp
+++ b/src/dolphintabpage.cpp
@@ -139,16 +139,28 @@ void DolphinTabPage::setSplitViewEnabled(bool enabled, Animated animated, const
std::swap(m_primaryViewContainer, m_secondaryViewContainer);
m_primaryViewActive = !m_primaryViewActive;
};
- if (GeneralSettings::closeActiveSplitView()) {
+ using Choice = GeneralSettings::EnumCloseSplitViewChoice;
+ switch (GeneralSettings::closeSplitViewChoice()) {
+ case Choice::ActiveView:
view = activeViewContainer();
if (m_primaryViewActive) {
swapActiveView();
}
- } else {
+ break;
+ case Choice::InactiveView:
view = m_primaryViewActive ? m_secondaryViewContainer : m_primaryViewContainer;
if (!m_primaryViewActive) {
swapActiveView();
}
+ break;
+ case Choice::RightView:
+ view = m_secondaryViewContainer;
+ if (!m_primaryViewActive) {
+ swapActiveView();
+ }
+ break;
+ default:
+ Q_UNREACHABLE();
}
m_primaryViewContainer->setActive(true);
m_navigatorsWidget->followViewContainersGeometry(m_primaryViewContainer, nullptr);
diff --git a/src/settings/dolphin_generalsettings.kcfg b/src/settings/dolphin_generalsettings.kcfg
index 4a55b4bde..01ce316f4 100644
--- a/src/settings/dolphin_generalsettings.kcfg
+++ b/src/settings/dolphin_generalsettings.kcfg
@@ -98,9 +98,14 @@
<label>Use tab for switching between right and left view</label>
<default>false</default>
</entry>
- <entry name="CloseActiveSplitView" type="Bool">
- <label>Close the view in focus when turning off split view</label>
- <default>true</default>
+ <entry name="CloseSplitViewChoice" type="Enum">
+ <choices>
+ <choice name="ActiveView" />
+ <choice name="InactiveView" />
+ <choice name="RightView" />
+ </choices>
+ <label>Close split view</label>
+ <default code="true">EnumCloseSplitViewChoice::ActiveView</default>
</entry>
<entry name="OpenNewTabAfterLastTab" type="Bool">
<label>New tab will be open after last one</label>
diff --git a/src/settings/interface/folderstabssettingspage.cpp b/src/settings/interface/folderstabssettingspage.cpp
index 0e6c1aaab..bf8d76746 100644
--- a/src/settings/interface/folderstabssettingspage.cpp
+++ b/src/settings/interface/folderstabssettingspage.cpp
@@ -18,6 +18,7 @@
#endif
#include <QButtonGroup>
#include <QCheckBox>
+#include <QComboBox>
#include <QFileDialog>
#include <QFormLayout>
#include <QGridLayout>
@@ -42,6 +43,7 @@ FoldersTabsSettingsPage::FoldersTabsSettingsPage(QWidget *parent)
, m_showFullPathInTitlebar(nullptr)
, m_openExternallyCalledFolderInNewTab(nullptr)
, m_useTabForSplitViewSwitch(nullptr)
+ , m_closeSplitComboBox(nullptr)
{
QFormLayout *topLayout = new QFormLayout(this);
@@ -123,26 +125,27 @@ FoldersTabsSettingsPage::FoldersTabsSettingsPage(QWidget *parent)
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));
+ // Close split view properties
+ QLabel *closeSplitViewLabel{new QLabel(i18nc("@info", "When closing a split view"))};
+ m_closeSplitComboBox = new QComboBox(this);
+ m_closeSplitComboBox->addItems({i18n("Close the active pane"), i18n("Close the inactive pane"), i18n("Close the right pane")});
+ QHBoxLayout *closeSplitViewHLayout{new QHBoxLayout()};
+ QWidget *closeSplitViewWidget{new QWidget()};
+ closeSplitViewWidget->setLayout(closeSplitViewHLayout);
+ closeSplitViewHLayout->addWidget(closeSplitViewLabel);
+ closeSplitViewHLayout->setContentsMargins(0, 0, 0, 0);
+ closeSplitViewHLayout->addWidget(m_closeSplitComboBox);
+ topLayout->addRow(i18nc("@title:group", "Split view: "), closeSplitViewWidget);
+
// 'Switch between panes of split views with tab key'
- auto *splitViewLabel = new QLabel{i18nc("@title:group", "Split view: ")};
m_useTabForSplitViewSwitch = new QCheckBox(i18nc("option:check split view panes", "Switch between views with Tab key"));
- splitViewLabel->setAccessibleName(m_useTabForSplitViewSwitch->text());
- topLayout->addRow(splitViewLabel, m_useTabForSplitViewSwitch);
-
- // 'Close active pane when turning off split view'
- m_closeActiveSplitView = new QCheckBox(i18nc("option:check", "Turning off split view closes the view in focus"));
- topLayout->addRow(QString(), m_closeActiveSplitView);
- m_closeActiveSplitView->setToolTip(
- i18n("When unchecked, the opposite view will be closed. The Close icon always illustrates which view (left or right) will be closed."));
+ topLayout->addRow(QString(), m_useTabForSplitViewSwitch);
// 'Begin in split view mode'
- auto *newWindowsLabel = new QLabel{i18n("New windows:")};
- m_splitView = new QCheckBox(i18nc("@option:check Startup Settings", "Begin in split view mode"));
- newWindowsLabel->setAccessibleName(m_splitView->text());
- topLayout->addRow(newWindowsLabel, m_splitView);
+ m_splitView = new QCheckBox(i18nc("@option:check Startup Settings", "Open new window in split view mode"));
+ topLayout->addRow(QString(), m_splitView);
loadSettings();
@@ -159,7 +162,8 @@ FoldersTabsSettingsPage::FoldersTabsSettingsPage(QWidget *parent)
connect(m_showFullPathInTitlebar, &QCheckBox::toggled, this, &FoldersTabsSettingsPage::slotSettingsChanged);
connect(m_useTabForSplitViewSwitch, &QCheckBox::toggled, this, &FoldersTabsSettingsPage::changed);
- connect(m_closeActiveSplitView, &QCheckBox::toggled, this, &FoldersTabsSettingsPage::changed);
+
+ connect(m_closeSplitComboBox, qOverload<int>(&QComboBox::currentIndexChanged), this, &FoldersTabsSettingsPage::changed);
connect(m_openNewTabAfterCurrentTab, &QRadioButton::toggled, this, &FoldersTabsSettingsPage::changed);
connect(m_openNewTabAfterLastTab, &QRadioButton::toggled, this, &FoldersTabsSettingsPage::changed);
@@ -174,7 +178,9 @@ void FoldersTabsSettingsPage::applySettings()
GeneralSettings *settings = GeneralSettings::self();
settings->setUseTabForSwitchingSplitView(m_useTabForSplitViewSwitch->isChecked());
- settings->setCloseActiveSplitView(m_closeActiveSplitView->isChecked());
+
+ settings->setCloseSplitViewChoice(m_closeSplitComboBox->currentIndex());
+
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);
@@ -280,7 +286,8 @@ void FoldersTabsSettingsPage::loadSettings()
m_openExternallyCalledFolderInNewTab->setChecked(GeneralSettings::openExternallyCalledFolderInNewTab());
m_useTabForSplitViewSwitch->setChecked(GeneralSettings::useTabForSwitchingSplitView());
- m_closeActiveSplitView->setChecked(GeneralSettings::closeActiveSplitView());
+
+ m_closeSplitComboBox->setCurrentIndex(GeneralSettings::closeSplitViewChoice());
m_openNewTabAfterLastTab->setChecked(GeneralSettings::openNewTabAfterLastTab());
m_openNewTabAfterCurrentTab->setChecked(!m_openNewTabAfterLastTab->isChecked());
diff --git a/src/settings/interface/folderstabssettingspage.h b/src/settings/interface/folderstabssettingspage.h
index 89e5c0982..ae104cc7e 100644
--- a/src/settings/interface/folderstabssettingspage.h
+++ b/src/settings/interface/folderstabssettingspage.h
@@ -13,6 +13,7 @@
#include <qobject.h>
class QCheckBox;
+class QComboBox;
class QLineEdit;
class QLabel;
class QRadioButton;
@@ -63,7 +64,8 @@ private:
QCheckBox *m_showFullPathInTitlebar;
QCheckBox *m_openExternallyCalledFolderInNewTab;
QCheckBox *m_useTabForSplitViewSwitch;
- QCheckBox *m_closeActiveSplitView;
+
+ QComboBox *m_closeSplitComboBox;
};
#endif