diff --git a/autotests/propertyinfotest.cpp b/autotests/propertyinfotest.cpp --- a/autotests/propertyinfotest.cpp +++ b/autotests/propertyinfotest.cpp @@ -72,6 +72,18 @@ PropertyInfo orientation(Property::ImageOrientation); QCOMPARE(orientation.formatAsDisplayString(QVariant(5)), QStringLiteral("Transposed")); + + PropertyInfo altitude(Property::PhotoGpsAltitude); + QCOMPARE(altitude.formatAsDisplayString(QVariant(1.1)), QString(QLocale().toString(1.1) + QStringLiteral(" m"))); + + PropertyInfo latitude(Property::PhotoGpsLatitude); + QCOMPARE(latitude.formatAsDisplayString(QVariant(25)), QString(QLocale().toString(25) + QStringLiteral("°"))); + + PropertyInfo longitude(Property::PhotoGpsLongitude); + QCOMPARE(longitude.formatAsDisplayString(QVariant(13.5)), QString(QLocale().toString(13.5) + QStringLiteral("°"))); + + PropertyInfo framerate(Property::FrameRate); + QCOMPARE(framerate.formatAsDisplayString(QVariant(23)), QStringLiteral("23 fps")); } QTEST_GUILESS_MAIN(PropertyInfoTest) diff --git a/src/formatstrings.cpp b/src/formatstrings.cpp --- a/src/formatstrings.cpp +++ b/src/formatstrings.cpp @@ -84,3 +84,18 @@ return string; } +QString FormatStrings::formatAsDegree(const QVariant& value) +{ + return QString(QLocale().toString(value.toDouble()) + i18nc("Symbol of degree, no space", "°")); +} + +QString FormatStrings::formatAsMeter(const QVariant& value) +{ + KFormat form; + return form.formatValue(value.toDouble(), KFormat::Unit::Meter, 1, KFormat::UnitPrefix::AutoAdjust, KFormat::MetricBinaryDialect); +} + +QString FormatStrings::formatAsFrameRate(const QVariant& value) +{ + return QString(value.toString() + i18nc("Symbol of frames per second, with space", " fps")); +} diff --git a/src/formatstrings_p.h b/src/formatstrings_p.h --- a/src/formatstrings_p.h +++ b/src/formatstrings_p.h @@ -43,6 +43,12 @@ static QString formatOrientationValue(const QVariant& value); + static QString formatAsDegree(const QVariant& value); + + static QString formatAsMeter(const QVariant& value); + + static QString formatAsFrameRate(const QVariant& value); + }; } diff --git a/src/propertyinfo.cpp b/src/propertyinfo.cpp --- a/src/propertyinfo.cpp +++ b/src/propertyinfo.cpp @@ -144,6 +144,7 @@ d->name = QStringLiteral("frameRate"); d->displayName = i18nc("@label", "Frame Rate"); d->valueType = QVariant::Int; + d->formatAsString = &FormatStrings::formatAsFrameRate; break; case Property::Generator: @@ -283,18 +284,21 @@ d->name = QStringLiteral("photoGpsLatitude"); d->displayName = i18nc("@label EXIF", "Photo GPS Latitude"); d->valueType = QVariant::Double; + d->formatAsString = &FormatStrings::formatAsDegree; break; case Property::PhotoGpsLongitude: d->name = QStringLiteral("photoGpsLongitude"); d->displayName = i18nc("@label EXIF", "Photo GPS Longitude"); d->valueType = QVariant::Double; + d->formatAsString = &FormatStrings::formatAsDegree; break; case Property::PhotoGpsAltitude: d->name = QStringLiteral("photoGpsAltitude"); d->displayName = i18nc("@label EXIF", "Photo GPS Altitude"); d->valueType = QVariant::Double; + d->formatAsString = &FormatStrings::formatAsMeter; break; case Property::PhotoISOSpeedRatings: