]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinviewcontainer.cpp
Take care to not reset the preview-settings if they have not been changed.
[dolphin.git] / src / dolphinviewcontainer.cpp
index c19d074c685b804abf8cdcb784587509e307b1c8..7fd0cfa2999cf81ceea7afefe51fe20266d2c43e 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());
+        setFilterBarVisible(settings->filterBar());
+    }
+
     m_view->refresh();
     m_statusBar->refresh();
 }
@@ -238,10 +248,21 @@ void DolphinViewContainer::setSearchModeEnabled(bool enabled)
     m_urlNavigator->setVisible(!enabled);
 
     if (enabled) {
-        // Remember the current URL, so that it can be restored
-        // when switching back to the URL navigator
-        const KUrl url = m_urlNavigator->locationUrl();
-        m_searchBox->setSearchPath(url);
+        // Remember the most recent non-search URL as search path
+        // of the search-box, so that it can be restored
+        // when switching back to the URL navigator.
+        KUrl url = m_urlNavigator->locationUrl();
+
+        int index = m_urlNavigator->historyIndex();
+        const int historySize = m_urlNavigator->historySize();
+        while (isSearchUrl(url) && (index < historySize)) {
+            ++index;
+            url = m_urlNavigator->locationUrl(index);
+        }
+
+        if (!isSearchUrl(url)) {
+            m_searchBox->setSearchPath(url);
+        }
     } else {
         // Restore the URL for the URL navigator. If Dolphin has been
         // started with a search-URL, the home URL is used as fallback.
@@ -277,10 +298,10 @@ void DolphinViewContainer::setUrl(const KUrl& newUrl)
     }
 }
 
-void DolphinViewContainer::showFilterBar(bool show)
+void DolphinViewContainer::setFilterBarVisible(bool visible)
 {
     Q_ASSERT(m_filterBar != 0);
-    if (show) {
+    if (visible) {
         m_filterBar->show();
     } else {
         closeFilterBar();
@@ -435,19 +456,7 @@ void DolphinViewContainer::saveViewState()
 void DolphinViewContainer::slotUrlNavigatorLocationChanged(const KUrl& url)
 {
     if (KProtocolManager::supportsListing(url)) {
-         // Assure that the search box is shown instead of the URL navigator in case
-         // that the URL \p url is a search URL (e. g. nepomuksearch:// or filenamesearch://).
-        if (isSearchUrl(url)) {
-            if (!m_searchBox->isVisible()) {
-                m_searchBox->setVisible(true);
-                m_urlNavigator->setVisible(false);
-                emit searchModeChanged(true);
-            }
-        } else if (!m_urlNavigator->isVisible()) {
-            m_urlNavigator->setVisible(true);
-            m_searchBox->setVisible(false);
-            emit searchModeChanged(false);
-        }
+        setSearchModeEnabled(isSearchUrl(url));
 
         m_view->setUrl(url);
         if (isActive() && !isSearchUrl(url)) {
@@ -499,6 +508,7 @@ void DolphinViewContainer::redirect(const KUrl& oldUrl, const KUrl& newUrl)
     // URL history.
     m_urlNavigator->saveLocationState(QByteArray());
     m_urlNavigator->setLocationUrl(newUrl);
+    setSearchModeEnabled(isSearchUrl(newUrl));
 
     m_urlNavigator->blockSignals(block);
 }
@@ -541,7 +551,8 @@ void DolphinViewContainer::closeSearchBox()
 
 bool DolphinViewContainer::isSearchUrl(const KUrl& url) const
 {
-    return url.protocol().contains("search");
+    const QString protocol = url.protocol();
+    return protocol.contains("search") || (protocol == QLatin1String("nepomuk"));
 }
 
 void DolphinViewContainer::slotItemTriggered(const KFileItem& item)