#include "viewproperties.h"
#include "dolphinsettings.h"
#include "dolphin_generalsettings.h"
-#include "dolphincategorydrawer.h"
DolphinView::DolphinView(QWidget* parent,
const KUrl& url,
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();
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);
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();
}
// ... and recreate it representing the current mode
switch (m_mode) {
case IconsView: {
- const KUrl viewPropsUrl = viewPropertiesUrl();
- const ViewProperties props(viewPropsUrl);
-
m_iconsView = new DolphinIconsView(this, m_controller);
- m_iconsView->setCategoryDrawer(new DolphinCategoryDrawer());
view = m_iconsView;
- setCategorizedSorting(props.categorizedSorting());
break;
}
case DetailsView:
m_detailsView = new DolphinDetailsView(this, m_controller);
view = m_detailsView;
- setCategorizedSorting(false);
break;
case ColumnView:
m_columnView = new DolphinColumnView(this, m_controller);
view = m_columnView;
- setCategorizedSorting(false);
break;
}