┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Fernández López <[email protected]>2007-06-22 13:58:21 +0000
committerRafael Fernández López <[email protected]>2007-06-22 13:58:21 +0000
commitb22d9b7b9c72749ec245ff55d8d90989428067fc (patch)
tree664cc0e7da8591b838168fdb2b666e1a8611cb40
parent1304e17f34915b032dd75984a32e9589d6bfbc87 (diff)
If we are sorting by rating, we won't apply the general rule: folders before regular files. The user said that was more interesting for him/her, so we respect his/her
decision. In this case folders and files are citizens of the same class. CCMAIL: [email protected] svn path=/trunk/KDE/kdebase/apps/; revision=678894
-rw-r--r--src/dolphinsortfilterproxymodel.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/dolphinsortfilterproxymodel.cpp b/src/dolphinsortfilterproxymodel.cpp
index 21194f66e..648b6133b 100644
--- a/src/dolphinsortfilterproxymodel.cpp
+++ b/src/dolphinsortfilterproxymodel.cpp
@@ -188,11 +188,16 @@ bool DolphinSortFilterProxyModel::lessThan(const QModelIndex& left,
const KFileItem* leftFileItem = dirModel->itemForIndex(left);
const KFileItem* rightFileItem = dirModel->itemForIndex(right);
- // On our priority, folders go above regular files.
- if (leftFileItem->isDir() && !rightFileItem->isDir()) {
- return true;
- } else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
- return false;
+ // If we are sorting by rating, folders and files are citizens of the same
+ // class
+ if (sortRole() != DolphinView::SortByRating)
+ {
+ // On our priority, folders go above regular files.
+ if (leftFileItem->isDir() && !rightFileItem->isDir()) {
+ return true;
+ } else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
+ return false;
+ }
}
// Hidden elements go before visible ones, if they both are
@@ -312,6 +317,13 @@ bool DolphinSortFilterProxyModel::lessThan(const QModelIndex& left,
const quint32 rightRating = ratingForIndex(right);
if (leftRating == rightRating) {
+ // On our priority, folders go above regular files.
+ if (leftFileItem->isDir() && !rightFileItem->isDir()) {
+ return true;
+ } else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
+ return false;
+ }
+
return sortCaseSensitivity() ?
(naturalCompare(leftFileItem->name(), rightFileItem->name()) < 0) :
(naturalCompare(leftFileItem->name().toLower(), rightFileItem->name().toLower()) < 0);