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_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