From 6c7a02ff85eb2efa28fef87ed77046a43319120f Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Tue, 11 Apr 2023 22:46:50 -0500 Subject: [PATCH] Fix radar product manager to view signals on manager change --- .../source/scwx/qt/view/level2_product_view.cpp | 17 +++++++++++++++-- .../source/scwx/qt/view/level2_product_view.hpp | 2 ++ .../source/scwx/qt/view/level3_product_view.cpp | 17 +++++++++++++++-- .../source/scwx/qt/view/level3_product_view.hpp | 2 ++ .../source/scwx/qt/view/radar_product_view.cpp | 2 ++ .../source/scwx/qt/view/radar_product_view.hpp | 4 +++- 6 files changed, 39 insertions(+), 5 deletions(-) diff --git a/scwx-qt/source/scwx/qt/view/level2_product_view.cpp b/scwx-qt/source/scwx/qt/view/level2_product_view.cpp index 1f7de41b..f1f501db 100644 --- a/scwx-qt/source/scwx/qt/view/level2_product_view.cpp +++ b/scwx-qt/source/scwx/qt/view/level2_product_view.cpp @@ -106,7 +106,13 @@ Level2ProductView::Level2ProductView( RadarProductView(radarProductManager), p(std::make_unique(product)) { - connect(radarProductManager.get(), + ConnectRadarProductManager(); +} +Level2ProductView::~Level2ProductView() = default; + +void Level2ProductView::ConnectRadarProductManager() +{ + connect(radar_product_manager().get(), &manager::RadarProductManager::DataReloaded, this, [this](std::shared_ptr record) @@ -121,7 +127,14 @@ Level2ProductView::Level2ProductView( } }); } -Level2ProductView::~Level2ProductView() = default; + +void Level2ProductView::DisconnectRadarProductManager() +{ + disconnect(radar_product_manager().get(), + &manager::RadarProductManager::DataReloaded, + this, + nullptr); +} const std::vector& Level2ProductView::color_table() const diff --git a/scwx-qt/source/scwx/qt/view/level2_product_view.hpp b/scwx-qt/source/scwx/qt/view/level2_product_view.hpp index 387f79d2..a00dd0da 100644 --- a/scwx-qt/source/scwx/qt/view/level2_product_view.hpp +++ b/scwx-qt/source/scwx/qt/view/level2_product_view.hpp @@ -54,6 +54,8 @@ public: std::shared_ptr radarProductManager); protected: + void ConnectRadarProductManager() override; + void DisconnectRadarProductManager() override; void UpdateColorTable() override; protected slots: diff --git a/scwx-qt/source/scwx/qt/view/level3_product_view.cpp b/scwx-qt/source/scwx/qt/view/level3_product_view.cpp index 228e85c2..a0cc3ea5 100644 --- a/scwx-qt/source/scwx/qt/view/level3_product_view.cpp +++ b/scwx-qt/source/scwx/qt/view/level3_product_view.cpp @@ -59,7 +59,13 @@ Level3ProductView::Level3ProductView( RadarProductView(radarProductManager), p(std::make_unique(product)) { - connect(radarProductManager.get(), + ConnectRadarProductManager(); +} +Level3ProductView::~Level3ProductView() = default; + +void Level3ProductView::ConnectRadarProductManager() +{ + connect(radar_product_manager().get(), &manager::RadarProductManager::DataReloaded, this, [this](std::shared_ptr record) @@ -75,7 +81,14 @@ Level3ProductView::Level3ProductView( } }); } -Level3ProductView::~Level3ProductView() = default; + +void Level3ProductView::DisconnectRadarProductManager() +{ + disconnect(radar_product_manager().get(), + &manager::RadarProductManager::DataReloaded, + this, + nullptr); +} const std::vector& Level3ProductView::color_table() const diff --git a/scwx-qt/source/scwx/qt/view/level3_product_view.hpp b/scwx-qt/source/scwx/qt/view/level3_product_view.hpp index 8b622701..c9d299eb 100644 --- a/scwx-qt/source/scwx/qt/view/level3_product_view.hpp +++ b/scwx-qt/source/scwx/qt/view/level3_product_view.hpp @@ -45,6 +45,8 @@ protected: void set_graphic_product_message( std::shared_ptr gpm); + void ConnectRadarProductManager() override; + void DisconnectRadarProductManager() override; void UpdateColorTable() override; private: diff --git a/scwx-qt/source/scwx/qt/view/radar_product_view.cpp b/scwx-qt/source/scwx/qt/view/radar_product_view.cpp index acde16c8..99cd78c6 100644 --- a/scwx-qt/source/scwx/qt/view/radar_product_view.cpp +++ b/scwx-qt/source/scwx/qt/view/radar_product_view.cpp @@ -99,7 +99,9 @@ std::mutex& RadarProductView::sweep_mutex() void RadarProductView::set_radar_product_manager( std::shared_ptr radarProductManager) { + DisconnectRadarProductManager(); p->radarProductManager_ = radarProductManager; + ConnectRadarProductManager(); } void RadarProductView::Initialize() diff --git a/scwx-qt/source/scwx/qt/view/radar_product_view.hpp b/scwx-qt/source/scwx/qt/view/radar_product_view.hpp index 9ffde284..04c9131d 100644 --- a/scwx-qt/source/scwx/qt/view/radar_product_view.hpp +++ b/scwx-qt/source/scwx/qt/view/radar_product_view.hpp @@ -64,7 +64,9 @@ public: GetCfpMomentData() const; protected: - virtual void UpdateColorTable() = 0; + virtual void ConnectRadarProductManager() = 0; + virtual void DisconnectRadarProductManager() = 0; + virtual void UpdateColorTable() = 0; protected slots: virtual void ComputeSweep();