| 1 | /* |
| 2 | * SPDX-FileCopyrightText: 2007-2009 Petri Damstén <damu@iki.fi> |
| 3 | * SPDX-FileCopyrightText: 2014 John Layt <jlayt@kde.org> |
| 4 | * |
| 5 | * SPDX-License-Identifier: LGPL-2.0-or-later |
| 6 | */ |
| 7 | |
| 8 | #ifndef KUNITCONVERSION_UNITCATEGORY_P_H |
| 9 | #define KUNITCONVERSION_UNITCATEGORY_P_H |
| 10 | |
| 11 | #include "unitcategory.h" |
| 12 | |
| 13 | #include <KLocalizedString> |
| 14 | |
| 15 | #include <QMap> |
| 16 | |
| 17 | class QNetworkAccessManager; |
| 18 | |
| 19 | namespace KUnitConversion |
| 20 | { |
| 21 | class UnitCategoryPrivate : public QSharedData |
| 22 | { |
| 23 | public: |
| 24 | UnitCategoryPrivate(); |
| 25 | UnitCategoryPrivate(CategoryId id, const QString &name, const QString &description); |
| 26 | virtual ~UnitCategoryPrivate(); |
| 27 | |
| 28 | UnitCategoryPrivate *clone(); |
| 29 | bool operator==(const UnitCategoryPrivate &other) const; |
| 30 | bool operator!=(const UnitCategoryPrivate &other) const; |
| 31 | |
| 32 | virtual Value convert(const Value &value, const Unit &toUnit); |
| 33 | |
| 34 | virtual bool hasOnlineConversionTable() const |
| 35 | { |
| 36 | return false; |
| 37 | } |
| 38 | |
| 39 | virtual UpdateJob* syncConversionTable(std::chrono::seconds updateSkipPeriod) |
| 40 | { |
| 41 | Q_UNUSED(updateSkipPeriod) |
| 42 | return nullptr; |
| 43 | } |
| 44 | |
| 45 | void addDefaultUnit(const Unit &unit); |
| 46 | void addCommonUnit(const Unit &unit); |
| 47 | void addUnit(const Unit &unit); |
| 48 | |
| 49 | static inline UnitCategoryPrivate* get(const UnitCategory &category) |
| 50 | { |
| 51 | return category.d.data(); |
| 52 | } |
| 53 | |
| 54 | static inline UnitCategory makeCategory(CategoryId id, const QString &name, const QString &description) |
| 55 | { |
| 56 | return UnitCategory(new UnitCategoryPrivate(id, name, description)); |
| 57 | } |
| 58 | static inline UnitCategory makeCategory(UnitCategoryPrivate *dd) |
| 59 | { |
| 60 | return UnitCategory(dd); |
| 61 | } |
| 62 | |
| 63 | static inline UpdateJob* makeUpdateJob(QNetworkReply *reply) |
| 64 | { |
| 65 | return new UpdateJob(reply); |
| 66 | } |
| 67 | |
| 68 | /** Network access manager to use for online updates. |
| 69 | * @see syncConversionTable |
| 70 | */ |
| 71 | static QNetworkAccessManager* nam(); |
| 72 | |
| 73 | CategoryId m_id; |
| 74 | QString m_name; |
| 75 | QString m_description; |
| 76 | KLocalizedString m_symbolStringFormat; |
| 77 | Unit m_defaultUnit; |
| 78 | QMap<QString, Unit> m_unitMap; |
| 79 | QMap<UnitId, Unit> m_idMap; |
| 80 | QList<Unit> m_units; |
| 81 | QList<Unit> m_mostCommonUnits; |
| 82 | }; |
| 83 | |
| 84 | } // KUnitConversion namespace |
| 85 | |
| 86 | #endif // KUNITCONVERSION_UNITCATEGORY_P_H |
| 87 | |