]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Assure that the categorized sorting is applied correctly to the proxy model if the...
authorPeter Penz <peter.penz19@gmail.com>
Wed, 26 Sep 2007 15:26:30 +0000 (15:26 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Wed, 26 Sep 2007 15:26:30 +0000 (15:26 +0000)
CCMAIL: ereslibre@gmail.com

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

src/dolphinview.cpp

index 73b44e6fb868c68fb07dc29d86fcb32655bcbf48..8b36e4ec3c45b6e6c472c96ed2471c2bfe50f6db 100644 (file)
@@ -168,6 +168,17 @@ void DolphinView::setMode(Mode mode)
     props.setViewMode(m_mode);
 
     createView();
     props.setViewMode(m_mode);
 
     createView();
+
+    // Not all view modes support categorized sorting. Adjust the sorting model
+    // if changing the view mode results in a change of the categorized sorting
+    // capabilities.
+    const bool categorized = props.categorizedSorting() && supportsCategorizedSorting();
+    if (categorized != categorizedSorting()) {
+        m_proxyModel->setCategorizedModel(categorized);
+        m_proxyModel->sort(m_proxyModel->sortColumn(), m_proxyModel->sortOrder());
+        emit categorizedSortingChanged();
+    }
+
     startDirLister(viewPropsUrl);
 
     emit modeChanged();
     startDirLister(viewPropsUrl);
 
     emit modeChanged();
@@ -222,17 +233,9 @@ void DolphinView::setCategorizedSorting(bool categorized)
         return;
     }
 
         return;
     }
 
-    if (!categorized && !supportsCategorizedSorting())
-    {
-        m_proxyModel->setCategorizedModel(categorized);
-        m_proxyModel->sort(m_proxyModel->sortColumn(), m_proxyModel->sortOrder());
-
-        emit categorizedSortingChanged();
-
-        return;
-    }
-
-    Q_ASSERT(m_iconsView != 0);
+    // setCategorizedSorting(true) may only get invoked
+    // if the view supports categorized sorting
+    Q_ASSERT(!categorized || supportsCategorizedSorting());
 
     ViewProperties props(viewPropertiesUrl());
     props.setCategorizedSorting(categorized);
 
     ViewProperties props(viewPropertiesUrl());
     props.setCategorizedSorting(categorized);
@@ -615,9 +618,10 @@ void DolphinView::applyViewProperties(const KUrl& url)
         emit showHiddenFilesChanged();
     }
 
         emit showHiddenFilesChanged();
     }
 
-    const bool categorized = props.categorizedSorting();
+    const bool categorized = props.categorizedSorting() && supportsCategorizedSorting();
     if (categorized != categorizedSorting()) {
         m_proxyModel->setCategorizedModel(categorized);
     if (categorized != categorizedSorting()) {
         m_proxyModel->setCategorizedModel(categorized);
+        m_proxyModel->sort(m_proxyModel->sortColumn(), m_proxyModel->sortOrder());
         emit categorizedSortingChanged();
     }
 
         emit categorizedSortingChanged();
     }
 
@@ -812,19 +816,11 @@ void DolphinView::createView()
     case DetailsView:
         m_detailsView = new DolphinDetailsView(this, m_controller);
         view = m_detailsView;
     case DetailsView:
         m_detailsView = new DolphinDetailsView(this, m_controller);
         view = m_detailsView;
-
-        // categorized sorting is not supported yet for the details
-        // view, even if the view properties indicate this
-        setCategorizedSorting(false);
         break;
 
     case ColumnView:
         m_columnView = new DolphinColumnView(this, m_controller);
         view = m_columnView;
         break;
 
     case ColumnView:
         m_columnView = new DolphinColumnView(this, m_controller);
         view = m_columnView;
-
-        // categorized sorting is not supported yet for the column
-        // view, even if the view properties indicate this
-        setCategorizedSorting(false);
         break;
     }
 
         break;
     }