132 QString
group()
const {
return _group; }
134 QVariant
rawMax()
const {
return _rawMax; }
137 QVariant
rawMin()
const {
return _rawMin; }
144 QString
name()
const {
return _name; }
145 QString
label()
const {
return _label; }
184 void setBitmaskInfo(
const QStringList &strings,
const QVariantList &values);
185 void setEnumInfo(
const QStringList &strings,
const QVariantList &values);
225 bool clampValue(
const QVariant &cookedValue, QVariant &typedValue)
const;
241 static constexpr const char *
kDefaultCategory = QT_TRANSLATE_NOOP(
"FactMetaData",
"Other");
242 static constexpr const char *
kDefaultGroup = QT_TRANSLATE_NOOP(
"FactMetaData",
"Misc");
250 void _appSettingsUnitsChanged();
253 QVariant _minForType()
const {
return minForType(_type); };
254 QVariant _maxForType()
const {
return maxForType(_type); };
256 void _setAppSettingsTranslators();
260 void clamp(QVariant& variantValue)
const {
261 if (
cookedMin().value<T>() > variantValue.value<T>()) {
263 }
else if(variantValue.value<T>() >
cookedMax().value<T>()) {
269 bool isInCookedLimit(
const QVariant &variantValue)
const {
270 return ((
cookedMin().value<T>() <= variantValue.value<T>()) && (variantValue.value<T>() <=
cookedMax().value<T>()));
274 bool isInRawLimit(
const QVariant &variantValue)
const {
275 return ((
rawMin().value<T>() <= variantValue.value<T>()) && (variantValue.value<T>() <=
rawMax().value<T>()));
278 bool isInRawMinLimit(
const QVariant &variantValue)
const;
279 bool isInRawMaxLimit(
const QVariant &variantValue)
const;
281 static bool _parseEnum(
const QString&
name,
const QJsonObject &jsonObject,
const DefineMap_t &defineMap, QStringList &rgDescriptions, QStringList &rgValues, QString &
errorString);
282 static bool _parseValuesArray(
const QJsonObject &jsonObject, QStringList &rgDescriptions, QList<double> &rgValues, QString &
errorString);
283 static bool _parseBitmaskArray(
const QJsonObject &jsonObject, QStringList &rgDescriptions, QList<int> &rgValues, QString &
errorString);
286 static QVariant _defaultTranslator(
const QVariant &from) {
return from; }
287 static QVariant _degreesToRadians(
const QVariant °rees);
288 static QVariant _radiansToDegrees(
const QVariant &radians);
289 static QVariant _centiDegreesToDegrees(
const QVariant ¢iDegrees);
290 static QVariant _degreesToCentiDegrees(
const QVariant °rees);
291 static QVariant _centiCelsiusToCelsius(
const QVariant ¢iCelsius);
292 static QVariant _celsiusToCentiCelsius(
const QVariant &celsius);
293 static QVariant _userGimbalDegreesToMavlinkGimbalDegrees(
const QVariant &userGimbalDegrees);
294 static QVariant _mavlinkGimbalDegreesToUserGimbalDegrees(
const QVariant &mavlinkGimbalDegrees);
295 static QVariant _metersToFeet(
const QVariant &meters);
296 static QVariant _feetToMeters(
const QVariant &feet);
297 static QVariant _squareMetersToSquareKilometers(
const QVariant &squareMeters);
298 static QVariant _squareKilometersToSquareMeters(
const QVariant &squareKilometers);
299 static QVariant _squareMetersToHectares(
const QVariant &squareMeters);
300 static QVariant _hectaresToSquareMeters(
const QVariant &hectares);
301 static QVariant _squareMetersToSquareFeet(
const QVariant &squareMeters);
302 static QVariant _squareFeetToSquareMeters(
const QVariant &squareFeet);
303 static QVariant _squareMetersToAcres(
const QVariant &squareMeters);
304 static QVariant _acresToSquareMeters(
const QVariant &acres);
305 static QVariant _squareMetersToSquareMiles(
const QVariant &squareMeters);
306 static QVariant _squareMilesToSquareMeters(
const QVariant &squareMiles);
307 static QVariant _metersPerSecondToMilesPerHour(
const QVariant &metersPerSecond);
308 static QVariant _milesPerHourToMetersPerSecond(
const QVariant &milesPerHour);
309 static QVariant _metersPerSecondToKilometersPerHour(
const QVariant &metersPerSecond);
310 static QVariant _kilometersPerHourToMetersPerSecond(
const QVariant &kilometersPerHour);
311 static QVariant _metersPerSecondToKnots(
const QVariant &metersPerSecond);
312 static QVariant _knotsToMetersPerSecond(
const QVariant &knots);
313 static QVariant _percentToNorm(
const QVariant &percent);
314 static QVariant _normToPercent(
const QVariant &normalized);
315 static QVariant _centimetersToInches(
const QVariant ¢imeters);
316 static QVariant _inchesToCentimeters(
const QVariant &inches);
317 static QVariant _celsiusToFarenheit(
const QVariant &celsius);
318 static QVariant _farenheitToCelsius(
const QVariant &farenheit);
319 static QVariant _kilogramsToGrams(
const QVariant &kg);
320 static QVariant _ouncesToGrams(
const QVariant &oz);
321 static QVariant _poundsToGrams(
const QVariant &lbs);
322 static QVariant _gramsToKilograms(
const QVariant &g);
323 static QVariant _gramsToOunces(
const QVariant &g);
324 static QVariant _gramsToPunds(
const QVariant &g);
327 UnitHorizontalDistance = 0,
328 UnitVerticalDistance,
335 struct AppSettingsTranslation_s {
337 const char *cookedUnits =
nullptr;
338 UnitTypes unitType = UnitHorizontalDistance;
339 uint32_t unitOption = 0;
344 static const AppSettingsTranslation_s *_findAppSettingsUnitsTranslation(
const QString &
rawUnits, UnitTypes
type);
346 static void _loadJsonDefines(
const QJsonObject &jsonDefinesObject, QMap<QString, QString> &defineMap);
350 int _maxStringLength = 0;
351 QVariant _rawDefaultValue = 0;
352 bool _defaultValueAvailable =
false;
353 QStringList _bitmaskStrings;
354 QVariantList _bitmaskValues;
355 QStringList _enumStrings;
356 QVariantList _enumValues;
359 QString _longDescription;
360 QVariant _rawMax = _maxForType();
361 QVariant _rawMin = _minForType();
362 QVariant _rawUserMin;
363 QVariant _rawUserMax;
366 QString _shortDescription;
368 QString _cookedUnits;
369 Translator _rawTranslator = _defaultTranslator;
370 Translator _cookedTranslator = _defaultTranslator;
371 QMetaObject::Connection _appSettingsUnitsConnection;
372 bool _vehicleRebootRequired =
false;
373 bool _qgcRebootRequired =
false;
374 double _rawIncrement = std::numeric_limits<double>::quiet_NaN();
375 bool _hasControl =
true;
376 bool _readOnly =
false;
377 bool _writeOnly =
false;
378 bool _volatile =
false;
382 static constexpr struct UnitConsts_s {
383 static constexpr const qreal secondsPerHour = 3600.0;
384 static constexpr const qreal knotsToKPH = 1.852;
385 static constexpr const qreal milesToMeters = 1609.344;
386 static constexpr const qreal feetToMeters = 0.3048;
387 static constexpr const qreal inchesToCentimeters = 2.54;
388 static constexpr const qreal ouncesToGrams = 28.3495;
389 static constexpr const qreal poundsToGrams = 453.592;
390 static constexpr const qreal acresToSquareMeters = 4046.86;
391 static constexpr const qreal squareMetersToAcres = 0.000247105;
392 static constexpr const qreal feetToSquareMeters = 0.0929;
393 static constexpr const qreal squareMetersToSquareFeet = 10.7639;
394 static constexpr const qreal squareMetersToSquareMiles = 3.86102e-7;
395 static constexpr const qreal squareMilesToSquareMeters = 2589988.11;
398 struct BuiltInTranslation_s {
400 const char *cookedUnits;
405 static const BuiltInTranslation_s _rgBuiltInTranslations[];
406 static const AppSettingsTranslation_s _rgAppSettingsTranslations[];
408 static constexpr const char *_jsonMetaDataDefinesName =
"QGC.MetaData.Defines";
409 static constexpr const char *_jsonMetaDataFactsName =
"QGC.MetaData.Facts";
410 static constexpr const char *_enumStringsJsonKey =
"enumStrings";
411 static constexpr const char *_enumValuesJsonKey =
"enumValues";
414 static constexpr const char *_enumValuesArrayJsonKey =
"values";
415 static constexpr const char *_enumBitmaskArrayJsonKey =
"bitmask";
416 static constexpr const char *_enumValuesArrayValueJsonKey =
"value";
417 static constexpr const char *_enumValuesArrayDescriptionJsonKey =
"description";
418 static constexpr const char *_enumBitmaskArrayIndexJsonKey =
"index";
419 static constexpr const char *_enumBitmaskArrayDescriptionJsonKey =
"description";
421 static constexpr const char *_rgKnownTypeStrings[] = {
438 static constexpr const ValueType_t _rgKnownValueTypes[] = {
455 static constexpr const char *_decimalPlacesJsonKey =
"decimalPlaces";
456 static constexpr const char *_maxStringLengthJsonKey =
"maxStringLength";
457 static constexpr const char *_commentJsonKey =
"comment";
458 static constexpr const char *_keywordsJsonKey =
"keywords";
459 static constexpr const char *_nameJsonKey =
"name";
460 static constexpr const char *_labelJsonKey =
"label";
461 static constexpr const char *_typeJsonKey =
"type";
462 static constexpr const char *_shortDescriptionJsonKey =
"shortDesc";
463 static constexpr const char *_longDescriptionJsonKey =
"longDesc";
464 static constexpr const char *_unitsJsonKey =
"units";
465 static constexpr const char *_defaultValueJsonKey =
"default";
466 static constexpr const char *_mobileDefaultValueJsonKey =
"mobileDefault";
467 static constexpr const char *_minJsonKey =
"min";
468 static constexpr const char *_maxJsonKey =
"max";
469 static constexpr const char *_userMinJsonKey =
"userMin";
470 static constexpr const char *_userMaxJsonKey =
"userMax";
471 static constexpr const char *_incrementJsonKey =
"increment";
472 static constexpr const char *_hasControlJsonKey =
"control";
473 static constexpr const char *_qgcRebootRequiredJsonKey =
"qgcRebootRequired";
474 static constexpr const char *_rebootRequiredJsonKey =
"rebootRequired";
475 static constexpr const char *_categoryJsonKey =
"category";
476 static constexpr const char *_groupJsonKey =
"group";
477 static constexpr const char *_volatileJsonKey =
"volatile";
478 static constexpr const char *_readOnlyJsonKey =
"readOnly";