From ab9e52eaa305362c4522a39323f2e0bb3d6c7d66 Mon Sep 17 00:00:00 2001 From: Jacob Walser Date: Fri, 27 Apr 2018 10:54:39 -0400 Subject: [PATCH] UnitsSettings: rework/bugfix metadata translators setup --- src/FactSystem/FactMetaData.cc | 58 +++++++++++++++++++++++++++------- src/FactSystem/FactMetaData.h | 4 +-- 2 files changed, 48 insertions(+), 14 deletions(-) diff --git a/src/FactSystem/FactMetaData.cc b/src/FactSystem/FactMetaData.cc index c254cd2a1..79514d03f 100644 --- a/src/FactSystem/FactMetaData.cc +++ b/src/FactSystem/FactMetaData.cc @@ -616,7 +616,7 @@ void FactMetaData::setBuiltInTranslator(void) for (size_t i=0; irawUnits == _rawUnits.toLower()) { + if (pBuiltInTranslation->rawUnits.toLower() == _rawUnits.toLower()) { _cookedUnits = pBuiltInTranslation->cookedUnits; setTranslators(pBuiltInTranslation->rawTranslator, pBuiltInTranslation->cookedTranslator); return; @@ -875,13 +875,33 @@ void FactMetaData::_setAppSettingsTranslators(void) if (!_enumStrings.count() && (type() == valueTypeDouble || type() == valueTypeFloat)) { for (size_t i=0; irawUnits == _rawUnits.toLower() && ( - (pAppSettingsTranslation->unitType == UnitTemperature && pAppSettingsTranslation->unitOption == qgcApp()->toolbox()->settingsManager()->unitsSettings()->temperatureUnits()->rawValue().toUInt()) || - (pAppSettingsTranslation->unitType == UnitSpeed && pAppSettingsTranslation->unitOption == qgcApp()->toolbox()->settingsManager()->unitsSettings()->speedUnits()->rawValue().toUInt()) || - (pAppSettingsTranslation->unitType == UnitDistance && pAppSettingsTranslation->unitOption == qgcApp()->toolbox()->settingsManager()->unitsSettings()->distanceUnits()->rawValue().toUInt()) || - (pAppSettingsTranslation->unitType == UnitArea && pAppSettingsTranslation->unitOption == qgcApp()->toolbox()->settingsManager()->unitsSettings()->areaUnits()->rawValue().toUInt()))) - { - _cookedUnits = pAppSettingsTranslation->cookedUnits; + + if (_rawUnits.toLower() != pAppSettingsTranslation->rawUnits.toLower()) { + continue; + } + + UnitsSettings* settings = qgcApp()->toolbox()->settingsManager()->unitsSettings(); + uint settingsUnits = 0; + + switch (pAppSettingsTranslation->unitType) { + case UnitDistance: + settingsUnits = settings->distanceUnits()->rawValue().toUInt(); + break; + case UnitSpeed: + settingsUnits = settings->speedUnits()->rawValue().toUInt(); + break; + case UnitArea: + settingsUnits = settings->areaUnits()->rawValue().toUInt(); + break; + case UnitTemperature: + settingsUnits = settings->temperatureUnits()->rawValue().toUInt(); + break; + default: + break; + } + + if (settingsUnits == pAppSettingsTranslation->unitOption) { + _cookedUnits = pAppSettingsTranslation->cookedUnits; setTranslators(pAppSettingsTranslation->rawTranslator, pAppSettingsTranslation->cookedTranslator); return; } @@ -893,8 +913,15 @@ const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsDist { for (size_t i=0; irawUnits == rawUnits.toLower() && - (pAppSettingsTranslation->unitType == UnitDistance && pAppSettingsTranslation->unitOption == qgcApp()->toolbox()->settingsManager()->unitsSettings()->distanceUnits()->rawValue().toUInt())) { + + if (rawUnits.toLower() != pAppSettingsTranslation->rawUnits.toLower()) { + continue; + } + + uint settingsUnits = qgcApp()->toolbox()->settingsManager()->unitsSettings()->areaUnits()->rawValue().toUInt(); + + if (pAppSettingsTranslation->unitType == UnitDistance + && pAppSettingsTranslation->unitOption == settingsUnits) { return pAppSettingsTranslation; } } @@ -905,8 +932,15 @@ const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsArea { for (size_t i=0; irawUnits == rawUnits.toLower() && - (pAppSettingsTranslation->unitType == UnitArea && pAppSettingsTranslation->unitOption == qgcApp()->toolbox()->settingsManager()->unitsSettings()->areaUnits()->rawValue().toUInt())) { + + if (rawUnits.toLower() != pAppSettingsTranslation->rawUnits.toLower()) { + continue; + } + + uint settingsUnits = qgcApp()->toolbox()->settingsManager()->unitsSettings()->areaUnits()->rawValue().toUInt(); + + if (pAppSettingsTranslation->unitType == UnitArea + && pAppSettingsTranslation->unitOption == settingsUnits) { return pAppSettingsTranslation; } } diff --git a/src/FactSystem/FactMetaData.h b/src/FactSystem/FactMetaData.h index a82408476..da0ee47e1 100644 --- a/src/FactSystem/FactMetaData.h +++ b/src/FactSystem/FactMetaData.h @@ -216,7 +216,7 @@ private: }; struct AppSettingsTranslation_s { - const char* rawUnits; + QString rawUnits; const char* cookedUnits; UnitTypes unitType; uint32_t unitOption; @@ -265,7 +265,7 @@ private: } constants; struct BuiltInTranslation_s { - const char* rawUnits; + QString rawUnits; const char* cookedUnits; Translator rawTranslator; Translator cookedTranslator; -- 2.22.0