┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kfileitemlistwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/kitemviews/kfileitemlistwidget.cpp')
-rw-r--r--src/kitemviews/kfileitemlistwidget.cpp43
1 files changed, 26 insertions, 17 deletions
diff --git a/src/kitemviews/kfileitemlistwidget.cpp b/src/kitemviews/kfileitemlistwidget.cpp
index 69a40ddf3..1b38176cc 100644
--- a/src/kitemviews/kfileitemlistwidget.cpp
+++ b/src/kitemviews/kfileitemlistwidget.cpp
@@ -47,41 +47,50 @@ 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()) {
- // The item represents a directory.
- if (!roleValue.isNull()) {
- const int count = values.value("count").toInt();
- if (count > 0) {
- if (DetailsModeSettings::directorySizeCount()) {
- // Show the number of sub directories instead of the file size of the directory.
- text = i18ncp("@item:intable", "%1 item", "%1 items", count);
- } else {
- // if we have directory size available
- if (roleValue != -1) {
- const KIO::filesize_t size = roleValue.value<KIO::filesize_t>();
- text = KFormat().formatByteSize(size);
- }
- }
+ if (!roleValue.isNull() && roleValue != -1) {
+ // The item represents a directory.
+ if (DetailsModeSettings::directorySizeCount()) {
+ // Show the number of sub directories instead of the file size of the directory.
+ const int count = values.value("count").toInt();
+ text = i18ncp("@item:intable", "%1 item", "%1 items", count);
+ } else {
+ // if we have directory size available
+ const KIO::filesize_t size = roleValue.value<KIO::filesize_t>();
+ text = formatter.formatByteSize(size);
}
}
} else {
const KIO::filesize_t size = roleValue.value<KIO::filesize_t>();
- 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);
}