X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/41f8286a568f01bc2723eb74e763556b4c397546..093efca22dfd247f06e2a669ad968300e71ef08d:/src/dolphinview.cpp diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index a85e2db9b..8b36e4ec3 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -51,7 +51,6 @@ #include "viewproperties.h" #include "dolphinsettings.h" #include "dolphin_generalsettings.h" -#include "dolphincategorydrawer.h" DolphinView::DolphinView(QWidget* parent, const KUrl& url, @@ -169,6 +168,17 @@ void DolphinView::setMode(Mode mode) 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(); @@ -219,11 +229,13 @@ bool DolphinView::showHiddenFiles() const void DolphinView::setCategorizedSorting(bool categorized) { - if (!supportsCategorizedSorting() || (categorized == categorizedSorting())) { + if (categorized == categorizedSorting()) { 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); @@ -606,9 +618,10 @@ void DolphinView::applyViewProperties(const KUrl& url) emit showHiddenFilesChanged(); } - const bool categorized = props.categorizedSorting(); + const bool categorized = props.categorizedSorting() && supportsCategorizedSorting(); if (categorized != categorizedSorting()) { m_proxyModel->setCategorizedModel(categorized); + m_proxyModel->sort(m_proxyModel->sortColumn(), m_proxyModel->sortOrder()); emit categorizedSortingChanged(); } @@ -794,11 +807,11 @@ void DolphinView::createView() // ... and recreate it representing the current mode switch (m_mode) { - case IconsView: + case IconsView: { m_iconsView = new DolphinIconsView(this, m_controller); - m_iconsView->setCategoryDrawer(new DolphinCategoryDrawer()); view = m_iconsView; break; + } case DetailsView: m_detailsView = new DolphinDetailsView(this, m_controller);