X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/5b5a7b8da8cb3ee6bbb9f7450c87fca5de41dc05..6422ae393ed378f8dcde0bf35e1f8d67a5df2295:/src/dolphinview.cpp diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index 45717afc1..48f0214bc 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -51,6 +51,7 @@ #include "dolphindetailsview.h" #include "dolphiniconsview.h" #include "dolphincontextmenu.h" +#include "dolphinitemcategorizer.h" #include "filterbar.h" #include "renamedialog.h" #include "kurlnavigator.h" @@ -255,6 +256,44 @@ bool DolphinView::showHiddenFiles() const return m_dirLister->showingDotFiles(); } +void DolphinView::setCategorizedSorting(bool categorized) +{ + if (!supportsCategorizedSorting() || (categorized == categorizedSorting())) { + return; + } + + Q_ASSERT(m_iconsView != 0); + if (categorized) { + Q_ASSERT(m_iconsView->itemCategorizer() == 0); + m_iconsView->setItemCategorizer(new DolphinItemCategorizer()); + } else { + KItemCategorizer* categorizer = m_iconsView->itemCategorizer(); + m_iconsView->setItemCategorizer(0); + delete categorizer; + } + + ViewProperties props(m_urlNavigator->url()); + props.setCategorizedSorting(categorized); + props.save(); + + emit categorizedSortingChanged(); +} + +bool DolphinView::categorizedSorting() const +{ + if (!supportsCategorizedSorting()) { + return false; + } + + Q_ASSERT(m_iconsView != 0); + return m_iconsView->itemCategorizer() != 0; +} + +bool DolphinView::supportsCategorizedSorting() const +{ + return m_iconsView != 0; +} + void DolphinView::renameSelectedItems() { DolphinView* view = mainWindow()->activeView(); @@ -612,6 +651,22 @@ void DolphinView::loadDirectory(const KUrl& url) emit showHiddenFilesChanged(); } + const bool categorized = props.categorizedSorting(); + if (categorized != categorizedSorting()) { + if (supportsCategorizedSorting()) { + Q_ASSERT(m_iconsView != 0); + if (categorized) { + Q_ASSERT(m_iconsView->itemCategorizer() == 0); + m_iconsView->setItemCategorizer(new DolphinItemCategorizer()); + } else { + KItemCategorizer* categorizer = m_iconsView->itemCategorizer(); + m_iconsView->setItemCategorizer(0); + delete categorizer; + } + } + emit categorizedSortingChanged(); + } + const DolphinView::Sorting sorting = props.sorting(); if (sorting != m_proxyModel->sorting()) { m_proxyModel->setSorting(sorting); @@ -1096,6 +1151,11 @@ void DolphinView::createView() if (view != 0) { m_topLayout->removeWidget(view); view->close(); + if (view == m_iconsView) { + KItemCategorizer* categorizer = m_iconsView->itemCategorizer(); + m_iconsView->setItemCategorizer(0); + delete categorizer; + } view->deleteLater(); view = 0; m_iconsView = 0;