1/*
2 SPDX-FileCopyrightText: 2014 Bhushan Shah <bhush94@gmail.com>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5*/
6
7#include "formats.h"
8
9static void markCurrentFunctionAsTranslationBinding(const QObject *obj)
10{
11 if (auto engine = qmlEngine(obj); engine) {
12 engine->markCurrentFunctionAsTranslationBinding();
13 }
14}
15
16QString Formats::formatByteSize(double size, int precision) const
17{
18 markCurrentFunctionAsTranslationBinding(obj: this);
19 return m_format.formatByteSize(size, precision);
20}
21
22QString Formats::formatDuration(quint64 msecs, KFormat::DurationFormatOptions options) const
23{
24 markCurrentFunctionAsTranslationBinding(obj: this);
25 return m_format.formatDuration(msecs, options);
26}
27
28QString Formats::formatDecimalDuration(quint64 msecs, int decimalPlaces) const
29{
30 markCurrentFunctionAsTranslationBinding(obj: this);
31 return m_format.formatDecimalDuration(msecs, decimalPlaces);
32}
33
34QString Formats::formatSpelloutDuration(quint64 msecs) const
35{
36 markCurrentFunctionAsTranslationBinding(obj: this);
37 return m_format.formatSpelloutDuration(msecs);
38}
39
40QString Formats::formatRelativeDate(const QDate &date, QLocale::FormatType format) const
41{
42 markCurrentFunctionAsTranslationBinding(obj: this);
43 return m_format.formatRelativeDate(date, format);
44}
45
46QString Formats::formatRelativeDateTime(const QDateTime &dateTime, QLocale::FormatType format) const
47{
48 markCurrentFunctionAsTranslationBinding(obj: this);
49 return m_format.formatRelativeDateTime(dateTime, format);
50}
51
52[[nodiscard]] static QVariant readProperty(const QVariant &obj, const QString &propertyName)
53{
54 const auto mo = QMetaType(obj.userType()).metaObject();
55 if (!mo) {
56 return {};
57 }
58
59 const auto idx = mo->indexOfProperty(name: propertyName.toUtf8().constData());
60 if (idx < 0) {
61 return {};
62 }
63
64 const auto prop = mo->property(index: idx);
65 return prop.readOnGadget(gadget: obj.constData());
66}
67
68QString Formats::formatTime(const QVariant &obj, const QString &propertyName, QLocale::FormatType format, KFormat::TimeFormatOptions options) const
69{
70 const auto dt = readProperty(obj, propertyName).toDateTime();
71 return m_format.formatTime(dateTime: dt, format, options);
72}
73
74QString Formats::formatDistance(double value, KFormat::DistanceFormatOptions options) const
75{
76 markCurrentFunctionAsTranslationBinding(obj: this);
77 return m_format.formatDistance(distance: value, options);
78}
79
80#include "moc_formats.cpp"
81

source code of kcoreaddons/src/qml/formats.cpp