mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 08:50: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
	
	 Dan Paulat
						Dan Paulat