File indexing completed on 2024-04-14 03:56:12
0001 /* 0002 * SPDX-FileCopyrightText: 2007-2009 Petri Damstén <damu@iki.fi> 0003 * SPDX-FileCopyrightText: 2014 John Layt <jlayt@kde.org> 0004 * 0005 * SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #ifndef KUNITCONVERSION_UNITCATEGORY_P_H 0009 #define KUNITCONVERSION_UNITCATEGORY_P_H 0010 0011 #include "unitcategory.h" 0012 0013 #include <KLocalizedString> 0014 0015 #include <QMap> 0016 0017 class QNetworkAccessManager; 0018 0019 namespace KUnitConversion 0020 { 0021 class UnitCategoryPrivate : public QSharedData 0022 { 0023 public: 0024 UnitCategoryPrivate(); 0025 UnitCategoryPrivate(CategoryId id, const QString &name, const QString &description); 0026 virtual ~UnitCategoryPrivate(); 0027 0028 UnitCategoryPrivate *clone(); 0029 bool operator==(const UnitCategoryPrivate &other) const; 0030 bool operator!=(const UnitCategoryPrivate &other) const; 0031 0032 virtual Value convert(const Value &value, const Unit &toUnit); 0033 0034 virtual bool hasOnlineConversionTable() const 0035 { 0036 return false; 0037 } 0038 0039 virtual UpdateJob* syncConversionTable(std::chrono::seconds updateSkipPeriod) 0040 { 0041 Q_UNUSED(updateSkipPeriod) 0042 return nullptr; 0043 } 0044 0045 void addDefaultUnit(const Unit &unit); 0046 void addCommonUnit(const Unit &unit); 0047 void addUnit(const Unit &unit); 0048 0049 static inline UnitCategoryPrivate* get(const UnitCategory &category) 0050 { 0051 return category.d.data(); 0052 } 0053 0054 static inline UnitCategory makeCategory(CategoryId id, const QString &name, const QString &description) 0055 { 0056 return UnitCategory(new UnitCategoryPrivate(id, name, description)); 0057 } 0058 static inline UnitCategory makeCategory(UnitCategoryPrivate *dd) 0059 { 0060 return UnitCategory(dd); 0061 } 0062 0063 static inline UpdateJob* makeUpdateJob(QNetworkReply *reply) 0064 { 0065 return new UpdateJob(reply); 0066 } 0067 0068 /** Network access manager to use for online updates. 0069 * @see syncConversionTable 0070 */ 0071 static QNetworkAccessManager* nam(); 0072 0073 CategoryId m_id; 0074 QString m_name; 0075 QString m_description; 0076 KLocalizedString m_symbolStringFormat; 0077 Unit m_defaultUnit; 0078 QMap<QString, Unit> m_unitMap; 0079 QMap<UnitId, Unit> m_idMap; 0080 QList<Unit> m_units; 0081 QList<Unit> m_mostCommonUnits; 0082 }; 0083 0084 } // KUnitConversion namespace 0085 0086 #endif // KUNITCONVERSION_UNITCATEGORY_P_H