┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphinview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/dolphinview.cpp')
-rw-r--r--src/dolphinview.cpp60
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;