From 55a876af21f67dfd5d57a92633f2dd3a2b5dc5ca Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rafael=20Fern=C3=A1ndez=20L=C3=B3pez?= Date: Mon, 18 Jun 2007 10:39:02 +0000 Subject: [PATCH] First show folders when sorting by type, then sort categories alphabetically. Yeah ! svn path=/trunk/KDE/kdebase/apps/; revision=677030 --- src/dolphinsortfilterproxymodel.cpp | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/dolphinsortfilterproxymodel.cpp b/src/dolphinsortfilterproxymodel.cpp index 04294b9c2..103928b21 100644 --- a/src/dolphinsortfilterproxymodel.cpp +++ b/src/dolphinsortfilterproxymodel.cpp @@ -143,8 +143,15 @@ bool DolphinSortFilterProxyModel::lessThanGeneralPurpose(const QModelIndex &left } else if (sortRole() == KDirModel::Type) { - return naturalCompare(leftFileItem->mimetype().toLower(), - rightFileItem->mimetype().toLower()) < 0; + // If we are sorting by size, show folders first. We will sort them + // correctly later + if (leftFileItem->isDir() && !rightFileItem->isDir()) + return true; + else if (!leftFileItem->isDir() && rightFileItem->isDir()) + return false; + + return naturalCompare(leftFileItem->mimeComment().toLower(), + rightFileItem->mimeComment().toLower()) < 0; } } @@ -249,6 +256,23 @@ bool DolphinSortFilterProxyModel::lessThan(const QModelIndex& left, } else if (sortRole() == KDirModel::Type) { + // If an item is hidden (doesn't matter if file or folder) will have + // higher preference than a non-hidden item + if (leftFileItem->isHidden() && !rightFileItem->isHidden()) { + return true; + } + else if (!leftFileItem->isHidden() && rightFileItem->isHidden()) { + return false; + } + + // On our priority, folders go above regular files + if (leftFileItem->isDir() && !rightFileItem->isDir()) { + return true; + } + else if (!leftFileItem->isDir() && rightFileItem->isDir()) { + return false; + } + if (leftFileItem->mimetype() == rightFileItem->mimetype()) { const QString leftStr = dirModel->data(left, KDirModel::Name).toString(); -- 2.47.3