File indexing completed on 2024-04-21 03:58:31
0001 /* 0002 * SPDX-FileCopyrightText: 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 #include "fuel_efficiency_p.h" 0009 #include "unit_p.h" 0010 0011 #include <KLocalizedString> 0012 0013 namespace KUnitConversion 0014 { 0015 class FuelUnitPrivate : public UnitPrivate 0016 { 0017 public: 0018 FuelUnitPrivate(CategoryId categoryId, 0019 UnitId id, 0020 qreal multiplier, 0021 const QString &symbol, 0022 const QString &description, 0023 const QString &matchString, 0024 const KLocalizedString &symbolString, 0025 const KLocalizedString &realString, 0026 const KLocalizedString &integerString, 0027 const bool isReciprocalToDefaultUnit = false) 0028 : UnitPrivate(categoryId, id, multiplier, symbol, description, matchString, symbolString, realString, integerString) 0029 , m_isReciprocalToDefaultUnit(isReciprocalToDefaultUnit) 0030 { 0031 } 0032 0033 qreal toDefault(qreal value) const override 0034 { 0035 if (m_isReciprocalToDefaultUnit) { 0036 return unitMultiplier() / value; 0037 } 0038 return UnitPrivate::toDefault(value); 0039 } 0040 0041 qreal fromDefault(qreal value) const override 0042 { 0043 if (m_isReciprocalToDefaultUnit) { 0044 return unitMultiplier() / value; 0045 } 0046 return UnitPrivate::fromDefault(value); 0047 } 0048 0049 private: 0050 bool m_isReciprocalToDefaultUnit; /* l/100 km (fuel per given distance) is inverse 0051 to MPG and kmpl (distance per given amount of fuel). 0052 Converter has to account for this. */ 0053 }; 0054 0055 UnitCategory FuelEfficiency::makeCategory() 0056 { 0057 auto c = UnitCategoryPrivate::makeCategory(FuelEfficiencyCategory, i18n("Fuel Efficiency"), i18n("Fuel Efficiency")); 0058 auto d = UnitCategoryPrivate::get(c); 0059 KLocalizedString symbolString = ki18nc("%1 value, %2 unit symbol (fuel efficiency)", "%1 %2"); 0060 0061 d->addDefaultUnit( 0062 UnitPrivate::makeUnit(new FuelUnitPrivate(FuelEfficiencyCategory, 0063 LitersPer100Kilometers, 0064 1, 0065 i18nc("fuelefficiency unit symbol", "l/100 km"), 0066 i18nc("unit description in lists", "liters per 100 kilometers"), 0067 i18nc("unit synonyms for matching user input", "liters per 100 kilometers;liters per 100 kilometers;l/100 km;L/100 km"), 0068 symbolString, 0069 ki18nc("amount in units (real)", "%1 liters per 100 kilometers"), 0070 ki18ncp("amount in units (integer)", "%1 liters per 100 kilometers", "%1 liters per 100 kilometers")))); 0071 0072 d->addCommonUnit(UnitPrivate::makeUnit(new FuelUnitPrivate(FuelEfficiencyCategory, 0073 MilePerUsGallon, 0074 235.215, 0075 i18nc("fuelefficiency unit symbol", "mpg"), 0076 i18nc("unit description in lists", "miles per US gallon"), 0077 i18nc("unit synonyms for matching user input", "mile per US gallon;miles per US gallon;mpg"), 0078 symbolString, 0079 ki18nc("amount in units (real)", "%1 miles per US gallon"), 0080 ki18ncp("amount in units (integer)", "%1 mile per US gallon", "%1 miles per US gallon"), 0081 true))); 0082 0083 d->addCommonUnit(UnitPrivate::makeUnit(new FuelUnitPrivate( 0084 FuelEfficiencyCategory, 0085 MilePerImperialGallon, 0086 282.481, 0087 i18nc("fuelefficiency unit symbol", "mpg (imperial)"), 0088 i18nc("unit description in lists", "miles per imperial gallon"), 0089 i18nc("unit synonyms for matching user input", "mile per imperial gallon;miles per imperial gallon;mpg (imperial);imp mpg;mpg (imp)"), 0090 symbolString, 0091 ki18nc("amount in units (real)", "%1 miles per imperial gallon"), 0092 ki18ncp("amount in units (integer)", "%1 mile per imperial gallon", "%1 miles per imperial gallon"), 0093 true))); 0094 0095 d->addCommonUnit(UnitPrivate::makeUnit(new FuelUnitPrivate(FuelEfficiencyCategory, 0096 KilometrePerLitre, 0097 100.0, 0098 i18nc("fuelefficiency unit symbol", "kmpl"), 0099 i18nc("unit description in lists", "kilometers per liter"), 0100 i18nc("unit synonyms for matching user input", "kilometer per liter;kilometers per liter;kmpl;km/l"), 0101 symbolString, 0102 ki18nc("amount in units (real)", "%1 kilometers per liter"), 0103 ki18ncp("amount in units (integer)", "%1 kilometer per liter", "%1 kilometers per liter"), 0104 true))); 0105 0106 return c; 0107 } 0108 0109 } // KUnitConversion namespace