diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index f1d27568..8bce5103 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -142,28 +142,13 @@ MainWindow::MainWindow(QWidget* parent) : ui->settingsFrame->layout()->addWidget(p->level2SettingsWidget_); p->level2SettingsWidget_->setVisible(false); - p->SelectRadarProduct( - p->maps_.at(0), - common::RadarProductGroup::Level2, - common::GetLevel2Name(common::Level2Product::Reflectivity), - 0); - if (p->maps_.size() > 1 && p->maps_.at(1) != nullptr) + auto mapSettings = manager::SettingsManager::map_settings(); + for (size_t i = 0; i < p->maps_.size(); i++) { - p->SelectRadarProduct( - p->maps_.at(1), - common::RadarProductGroup::Level2, - common::GetLevel2Name(common::Level2Product::Velocity), - 0); - } - if (p->maps_.size() > 2 && p->maps_.at(2) != nullptr) - { - p->SelectRadarProduct( - p->maps_.at(2), common::RadarProductGroup::Level3, "N0B", 0); - } - if (p->maps_.size() > 3 && p->maps_.at(3) != nullptr) - { - p->SelectRadarProduct( - p->maps_.at(3), common::RadarProductGroup::Level3, "N0G", 0); + p->SelectRadarProduct(p->maps_.at(i), + mapSettings->radar_product_group(i), + mapSettings->radar_product(i), + 0); } connect(qApp, diff --git a/scwx-qt/source/scwx/qt/settings/map_settings.cpp b/scwx-qt/source/scwx/qt/settings/map_settings.cpp index 1153211c..6f7e1030 100644 --- a/scwx-qt/source/scwx/qt/settings/map_settings.cpp +++ b/scwx-qt/source/scwx/qt/settings/map_settings.cpp @@ -1,7 +1,6 @@ #include #include #include -#include #include #include @@ -17,10 +16,11 @@ namespace settings static const std::string logPrefix_ = "scwx::qt::settings::map_settings"; static const auto logger_ = scwx::util::Logger::Create(logPrefix_); -static constexpr size_t kCount_ = 4u; -static const std::string kDefaultRadarSite_ = "KLSX"; -static const std::string kDefaultRadarProductGroup_ = "L3"; +static constexpr size_t kCount_ = 4u; +static const std::string kDefaultRadarSite_ = "KLSX"; +static const common::RadarProductGroup kDefaultRadarProductGroup_ = + common::RadarProductGroup::Level3; static const std::array kDefaultRadarProduct_ { "N0B", "N0G", "N0C", "N0X"}; @@ -29,9 +29,9 @@ class MapSettingsImpl public: struct MapData { - std::string radarSite_; - std::string radarProductGroup_; - std::string radarProduct_; + std::string radarSite_; + common::RadarProductGroup radarProductGroup_; + std::string radarProduct_; }; explicit MapSettingsImpl() { SetDefaults(); } @@ -72,7 +72,7 @@ std::string MapSettings::radar_site(size_t i) const return p->map_[i].radarSite_; } -std::string MapSettings::radar_product_group(size_t i) const +common::RadarProductGroup MapSettings::radar_product_group(size_t i) const { return p->map_[i].radarProductGroup_; } @@ -118,17 +118,18 @@ std::shared_ptr MapSettings::Load(const boost::json::value* json, MapSettingsImpl::MapData& mapRecordSettings = mapSettings->p->map_[i]; + std::string radarProductGroup; + // Load JSON Elements jsonDirty |= !util::json::FromJsonString(mapRecord, "radar_site", mapRecordSettings.radarSite_, kDefaultRadarSite_); - jsonDirty |= - !util::json::FromJsonString(mapRecord, - "radar_product_group", - mapRecordSettings.radarProductGroup_, - kDefaultRadarSite_); + jsonDirty |= !util::json::FromJsonString(mapRecord, + "radar_product_group", + radarProductGroup, + kDefaultRadarSite_); jsonDirty |= !util::json::FromJsonString(mapRecord, "radar_product", @@ -143,20 +144,19 @@ std::shared_ptr MapSettings::Load(const boost::json::value* json, } // Validate Radar Product Group - common::RadarProductGroup radarProductGroup = - common::GetRadarProductGroup( - mapRecordSettings.radarProductGroup_); - if (radarProductGroup == common::RadarProductGroup::Unknown) + mapRecordSettings.radarProductGroup_ = + common::GetRadarProductGroup(radarProductGroup); + if (mapRecordSettings.radarProductGroup_ == + common::RadarProductGroup::Unknown) { mapRecordSettings.radarProductGroup_ = kDefaultRadarProductGroup_; - radarProductGroup = - common::GetRadarProductGroup(kDefaultRadarProductGroup_); jsonDirty = true; } // Validate Radar Product - if (radarProductGroup == common::RadarProductGroup::Level2 && + if (mapRecordSettings.radarProductGroup_ == + common::RadarProductGroup::Level2 && common::GetLevel2Product(mapRecordSettings.radarProduct_) == common::Level2Product::Unknown) { @@ -200,7 +200,8 @@ void tag_invoke(boost::json::value_from_tag, const MapSettingsImpl::MapData& data) { jv = {{"radar_site", data.radarSite_}, - {"radar_product_group", data.radarProductGroup_}, + {"radar_product_group", + common::GetRadarProductGroupName(data.radarProductGroup_)}, {"radar_product", data.radarProduct_}}; } diff --git a/scwx-qt/source/scwx/qt/settings/map_settings.hpp b/scwx-qt/source/scwx/qt/settings/map_settings.hpp index 95be2e18..75ed3598 100644 --- a/scwx-qt/source/scwx/qt/settings/map_settings.hpp +++ b/scwx-qt/source/scwx/qt/settings/map_settings.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include #include @@ -26,10 +28,10 @@ public: MapSettings(MapSettings&&) noexcept; MapSettings& operator=(MapSettings&&) noexcept; - size_t count() const; - std::string radar_site(size_t i) const; - std::string radar_product_group(size_t i) const; - std::string radar_product(size_t i) const; + size_t count() const; + std::string radar_site(size_t i) const; + common::RadarProductGroup radar_product_group(size_t i) const; + std::string radar_product(size_t i) const; boost::json::value ToJson() const;