┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kfileitemmodel.cpp
diff options
context:
space:
mode:
authorEugene Popov <[email protected]>2022-04-20 17:30:46 +0300
committerEugene Popov <[email protected]>2022-04-26 13:42:04 +0300
commite6f142e5e7563ebbcdc1bdf84c9ce87f11e01835 (patch)
tree466862c5aaee5aab15953f84762f257c9e20ade7 /src/kitemviews/kfileitemmodel.cpp
parentc88ce580e6ad720342e7efec2c7e24d8362b648c (diff)
Add the ability to sort by file extension
Currently, Dolphin doesn't have the ability to sort by file extension (sorting by type means that files will be sorted by mimetype but not by extension). This MR fixes this shortcoming. BUG: 429579
Diffstat (limited to 'src/kitemviews/kfileitemmodel.cpp')
-rw-r--r--src/kitemviews/kfileitemmodel.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp
index c58c2ee79..16fc54b43 100644
--- a/src/kitemviews/kfileitemmodel.cpp
+++ b/src/kitemviews/kfileitemmodel.cpp
@@ -1580,6 +1580,7 @@ QList<KFileItemModel::ItemData*> KFileItemModel::createItemDataList(const QUrl&
void KFileItemModel::prepareItemsForSorting(QList<ItemData*>& itemDataList)
{
switch (m_sortRole) {
+ case ExtensionRole:
case PermissionsRole:
case OwnerRole:
case GroupRole:
@@ -1801,6 +1802,10 @@ QHash<QByteArray, QVariant> KFileItemModel::retrieveData(const KFileItem& item,
data.insert(sharedValue("text"), item.text());
}
+ if (m_requestRole[ExtensionRole]) {
+ data.insert(sharedValue("extension"), QFileInfo(item.name()).suffix());
+ }
+
if (m_requestRole[SizeRole] && !isDir) {
data.insert(sharedValue("size"), item.size());
}
@@ -2609,6 +2614,7 @@ const KFileItemModel::RoleInfoMap* KFileItemModel::rolesInfoMap(int& count)
{ "creationtime", CreationTimeRole, kli18nc("@label", "Created"), KLazyLocalizedString(), false, false },
{ "accesstime", AccessTimeRole, kli18nc("@label", "Accessed"), KLazyLocalizedString(), false, false },
{ "type", TypeRole, kli18nc("@label", "Type"), KLazyLocalizedString(), false, false },
+ { "extension", ExtensionRole, kli18nc("@label", "Extension"), KLazyLocalizedString(), false, false },
{ "rating", RatingRole, kli18nc("@label", "Rating"), KLazyLocalizedString(), true, false },
{ "tags", TagsRole, kli18nc("@label", "Tags"), KLazyLocalizedString(), true, false },
{ "comment", CommentRole, kli18nc("@label", "Comment"), KLazyLocalizedString(), true, false },