]> cloud.milkyroute.net Git - dolphin.git/commitdiff
If the user has changed the startup settings, they should also get applied to the...
authorPeter Penz <peter.penz19@gmail.com>
Fri, 5 Nov 2010 17:02:58 +0000 (17:02 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Fri, 5 Nov 2010 17:02:58 +0000 (17:02 +0000)
BUG: 254947
FIXED-IN: 4.6.0

svn path=/trunk/KDE/kdebase/apps/; revision=1193344

src/dolphinmainwindow.cpp
src/dolphinviewcontainer.cpp
src/settings/dolphin_generalsettings.kcfg
src/settings/dolphinsettingsdialog.cpp
src/settings/startup/startupsettingspage.cpp
src/settings/startup/startupsettingspage.h

index b666cacb0f4699d8242b24cd1a3078e8c6b4a0bf..d1358036bcad33e14fea8279063927e008cb6d2b 100644 (file)
@@ -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();
     }
 }
 
index be02ef60b0c48daa1c0281350ad95d5ac448b401..3f3eb91cd13bbfe8ee074c0005280f96bfdaa678 100644 (file)
@@ -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();
 }
index 4ff4e52fa26b92c351fbed9dd2684c9063edb73d..b80b904422db54904496d2fb9227d36c510e511b 100644 (file)
             <default>false</default>
         </entry>
         <entry name="FirstRun" type="Bool">
-            <label>Is the application started the first time</label>
+            <label>Is the application started the first time (internal setting not shown in the UI)</label>
             <default>true</default>
         </entry>
+        <entry name="ModifiedStartupSettings" type="Bool">
+            <label>Have the startup settings been modified (internal setting not shown in the UI)</label>
+            <default>false</default>
+        </entry>
         <entry name="HomeUrl" type="String">
             <label>Home URL</label>
             <default code="true">QDir::homePath()</default>
index 4762ae4578dca2628278bfd8107516e209d6dcf9..2a62fc1cf5f14b4a7bb96658686c34f18cfa58e3 100644 (file)
@@ -22,6 +22,8 @@
 
 #include <dolphinapplication.h>
 #include <dolphinmainwindow.h>
+#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);
 }
 
index d891558e1bf5dd603e3a47f66a145f4346b9c95d..907b3f2cd33d633d5ce7711fb841ba32dd101d1e 100644 (file)
@@ -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());
 }
 
index 98219a5a4a64d6a8a5c7da5e33a8013619e35e89..d749e5e0ee9fb2fd33bdf062a843bc409a563f81 100644 (file)
@@ -46,6 +46,7 @@ public:
     virtual void restoreDefaults();
 
 private slots:
+    void slotSettingsChanged();
     void selectHomeUrl();
     void useCurrentLocation();
     void useDefaultLocation();