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),
p(std::make_unique<Level2ProductViewImpl>(product))
{
connect(radarProductManager.get(),
ConnectRadarProductManager();
}
Level2ProductView::~Level2ProductView() = default;
void Level2ProductView::ConnectRadarProductManager()
{
connect(radar_product_manager().get(),
&manager::RadarProductManager::DataReloaded,
this,
[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>&
Level2ProductView::color_table() const

View file

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

View file

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

View file

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

View file

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

View file

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