File indexing completed on 2024-04-28 07:47:34
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_UNIT_P_H 0009 #define KUNITCONVERSION_UNIT_P_H 0010 0011 #include "unit.h" 0012 #include "unitcategory.h" 0013 #include "unitcategory_p.h" 0014 0015 #include <KLocalizedString> 0016 0017 namespace KUnitConversion 0018 { 0019 class UnitPrivate : public QSharedData 0020 { 0021 public: 0022 UnitPrivate(); 0023 0024 UnitPrivate(CategoryId categoryId, 0025 UnitId id, 0026 qreal multiplier, 0027 const QString &symbol, 0028 const QString &description, 0029 const QString &matchString, 0030 const KLocalizedString &symbolString, 0031 const KLocalizedString &realString, 0032 const KLocalizedString &integerString); 0033 0034 virtual ~UnitPrivate(); 0035 0036 UnitPrivate *clone(); 0037 bool operator==(const UnitPrivate &other) const; 0038 bool operator!=(const UnitPrivate &other) const; 0039 0040 void setUnitMultiplier(qreal multiplier); 0041 qreal unitMultiplier() const; 0042 0043 virtual qreal toDefault(qreal value) const; 0044 virtual qreal fromDefault(qreal value) const; 0045 0046 static inline Unit makeUnit(UnitPrivate *dd) 0047 { 0048 return Unit(dd); 0049 } 0050 static inline Unit makeUnit(CategoryId categoryId, 0051 UnitId id, 0052 qreal multiplier, 0053 const QString &symbol, 0054 const QString &description, 0055 const QString &matchString, 0056 const KLocalizedString &symbolString, 0057 const KLocalizedString &realString, 0058 const KLocalizedString &integerString) 0059 { 0060 return Unit(new UnitPrivate(categoryId, id, multiplier, symbol, description, matchString, symbolString, realString, integerString)); 0061 } 0062 0063 CategoryId m_categoryId; 0064 UnitId m_id; 0065 qreal m_multiplier; 0066 QString m_symbol; 0067 QString m_description; 0068 QString m_matchString; 0069 KLocalizedString m_symbolString; 0070 KLocalizedString m_realString; 0071 KLocalizedString m_integerString; 0072 UnitCategoryPrivate *m_category = nullptr; // emulating a weak_ptr, as we otherwise have an undeleteable reference cycle 0073 }; 0074 0075 } // KUnitConversion namespace 0076 0077 #endif // KUNITCONVERSION_UNIT_P_H