diff --git a/src/widgetfactory.h b/src/widgetfactory.h --- a/src/widgetfactory.h +++ b/src/widgetfactory.h @@ -72,6 +72,11 @@ QWidget* createCommentWidget(const QString& comment, QWidget* parent); QWidget* createValueWidget(const QString& value, QWidget* parent); + /* Returns formated date and time value according to m_dateFormat, or + * QString::null if value is not a valid date + */ + QString formatDateTime(const QVariant& value); + TagWidget* m_tagWidget; KRatingWidget* m_ratingWidget; KCommentWidget* m_commentWidget; diff --git a/src/widgetfactory.cpp b/src/widgetfactory.cpp --- a/src/widgetfactory.cpp +++ b/src/widgetfactory.cpp @@ -123,35 +123,31 @@ QString valueString; auto pi = KFileMetaData::PropertyInfo::fromName(prop); if (pi.name() == QLatin1String("originUrl")) { - //Won't make sense to shrink originUrl with noLinks, + //Won't make sense to shrink originUrl with noLinks, //since it would make original URL unobtainable valueString = value.toString(); if (!m_noLinks) { - //Shrink link name. + //Shrink link name. auto labelString = valueString; if (labelString.size() > maxUrlLength) { labelString = KStringHandler::csqueeze(labelString, maxUrlLength); } valueString = QStringLiteral("%2").arg(valueString, labelString); } } else if (pi.name() != QLatin1String("empty")) { - valueString = pi.formatAsDisplayString(value); - } else { - // Check if Date/DateTime - QDateTime dt = QDateTime::fromString(value.toString(), Qt::ISODate); - if (dt.isValid()) { - KFormat form; - QTime time = dt.time(); - if (!time.hour() && !time.minute() && !time.second()){ - valueString = form.formatRelativeDate(dt.date(), m_dateFormat); - } else { - valueString = form.formatRelativeDateTime(dt, m_dateFormat); - } - } - else { - valueString = toString(value); + if (pi.valueType() == QVariant::DateTime) { + valueString = this->formatDateTime(value); + } else { + valueString = pi.formatAsDisplayString(value); } + } else { + valueString = this->formatDateTime(value); } + + if (valueString == QString::null) { + valueString = toString(value); + } + widget = createValueWidget(valueString, parent); } @@ -161,6 +157,24 @@ return widget; } +QString WidgetFactory::formatDateTime(const QVariant& value) +{ + QDateTime dt = QDateTime::fromString(value.toString(), Qt::ISODate); + + if (dt.isValid()) { + KFormat form; + QTime time = dt.time(); + // Check if Date/DateTime + if (!time.hour() && !time.minute() && !time.second()){ + return form.formatRelativeDate(dt.date(), m_dateFormat); + } else { + return form.formatRelativeDateTime(dt, m_dateFormat); + } + } + + return QString::null; +} + QWidget* WidgetFactory::createTagWidget(const QStringList& tags, QWidget* parent) { TagWidget* tagWidget = new TagWidget(parent);