From f0d03c7dd7ae8496714483b73cfab1b1708c6ad3 Mon Sep 17 00:00:00 2001 From: Méven Car Date: Thu, 24 Dec 2020 00:11:21 +0000 Subject: Details View: display dates as relative Short dates CCBUG: 340982 --- src/kitemviews/kfileitemlistwidget.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'src/kitemviews/kfileitemlistwidget.cpp') diff --git a/src/kitemviews/kfileitemlistwidget.cpp b/src/kitemviews/kfileitemlistwidget.cpp index 66fcafaf6..1b38176cc 100644 --- a/src/kitemviews/kfileitemlistwidget.cpp +++ b/src/kitemviews/kfileitemlistwidget.cpp @@ -47,10 +47,20 @@ QString KFileItemListWidgetInformant::roleText(const QByteArray& role, { QString text; const QVariant roleValue = values.value(role); + QLocale local; + KFormat formatter(local); // Implementation note: In case if more roles require a custom handling // use a hash + switch for a linear runtime. + auto formatDate = [formatter, local](const QDateTime& time) { + if (DetailsModeSettings::useShortRelativeDates()) { + return formatter.formatRelativeDateTime(time, QLocale::ShortFormat); + } else { + return local.toString(time, QLocale::ShortFormat); + } + }; + if (role == "size") { if (values.value("isDir").toBool()) { if (!roleValue.isNull() && roleValue != -1) { @@ -62,22 +72,25 @@ QString KFileItemListWidgetInformant::roleText(const QByteArray& role, } else { // if we have directory size available const KIO::filesize_t size = roleValue.value(); - text = KFormat().formatByteSize(size); + text = formatter.formatByteSize(size); } } } else { const KIO::filesize_t size = roleValue.value(); - text = KFormat().formatByteSize(size); + text = formatter.formatByteSize(size); } } else if (role == "modificationtime" || role == "creationtime" || role == "accesstime") { bool ok; const long long time = roleValue.toLongLong(&ok); if (ok && time != -1) { - return QLocale().toString(QDateTime::fromSecsSinceEpoch(time), QLocale::ShortFormat); + const QDateTime dateTime = QDateTime::fromSecsSinceEpoch(time); + text = formatDate(dateTime); } } else if (role == "deletiontime" || role == "imageDateTime") { const QDateTime dateTime = roleValue.toDateTime(); - text = QLocale().toString(dateTime, QLocale::ShortFormat); + if (dateTime.isValid()) { + text = formatDate(dateTime); + } } else { text = KStandardItemListWidgetInformant::roleText(role, values); } -- cgit v1.3