diff options
| author | Peter Penz <[email protected]> | 2007-04-10 11:22:56 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2007-04-10 11:22:56 +0000 |
| commit | 6422ae393ed378f8dcde0bf35e1f8d67a5df2295 (patch) | |
| tree | 8ebf2bfde66c50244ba86734cead36d4bb7250b5 /src/dolphinview.cpp | |
| parent | 5b5a7b8da8cb3ee6bbb9f7450c87fca5de41dc05 (diff) | |
allow to enable the categorization feature for sorting
svn path=/trunk/KDE/kdebase/apps/; revision=652200
Diffstat (limited to 'src/dolphinview.cpp')
| -rw-r--r-- | src/dolphinview.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
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; |
