From: Peter Penz Date: Fri, 5 Nov 2010 17:02:58 +0000 (+0000) Subject: If the user has changed the startup settings, they should also get applied to the... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/da1adf7ba407fc58cf458b8ebe26c793090c1763 If the user has changed the startup settings, they should also get applied to the current views. BUG: 254947 FIXED-IN: 4.6.0 svn path=/trunk/KDE/kdebase/apps/; revision=1193344 --- diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index b666cacb0..d1358036b 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -285,6 +285,19 @@ void DolphinMainWindow::refreshViews() } setActiveViewContainer(activeViewContainer); + + const GeneralSettings* generalSettings = DolphinSettings::instance().generalSettings(); + if (generalSettings->modifiedStartupSettings()) { + // The startup settings have been changed by the user (see bug #254947). + // Synchronizethe split-view setting with the active view: + const bool splitView = generalSettings->splitView(); + const ViewTab& activeTab = m_viewTab[m_tabIndex]; + const bool toggle = ( splitView && (activeTab.secondaryView == 0)) + || (!splitView && (activeTab.secondaryView != 0)); + if (toggle) { + toggleSplitView(); + } + } } void DolphinMainWindow::pasteIntoFolder() @@ -856,14 +869,14 @@ void DolphinMainWindow::replaceLocation() void DolphinMainWindow::goBack() { clearStatusBar(); - + KUrlNavigator* urlNavigator = m_activeViewContainer->urlNavigator(); urlNavigator->goBack(); - + if (urlNavigator->locationState().isEmpty()) { // An empty location state indicates a redirection URL, // which must be skipped too - urlNavigator->goBack(); + urlNavigator->goBack(); } } diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index be02ef60b..3f3eb91cd 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -219,6 +219,16 @@ bool DolphinViewContainer::isActive() const void DolphinViewContainer::refresh() { + GeneralSettings* settings = DolphinSettings::instance().generalSettings(); + if (settings->modifiedStartupSettings()) { + // The startup settings should only get applied if they have been + // modified by the user. Otherwise keep the (possibly) different current + // settings of the URL navigator and the filterbar. + m_urlNavigator->setUrlEditable(settings->editableUrl()); + m_urlNavigator->setShowFullPath(settings->showFullPath()); + showFilterBar(settings->filterBar()); + } + m_view->refresh(); m_statusBar->refresh(); } diff --git a/src/settings/dolphin_generalsettings.kcfg b/src/settings/dolphin_generalsettings.kcfg index 4ff4e52fa..b80b90442 100644 --- a/src/settings/dolphin_generalsettings.kcfg +++ b/src/settings/dolphin_generalsettings.kcfg @@ -21,9 +21,13 @@ false - + true + + + false + QDir::homePath() diff --git a/src/settings/dolphinsettingsdialog.cpp b/src/settings/dolphinsettingsdialog.cpp index 4762ae457..2a62fc1cf 100644 --- a/src/settings/dolphinsettingsdialog.cpp +++ b/src/settings/dolphinsettingsdialog.cpp @@ -22,6 +22,8 @@ #include #include +#include "dolphinsettings.h" +#include "dolphin_generalsettings.h" #include "general/generalsettingspage.h" #include "navigation/navigationsettingspage.h" #include "services/servicessettingspage.h" @@ -128,6 +130,15 @@ void DolphinSettingsDialog::applySettings() page->applySettings(); } DolphinApplication::app()->refreshMainWindows(); + + GeneralSettings* settings = DolphinSettings::instance().generalSettings(); + if (settings->modifiedStartupSettings()) { + // Reset the modified startup settings hint. The changed startup settings + // have been applied already in app()->refreshMainWindows(). + settings->setModifiedStartupSettings(false); + settings->writeConfig(); + } + enableButtonApply(false); } diff --git a/src/settings/startup/startupsettingspage.cpp b/src/settings/startup/startupsettingspage.cpp index d891558e1..907b3f2cd 100644 --- a/src/settings/startup/startupsettingspage.cpp +++ b/src/settings/startup/startupsettingspage.cpp @@ -88,10 +88,6 @@ StartupSettingsPage::StartupSettingsPage(const KUrl& url, QWidget* parent) : m_editableUrl = new QCheckBox(i18nc("@option:check Startup Settings", "Editable location bar"), vBox); m_showFullPath = new QCheckBox(i18nc("@option:check Startup Settings", "Show full path inside location bar"), vBox); m_filterBar = new QCheckBox(i18nc("@option:check Startup Settings", "Show filter bar"), vBox); - connect(m_splitView, SIGNAL(toggled(bool)), this, SIGNAL(changed())); - connect(m_editableUrl, SIGNAL(toggled(bool)), this, SIGNAL(changed())); - connect(m_showFullPath, SIGNAL(toggled(bool)), this, SIGNAL(changed())); - connect(m_filterBar, SIGNAL(toggled(bool)), this, SIGNAL(changed())); // Add a dummy widget with no restriction regarding // a vertical resizing. This assures that the dialog layout @@ -102,9 +98,12 @@ StartupSettingsPage::StartupSettingsPage(const KUrl& url, QWidget* parent) : loadSettings(); - // it's important connecting 'textChanged' after loadSettings(), as loadSettings() - // invokes m_homeUrl->setText() + // Connecting the signals must be done after loading the settings connect(m_homeUrl, SIGNAL(textChanged(const QString&)), this, SIGNAL(changed())); + connect(m_splitView, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged())); + connect(m_editableUrl, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged())); + connect(m_showFullPath, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged())); + connect(m_filterBar, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged())); } StartupSettingsPage::~StartupSettingsPage() @@ -139,13 +138,24 @@ void StartupSettingsPage::restoreDefaults() settings->useDefaults(false); } +void StartupSettingsPage::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 explicitely changed by the user + // (see bug #254947). + GeneralSettings* settings = DolphinSettings::instance().generalSettings(); + settings->setModifiedStartupSettings(true); + + emit changed(); +} + void StartupSettingsPage::selectHomeUrl() { const QString homeUrl = m_homeUrl->text(); KUrl url = KFileDialog::getExistingDirectoryUrl(homeUrl, this); if (!url.isEmpty()) { m_homeUrl->setText(url.prettyUrl()); - emit changed(); + slotSettingsChanged(); } } @@ -156,7 +166,7 @@ void StartupSettingsPage::useCurrentLocation() void StartupSettingsPage::useDefaultLocation() { - KUrl url(QDir::homePath()); + KUrl url(QDir::homePath()); m_homeUrl->setText(url.prettyUrl()); } diff --git a/src/settings/startup/startupsettingspage.h b/src/settings/startup/startupsettingspage.h index 98219a5a4..d749e5e0e 100644 --- a/src/settings/startup/startupsettingspage.h +++ b/src/settings/startup/startupsettingspage.h @@ -46,6 +46,7 @@ public: virtual void restoreDefaults(); private slots: + void slotSettingsChanged(); void selectHomeUrl(); void useCurrentLocation(); void useDefaultLocation();