QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
FactMetaData.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QHash>
4#include <QtCore/QObject>
5#include <QtCore/QString>
6#include <QtCore/QVariant>
7#include <QtQmlIntegration/QtQmlIntegration>
8
10
15
16class FactMetaData : public QObject
17{
18 Q_OBJECT
19 QML_ELEMENT
20
21 friend class SettingsManager;
22
23public:
40 Q_ENUM(ValueType_t)
41
42 typedef QVariant (*Translator)(const QVariant &from);
43
44 // Custom function to validate a cooked value.
45 // @return Error string for failed validation explanation to user. Empty string indicates no error.
46 typedef QString (*CustomCookedValidator)(const QVariant &cookedValue);
47
48 typedef QHash<QString /* param Name */, FactMetaData*> NameToMetaDataMap_t;
49
50 explicit FactMetaData(QObject *parent = nullptr);
51 explicit FactMetaData(ValueType_t type, QObject *parent = nullptr);
52 explicit FactMetaData(ValueType_t type, const QString &name, QObject *parent = nullptr);
53 explicit FactMetaData(const FactMetaData &other, QObject *parent = nullptr);
54 ~FactMetaData();
55
56 typedef QMap<QString, QString> DefineMap_t;
57
58 static QMap<QString, FactMetaData*> createMapFromJsonFile(const QString &jsonFilename, QObject *metaDataParent);
59 static QMap<QString, FactMetaData*> createMapFromJsonArray(const QJsonArray &jsonArray, const DefineMap_t &defineMap, QObject *metaDataParent);
60
61 static FactMetaData *createFromJsonObject(const QJsonObject &json, const QMap<QString, QString> &defineMap, QObject *metaDataParent);
62
63 const FactMetaData &operator=(const FactMetaData &other);
64
66 static QVariant metersToAppSettingsHorizontalDistanceUnits(const QVariant &meters);
67
69 static QVariant appSettingsHorizontalDistanceUnitsToMeters(const QVariant &distance);
70
73
75 static QVariant metersToAppSettingsVerticalDistanceUnits(const QVariant &meters);
76
78 static QVariant appSettingsVerticalDistanceUnitsToMeters(const QVariant &distance);
79
82
84 static QVariant gramsToAppSettingsWeightUnits(const QVariant &grams);
85
87 static QVariant appSettingsWeightUnitsToGrams(const QVariant &weight);
88
90 static QString appSettingsWeightUnitsString();
91
93 static QVariant squareMetersToAppSettingsAreaUnits(const QVariant &squareMeters);
94
96 static QVariant appSettingsAreaUnitsToSquareMeters(const QVariant &area);
97
99 static QString appSettingsAreaUnitsString();
100
102 static QVariant metersSecondToAppSettingsSpeedUnits(const QVariant &metersSecond);
103
105 static QVariant appSettingsSpeedUnitsToMetersSecond(const QVariant &speed);
106
108 static QString appSettingsSpeedUnitsString();
109
110 static const QString defaultCategory() { return QString(kDefaultCategory); }
111 static const QString defaultGroup() { return QString(kDefaultGroup); }
112
113 // Splits a comma separated list of strings into a QStringList. Taking into account the possibility that
114 // the commas may have been translated to other characters such as chinese commas.
115 static QStringList splitTranslatedList(const QString &translatedList);
116
117 int decimalPlaces() const;
118 QVariant rawDefaultValue() const;
119 QVariant cookedDefaultValue() const { return _rawTranslator(rawDefaultValue()); }
120 bool defaultValueAvailable() const { return _defaultValueAvailable; }
121 QStringList bitmaskStrings() const { return _bitmaskStrings; }
122 QVariantList bitmaskValues() const { return _bitmaskValues; }
123 QStringList enumStrings() const { return _enumStrings; }
124 QVariantList enumValues() const { return _enumValues; }
125 QString category() const { return _category; }
126 QString group() const { return _group; }
127 QString longDescription() const { return _longDescription;}
128 QVariant rawMax() const { return _rawMax; }
129 QVariant cookedMax() const;
130 bool maxIsDefaultForType() const { return (_rawMax == _maxForType()); }
131 QVariant rawMin() const { return _rawMin; }
132 QVariant cookedMin() const;
133 bool minIsDefaultForType() const { return (_rawMin == _minForType()); }
134 QVariant rawUserMin() const { return _rawUserMin; }
135 QVariant rawUserMax() const { return _rawUserMax; }
136 QVariant cookedUserMin() const;
137 QVariant cookedUserMax() const;
138 QString name() const { return _name; }
139 QString label() const { return _label; }
140 QString shortDescription() const { return _shortDescription; }
141 ValueType_t type() const { return _type; }
142 QString rawUnits() const { return _rawUnits; }
143 QString cookedUnits() const { return _cookedUnits; }
144 bool vehicleRebootRequired() const { return _vehicleRebootRequired; }
145 bool qgcRebootRequired() const { return _qgcRebootRequired; }
146 bool hasControl() const { return _hasControl; }
147 bool readOnly() const { return _readOnly; }
148 bool writeOnly() const { return _writeOnly; }
149 bool volatileValue() const { return _volatile; }
150
153 double rawIncrement() const { return _rawIncrement; }
154 double cookedIncrement() const;
155
156 Translator rawTranslator() const { return _rawTranslator; }
157 Translator cookedTranslator() const { return _cookedTranslator; }
158
160 void addBitmaskInfo(const QString &name, const QVariant &value);
161
163 void addEnumInfo(const QString &name, const QVariant &value);
164
166 void removeEnumInfo(const QVariant &value);
167
168 void setDecimalPlaces(int decimalPlaces) { _decimalPlaces = decimalPlaces; }
169 void setRawDefaultValue(const QVariant &rawDefaultValue);
170
177
178 void setBitmaskInfo(const QStringList &strings, const QVariantList &values);
179 void setEnumInfo(const QStringList &strings, const QVariantList &values);
180 void setCategory(const QString &category) { _category = category; }
181 void setGroup(const QString &group) { _group = group; }
182 void setLongDescription(const QString &longDescription) { _longDescription = longDescription;}
183 void setRawMax(const QVariant &rawMax);
184 void setRawMin(const QVariant &rawMin);
185 void setRawUserMin(const QVariant &rawUserMin);
186 void setRawUserMax(const QVariant &rawUserMax);
187 void setName(const QString &name) { _name = name; }
188 void setLabel(const QString &label) { _label = label; }
189 void setShortDescription(const QString &shortDescription) { _shortDescription = shortDescription; }
190 void setRawUnits(const QString &rawUnits);
191 void setVehicleRebootRequired(bool rebootRequired) { _vehicleRebootRequired = rebootRequired; }
192 void setQGCRebootRequired(bool rebootRequired) { _qgcRebootRequired = rebootRequired; }
193 void setRawIncrement(double increment) { _rawIncrement = increment; }
194 void setHasControl(bool bValue) { _hasControl = bValue; }
195 void setReadOnly(bool bValue) { _readOnly = bValue; }
196 void setWriteOnly(bool bValue) { _writeOnly = bValue; }
197 void setVolatileValue(bool bValue);
198
199 void setTranslators(Translator rawTranslator_, Translator cookedTranslator_);
200
203
210 bool convertAndValidateRaw(const QVariant &rawValue, bool convertOnly, QVariant &typedValue, QString &errorString) const;
211
213 bool convertAndValidateCooked(const QVariant &cookedValue, bool convertOnly, QVariant &typedValue, QString &errorString) const;
214
219 bool clampValue(const QVariant &cookedValue, QVariant &typedValue) const;
220
223 void setCustomCookedValidator(CustomCookedValidator customValidator) { _customCookedValidator = customValidator; }
224
225 static constexpr int kDefaultDecimalPlaces = 3;
226 static constexpr int kUnknownDecimalPlaces = -1;
227
228 static ValueType_t stringToType(const QString &typeString, bool &unknownType);
229 static QString typeToString(ValueType_t type);
230 static size_t typeToSize(ValueType_t type);
231
232 static QVariant minForType(ValueType_t type);
233 static QVariant maxForType(ValueType_t type);
234
235 static constexpr const char *kDefaultCategory = QT_TRANSLATE_NOOP("FactMetaData", "Other");
236 static constexpr const char *kDefaultGroup = QT_TRANSLATE_NOOP("FactMetaData", "Misc");
237 static constexpr const char *qgcFileType = "FactMetaData";
238
239private:
240 QVariant _minForType() const { return minForType(_type); };
241 QVariant _maxForType() const { return maxForType(_type); };
243 void _setAppSettingsTranslators();
244
246 template<class T>
247 void clamp(QVariant& variantValue) const {
248 if (cookedMin().value<T>() > variantValue.value<T>()) {
249 variantValue = cookedMin();
250 } else if(variantValue.value<T>() > cookedMax().value<T>()) {
251 variantValue = cookedMax();
252 }
253 }
254
255 template<class T>
256 bool isInCookedLimit(const QVariant &variantValue) const {
257 return ((cookedMin().value<T>() <= variantValue.value<T>()) && (variantValue.value<T>() <= cookedMax().value<T>()));
258 }
259
260 template<class T>
261 bool isInRawLimit(const QVariant &variantValue) const {
262 return ((rawMin().value<T>() <= variantValue.value<T>()) && (variantValue.value<T>() <= rawMax().value<T>()));
263 }
264
265 bool isInRawMinLimit(const QVariant &variantValue) const;
266 bool isInRawMaxLimit(const QVariant &variantValue) const;
267
268 static bool _parseEnum(const QString& name, const QJsonObject &jsonObject, const DefineMap_t &defineMap, QStringList &rgDescriptions, QStringList &rgValues, QString &errorString);
269 static bool _parseValuesArray(const QJsonObject &jsonObject, QStringList &rgDescriptions, QList<double> &rgValues, QString &errorString);
270 static bool _parseBitmaskArray(const QJsonObject &jsonObject, QStringList &rgDescriptions, QList<int> &rgValues, QString &errorString);
271
272 // Built in translators
273 static QVariant _defaultTranslator(const QVariant &from) { return from; }
274 static QVariant _degreesToRadians(const QVariant &degrees);
275 static QVariant _radiansToDegrees(const QVariant &radians);
276 static QVariant _centiDegreesToDegrees(const QVariant &centiDegrees);
277 static QVariant _degreesToCentiDegrees(const QVariant &degrees);
278 static QVariant _centiCelsiusToCelsius(const QVariant &centiCelsius);
279 static QVariant _celsiusToCentiCelsius(const QVariant &celsius);
280 static QVariant _userGimbalDegreesToMavlinkGimbalDegrees(const QVariant &userGimbalDegrees);
281 static QVariant _mavlinkGimbalDegreesToUserGimbalDegrees(const QVariant &mavlinkGimbalDegrees);
282 static QVariant _metersToFeet(const QVariant &meters);
283 static QVariant _feetToMeters(const QVariant &feet);
284 static QVariant _squareMetersToSquareKilometers(const QVariant &squareMeters);
285 static QVariant _squareKilometersToSquareMeters(const QVariant &squareKilometers);
286 static QVariant _squareMetersToHectares(const QVariant &squareMeters);
287 static QVariant _hectaresToSquareMeters(const QVariant &hectares);
288 static QVariant _squareMetersToSquareFeet(const QVariant &squareMeters);
289 static QVariant _squareFeetToSquareMeters(const QVariant &squareFeet);
290 static QVariant _squareMetersToAcres(const QVariant &squareMeters);
291 static QVariant _acresToSquareMeters(const QVariant &acres);
292 static QVariant _squareMetersToSquareMiles(const QVariant &squareMeters);
293 static QVariant _squareMilesToSquareMeters(const QVariant &squareMiles);
294 static QVariant _metersPerSecondToMilesPerHour(const QVariant &metersPerSecond);
295 static QVariant _milesPerHourToMetersPerSecond(const QVariant &milesPerHour);
296 static QVariant _metersPerSecondToKilometersPerHour(const QVariant &metersPerSecond);
297 static QVariant _kilometersPerHourToMetersPerSecond(const QVariant &kilometersPerHour);
298 static QVariant _metersPerSecondToKnots(const QVariant &metersPerSecond);
299 static QVariant _knotsToMetersPerSecond(const QVariant &knots);
300 static QVariant _percentToNorm(const QVariant &percent);
301 static QVariant _normToPercent(const QVariant &normalized);
302 static QVariant _centimetersToInches(const QVariant &centimeters);
303 static QVariant _inchesToCentimeters(const QVariant &inches);
304 static QVariant _celsiusToFarenheit(const QVariant &celsius);
305 static QVariant _farenheitToCelsius(const QVariant &farenheit);
306 static QVariant _kilogramsToGrams(const QVariant &kg);
307 static QVariant _ouncesToGrams(const QVariant &oz);
308 static QVariant _poundsToGrams(const QVariant &lbs);
309 static QVariant _gramsToKilograms(const QVariant &g);
310 static QVariant _gramsToOunces(const QVariant &g);
311 static QVariant _gramsToPunds(const QVariant &g);
312
313 enum UnitTypes {
314 UnitHorizontalDistance = 0,
315 UnitVerticalDistance,
316 UnitArea,
317 UnitSpeed,
318 UnitTemperature,
319 UnitWeight
320 };
321
322 struct AppSettingsTranslation_s {
323 QString rawUnits;
324 const char *cookedUnits = nullptr;
325 UnitTypes unitType = UnitHorizontalDistance;
326 uint32_t unitOption = 0;
327 Translator rawTranslator;
328 Translator cookedTranslator;
329 };
330
331 static const AppSettingsTranslation_s *_findAppSettingsUnitsTranslation(const QString &rawUnits, UnitTypes type);
332
333 static void _loadJsonDefines(const QJsonObject &jsonDefinesObject, QMap<QString, QString> &defineMap);
334
335 ValueType_t _type = valueTypeInt32; // must be first for correct constructor init
336 int _decimalPlaces = kUnknownDecimalPlaces;
337 QVariant _rawDefaultValue = 0;
338 bool _defaultValueAvailable = false;
339 QStringList _bitmaskStrings;
340 QVariantList _bitmaskValues;
341 QStringList _enumStrings;
342 QVariantList _enumValues;
343 QString _category = kDefaultCategory;
344 QString _group = kDefaultGroup;
345 QString _longDescription;
346 QVariant _rawMax = _maxForType();
347 QVariant _rawMin = _minForType();
348 QVariant _rawUserMin; // Specifically left as unset by default to indicate no user min
349 QVariant _rawUserMax; // Specifically left as unset by default to indicate no user max
350 QString _name;
351 QString _label;
352 QString _shortDescription;
353 QString _rawUnits;
354 QString _cookedUnits;
355 Translator _rawTranslator = _defaultTranslator;
356 Translator _cookedTranslator = _defaultTranslator;
357 bool _vehicleRebootRequired = false;
358 bool _qgcRebootRequired = false;
359 double _rawIncrement = std::numeric_limits<double>::quiet_NaN();
360 bool _hasControl = true;
361 bool _readOnly = false;
362 bool _writeOnly = false;
363 bool _volatile = false;
364 CustomCookedValidator _customCookedValidator = nullptr;
365
366 // Exact conversion constants
367 static constexpr struct UnitConsts_s {
368 static constexpr const qreal secondsPerHour = 3600.0;
369 static constexpr const qreal knotsToKPH = 1.852;
370 static constexpr const qreal milesToMeters = 1609.344;
371 static constexpr const qreal feetToMeters = 0.3048;
372 static constexpr const qreal inchesToCentimeters = 2.54;
373 static constexpr const qreal ouncesToGrams = 28.3495;
374 static constexpr const qreal poundsToGrams = 453.592;
375 static constexpr const qreal acresToSquareMeters = 4046.86;
376 static constexpr const qreal squareMetersToAcres = 0.000247105;
377 static constexpr const qreal feetToSquareMeters = 0.0929;
378 static constexpr const qreal squareMetersToSquareFeet = 10.7639;
379 static constexpr const qreal squareMetersToSquareMiles = 3.86102e-7;
380 static constexpr const qreal squareMilesToSquareMeters = 2589988.11;
381 } constants{};
382
383 struct BuiltInTranslation_s {
384 QString rawUnits;
385 const char *cookedUnits;
386 Translator rawTranslator;
387 Translator cookedTranslator;
388 };
389
390 static const BuiltInTranslation_s _rgBuiltInTranslations[];
391 static const AppSettingsTranslation_s _rgAppSettingsTranslations[];
392
393 static constexpr const char *_jsonMetaDataDefinesName = "QGC.MetaData.Defines";
394 static constexpr const char *_jsonMetaDataFactsName = "QGC.MetaData.Facts";
395 static constexpr const char *_enumStringsJsonKey = "enumStrings";
396 static constexpr const char *_enumValuesJsonKey = "enumValues";
397
398 // This is the newer json format for enums and bitmasks. They are used by the new COMPONENT_METADATA parameter metadata for example.
399 static constexpr const char *_enumValuesArrayJsonKey = "values";
400 static constexpr const char *_enumBitmaskArrayJsonKey = "bitmask";
401 static constexpr const char *_enumValuesArrayValueJsonKey = "value";
402 static constexpr const char *_enumValuesArrayDescriptionJsonKey = "description";
403 static constexpr const char *_enumBitmaskArrayIndexJsonKey = "index";
404 static constexpr const char *_enumBitmaskArrayDescriptionJsonKey = "description";
405
406 static constexpr const char *_rgKnownTypeStrings[] = {
407 "Uint8",
408 "Int8",
409 "Uint16",
410 "Int16",
411 "Uint32",
412 "Int32",
413 "Uint64",
414 "Int64",
415 "Float",
416 "Double",
417 "String",
418 "Bool",
419 "ElapsedSeconds",
420 "Custom",
421 };
422
423 static constexpr const ValueType_t _rgKnownValueTypes[] = {
438 };
439
440 static constexpr const char *_decimalPlacesJsonKey = "decimalPlaces";
441 static constexpr const char *_nameJsonKey = "name";
442 static constexpr const char *_labelJsonKey = "label";
443 static constexpr const char *_typeJsonKey = "type";
444 static constexpr const char *_shortDescriptionJsonKey = "shortDesc";
445 static constexpr const char *_longDescriptionJsonKey = "longDesc";
446 static constexpr const char *_unitsJsonKey = "units";
447 static constexpr const char *_defaultValueJsonKey = "default";
448 static constexpr const char *_mobileDefaultValueJsonKey = "mobileDefault";
449 static constexpr const char *_minJsonKey = "min";
450 static constexpr const char *_maxJsonKey = "max";
451 static constexpr const char *_userMinJsonKey = "userMin";
452 static constexpr const char *_userMaxJsonKey = "userMax";
453 static constexpr const char *_incrementJsonKey = "increment";
454 static constexpr const char *_hasControlJsonKey = "control";
455 static constexpr const char *_qgcRebootRequiredJsonKey = "qgcRebootRequired";
456 static constexpr const char *_rebootRequiredJsonKey = "rebootRequired";
457 static constexpr const char *_categoryJsonKey = "category";
458 static constexpr const char *_groupJsonKey = "group";
459 static constexpr const char *_volatileJsonKey = "volatile";
460 static constexpr const char *_readOnlyJsonKey = "readOnly";
461};
QString errorString
Holds the meta data associated with a Fact.
static FactMetaData * createFromJsonObject(const QJsonObject &json, const QMap< QString, QString > &defineMap, QObject *metaDataParent)
QString label() const
QHash< QString, FactMetaData * > NameToMetaDataMap_t
void setRawUnits(const QString &rawUnits)
void setDecimalPlaces(int decimalPlaces)
void setHasControl(bool bValue)
QStringList enumStrings() const
static constexpr const char * qgcFileType
QVariant cookedDefaultValue() const
void setRawUserMin(const QVariant &rawUserMin)
static QVariant appSettingsAreaUnitsToSquareMeters(const QVariant &area)
Converts from user specified distance unit to meters.
static QVariant metersToAppSettingsVerticalDistanceUnits(const QVariant &meters)
Converts from meters to the user specified vertical distance unit.
bool hasControl() const
void setShortDescription(const QString &shortDescription)
void setRawDefaultValueFirmwareForce(const QVariant &rawDefaultValue)
QVariant cookedMin() const
static QVariant metersToAppSettingsHorizontalDistanceUnits(const QVariant &meters)
Converts from meters to the user specified horizontal distance unit.
QStringList bitmaskStrings() const
static QVariant metersSecondToAppSettingsSpeedUnits(const QVariant &metersSecond)
Converts from meters/second to the user specified speed unit.
bool clampValue(const QVariant &cookedValue, QVariant &typedValue) const
bool qgcRebootRequired() const
bool convertAndValidateCooked(const QVariant &cookedValue, bool convertOnly, QVariant &typedValue, QString &errorString) const
Same as convertAndValidateRaw except for cookedValue input.
QVariant cookedUserMax() const
void setQGCRebootRequired(bool rebootRequired)
static size_t typeToSize(ValueType_t type)
Translator cookedTranslator() const
QVariant cookedMax() const
static QStringList splitTranslatedList(const QString &translatedList)
static QString typeToString(ValueType_t type)
QString group() const
static QMap< QString, FactMetaData * > createMapFromJsonFile(const QString &jsonFilename, QObject *metaDataParent)
QVariant rawMin() const
@ valueTypeElapsedTimeInSeconds
static constexpr const char * kDefaultGroup
void setName(const QString &name)
QVariantList enumValues() const
void addBitmaskInfo(const QString &name, const QVariant &value)
Used to add new values to the bitmask lists after the meta data has been loaded.
void setLongDescription(const QString &longDescription)
static QMap< QString, FactMetaData * > createMapFromJsonArray(const QJsonArray &jsonArray, const DefineMap_t &defineMap, QObject *metaDataParent)
QString cookedUnits() const
QString shortDescription() const
static QString appSettingsVerticalDistanceUnitsString()
Returns the string for vertical distance units which has configued by user.
void setRawUserMax(const QVariant &rawUserMax)
void setLabel(const QString &label)
bool maxIsDefaultForType() const
static constexpr int kUnknownDecimalPlaces
Number of decimal places to specify is not known.
static constexpr const char * kDefaultCategory
int decimalPlaces() const
void setVehicleRebootRequired(bool rebootRequired)
static constexpr int kDefaultDecimalPlaces
Default value for decimal places if not specified/known.
static QString appSettingsWeightUnitsString()
Returns the string for weight units which has configued by user.
void setTranslators(Translator rawTranslator_, Translator cookedTranslator_)
void setRawMin(const QVariant &rawMin)
QVariant cookedUserMin() const
QVariant rawUserMin() const
void setCategory(const QString &category)
bool convertAndValidateRaw(const QVariant &rawValue, bool convertOnly, QVariant &typedValue, QString &errorString) const
QString rawUnits() const
QVariant rawUserMax() const
static const QString defaultCategory()
QString(* CustomCookedValidator)(const QVariant &cookedValue)
static QString appSettingsAreaUnitsString()
Returns the string for distance units which has configued by user.
static QVariant maxForType(ValueType_t type)
void setWriteOnly(bool bValue)
void setRawDefaultValue(const QVariant &rawDefaultValue)
static const QString defaultGroup()
static QVariant gramsToAppSettingsWeightUnits(const QVariant &grams)
Converts from grams to the user specified weight unit.
static QString appSettingsHorizontalDistanceUnitsString()
Returns the string for horizontal distance units which has configued by user.
double rawIncrement() const
void setEnumInfo(const QStringList &strings, const QVariantList &values)
void setBitmaskInfo(const QStringList &strings, const QVariantList &values)
void setRawMax(const QVariant &rawMax)
bool readOnly() const
static QVariant squareMetersToAppSettingsAreaUnits(const QVariant &squareMeters)
Converts from meters to the user specified distance unit.
QString category() const
void removeEnumInfo(const QVariant &value)
Used to remove values from the enum lists after the meta data has been loaded.
QVariant(* Translator)(const QVariant &from)
static QVariant minForType(ValueType_t type)
static QVariant appSettingsVerticalDistanceUnitsToMeters(const QVariant &distance)
Converts from user specified vertical distance unit to meters.
QString longDescription() const
bool minIsDefaultForType() const
void setRawIncrement(double increment)
bool writeOnly() const
void addEnumInfo(const QString &name, const QVariant &value)
Used to add new values to the enum lists after the meta data has been loaded.
void setVolatileValue(bool bValue)
QString name() const
static QVariant appSettingsHorizontalDistanceUnitsToMeters(const QVariant &distance)
Converts from user specified horizontal distance unit to meters.
void setGroup(const QString &group)
QVariantList bitmaskValues() const
QVariant rawDefaultValue() const
ValueType_t type() const
static ValueType_t stringToType(const QString &typeString, bool &unknownType)
static QVariant appSettingsSpeedUnitsToMetersSecond(const QVariant &speed)
Converts from user specified speed unit to meters/second.
void setCustomCookedValidator(CustomCookedValidator customValidator)
static QVariant appSettingsWeightUnitsToGrams(const QVariant &weight)
Converts from user specified weight unit to grams.
bool vehicleRebootRequired() const
bool volatileValue() const
QVariant rawMax() const
bool defaultValueAvailable() const
double cookedIncrement() const
void setBuiltInTranslator()
Set the translators to the standard built in versions.
QMap< QString, QString > DefineMap_t
static QString appSettingsSpeedUnitsString()
Returns the string for speed units which has configued by user.
void setReadOnly(bool bValue)
Translator rawTranslator() const
Provides access to all app settings.