From 43e0d69379fd829f2c9e575eb0672eaf631257bc Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sat, 8 Oct 2022 23:08:20 -0500 Subject: [PATCH] Select radar site capability --- scwx-qt/source/scwx/qt/main/main_window.cpp | 12 ++++++++ scwx-qt/source/scwx/qt/map/map_widget.cpp | 32 +++++++++++++++++++++ scwx-qt/source/scwx/qt/map/map_widget.hpp | 1 + 3 files changed, 45 insertions(+) diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index 3f7a49ed..6b2c4e0f 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -415,6 +415,18 @@ void MainWindowImpl::ConnectOtherSignals() &MainWindow::ActiveMapMoved, radarSiteDialog_, &ui::RadarSiteDialog::HandleMapUpdate); + connect(radarSiteDialog_, + &ui::RadarSiteDialog::accepted, + this, + [&]() + { + std::string selectedRadarSite = radarSiteDialog_->radar_site(); + + for (map::MapWidget* map : maps_) + { + map->SelectRadarSite(selectedRadarSite); + } + }); } void MainWindowImpl::HandleFocusChange(QWidget* focused) diff --git a/scwx-qt/source/scwx/qt/map/map_widget.cpp b/scwx-qt/source/scwx/qt/map/map_widget.cpp index 40576d31..026c7edc 100644 --- a/scwx-qt/source/scwx/qt/map/map_widget.cpp +++ b/scwx-qt/source/scwx/qt/map/map_widget.cpp @@ -383,6 +383,38 @@ void MapWidget::SelectRadarProduct( SelectRadarProduct(group, product, productCode); } +void MapWidget::SelectRadarSite(const std::string& id) +{ + logger_->debug("Selecting radar site: {}", id); + + std::shared_ptr radarSite = config::RadarSite::Get(id); + + // Verify radar site is valid and has changed + if (radarSite != nullptr && + (p->radarProductManager_ == nullptr || + id != p->radarProductManager_->radar_site()->id())) + { + auto radarProductView = p->context_->radar_product_view(); + + p->map_->setCoordinate({radarSite->latitude(), radarSite->longitude()}); + p->SetRadarSite(id); + p->Update(); + + // Select products from new site + if (radarProductView != nullptr) + { + radarProductView->set_radar_product_manager(p->radarProductManager_); + SelectRadarProduct(radarProductView->GetRadarProductGroup(), + radarProductView->GetRadarProductName(), + 0); + } + + AddLayers(); + + // TODO: Disable refresh from old site + } +} + void MapWidget::SetActive(bool isActive) { p->context_->settings().isActive_ = isActive; diff --git a/scwx-qt/source/scwx/qt/map/map_widget.hpp b/scwx-qt/source/scwx/qt/map/map_widget.hpp index e7fed3bc..ce586243 100644 --- a/scwx-qt/source/scwx/qt/map/map_widget.hpp +++ b/scwx-qt/source/scwx/qt/map/map_widget.hpp @@ -48,6 +48,7 @@ public: const std::string& product, int16_t productCode); void SelectRadarProduct(std::shared_ptr record); + void SelectRadarSite(const std::string& radarSite); void SetActive(bool isActive); void SetAutoRefresh(bool enabled); void SetMapParameters(double latitude,