File indexing completed on 2024-04-21 15:04:39
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 namespace KUnitConversion 0018 { 0019 class UnitCategoryPrivate : public QSharedData 0020 { 0021 public: 0022 UnitCategoryPrivate(); 0023 UnitCategoryPrivate(CategoryId id, const QString &name, const QString &description); 0024 virtual ~UnitCategoryPrivate(); 0025 0026 UnitCategoryPrivate *clone(); 0027 bool operator==(const UnitCategoryPrivate &other) const; 0028 bool operator!=(const UnitCategoryPrivate &other) const; 0029 0030 virtual Value convert(const Value &value, const Unit &toUnit); 0031 0032 virtual bool hasOnlineConversionTable() const 0033 { 0034 return false; 0035 } 0036 0037 virtual void syncConversionTable(std::chrono::seconds updateSkipPeriod) 0038 { 0039 Q_UNUSED(updateSkipPeriod) 0040 return; 0041 } 0042 0043 void addDefaultUnit(const Unit &unit); 0044 void addCommonUnit(const Unit &unit); 0045 void addUnit(const Unit &unit); 0046 0047 static inline UnitCategoryPrivate* get(const UnitCategory &category) 0048 { 0049 return category.d.data(); 0050 } 0051 0052 static inline UnitCategory makeCategory(CategoryId id, const QString &name, const QString &description) 0053 { 0054 return UnitCategory(new UnitCategoryPrivate(id, name, description)); 0055 } 0056 static inline UnitCategory makeCategory(UnitCategoryPrivate *dd) 0057 { 0058 return UnitCategory(dd); 0059 } 0060 0061 CategoryId m_id; 0062 QString m_name; 0063 QString m_description; 0064 KLocalizedString m_symbolStringFormat; 0065 Unit m_defaultUnit; 0066 QMap<QString, Unit> m_unitMap; 0067 QMap<UnitId, Unit> m_idMap; 0068 QList<Unit> m_units; 0069 QList<Unit> m_mostCommonUnits; 0070 }; 0071 0072 } // KUnitConversion namespace 0073 0074 #endif // KUNITCONVERSION_UNITCATEGORY_P_H