From 91eb3d3b878604aeb7cd34fc3f77fcbc02eb29f1 Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Tue, 2 Jul 2024 12:30:07 -0400 Subject: [PATCH] First attempt at using current radar site for alerts --- scwx-qt/source/scwx/qt/main/main_window.cpp | 1 + .../source/scwx/qt/manager/alert_manager.cpp | 44 ++++++++++++++++--- .../source/scwx/qt/manager/alert_manager.hpp | 1 + 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index 4cda1e58..718f0e3a 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -1466,6 +1466,7 @@ void MainWindowImpl::UpdateRadarSite() timelineManager_->SetRadarSite("?"); } + alertManager_->SetRadarSite(radarSite); placefileManager_->SetRadarSite(radarSite); } diff --git a/scwx-qt/source/scwx/qt/manager/alert_manager.cpp b/scwx-qt/source/scwx/qt/manager/alert_manager.cpp index daa7112e..8df6ffb7 100644 --- a/scwx-qt/source/scwx/qt/manager/alert_manager.cpp +++ b/scwx-qt/source/scwx/qt/manager/alert_manager.cpp @@ -76,6 +76,8 @@ public: PositionManager::Instance()}; std::shared_ptr textEventManager_ { TextEventManager::Instance()}; + + std::shared_ptr radarSite_ {}; }; AlertManager::AlertManager() : p(std::make_unique(this)) {} @@ -104,11 +106,23 @@ common::Coordinate AlertManager::Impl::CurrentCoordinate( } else if (locationMethod == types::LocationMethod::RadarSite) { - std::string siteId = - settings::GeneralSettings::Instance().default_radar_site().GetValue(); - auto radarSite = config::RadarSite::Get(siteId); - coordinate.latitude_ = radarSite->latitude(); - coordinate.longitude_ = radarSite->longitude(); + std::shared_ptr radarSite; + if (radarSite_ == nullptr) + { + std::string siteId = + settings::GeneralSettings::Instance().default_radar_site().GetValue(); + radarSite = config::RadarSite::Get(siteId); + } + else + { + radarSite = radarSite_; + } + + if (radarSite != nullptr) + { + coordinate.latitude_ = radarSite->latitude(); + coordinate.longitude_ = radarSite->longitude(); + } } return coordinate; @@ -198,6 +212,26 @@ void AlertManager::Impl::UpdateLocationTracking( positionManager_->EnablePositionUpdates(uuid_, locationEnabled); } +void AlertManager::SetRadarSite(std::shared_ptr radarSite) +{ + if (p->radarSite_ == radarSite) + { + // No action needed + return; + } + + if (radarSite == nullptr) + { + logger_->debug("SetRadarSite: ?"); + } + else + { + logger_->debug("SetRadarSite: {}", radarSite->id()); + } + + p->radarSite_ = radarSite; +} + std::shared_ptr AlertManager::Instance() { static std::weak_ptr alertManagerReference_ {}; diff --git a/scwx-qt/source/scwx/qt/manager/alert_manager.hpp b/scwx-qt/source/scwx/qt/manager/alert_manager.hpp index 5bdfd923..53381c76 100644 --- a/scwx-qt/source/scwx/qt/manager/alert_manager.hpp +++ b/scwx-qt/source/scwx/qt/manager/alert_manager.hpp @@ -20,6 +20,7 @@ public: explicit AlertManager(); ~AlertManager(); + void AlertManager::SetRadarSite(const std::string& radarSite); static std::shared_ptr Instance(); private: