]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Compare UDS entry times directly instead of going through KFileItem
authorKai Uwe Broulik <kde@privat.broulik.de>
Thu, 26 Jul 2018 08:17:36 +0000 (10:17 +0200)
committerKai Uwe Broulik <kde@privat.broulik.de>
Thu, 26 Jul 2018 08:17:36 +0000 (10:17 +0200)
This avoids creating a QDateTime object with all the timezone processing that comes with it since we're only interested in the
relative order, not absolute precise date time values.

CHANGELOG: Sorting files by date is significantly faster now

Differential Revision: https://phabricator.kde.org/D14394

src/kitemviews/kfileitemmodel.cpp

index 56c21f51ca50329eeac5c18166154b0fb3da78b4..d2c8429ac3aa9404d777519cdbbe5c333591c5a4 100644 (file)
@@ -1778,8 +1778,8 @@ int KFileItemModel::sortRoleCompare(const ItemData* a, const ItemData* b, const
     }
 
     case ModificationTimeRole: {
-        const QDateTime dateTimeA = itemA.time(KFileItem::ModificationTime);
-        const QDateTime dateTimeB = itemB.time(KFileItem::ModificationTime);
+        const long long dateTimeA = itemA.entry().numberValue(KIO::UDSEntry::UDS_MODIFICATION_TIME, -1);
+        const long long dateTimeB = itemB.entry().numberValue(KIO::UDSEntry::UDS_MODIFICATION_TIME, -1);
         if (dateTimeA < dateTimeB) {
             result = -1;
         } else if (dateTimeA > dateTimeB) {
@@ -1789,8 +1789,8 @@ int KFileItemModel::sortRoleCompare(const ItemData* a, const ItemData* b, const
     }
 
     case CreationTimeRole: {
-        const QDateTime dateTimeA = itemA.time(KFileItem::CreationTime);
-        const QDateTime dateTimeB = itemB.time(KFileItem::CreationTime);
+        const long long dateTimeA = itemA.entry().numberValue(KIO::UDSEntry::UDS_CREATION_TIME, -1);
+        const long long dateTimeB = itemB.entry().numberValue(KIO::UDSEntry::UDS_CREATION_TIME, -1);
         if (dateTimeA < dateTimeB) {
             result = -1;
         } else if (dateTimeA > dateTimeB) {