KUnitConversion

fuel_efficiency.cpp
1/*
2 * SPDX-FileCopyrightText: 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#include "fuel_efficiency_p.h"
9#include "unit_p.h"
10
11#include <KLocalizedString>
12
13namespace KUnitConversion
14{
15class FuelUnitPrivate : public UnitPrivate
16{
17public:
18 FuelUnitPrivate(CategoryId categoryId,
19 UnitId id,
20 qreal multiplier,
21 const QString &symbol,
22 const QString &description,
23 const QString &matchString,
24 const KLocalizedString &symbolString,
25 const KLocalizedString &realString,
26 const KLocalizedString &integerString,
27 const bool isReciprocalToDefaultUnit = false)
28 : UnitPrivate(categoryId, id, multiplier, symbol, description, matchString, symbolString, realString, integerString)
29 , m_isReciprocalToDefaultUnit(isReciprocalToDefaultUnit)
30 {
31 }
32
33 qreal toDefault(qreal value) const override
34 {
35 if (m_isReciprocalToDefaultUnit) {
36 return unitMultiplier() / value;
37 }
38 return UnitPrivate::toDefault(value);
39 }
40
41 qreal fromDefault(qreal value) const override
42 {
43 if (m_isReciprocalToDefaultUnit) {
44 return unitMultiplier() / value;
45 }
46 return UnitPrivate::fromDefault(value);
47 }
48
49private:
50 bool m_isReciprocalToDefaultUnit; /* l/100 km (fuel per given distance) is inverse
51 to MPG and kmpl (distance per given amount of fuel).
52 Converter has to account for this. */
53};
54
55UnitCategory FuelEfficiency::makeCategory()
56{
57 auto c = UnitCategoryPrivate::makeCategory(FuelEfficiencyCategory, i18n("Fuel Efficiency"), i18n("Fuel Efficiency"));
58 auto d = UnitCategoryPrivate::get(c);
59 KLocalizedString symbolString = ki18nc("%1 value, %2 unit symbol (fuel efficiency)", "%1 %2");
60
61 d->addDefaultUnit(
62 UnitPrivate::makeUnit(new FuelUnitPrivate(FuelEfficiencyCategory,
63 LitersPer100Kilometers,
64 1,
65 i18nc("fuelefficiency unit symbol", "l/100 km"),
66 i18nc("unit description in lists", "liters per 100 kilometers"),
67 i18nc("unit synonyms for matching user input", "liters per 100 kilometers;liters per 100 kilometers;l/100 km;L/100 km"),
68 symbolString,
69 ki18nc("amount in units (real)", "%1 liters per 100 kilometers"),
70 ki18ncp("amount in units (integer)", "%1 liters per 100 kilometers", "%1 liters per 100 kilometers"))));
71
72 d->addCommonUnit(UnitPrivate::makeUnit(new FuelUnitPrivate(FuelEfficiencyCategory,
73 MilePerUsGallon,
74 235.215,
75 i18nc("fuelefficiency unit symbol", "mpg"),
76 i18nc("unit description in lists", "miles per US gallon"),
77 i18nc("unit synonyms for matching user input", "mile per US gallon;miles per US gallon;mpg"),
78 symbolString,
79 ki18nc("amount in units (real)", "%1 miles per US gallon"),
80 ki18ncp("amount in units (integer)", "%1 mile per US gallon", "%1 miles per US gallon"),
81 true)));
82
83 d->addCommonUnit(UnitPrivate::makeUnit(new FuelUnitPrivate(
84 FuelEfficiencyCategory,
85 MilePerImperialGallon,
86 282.481,
87 i18nc("fuelefficiency unit symbol", "mpg (imperial)"),
88 i18nc("unit description in lists", "miles per imperial gallon"),
89 i18nc("unit synonyms for matching user input", "mile per imperial gallon;miles per imperial gallon;mpg (imperial);imp mpg;mpg (imp)"),
90 symbolString,
91 ki18nc("amount in units (real)", "%1 miles per imperial gallon"),
92 ki18ncp("amount in units (integer)", "%1 mile per imperial gallon", "%1 miles per imperial gallon"),
93 true)));
94
95 d->addCommonUnit(UnitPrivate::makeUnit(new FuelUnitPrivate(FuelEfficiencyCategory,
96 KilometrePerLitre,
97 100.0,
98 i18nc("fuelefficiency unit symbol", "kmpl"),
99 i18nc("unit description in lists", "kilometers per liter"),
100 i18nc("unit synonyms for matching user input", "kilometer per liter;kilometers per liter;kmpl;km/l"),
101 symbolString,
102 ki18nc("amount in units (real)", "%1 kilometers per liter"),
103 ki18ncp("amount in units (integer)", "%1 kilometer per liter", "%1 kilometers per liter"),
104 true)));
105
106 return c;
107}
108
109} // KUnitConversion namespace
QString i18nc(const char *context, const char *text, const TYPE &arg...)
KLocalizedString KI18N_EXPORT ki18ncp(const char *context, const char *singular, const char *plural)
KLocalizedString KI18N_EXPORT ki18nc(const char *context, const char *text)
QString i18n(const char *text, const TYPE &arg...)
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Mon Nov 18 2024 12:15:24 by doxygen 1.12.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.