┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kfileitemmodel.cpp
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2011-09-18 16:46:40 +0200
committerFrank Reininghaus <[email protected]>2011-09-18 16:50:44 +0200
commit8879f5e7527caee52966f352af7fa9585fe58192 (patch)
treea6a3febaecd329aa49e5dc714d4572637b1eedd2 /src/kitemviews/kfileitemmodel.cpp
parent3c41cd3c9dcae1169024e455861ee6f1515bdcc8 (diff)
Implement 'Sort By Size'
It only works for files so far. The sorting of folders by the number of items is more tricky to get right because this number is retrieved asynchronously by KFileItemModelRolesUpdater.
Diffstat (limited to 'src/kitemviews/kfileitemmodel.cpp')
-rw-r--r--src/kitemviews/kfileitemmodel.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp
index 1391acb83..0eb8d11e0 100644
--- a/src/kitemviews/kfileitemmodel.cpp
+++ b/src/kitemviews/kfileitemmodel.cpp
@@ -868,7 +868,7 @@ bool KFileItemModel::lessThan(const KFileItem& a, const KFileItem& b) const
}
}
- if (m_sortFoldersFirst) {
+ if (m_sortFoldersFirst || m_sortRole == SizeRole) {
const bool isDirA = a.isDir();
const bool isDirB = b.isDir();
if (isDirA && !isDirB) {
@@ -900,6 +900,20 @@ bool KFileItemModel::lessThan(const KFileItem& a, const KFileItem& b) const
break;
}
+ case SizeRole: {
+ // TODO: Implement sorting folders by the number of items inside.
+ // This is more tricky to get right because this number is retrieved
+ // asynchronously by KFileItemModelRolesUpdater.
+ const KIO::filesize_t sizeA = a.size();
+ const KIO::filesize_t sizeB = b.size();
+ if (sizeA < sizeB) {
+ result = -1;
+ } else if (sizeA > sizeB) {
+ result = +1;
+ }
+ break;
+ }
+
default:
break;
}