diff --git a/src/FactSystem/FactMetaData.cc b/src/FactSystem/FactMetaData.cc index c870a0b604a98e6de6caeec2e5a7614034fca2a4..1313b5157ce385d8e887678509598e7208d09644 100644 --- a/src/FactSystem/FactMetaData.cc +++ b/src/FactSystem/FactMetaData.cc @@ -1003,7 +1003,7 @@ void FactMetaData::_setAppSettingsTranslators(void) } } -const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsHorizontalDistanceUnitsTranslation(const QString& rawUnits) +const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsUnitsTranslation(const QString& rawUnits, UnitTypes type) { for (size_t i=0; itoolbox()->settingsManager()->unitsSettings()->horizontalDistanceUnits()->rawValue().toUInt(); - - if (pAppSettingsTranslation->unitType == UnitHorizontalDistance - && pAppSettingsTranslation->unitOption == settingsUnits) { - return pAppSettingsTranslation; - } - } - return nullptr; -} - -const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsVerticalDistanceUnitsTranslation(const QString& rawUnits) -{ - for (size_t i=0; irawUnits.toLower()) { - continue; - } - - uint settingsUnits = qgcApp()->toolbox()->settingsManager()->unitsSettings()->verticalDistanceUnits()->rawValue().toUInt(); - - if (pAppSettingsTranslation->unitType == UnitVerticalDistance - && pAppSettingsTranslation->unitOption == settingsUnits) { - return pAppSettingsTranslation; - } - } - return nullptr; -} - -const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsWeightUnitsTranslation(const QString& rawUnits) -{ - for (size_t i=0; irawUnits.toLower()) { - continue; + uint unitOption = 0; + auto unitsSettings = qgcApp()->toolbox()->settingsManager()->unitsSettings(); + switch (type) { + case UnitHorizontalDistance: + unitOption = unitsSettings->horizontalDistanceUnits()->rawValue().toUInt(); + break; + case UnitVerticalDistance: + unitOption = unitsSettings->verticalDistanceUnits()->rawValue().toUInt(); + break; + case UnitArea: + unitOption = unitsSettings->areaUnits()->rawValue().toUInt(); + break; + case UnitSpeed: + unitOption = unitsSettings->speedUnits()->rawValue().toUInt(); + break; + case UnitTemperature: + unitOption = unitsSettings->temperatureUnits()->rawValue().toUInt(); + break; + case UnitWeight: + unitOption = unitsSettings->weightUnits()->rawValue().toUInt(); + break; } - uint settingsUnits = qgcApp()->toolbox()->settingsManager()->unitsSettings()->weightUnits()->rawValue().toUInt(); - - if (pAppSettingsTranslation->unitType == UnitWeight - && pAppSettingsTranslation->unitOption == settingsUnits) { - return pAppSettingsTranslation; - } - } - return nullptr; -} - -const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsAreaUnitsTranslation(const QString& rawUnits) -{ - for (size_t i=0; irawUnits.toLower()) { - continue; - } - - uint settingsUnits = qgcApp()->toolbox()->settingsManager()->unitsSettings()->areaUnits()->rawValue().toUInt(); - - if (pAppSettingsTranslation->unitType == UnitArea - && pAppSettingsTranslation->unitOption == settingsUnits) { + if (pAppSettingsTranslation->unitType == type + && pAppSettingsTranslation->unitOption == unitOption) { return pAppSettingsTranslation; } } @@ -1082,7 +1046,7 @@ const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsArea QVariant FactMetaData::metersToAppSettingsHorizontalDistanceUnits(const QVariant& meters) { - const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsHorizontalDistanceUnitsTranslation("m"); + const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsUnitsTranslation("m", UnitHorizontalDistance); if (pAppSettingsTranslation) { return pAppSettingsTranslation->rawTranslator(meters); } else { @@ -1092,7 +1056,7 @@ QVariant FactMetaData::metersToAppSettingsHorizontalDistanceUnits(const QVariant QVariant FactMetaData::metersToAppSettingsVerticalDistanceUnits(const QVariant& meters) { - const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsVerticalDistanceUnitsTranslation("vertical m"); + const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsUnitsTranslation("vertical m", UnitVerticalDistance); if (pAppSettingsTranslation) { return pAppSettingsTranslation->rawTranslator(meters); } else { @@ -1102,7 +1066,7 @@ QVariant FactMetaData::metersToAppSettingsVerticalDistanceUnits(const QVariant& QVariant FactMetaData::appSettingsHorizontalDistanceUnitsToMeters(const QVariant& distance) { - const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsHorizontalDistanceUnitsTranslation("m"); + const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsUnitsTranslation("m", UnitHorizontalDistance); if (pAppSettingsTranslation) { return pAppSettingsTranslation->cookedTranslator(distance); } else { @@ -1112,7 +1076,7 @@ QVariant FactMetaData::appSettingsHorizontalDistanceUnitsToMeters(const QVariant QVariant FactMetaData::appSettingsVerticalDistanceUnitsToMeters(const QVariant& distance) { - const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsVerticalDistanceUnitsTranslation("alt m"); + const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsUnitsTranslation("vertical m", UnitVerticalDistance); if (pAppSettingsTranslation) { return pAppSettingsTranslation->cookedTranslator(distance); } else { @@ -1122,7 +1086,7 @@ QVariant FactMetaData::appSettingsVerticalDistanceUnitsToMeters(const QVariant& QString FactMetaData::appSettingsHorizontalDistanceUnitsString(void) { - const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsHorizontalDistanceUnitsTranslation("m"); + const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsUnitsTranslation("m", UnitHorizontalDistance); if (pAppSettingsTranslation) { return pAppSettingsTranslation->cookedUnits; } else { @@ -1132,7 +1096,7 @@ QString FactMetaData::appSettingsHorizontalDistanceUnitsString(void) QString FactMetaData::appSettingsVerticalDistanceUnitsString(void) { - const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsVerticalDistanceUnitsTranslation("alt m"); + const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsUnitsTranslation("vertical m", UnitVerticalDistance); if (pAppSettingsTranslation) { return pAppSettingsTranslation->cookedUnits; } else { @@ -1142,7 +1106,7 @@ QString FactMetaData::appSettingsVerticalDistanceUnitsString(void) QString FactMetaData::appSettingsWeightUnitsString(void) { - const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsWeightUnitsTranslation("g"); + const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsUnitsTranslation("g", UnitWeight); if (pAppSettingsTranslation) { return pAppSettingsTranslation->cookedUnits; } else { @@ -1152,7 +1116,7 @@ QString FactMetaData::appSettingsWeightUnitsString(void) QVariant FactMetaData::squareMetersToAppSettingsAreaUnits(const QVariant& squareMeters) { - const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsAreaUnitsTranslation("m^2"); + const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsUnitsTranslation("m^2", UnitArea); if (pAppSettingsTranslation) { return pAppSettingsTranslation->rawTranslator(squareMeters); } else { @@ -1162,7 +1126,7 @@ QVariant FactMetaData::squareMetersToAppSettingsAreaUnits(const QVariant& square QVariant FactMetaData::appSettingsAreaUnitsToSquareMeters(const QVariant& area) { - const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsAreaUnitsTranslation("m^2"); + const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsUnitsTranslation("m^2", UnitArea); if (pAppSettingsTranslation) { return pAppSettingsTranslation->cookedTranslator(area); } else { @@ -1172,7 +1136,7 @@ QVariant FactMetaData::appSettingsAreaUnitsToSquareMeters(const QVariant& area) QString FactMetaData::appSettingsAreaUnitsString(void) { - const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsAreaUnitsTranslation("m^2"); + const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsUnitsTranslation("m^2", UnitArea); if (pAppSettingsTranslation) { return pAppSettingsTranslation->cookedUnits; } else { @@ -1181,7 +1145,7 @@ QString FactMetaData::appSettingsAreaUnitsString(void) } QVariant FactMetaData::gramsToAppSettingsWeightUnits(const QVariant& grams) { - const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsWeightUnitsTranslation("g"); + const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsUnitsTranslation("g", UnitWeight); if (pAppSettingsTranslation) { return pAppSettingsTranslation->rawTranslator(grams); } else { @@ -1190,7 +1154,7 @@ QVariant FactMetaData::gramsToAppSettingsWeightUnits(const QVariant& grams) { } QVariant FactMetaData::appSettingsWeightUnitsToGrams(const QVariant& weight) { - const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsWeightUnitsTranslation("g"); + const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsUnitsTranslation("g", UnitWeight); if (pAppSettingsTranslation) { return pAppSettingsTranslation->cookedTranslator(weight); } else { @@ -1198,6 +1162,15 @@ QVariant FactMetaData::appSettingsWeightUnitsToGrams(const QVariant& weight) { } } +QString FactMetaData::appSettingsSpeedUnitsString() +{ + const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsUnitsTranslation("m/s", UnitSpeed); + if (pAppSettingsTranslation) { + return pAppSettingsTranslation->cookedUnits; + } else { + return QStringLiteral("m/s"); + } +} double FactMetaData::cookedIncrement(void) const { diff --git a/src/FactSystem/FactMetaData.h b/src/FactSystem/FactMetaData.h index 31f4fbec1b0863351be28c31c87d012129df51a4..d191113d0c035ae3f76f66700e08470dffad6549 100644 --- a/src/FactSystem/FactMetaData.h +++ b/src/FactSystem/FactMetaData.h @@ -95,6 +95,9 @@ public: /// Returns the string for distance units which has configued by user static QString appSettingsAreaUnitsString(void); + /// Returns the string for speed units which has configued by user + static QString appSettingsSpeedUnitsString(); + static const QString defaultCategory (); static const QString defaultGroup (); @@ -282,10 +285,7 @@ private: Translator cookedTranslator; }; - static const AppSettingsTranslation_s* _findAppSettingsHorizontalDistanceUnitsTranslation(const QString& rawUnits); - static const AppSettingsTranslation_s* _findAppSettingsVerticalDistanceUnitsTranslation(const QString& rawUnits); - static const AppSettingsTranslation_s* _findAppSettingsAreaUnitsTranslation(const QString& rawUnits); - static const AppSettingsTranslation_s* _findAppSettingsWeightUnitsTranslation(const QString& rawUnits); + static const AppSettingsTranslation_s* _findAppSettingsUnitsTranslation(const QString& rawUnits, UnitTypes type); static void _loadJsonDefines(const QJsonObject& jsonDefinesObject, QMap& defineMap); diff --git a/src/QmlControls/QmlUnitsConversion.h b/src/QmlControls/QmlUnitsConversion.h index 09d47ffc8732f9bf7b477903d8d06b93bd62ee14..267503dc787918af7899f570399133fa0a38899a 100644 --- a/src/QmlControls/QmlUnitsConversion.h +++ b/src/QmlControls/QmlUnitsConversion.h @@ -25,6 +25,7 @@ public: Q_PROPERTY(QString appSettingsVerticalDistanceUnitsString READ appSettingsVerticalDistanceUnitsString CONSTANT) Q_PROPERTY(QString appSettingsAreaUnitsString READ appSettingsAreaUnitsString CONSTANT) Q_PROPERTY(QString appSettingsWeightUnitsString READ appSettingsWeightUnitsString CONSTANT) + Q_PROPERTY(QString appSettingsSpeedUnitsString READ appSettingsSpeedUnitsString CONSTANT) /// Converts from meters to the user specified distance unit Q_INVOKABLE QVariant metersToAppSettingsHorizontalDistanceUnits(const QVariant& meters) const { return FactMetaData::metersToAppSettingsHorizontalDistanceUnits(meters); } @@ -58,6 +59,9 @@ public: QString appSettingsAreaUnitsString(void) const { return FactMetaData::appSettingsAreaUnitsString(); } + /// Returns the string for speed units which has configued by user + QString appSettingsSpeedUnitsString() { return FactMetaData::appSettingsSpeedUnitsString(); } + Q_INVOKABLE double degreesToRadians(double degrees) { return qDegreesToRadians(degrees); } Q_INVOKABLE double radiansToDegrees(double radians) { return qRadiansToDegrees(radians); } };