]> cloud.milkyroute.net Git - dolphin.git/commitdiff
First show folders when sorting by type, then sort categories alphabetically. Yeah !
authorRafael Fernández López <ereslibre@kde.org>
Mon, 18 Jun 2007 10:39:02 +0000 (10:39 +0000)
committerRafael Fernández López <ereslibre@kde.org>
Mon, 18 Jun 2007 10:39:02 +0000 (10:39 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=677030

src/dolphinsortfilterproxymodel.cpp

index 04294b9c26f6b46ed336e9a509e763f880ce8c59..103928b214f55cb0ccd1f88f240addc74eee1c44 100644 (file)
@@ -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();