mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 00:10:06 +00:00 
			
		
		
		
	Add checks to prevent files being saved before being fully read.
This commit is contained in:
		
							parent
							
								
									f3c846f0b1
								
							
						
					
					
						commit
						bc79ed11a3
					
				
					 5 changed files with 31 additions and 1 deletions
				
			
		|  | @ -60,6 +60,8 @@ public: | ||||||
|    void                          WriteMarkerSettings(); |    void                          WriteMarkerSettings(); | ||||||
|    std::shared_ptr<MarkerRecord> GetMarkerByName(const std::string& name); |    std::shared_ptr<MarkerRecord> GetMarkerByName(const std::string& name); | ||||||
| 
 | 
 | ||||||
|  |    bool markerFileRead_ {false}; | ||||||
|  | 
 | ||||||
|    void InitalizeIds(); |    void InitalizeIds(); | ||||||
|    types::MarkerId NewId(); |    types::MarkerId NewId(); | ||||||
|    types::MarkerId lastId_ {0}; |    types::MarkerId lastId_ {0}; | ||||||
|  | @ -209,11 +211,16 @@ void MarkerManager::Impl::ReadMarkerSettings() | ||||||
|       } |       } | ||||||
|    } |    } | ||||||
| 
 | 
 | ||||||
|  |    markerFileRead_ = true; | ||||||
|    Q_EMIT self_->MarkersUpdated(); |    Q_EMIT self_->MarkersUpdated(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void MarkerManager::Impl::WriteMarkerSettings() | void MarkerManager::Impl::WriteMarkerSettings() | ||||||
| { | { | ||||||
|  |    if (!markerFileRead_) | ||||||
|  |    { | ||||||
|  |       return; | ||||||
|  |    } | ||||||
|    logger_->info("Saving location marker settings"); |    logger_->info("Saving location marker settings"); | ||||||
| 
 | 
 | ||||||
|    const std::shared_lock lock(markerRecordLock_); |    const std::shared_lock lock(markerRecordLock_); | ||||||
|  |  | ||||||
|  | @ -70,6 +70,8 @@ public: | ||||||
|    boost::unordered_flat_map<std::string, std::shared_ptr<PlacefileRecord>> |    boost::unordered_flat_map<std::string, std::shared_ptr<PlacefileRecord>> | ||||||
|                      placefileRecordMap_ {}; |                      placefileRecordMap_ {}; | ||||||
|    std::shared_mutex placefileRecordLock_ {}; |    std::shared_mutex placefileRecordLock_ {}; | ||||||
|  | 
 | ||||||
|  |    bool placefileSettingsRead_ {false}; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class PlacefileManager::Impl::PlacefileRecord | class PlacefileManager::Impl::PlacefileRecord | ||||||
|  | @ -413,10 +415,15 @@ void PlacefileManager::Impl::ReadPlacefileSettings() | ||||||
|          } |          } | ||||||
|       } |       } | ||||||
|    } |    } | ||||||
|  |    placefileSettingsRead_ = true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void PlacefileManager::Impl::WritePlacefileSettings() | void PlacefileManager::Impl::WritePlacefileSettings() | ||||||
| { | { | ||||||
|  |    if (!placefileSettingsRead_) | ||||||
|  |    { | ||||||
|  |       return; | ||||||
|  |    } | ||||||
|    logger_->info("Saving placefile settings"); |    logger_->info("Saving placefile settings"); | ||||||
| 
 | 
 | ||||||
|    std::shared_lock lock {placefileRecordLock_}; |    std::shared_lock lock {placefileRecordLock_}; | ||||||
|  |  | ||||||
|  | @ -67,9 +67,10 @@ void SettingsManager::Initialize() | ||||||
|    } |    } | ||||||
| 
 | 
 | ||||||
|    p->settingsPath_ = appDataPath + "/settings.json"; |    p->settingsPath_ = appDataPath + "/settings.json"; | ||||||
|    p->initialized_  = true; |  | ||||||
| 
 | 
 | ||||||
|    ReadSettings(p->settingsPath_); |    ReadSettings(p->settingsPath_); | ||||||
|  | 
 | ||||||
|  |    p->initialized_ = true; | ||||||
|    p->ValidateSettings(); |    p->ValidateSettings(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -96,6 +96,8 @@ public: | ||||||
|       manager::PlacefileManager::Instance()}; |       manager::PlacefileManager::Instance()}; | ||||||
| 
 | 
 | ||||||
|    types::LayerVector layers_ {}; |    types::LayerVector layers_ {}; | ||||||
|  | 
 | ||||||
|  |    bool fileRead_ {false}; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| LayerModel::LayerModel(QObject* parent) : | LayerModel::LayerModel(QObject* parent) : | ||||||
|  | @ -201,6 +203,8 @@ void LayerModel::Impl::ReadLayerSettings() | ||||||
|       // Assign read layers
 |       // Assign read layers
 | ||||||
|       layers_.swap(newLayers); |       layers_.swap(newLayers); | ||||||
|    } |    } | ||||||
|  | 
 | ||||||
|  |    fileRead_ = true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void LayerModel::Impl::ValidateLayerSettings(types::LayerVector& layers) | void LayerModel::Impl::ValidateLayerSettings(types::LayerVector& layers) | ||||||
|  | @ -314,6 +318,10 @@ void LayerModel::Impl::ValidateLayerSettings(types::LayerVector& layers) | ||||||
| 
 | 
 | ||||||
| void LayerModel::Impl::WriteLayerSettings() | void LayerModel::Impl::WriteLayerSettings() | ||||||
| { | { | ||||||
|  |    if (!fileRead_) | ||||||
|  |    { | ||||||
|  |       return; | ||||||
|  |    } | ||||||
|    logger_->info("Saving layer settings"); |    logger_->info("Saving layer settings"); | ||||||
| 
 | 
 | ||||||
|    auto layerJson = boost::json::value_from(layers_); |    auto layerJson = boost::json::value_from(layers_); | ||||||
|  |  | ||||||
|  | @ -68,6 +68,8 @@ public: | ||||||
|    scwx::common::Coordinate                previousPosition_; |    scwx::common::Coordinate                previousPosition_; | ||||||
| 
 | 
 | ||||||
|    QIcon starIcon_ {":/res/icons/font-awesome-6/star-solid.svg"}; |    QIcon starIcon_ {":/res/icons/font-awesome-6/star-solid.svg"}; | ||||||
|  | 
 | ||||||
|  |    bool presetsRead_ {false}; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| RadarSiteModel::RadarSiteModel(QObject* parent) : | RadarSiteModel::RadarSiteModel(QObject* parent) : | ||||||
|  | @ -146,10 +148,15 @@ void RadarSiteModelImpl::ReadPresets() | ||||||
|          } |          } | ||||||
|       } |       } | ||||||
|    } |    } | ||||||
|  |    presetsRead_ = true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void RadarSiteModelImpl::WritePresets() | void RadarSiteModelImpl::WritePresets() | ||||||
| { | { | ||||||
|  |    if (!presetsRead_) | ||||||
|  |    { | ||||||
|  |       return; | ||||||
|  |    } | ||||||
|    logger_->info("Saving presets"); |    logger_->info("Saving presets"); | ||||||
| 
 | 
 | ||||||
|    auto presetsJson = boost::json::value_from(presets_); |    auto presetsJson = boost::json::value_from(presets_); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 AdenKoperczak
						AdenKoperczak