mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 22:00:05 +00:00
Emit signals when a sweep is not updated (with reason)
This commit is contained in:
parent
745eba34f2
commit
6b179fe35c
7 changed files with 44 additions and 1 deletions
|
|
@ -1010,6 +1010,10 @@ void MapWidgetImpl::RadarProductViewConnect()
|
|||
Q_EMIT widget_->RadarSweepUpdated();
|
||||
},
|
||||
Qt::QueuedConnection);
|
||||
connect(radarProductView.get(),
|
||||
&view::RadarProductView::SweepNotComputed,
|
||||
widget_,
|
||||
&MapWidget::RadarSweepNotUpdated);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1027,6 +1031,10 @@ void MapWidgetImpl::RadarProductViewDisconnect()
|
|||
&view::RadarProductView::SweepComputed,
|
||||
this,
|
||||
nullptr);
|
||||
disconnect(radarProductView.get(),
|
||||
&view::RadarProductView::SweepNotComputed,
|
||||
widget_,
|
||||
nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include <scwx/common/products.hpp>
|
||||
#include <scwx/qt/config/radar_site.hpp>
|
||||
#include <scwx/qt/types/map_types.hpp>
|
||||
#include <scwx/qt/types/radar_product_record.hpp>
|
||||
|
||||
#include <chrono>
|
||||
|
|
@ -143,6 +144,7 @@ signals:
|
|||
void MapStyleChanged(const std::string& styleName);
|
||||
void RadarSiteUpdated(std::shared_ptr<config::RadarSite> radarSite);
|
||||
void RadarSweepUpdated();
|
||||
void RadarSweepNotUpdated(types::NoUpdateReason reason);
|
||||
};
|
||||
|
||||
} // namespace map
|
||||
|
|
|
|||
|
|
@ -21,6 +21,14 @@ enum class MapTime
|
|||
Archive
|
||||
};
|
||||
|
||||
enum class NoUpdateReason
|
||||
{
|
||||
NoChange,
|
||||
NotLoaded,
|
||||
InvalidProduct,
|
||||
InvalidData
|
||||
};
|
||||
|
||||
std::string GetMapTimeName(MapTime mapTime);
|
||||
|
||||
} // namespace types
|
||||
|
|
|
|||
|
|
@ -402,6 +402,7 @@ void Level2ProductView::ComputeSweep()
|
|||
|
||||
if (p->dataBlockType_ == wsr88d::rda::DataBlockType::Unknown)
|
||||
{
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::InvalidProduct);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -423,8 +424,14 @@ void Level2ProductView::ComputeSweep()
|
|||
SelectTime(foundTime);
|
||||
}
|
||||
|
||||
if (radarData == nullptr || radarData == p->elevationScan_)
|
||||
if (radarData == nullptr)
|
||||
{
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::NotLoaded);
|
||||
return;
|
||||
}
|
||||
if (radarData == p->elevationScan_)
|
||||
{
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::NoChange);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -443,6 +450,7 @@ void Level2ProductView::ComputeSweep()
|
|||
{
|
||||
logger_->warn("No moment data for {}",
|
||||
common::GetLevel2Name(p->product_));
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::InvalidData);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -133,6 +133,7 @@ void Level3RadialView::ComputeSweep()
|
|||
if (message == nullptr)
|
||||
{
|
||||
logger_->debug("Level 3 data not found");
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::NotLoaded);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -142,11 +143,13 @@ void Level3RadialView::ComputeSweep()
|
|||
if (gpm == nullptr)
|
||||
{
|
||||
logger_->warn("Graphic Product Message not found");
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::InvalidData);
|
||||
return;
|
||||
}
|
||||
else if (gpm == graphic_product_message())
|
||||
{
|
||||
// Skip if this is the message we previously processed
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::NoChange);
|
||||
return;
|
||||
}
|
||||
set_graphic_product_message(gpm);
|
||||
|
|
@ -160,6 +163,7 @@ void Level3RadialView::ComputeSweep()
|
|||
if (descriptionBlock == nullptr || symbologyBlock == nullptr)
|
||||
{
|
||||
logger_->warn("Missing blocks");
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::InvalidData);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -168,6 +172,7 @@ void Level3RadialView::ComputeSweep()
|
|||
if (numberOfLayers < 1)
|
||||
{
|
||||
logger_->warn("No layers present in symbology block");
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::InvalidData);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -219,6 +224,7 @@ void Level3RadialView::ComputeSweep()
|
|||
else
|
||||
{
|
||||
logger_->debug("No radial data found");
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::InvalidData);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -227,6 +233,7 @@ void Level3RadialView::ComputeSweep()
|
|||
if (radials < 1 || radials > 720)
|
||||
{
|
||||
logger_->warn("Unsupported number of radials: {}", radials);
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::InvalidData);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -254,6 +261,7 @@ void Level3RadialView::ComputeSweep()
|
|||
if (gates < 1)
|
||||
{
|
||||
logger_->warn("No range bins in radial data");
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::InvalidData);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ void Level3RasterView::ComputeSweep()
|
|||
if (message == nullptr)
|
||||
{
|
||||
logger_->debug("Level 3 data not found");
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::NotLoaded);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -125,11 +126,13 @@ void Level3RasterView::ComputeSweep()
|
|||
if (gpm == nullptr)
|
||||
{
|
||||
logger_->warn("Graphic Product Message not found");
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::InvalidData);
|
||||
return;
|
||||
}
|
||||
else if (gpm == graphic_product_message())
|
||||
{
|
||||
// Skip if this is the message we previously processed
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::NoChange);
|
||||
return;
|
||||
}
|
||||
set_graphic_product_message(gpm);
|
||||
|
|
@ -143,6 +146,7 @@ void Level3RasterView::ComputeSweep()
|
|||
if (descriptionBlock == nullptr || symbologyBlock == nullptr)
|
||||
{
|
||||
logger_->warn("Missing blocks");
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::InvalidData);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -151,6 +155,7 @@ void Level3RasterView::ComputeSweep()
|
|||
if (numberOfLayers < 1)
|
||||
{
|
||||
logger_->warn("No layers present in symbology block");
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::InvalidData);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -182,6 +187,7 @@ void Level3RasterView::ComputeSweep()
|
|||
if (rasterData == nullptr)
|
||||
{
|
||||
logger_->debug("No raster data found");
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::InvalidData);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -196,6 +202,7 @@ void Level3RasterView::ComputeSweep()
|
|||
if (maxColumns == 0)
|
||||
{
|
||||
logger_->debug("No raster bins found");
|
||||
Q_EMIT SweepNotComputed(types::NoUpdateReason::InvalidData);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#include <scwx/common/color_table.hpp>
|
||||
#include <scwx/common/products.hpp>
|
||||
#include <scwx/qt/manager/radar_product_manager.hpp>
|
||||
#include <scwx/qt/types/map_types.hpp>
|
||||
|
||||
#include <chrono>
|
||||
#include <memory>
|
||||
|
|
@ -75,6 +76,7 @@ protected slots:
|
|||
signals:
|
||||
void ColorTableUpdated();
|
||||
void SweepComputed();
|
||||
void SweepNotComputed(types::NoUpdateReason reason);
|
||||
|
||||
private:
|
||||
std::unique_ptr<RadarProductViewImpl> p;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue