Fix radar product manager to view signals on manager change

This commit is contained in:
Dan Paulat 2023-04-11 22:46:50 -05:00
parent f1a5d4a744
commit 6c7a02ff85
6 changed files with 39 additions and 5 deletions

View file

@ -106,7 +106,13 @@ Level2ProductView::Level2ProductView(
RadarProductView(radarProductManager), RadarProductView(radarProductManager),
p(std::make_unique<Level2ProductViewImpl>(product)) p(std::make_unique<Level2ProductViewImpl>(product))
{ {
connect(radarProductManager.get(), ConnectRadarProductManager();
}
Level2ProductView::~Level2ProductView() = default;
void Level2ProductView::ConnectRadarProductManager()
{
connect(radar_product_manager().get(),
&manager::RadarProductManager::DataReloaded, &manager::RadarProductManager::DataReloaded,
this, this,
[this](std::shared_ptr<types::RadarProductRecord> record) [this](std::shared_ptr<types::RadarProductRecord> 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<boost::gil::rgba8_pixel_t>& const std::vector<boost::gil::rgba8_pixel_t>&
Level2ProductView::color_table() const Level2ProductView::color_table() const

View file

@ -54,6 +54,8 @@ public:
std::shared_ptr<manager::RadarProductManager> radarProductManager); std::shared_ptr<manager::RadarProductManager> radarProductManager);
protected: protected:
void ConnectRadarProductManager() override;
void DisconnectRadarProductManager() override;
void UpdateColorTable() override; void UpdateColorTable() override;
protected slots: protected slots:

View file

@ -59,7 +59,13 @@ Level3ProductView::Level3ProductView(
RadarProductView(radarProductManager), RadarProductView(radarProductManager),
p(std::make_unique<Level3ProductViewImpl>(product)) p(std::make_unique<Level3ProductViewImpl>(product))
{ {
connect(radarProductManager.get(), ConnectRadarProductManager();
}
Level3ProductView::~Level3ProductView() = default;
void Level3ProductView::ConnectRadarProductManager()
{
connect(radar_product_manager().get(),
&manager::RadarProductManager::DataReloaded, &manager::RadarProductManager::DataReloaded,
this, this,
[this](std::shared_ptr<types::RadarProductRecord> record) [this](std::shared_ptr<types::RadarProductRecord> 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<boost::gil::rgba8_pixel_t>& const std::vector<boost::gil::rgba8_pixel_t>&
Level3ProductView::color_table() const Level3ProductView::color_table() const

View file

@ -45,6 +45,8 @@ protected:
void set_graphic_product_message( void set_graphic_product_message(
std::shared_ptr<wsr88d::rpg::GraphicProductMessage> gpm); std::shared_ptr<wsr88d::rpg::GraphicProductMessage> gpm);
void ConnectRadarProductManager() override;
void DisconnectRadarProductManager() override;
void UpdateColorTable() override; void UpdateColorTable() override;
private: private:

View file

@ -99,7 +99,9 @@ std::mutex& RadarProductView::sweep_mutex()
void RadarProductView::set_radar_product_manager( void RadarProductView::set_radar_product_manager(
std::shared_ptr<manager::RadarProductManager> radarProductManager) std::shared_ptr<manager::RadarProductManager> radarProductManager)
{ {
DisconnectRadarProductManager();
p->radarProductManager_ = radarProductManager; p->radarProductManager_ = radarProductManager;
ConnectRadarProductManager();
} }
void RadarProductView::Initialize() void RadarProductView::Initialize()

View file

@ -64,7 +64,9 @@ public:
GetCfpMomentData() const; GetCfpMomentData() const;
protected: protected:
virtual void UpdateColorTable() = 0; virtual void ConnectRadarProductManager() = 0;
virtual void DisconnectRadarProductManager() = 0;
virtual void UpdateColorTable() = 0;
protected slots: protected slots:
virtual void ComputeSweep(); virtual void ComputeSweep();