]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Assure that the view properties of a column view are always stored in the folder...
authorPeter Penz <peter.penz19@gmail.com>
Sun, 29 Jul 2007 15:33:52 +0000 (15:33 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sun, 29 Jul 2007 15:33:52 +0000 (15:33 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=693944

src/dolphinview.cpp
src/dolphinview.h

index 0799ae8b90201267cc15789fb23305333a23b0af..7fc727475de6477b8b4d4c224de4b8e6599f2442 100644 (file)
@@ -176,11 +176,12 @@ void DolphinView::setMode(Mode mode)
         m_controller->setUrl(m_dirLister->url());
     }
 
-    ViewProperties props(url());
+    const KUrl viewPropsUrl = viewPropertiesUrl();
+    ViewProperties props(viewPropsUrl);
     props.setViewMode(m_mode);
 
     createView();
-    startDirLister(url());
+    startDirLister(viewPropsUrl);
 
     emit modeChanged();
 }
@@ -192,13 +193,14 @@ DolphinView::Mode DolphinView::mode() const
 
 void DolphinView::setShowPreview(bool show)
 {
-    ViewProperties props(url());
+    const KUrl viewPropsUrl = viewPropertiesUrl();
+    ViewProperties props(viewPropsUrl);
     props.setShowPreview(show);
 
     m_controller->setShowPreview(show);
     emit showPreviewChanged();
 
-    startDirLister(url(), true);
+    startDirLister(viewPropsUrl, true);
 }
 
 bool DolphinView::showPreview() const
@@ -212,13 +214,14 @@ void DolphinView::setShowHiddenFiles(bool show)
         return;
     }
 
-    ViewProperties props(url());
+    const KUrl viewPropsUrl = viewPropertiesUrl();
+    ViewProperties props(viewPropsUrl);
     props.setShowHiddenFiles(show);
 
     m_dirLister->setShowingDotFiles(show);
     emit showHiddenFilesChanged();
 
-    startDirLister(url(), true);
+    startDirLister(viewPropsUrl, true);
 }
 
 bool DolphinView::showHiddenFiles() const
@@ -242,7 +245,7 @@ void DolphinView::setCategorizedSorting(bool categorized)
         delete categorizer;
     }
 
-    ViewProperties props(url());
+    ViewProperties props(viewPropertiesUrl());
     props.setCategorizedSorting(categorized);
     props.save();
 
@@ -393,14 +396,15 @@ Qt::SortOrder DolphinView::sortOrder() const
 
 void DolphinView::setAdditionalInfo(KFileItemDelegate::AdditionalInformation info)
 {
-    ViewProperties props(url());
+    const KUrl viewPropsUrl = viewPropertiesUrl();
+    ViewProperties props(viewPropsUrl);
     props.setAdditionalInfo(info);
 
     m_controller->setShowAdditionalInfo(info != KFileItemDelegate::NoInformation);
     m_fileItemDelegate->setAdditionalInformation(info);
 
     emit additionalInfoChanged(info);
-    startDirLister(url(), true);
+    startDirLister(viewPropsUrl, true);
 }
 
 KFileItemDelegate::AdditionalInformation DolphinView::additionalInfo() const
@@ -424,21 +428,15 @@ void DolphinView::refresh()
 void DolphinView::setUrl(const KUrl& url)
 {
     if (m_controller->url() == url) {
-        // Although the view URL is equal to the controller URL,
-        // the view properties must be applied to the view.
-        // This assures a consistent state of the currently activated
-        // column and their view properties.
-        if (isColumnViewActive()) {
-            applyViewProperties(url);
-        }
-    } else {
-        m_controller->setUrl(url);
+        return;
+    }
 
-        applyViewProperties(url);
+    m_controller->setUrl(url);
 
-        startDirLister(url);
-        emit urlChanged(url);
-    }
+    applyViewProperties(url);
+
+    startDirLister(url);
+    emit urlChanged(url);
 }
 
 void DolphinView::mouseReleaseEvent(QMouseEvent* event)
@@ -597,21 +595,28 @@ void DolphinView::startDirLister(const KUrl& url, bool reload)
     }
 }
 
+KUrl DolphinView::viewPropertiesUrl() const
+{
+    if (isColumnViewActive()) {
+        return m_dirLister->url();
+    }
+
+    return url();
+}
+
 void DolphinView::applyViewProperties(const KUrl& url)
 {
+    if (isColumnViewActive() && m_dirLister->url().isParentOf(url)) {
+        // The column view is active, hence don't apply the view properties
+        // of sub directories (represented by columns) to the view. The
+        // view always represents the properties of the first column.
+        return;
+    }
+
     const ViewProperties props(url);
 
     const Mode mode = props.viewMode();
-    bool changeMode = (m_mode != mode);
-    if (changeMode && isColumnViewActive()) {
-        // The column view is active. Only change the
-        // mode if the current URL is no child of the column view.
-        if (m_dirLister->url().isParentOf(url)) {
-            changeMode = false;
-        }
-    }
-
-    if (changeMode) {
+    if (m_mode != mode) {
         m_mode = mode;
         createView();
         emit modeChanged();
@@ -744,7 +749,7 @@ void DolphinView::dropUrls(const KUrl::List& urls,
 
 void DolphinView::updateSorting(DolphinView::Sorting sorting)
 {
-    ViewProperties props(url());
+    ViewProperties props(viewPropertiesUrl());
     props.setSorting(sorting);
 
     m_proxyModel->setSorting(sorting);
@@ -754,7 +759,7 @@ void DolphinView::updateSorting(DolphinView::Sorting sorting)
 
 void DolphinView::updateSortOrder(Qt::SortOrder order)
 {
-    ViewProperties props(url());
+    ViewProperties props(viewPropertiesUrl());
     props.setSortOrder(order);
 
     m_proxyModel->setSortOrder(order);
index b9fe49f00fcc76ccda885834f86c43dbc1405984..b26a27069edcd2b796ba500b6a3f468a5d48946d 100644 (file)
@@ -475,6 +475,15 @@ private slots:
 private:
     void startDirLister(const KUrl& url, bool reload = false);
 
+    /**
+     * Returns the URL where the view properties should be stored. Usually
+     * DolphinView::url() is returned, but in the case of a Column View the
+     * view properties are always stored in the directory represented by the
+     * first column. It is recommendend whenever using the ViewProperties class
+     * to use DolphinView::viewPropertiesUrl() as URL.
+     */
+    KUrl viewPropertiesUrl() const;
+
     /**
      * Applies the view properties which are defined by the current URL
      * m_url to the DolphinView properties.