128 QString
group()
const {
return _group; }
130 QVariant
rawMax()
const {
return _rawMax; }
133 QVariant
rawMin()
const {
return _rawMin; }
140 QString
name()
const {
return _name; }
171 void setBitmaskInfo(
const QStringList &strings,
const QVariantList &values);
172 void setEnumInfo(
const QStringList &strings,
const QVariantList &values);
211 bool clampValue(
const QVariant &cookedValue, QVariant &typedValue)
const;
227 static constexpr const char *
kDefaultCategory = QT_TRANSLATE_NOOP(
"FactMetaData",
"Other");
228 static constexpr const char *
kDefaultGroup = QT_TRANSLATE_NOOP(
"FactMetaData",
"Misc");
232 QVariant _minForType()
const {
return minForType(_type); };
233 QVariant _maxForType()
const {
return maxForType(_type); };
235 void _setAppSettingsTranslators();
239 void clamp(QVariant& variantValue)
const {
240 if (
cookedMin().value<T>() > variantValue.value<T>()) {
242 }
else if(variantValue.value<T>() >
cookedMax().value<T>()) {
248 bool isInCookedLimit(
const QVariant &variantValue)
const {
249 return ((
cookedMin().value<T>() <= variantValue.value<T>()) && (variantValue.value<T>() <=
cookedMax().value<T>()));
253 bool isInRawLimit(
const QVariant &variantValue)
const {
254 return ((
rawMin().value<T>() <= variantValue.value<T>()) && (variantValue.value<T>() <=
rawMax().value<T>()));
257 bool isInRawMinLimit(
const QVariant &variantValue)
const;
258 bool isInRawMaxLimit(
const QVariant &variantValue)
const;
260 static bool _parseEnum(
const QString&
name,
const QJsonObject &jsonObject,
const DefineMap_t &defineMap, QStringList &rgDescriptions, QStringList &rgValues, QString &
errorString);
261 static bool _parseValuesArray(
const QJsonObject &jsonObject, QStringList &rgDescriptions, QList<double> &rgValues, QString &
errorString);
262 static bool _parseBitmaskArray(
const QJsonObject &jsonObject, QStringList &rgDescriptions, QList<int> &rgValues, QString &
errorString);
265 static QVariant _defaultTranslator(
const QVariant &from) {
return from; }
266 static QVariant _degreesToRadians(
const QVariant °rees);
267 static QVariant _radiansToDegrees(
const QVariant &radians);
268 static QVariant _centiDegreesToDegrees(
const QVariant ¢iDegrees);
269 static QVariant _degreesToCentiDegrees(
const QVariant °rees);
270 static QVariant _centiCelsiusToCelsius(
const QVariant ¢iCelsius);
271 static QVariant _celsiusToCentiCelsius(
const QVariant &celsius);
272 static QVariant _userGimbalDegreesToMavlinkGimbalDegrees(
const QVariant &userGimbalDegrees);
273 static QVariant _mavlinkGimbalDegreesToUserGimbalDegrees(
const QVariant &mavlinkGimbalDegrees);
274 static QVariant _metersToFeet(
const QVariant &meters);
275 static QVariant _feetToMeters(
const QVariant &feet);
276 static QVariant _squareMetersToSquareKilometers(
const QVariant &squareMeters);
277 static QVariant _squareKilometersToSquareMeters(
const QVariant &squareKilometers);
278 static QVariant _squareMetersToHectares(
const QVariant &squareMeters);
279 static QVariant _hectaresToSquareMeters(
const QVariant &hectares);
280 static QVariant _squareMetersToSquareFeet(
const QVariant &squareMeters);
281 static QVariant _squareFeetToSquareMeters(
const QVariant &squareFeet);
282 static QVariant _squareMetersToAcres(
const QVariant &squareMeters);
283 static QVariant _acresToSquareMeters(
const QVariant &acres);
284 static QVariant _squareMetersToSquareMiles(
const QVariant &squareMeters);
285 static QVariant _squareMilesToSquareMeters(
const QVariant &squareMiles);
286 static QVariant _metersPerSecondToMilesPerHour(
const QVariant &metersPerSecond);
287 static QVariant _milesPerHourToMetersPerSecond(
const QVariant &milesPerHour);
288 static QVariant _metersPerSecondToKilometersPerHour(
const QVariant &metersPerSecond);
289 static QVariant _kilometersPerHourToMetersPerSecond(
const QVariant &kilometersPerHour);
290 static QVariant _metersPerSecondToKnots(
const QVariant &metersPerSecond);
291 static QVariant _knotsToMetersPerSecond(
const QVariant &knots);
292 static QVariant _percentToNorm(
const QVariant &percent);
293 static QVariant _normToPercent(
const QVariant &normalized);
294 static QVariant _centimetersToInches(
const QVariant ¢imeters);
295 static QVariant _inchesToCentimeters(
const QVariant &inches);
296 static QVariant _celsiusToFarenheit(
const QVariant &celsius);
297 static QVariant _farenheitToCelsius(
const QVariant &farenheit);
298 static QVariant _kilogramsToGrams(
const QVariant &kg);
299 static QVariant _ouncesToGrams(
const QVariant &oz);
300 static QVariant _poundsToGrams(
const QVariant &lbs);
301 static QVariant _gramsToKilograms(
const QVariant &g);
302 static QVariant _gramsToOunces(
const QVariant &g);
303 static QVariant _gramsToPunds(
const QVariant &g);
306 UnitHorizontalDistance = 0,
307 UnitVerticalDistance,
314 struct AppSettingsTranslation_s {
316 const char *cookedUnits =
nullptr;
317 UnitTypes unitType = UnitHorizontalDistance;
318 uint32_t unitOption = 0;
323 static const AppSettingsTranslation_s *_findAppSettingsUnitsTranslation(
const QString &
rawUnits, UnitTypes
type);
325 static void _loadJsonDefines(
const QJsonObject &jsonDefinesObject, QMap<QString, QString> &defineMap);
329 QVariant _rawDefaultValue = 0;
330 bool _defaultValueAvailable =
false;
331 QStringList _bitmaskStrings;
332 QVariantList _bitmaskValues;
333 QStringList _enumStrings;
334 QVariantList _enumValues;
337 QString _longDescription;
338 QVariant _rawMax = _maxForType();
339 QVariant _rawMin = _minForType();
340 QVariant _rawUserMin;
341 QVariant _rawUserMax;
343 QString _shortDescription;
345 QString _cookedUnits;
346 Translator _rawTranslator = _defaultTranslator;
347 Translator _cookedTranslator = _defaultTranslator;
348 bool _vehicleRebootRequired =
false;
349 bool _qgcRebootRequired =
false;
350 double _rawIncrement = std::numeric_limits<double>::quiet_NaN();
351 bool _hasControl =
true;
352 bool _readOnly =
false;
353 bool _writeOnly =
false;
354 bool _volatile =
false;
358 static constexpr struct UnitConsts_s {
359 static constexpr const qreal secondsPerHour = 3600.0;
360 static constexpr const qreal knotsToKPH = 1.852;
361 static constexpr const qreal milesToMeters = 1609.344;
362 static constexpr const qreal feetToMeters = 0.3048;
363 static constexpr const qreal inchesToCentimeters = 2.54;
364 static constexpr const qreal ouncesToGrams = 28.3495;
365 static constexpr const qreal poundsToGrams = 453.592;
366 static constexpr const qreal acresToSquareMeters = 4046.86;
367 static constexpr const qreal squareMetersToAcres = 0.000247105;
368 static constexpr const qreal feetToSquareMeters = 0.0929;
369 static constexpr const qreal squareMetersToSquareFeet = 10.7639;
370 static constexpr const qreal squareMetersToSquareMiles = 3.86102e-7;
371 static constexpr const qreal squareMilesToSquareMeters = 2589988.11;
374 struct BuiltInTranslation_s {
376 const char *cookedUnits;
381 static const BuiltInTranslation_s _rgBuiltInTranslations[];
382 static const AppSettingsTranslation_s _rgAppSettingsTranslations[];
384 static constexpr const char *_jsonMetaDataDefinesName =
"QGC.MetaData.Defines";
385 static constexpr const char *_jsonMetaDataFactsName =
"QGC.MetaData.Facts";
386 static constexpr const char *_enumStringsJsonKey =
"enumStrings";
387 static constexpr const char *_enumValuesJsonKey =
"enumValues";
390 static constexpr const char *_enumValuesArrayJsonKey =
"values";
391 static constexpr const char *_enumBitmaskArrayJsonKey =
"bitmask";
392 static constexpr const char *_enumValuesArrayValueJsonKey =
"value";
393 static constexpr const char *_enumValuesArrayDescriptionJsonKey =
"description";
394 static constexpr const char *_enumBitmaskArrayIndexJsonKey =
"index";
395 static constexpr const char *_enumBitmaskArrayDescriptionJsonKey =
"description";
397 static constexpr const char *_rgKnownTypeStrings[] = {
414 static constexpr const ValueType_t _rgKnownValueTypes[] = {
431 static constexpr const char *_decimalPlacesJsonKey =
"decimalPlaces";
432 static constexpr const char *_nameJsonKey =
"name";
433 static constexpr const char *_typeJsonKey =
"type";
434 static constexpr const char *_shortDescriptionJsonKey =
"shortDesc";
435 static constexpr const char *_longDescriptionJsonKey =
"longDesc";
436 static constexpr const char *_unitsJsonKey =
"units";
437 static constexpr const char *_defaultValueJsonKey =
"default";
438 static constexpr const char *_mobileDefaultValueJsonKey =
"mobileDefault";
439 static constexpr const char *_minJsonKey =
"min";
440 static constexpr const char *_maxJsonKey =
"max";
441 static constexpr const char *_userMinJsonKey =
"userMin";
442 static constexpr const char *_userMaxJsonKey =
"userMax";
443 static constexpr const char *_incrementJsonKey =
"increment";
444 static constexpr const char *_hasControlJsonKey =
"control";
445 static constexpr const char *_qgcRebootRequiredJsonKey =
"qgcRebootRequired";
446 static constexpr const char *_rebootRequiredJsonKey =
"rebootRequired";
447 static constexpr const char *_categoryJsonKey =
"category";
448 static constexpr const char *_groupJsonKey =
"group";
449 static constexpr const char *_volatileJsonKey =
"volatile";