diff --git a/scwx-qt/source/scwx/qt/map/map_widget.cpp b/scwx-qt/source/scwx/qt/map/map_widget.cpp index 09f51f75..428e2649 100644 --- a/scwx-qt/source/scwx/qt/map/map_widget.cpp +++ b/scwx-qt/source/scwx/qt/map/map_widget.cpp @@ -81,9 +81,9 @@ public: void AddLayer(const std::string& id, std::shared_ptr layer, const std::string& before = {}); - void AutoRefreshConnect(); - void AutoRefreshDisconnect(); void InitializeNewRadarProductView(const std::string& colorPalette); + void RadarProductManagerConnect(); + void RadarProductManagerDisconnect(); void RadarProductViewConnect(); void RadarProductViewDisconnect(); void SetRadarSite(const std::string& radarSite); @@ -139,6 +139,18 @@ MapWidget::~MapWidget() makeCurrent(); } +common::Level3ProductCategoryMap MapWidget::GetAvailableLevel3Categories() +{ + if (p->radarProductManager_ != nullptr) + { + return p->radarProductManager_->GetAvailableLevel3Categories(); + } + else + { + return {}; + } +} + float MapWidget::GetElevation() const { if (p->context_->radarProductView_ != nullptr) @@ -192,6 +204,18 @@ MapWidgetImpl::GetLevel2ProductOrDefault(const std::string& productName) const return level2Product; } +std::vector MapWidget::GetLevel3Products() +{ + if (p->radarProductManager_ != nullptr) + { + return p->radarProductManager_->GetLevel3Products(); + } + else + { + return {}; + } +} + common::RadarProductGroup MapWidget::GetRadarProductGroup() const { if (p->context_->radarProductView_ != nullptr) @@ -584,10 +608,15 @@ void MapWidget::mapChanged(QMapboxGL::MapChange mapChange) } } -void MapWidgetImpl::AutoRefreshConnect() +void MapWidgetImpl::RadarProductManagerConnect() { if (radarProductManager_ != nullptr) { + connect(radarProductManager_.get(), + &manager::RadarProductManager::Level3ProductsChanged, + this, + [&]() { emit widget_->Level3ProductsChanged(); }); + connect( radarProductManager_.get(), &manager::RadarProductManager::NewDataAvailable, @@ -640,7 +669,7 @@ void MapWidgetImpl::AutoRefreshConnect() } } -void MapWidgetImpl::AutoRefreshDisconnect() +void MapWidgetImpl::RadarProductManagerDisconnect() { if (radarProductManager_ != nullptr) { @@ -727,13 +756,15 @@ void MapWidgetImpl::SetRadarSite(const std::string& radarSite) radarSite != radarProductManager_->radar_site()->id()) { // Disconnect signals from old RadarProductManager - AutoRefreshDisconnect(); + RadarProductManagerDisconnect(); // Set new RadarProductManager radarProductManager_ = manager::RadarProductManager::Instance(radarSite); // Connect signals to new RadarProductManager - AutoRefreshConnect(); + RadarProductManagerConnect(); + + radarProductManager_->UpdateAvailableProducts(); } } diff --git a/scwx-qt/source/scwx/qt/map/map_widget.hpp b/scwx-qt/source/scwx/qt/map/map_widget.hpp index d15e62b7..e7fed3bc 100644 --- a/scwx-qt/source/scwx/qt/map/map_widget.hpp +++ b/scwx-qt/source/scwx/qt/map/map_widget.hpp @@ -34,8 +34,10 @@ public: explicit MapWidget(const QMapboxGLSettings&); ~MapWidget(); + common::Level3ProductCategoryMap GetAvailableLevel3Categories(); float GetElevation() const; std::vector GetElevationCuts() const; + std::vector GetLevel3Products(); common::RadarProductGroup GetRadarProductGroup() const; std::string GetRadarProductName() const; std::shared_ptr GetRadarSite() const; @@ -78,6 +80,7 @@ private slots: void mapChanged(QMapboxGL::MapChange); signals: + void Level3ProductsChanged(); void MapParametersChanged(double latitude, double longitude, double zoom,