diff options
| author | Tobias C. Berner <[email protected]> | 2017-06-16 20:00:45 +0200 |
|---|---|---|
| committer | Tobias C. Berner <[email protected]> | 2017-07-18 18:44:14 +0200 |
| commit | d8061b4d9e04ec940ee33feae5f60f26bffc97b1 (patch) | |
| tree | 0829b2d307facc5d91f3b71ce4675a3729b31c9e /src/kitemviews | |
| parent | ea142de633177601831dfc9a903d9160aac38efa (diff) | |
Add role for file creation time.
Summary: At least on FreeBSD UFS and ZFS support birthtimes of files.
Reviewers: #freebsd, #dolphin
Subscribers: #konqueror
Differential Revision: https://phabricator.kde.org/D6243
Diffstat (limited to 'src/kitemviews')
| -rw-r--r-- | src/kitemviews/kfileitemmodel.cpp | 25 | ||||
| -rw-r--r-- | src/kitemviews/kfileitemmodel.h | 2 |
2 files changed, 26 insertions, 1 deletions
diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index da64895fb..b725d9507 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -334,6 +334,11 @@ QList<QPair<int, QVariant> > KFileItemModel::groups() const return item->item.time(KFileItem::ModificationTime); }); break; + case CreationTimeRole: + m_groups = timeRoleGroups([](const ItemData *item) { + return item->item.time(KFileItem::CreationTime); + }); + break; case AccessTimeRole: m_groups = timeRoleGroups([](const ItemData *item) { return item->item.time(KFileItem::AccessTime); @@ -1562,6 +1567,14 @@ QHash<QByteArray, QVariant> KFileItemModel::retrieveData(const KFileItem& item, data.insert(sharedValue("modificationtime"), dateTime); } + if (m_requestRole[CreationTimeRole]) { + // Don't use KFileItem::timeString() as this is too expensive when + // having several thousands of items. Instead the formatting of the + // date-time will be done on-demand by the view when the date will be shown. + const QDateTime dateTime = item.time(KFileItem::CreationTime); + data.insert(sharedValue("creationtime"), dateTime); + } + if (m_requestRole[AccessTimeRole]) { // Don't use KFileItem::timeString() as this is too expensive when // having several thousands of items. Instead the formatting of the @@ -1811,6 +1824,17 @@ int KFileItemModel::sortRoleCompare(const ItemData* a, const ItemData* b, const break; } + case CreationTimeRole: { + const QDateTime dateTimeA = itemA.time(KFileItem::CreationTime); + const QDateTime dateTimeB = itemB.time(KFileItem::CreationTime); + if (dateTimeA < dateTimeB) { + result = -1; + } else if (dateTimeA > dateTimeB) { + result = +1; + } + break; + } + case DeletionTimeRole: { const QDateTime dateTimeA = a->values.value("deletiontime").toDateTime(); const QDateTime dateTimeB = b->values.value("deletiontime").toDateTime(); @@ -2271,6 +2295,7 @@ const KFileItemModel::RoleInfoMap* KFileItemModel::rolesInfoMap(int& count) { "text", NameRole, I18N_NOOP2_NOSTRIP("@label", "Name"), 0, 0, false, false }, { "size", SizeRole, I18N_NOOP2_NOSTRIP("@label", "Size"), 0, 0, false, false }, { "modificationtime", ModificationTimeRole, I18N_NOOP2_NOSTRIP("@label", "Modified"), 0, 0, false, false }, + { "creationtime", CreationTimeRole, I18N_NOOP2_NOSTRIP("@label", "Created"), 0, 0, false, false }, { "accesstime", AccessTimeRole, I18N_NOOP2_NOSTRIP("@label", "Accessed"), 0, 0, false, false }, { "type", TypeRole, I18N_NOOP2_NOSTRIP("@label", "Type"), 0, 0, false, false }, { "rating", RatingRole, I18N_NOOP2_NOSTRIP("@label", "Rating"), 0, 0, true, false }, diff --git a/src/kitemviews/kfileitemmodel.h b/src/kitemviews/kfileitemmodel.h index c73df9050..ef902775f 100644 --- a/src/kitemviews/kfileitemmodel.h +++ b/src/kitemviews/kfileitemmodel.h @@ -282,7 +282,7 @@ private slots: private: enum RoleType { // User visible roles: - NoRole, NameRole, SizeRole, ModificationTimeRole, AccessTimeRole, PermissionsRole, OwnerRole, + NoRole, NameRole, SizeRole, ModificationTimeRole, CreationTimeRole, AccessTimeRole, PermissionsRole, OwnerRole, GroupRole, TypeRole, DestinationRole, PathRole, DeletionTimeRole, // User visible roles available with Baloo: CommentRole, TagsRole, RatingRole, ImageSizeRole, OrientationRole, |
