diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -178,6 +178,15 @@ auto *middleClickEventFilter = new MiddleClickActionEventFilter(this); connect(middleClickEventFilter, &MiddleClickActionEventFilter::actionMiddleClicked, this, &DolphinMainWindow::slotToolBarActionMiddleClicked); toolBar()->installEventFilter(middleClickEventFilter); + + // Restore window state + if (GeneralSettings::rememberOpenedTabs()) { + // Wait for the initialization ending + QTimer::singleShot(0, [this]() { + KConfigGroup windowState{KSharedConfig::openConfig(QStringLiteral("dolphinrc")), "WindowState"}; + readProperties(windowState); + }); + } } DolphinMainWindow::~DolphinMainWindow() @@ -375,7 +384,7 @@ closedByUser = false; } - if (m_tabWidget->count() > 1 && GeneralSettings::confirmClosingMultipleTabs() && closedByUser) { + if (m_tabWidget->count() > 1 && GeneralSettings::confirmClosingMultipleTabs() && closedByUser && !GeneralSettings::rememberOpenedTabs()) { // Ask the user if he really wants to quit and close all tabs. // Open a confirmation dialog with 3 buttons: // QDialogButtonBox::Yes -> Quit @@ -419,6 +428,11 @@ } } + if (GeneralSettings::rememberOpenedTabs()) { + KConfigGroup windowState{KSharedConfig::openConfig(QStringLiteral("dolphinrc")), "WindowState"}; + saveProperties(windowState); + } + GeneralSettings::setVersion(CurrentDolphinVersion); GeneralSettings::self()->save(); diff --git a/src/settings/dolphin_generalsettings.kcfg b/src/settings/dolphin_generalsettings.kcfg --- a/src/settings/dolphin_generalsettings.kcfg +++ b/src/settings/dolphin_generalsettings.kcfg @@ -38,6 +38,10 @@ QUrl::fromLocalFile(QDir::homePath()).toDisplayString(QUrl::PreferLocalFile) + + + false + false diff --git a/src/settings/startup/startupsettingspage.h b/src/settings/startup/startupsettingspage.h --- a/src/settings/startup/startupsettingspage.h +++ b/src/settings/startup/startupsettingspage.h @@ -59,11 +59,14 @@ QUrl m_url; QLineEdit* m_homeUrl; + QCheckBox* m_rememberOpenedTabs; QCheckBox* m_splitView; QCheckBox* m_editableUrl; QCheckBox* m_showFullPath; QCheckBox* m_filterBar; QCheckBox* m_showFullPathInTitlebar; + + void updateStartupCheckboxesEnabled(); }; #endif diff --git a/src/settings/startup/startupsettingspage.cpp b/src/settings/startup/startupsettingspage.cpp --- a/src/settings/startup/startupsettingspage.cpp +++ b/src/settings/startup/startupsettingspage.cpp @@ -92,6 +92,8 @@ homeBoxLayout->addWidget(homeUrlBox); homeBoxLayout->addWidget(buttonBox); + m_rememberOpenedTabs = new QCheckBox(i18nc("@option:check Startup Settings", "Show tabs from last time"), vBox); + vBoxLayout->addWidget(m_rememberOpenedTabs); // create 'Split view', 'Show full path', 'Editable location' and 'Filter bar' checkboxes m_splitView = new QCheckBox(i18nc("@option:check Startup Settings", "Split view mode"), vBox); vBoxLayout->addWidget(m_splitView); @@ -114,6 +116,8 @@ loadSettings(); connect(m_homeUrl, &QLineEdit::textChanged, this, &StartupSettingsPage::slotSettingsChanged); + connect(m_rememberOpenedTabs, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged); + connect(m_rememberOpenedTabs, &QCheckBox::toggled, this, &StartupSettingsPage::updateStartupCheckboxesEnabled); connect(m_splitView, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged); connect(m_editableUrl, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged); connect(m_showFullPath, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged); @@ -125,6 +129,16 @@ { } +void StartupSettingsPage::updateStartupCheckboxesEnabled() +{ + m_splitView->setEnabled(!m_rememberOpenedTabs->isChecked()); + m_editableUrl->setEnabled(!m_rememberOpenedTabs->isChecked()); + m_showFullPath->setEnabled(!m_rememberOpenedTabs->isChecked()); + m_filterBar->setEnabled(!m_rememberOpenedTabs->isChecked()); + m_showFullPathInTitlebar->setEnabled(!m_rememberOpenedTabs->isChecked()); + +} + void StartupSettingsPage::applySettings() { GeneralSettings* settings = GeneralSettings::self(); @@ -137,6 +151,7 @@ KMessageBox::error(this, i18nc("@info", "The location for the home folder is invalid or does not exist, it will not be applied.")); } + settings->setRememberOpenedTabs(m_rememberOpenedTabs->isChecked()); settings->setSplitView(m_splitView->isChecked()); settings->setEditableUrl(m_editableUrl->isChecked()); settings->setShowFullPath(m_showFullPath->isChecked()); @@ -187,6 +202,8 @@ { const QUrl url(Dolphin::homeUrl()); m_homeUrl->setText(url.toDisplayString(QUrl::PreferLocalFile)); + m_rememberOpenedTabs->setChecked(GeneralSettings::rememberOpenedTabs()); + updateStartupCheckboxesEnabled(); m_splitView->setChecked(GeneralSettings::splitView()); m_editableUrl->setChecked(GeneralSettings::editableUrl()); m_showFullPath->setChecked(GeneralSettings::showFullPath());