mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 03:40:05 +00:00 
			
		
		
		
	Add unit settings
This commit is contained in:
		
							parent
							
								
									7a71b9e244
								
							
						
					
					
						commit
						3bfcaede96
					
				
					 5 changed files with 151 additions and 3 deletions
				
			
		|  | @ -176,7 +176,8 @@ set(HDR_SETTINGS source/scwx/qt/settings/audio_settings.hpp | ||||||
|                  source/scwx/qt/settings/settings_variable.hpp |                  source/scwx/qt/settings/settings_variable.hpp | ||||||
|                  source/scwx/qt/settings/settings_variable_base.hpp |                  source/scwx/qt/settings/settings_variable_base.hpp | ||||||
|                  source/scwx/qt/settings/text_settings.hpp |                  source/scwx/qt/settings/text_settings.hpp | ||||||
|                  source/scwx/qt/settings/ui_settings.hpp) |                  source/scwx/qt/settings/ui_settings.hpp | ||||||
|  |                  source/scwx/qt/settings/unit_settings.hpp) | ||||||
| set(SRC_SETTINGS source/scwx/qt/settings/audio_settings.cpp | set(SRC_SETTINGS source/scwx/qt/settings/audio_settings.cpp | ||||||
|                  source/scwx/qt/settings/general_settings.cpp |                  source/scwx/qt/settings/general_settings.cpp | ||||||
|                  source/scwx/qt/settings/hotkey_settings.cpp |                  source/scwx/qt/settings/hotkey_settings.cpp | ||||||
|  | @ -190,7 +191,8 @@ set(SRC_SETTINGS source/scwx/qt/settings/audio_settings.cpp | ||||||
|                  source/scwx/qt/settings/settings_variable.cpp |                  source/scwx/qt/settings/settings_variable.cpp | ||||||
|                  source/scwx/qt/settings/settings_variable_base.cpp |                  source/scwx/qt/settings/settings_variable_base.cpp | ||||||
|                  source/scwx/qt/settings/text_settings.cpp |                  source/scwx/qt/settings/text_settings.cpp | ||||||
|                  source/scwx/qt/settings/ui_settings.cpp) |                  source/scwx/qt/settings/ui_settings.cpp | ||||||
|  |                  source/scwx/qt/settings/unit_settings.cpp) | ||||||
| set(HDR_TYPES source/scwx/qt/types/alert_types.hpp | set(HDR_TYPES source/scwx/qt/types/alert_types.hpp | ||||||
|               source/scwx/qt/types/event_types.hpp |               source/scwx/qt/types/event_types.hpp | ||||||
|               source/scwx/qt/types/font_types.hpp |               source/scwx/qt/types/font_types.hpp | ||||||
|  |  | ||||||
|  | @ -8,6 +8,7 @@ | ||||||
| #include <scwx/qt/settings/product_settings.hpp> | #include <scwx/qt/settings/product_settings.hpp> | ||||||
| #include <scwx/qt/settings/text_settings.hpp> | #include <scwx/qt/settings/text_settings.hpp> | ||||||
| #include <scwx/qt/settings/ui_settings.hpp> | #include <scwx/qt/settings/ui_settings.hpp> | ||||||
|  | #include <scwx/qt/settings/unit_settings.hpp> | ||||||
| #include <scwx/qt/util/json.hpp> | #include <scwx/qt/util/json.hpp> | ||||||
| #include <scwx/util/logger.hpp> | #include <scwx/util/logger.hpp> | ||||||
| 
 | 
 | ||||||
|  | @ -139,6 +140,7 @@ boost::json::value SettingsManager::Impl::ConvertSettingsToJson() | ||||||
|    settings::ProductSettings::Instance().WriteJson(settingsJson); |    settings::ProductSettings::Instance().WriteJson(settingsJson); | ||||||
|    settings::TextSettings::Instance().WriteJson(settingsJson); |    settings::TextSettings::Instance().WriteJson(settingsJson); | ||||||
|    settings::UiSettings::Instance().WriteJson(settingsJson); |    settings::UiSettings::Instance().WriteJson(settingsJson); | ||||||
|  |    settings::UnitSettings::Instance().WriteJson(settingsJson); | ||||||
| 
 | 
 | ||||||
|    return settingsJson; |    return settingsJson; | ||||||
| } | } | ||||||
|  | @ -155,6 +157,7 @@ void SettingsManager::Impl::GenerateDefaultSettings() | ||||||
|    settings::ProductSettings::Instance().SetDefaults(); |    settings::ProductSettings::Instance().SetDefaults(); | ||||||
|    settings::TextSettings::Instance().SetDefaults(); |    settings::TextSettings::Instance().SetDefaults(); | ||||||
|    settings::UiSettings::Instance().SetDefaults(); |    settings::UiSettings::Instance().SetDefaults(); | ||||||
|  |    settings::UnitSettings::Instance().SetDefaults(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool SettingsManager::Impl::LoadSettings( | bool SettingsManager::Impl::LoadSettings( | ||||||
|  | @ -172,6 +175,7 @@ bool SettingsManager::Impl::LoadSettings( | ||||||
|    jsonDirty |= !settings::ProductSettings::Instance().ReadJson(settingsJson); |    jsonDirty |= !settings::ProductSettings::Instance().ReadJson(settingsJson); | ||||||
|    jsonDirty |= !settings::TextSettings::Instance().ReadJson(settingsJson); |    jsonDirty |= !settings::TextSettings::Instance().ReadJson(settingsJson); | ||||||
|    jsonDirty |= !settings::UiSettings::Instance().ReadJson(settingsJson); |    jsonDirty |= !settings::UiSettings::Instance().ReadJson(settingsJson); | ||||||
|  |    jsonDirty |= !settings::UnitSettings::Instance().ReadJson(settingsJson); | ||||||
| 
 | 
 | ||||||
|    return jsonDirty; |    return jsonDirty; | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										99
									
								
								scwx-qt/source/scwx/qt/settings/unit_settings.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								scwx-qt/source/scwx/qt/settings/unit_settings.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,99 @@ | ||||||
|  | #include <scwx/qt/settings/unit_settings.hpp> | ||||||
|  | #include <scwx/qt/settings/settings_definitions.hpp> | ||||||
|  | #include <scwx/qt/types/unit_types.hpp> | ||||||
|  | 
 | ||||||
|  | #include <boost/algorithm/string.hpp> | ||||||
|  | 
 | ||||||
|  | namespace scwx | ||||||
|  | { | ||||||
|  | namespace qt | ||||||
|  | { | ||||||
|  | namespace settings | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | static const std::string logPrefix_ = "scwx::qt::settings::unit_settings"; | ||||||
|  | 
 | ||||||
|  | class UnitSettings::Impl | ||||||
|  | { | ||||||
|  | public: | ||||||
|  |    explicit Impl() | ||||||
|  |    { | ||||||
|  |       std::string defaultAccumulationUnitsValue = | ||||||
|  |          types::GetAccumulationUnitsName(types::AccumulationUnits::Inches); | ||||||
|  |       std::string defaultEchoTopsUnitsValue = | ||||||
|  |          types::GetEchoTopsUnitsName(types::EchoTopsUnits::Kilofeet); | ||||||
|  |       std::string defaultSpeedUnitsValue = | ||||||
|  |          types::GetSpeedUnitsName(types::SpeedUnits::Knots); | ||||||
|  | 
 | ||||||
|  |       boost::to_lower(defaultAccumulationUnitsValue); | ||||||
|  |       boost::to_lower(defaultEchoTopsUnitsValue); | ||||||
|  |       boost::to_lower(defaultSpeedUnitsValue); | ||||||
|  | 
 | ||||||
|  |       accumulationUnits_.SetDefault(defaultAccumulationUnitsValue); | ||||||
|  |       echoTopsUnits_.SetDefault(defaultEchoTopsUnitsValue); | ||||||
|  |       speedUnits_.SetDefault(defaultSpeedUnitsValue); | ||||||
|  | 
 | ||||||
|  |       accumulationUnits_.SetValidator( | ||||||
|  |          SCWX_SETTINGS_ENUM_VALIDATOR(types::AccumulationUnits, | ||||||
|  |                                       types::AccumulationUnitsIterator(), | ||||||
|  |                                       types::GetAccumulationUnitsName)); | ||||||
|  |       echoTopsUnits_.SetValidator( | ||||||
|  |          SCWX_SETTINGS_ENUM_VALIDATOR(types::EchoTopsUnits, | ||||||
|  |                                       types::EchoTopsUnitsIterator(), | ||||||
|  |                                       types::GetEchoTopsUnitsName)); | ||||||
|  |       speedUnits_.SetValidator( | ||||||
|  |          SCWX_SETTINGS_ENUM_VALIDATOR(types::SpeedUnits, | ||||||
|  |                                       types::SpeedUnitsIterator(), | ||||||
|  |                                       types::GetSpeedUnitsName)); | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    ~Impl() {} | ||||||
|  | 
 | ||||||
|  |    SettingsVariable<std::string> accumulationUnits_ {"accumulation_units"}; | ||||||
|  |    SettingsVariable<std::string> echoTopsUnits_ {"echo_tops_units"}; | ||||||
|  |    SettingsVariable<std::string> speedUnits_ {"speed_units"}; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | UnitSettings::UnitSettings() : | ||||||
|  |     SettingsCategory("unit"), p(std::make_unique<Impl>()) | ||||||
|  | { | ||||||
|  |    RegisterVariables( | ||||||
|  |       {&p->accumulationUnits_, &p->echoTopsUnits_, &p->speedUnits_}); | ||||||
|  |    SetDefaults(); | ||||||
|  | } | ||||||
|  | UnitSettings::~UnitSettings() = default; | ||||||
|  | 
 | ||||||
|  | UnitSettings::UnitSettings(UnitSettings&&) noexcept            = default; | ||||||
|  | UnitSettings& UnitSettings::operator=(UnitSettings&&) noexcept = default; | ||||||
|  | 
 | ||||||
|  | SettingsVariable<std::string>& UnitSettings::accumulation_units() const | ||||||
|  | { | ||||||
|  |    return p->accumulationUnits_; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | SettingsVariable<std::string>& UnitSettings::echo_tops_units() const | ||||||
|  | { | ||||||
|  |    return p->echoTopsUnits_; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | SettingsVariable<std::string>& UnitSettings::speed_units() const | ||||||
|  | { | ||||||
|  |    return p->speedUnits_; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | UnitSettings& UnitSettings::Instance() | ||||||
|  | { | ||||||
|  |    static UnitSettings generalSettings_; | ||||||
|  |    return generalSettings_; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool operator==(const UnitSettings& lhs, const UnitSettings& rhs) | ||||||
|  | { | ||||||
|  |    return (lhs.p->accumulationUnits_ == rhs.p->accumulationUnits_ && | ||||||
|  |            lhs.p->echoTopsUnits_ == rhs.p->echoTopsUnits_ && | ||||||
|  |            lhs.p->speedUnits_ == rhs.p->speedUnits_); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | } // namespace settings
 | ||||||
|  | } // namespace qt
 | ||||||
|  | } // namespace scwx
 | ||||||
							
								
								
									
										43
									
								
								scwx-qt/source/scwx/qt/settings/unit_settings.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								scwx-qt/source/scwx/qt/settings/unit_settings.hpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,43 @@ | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #include <scwx/qt/settings/settings_category.hpp> | ||||||
|  | #include <scwx/qt/settings/settings_variable.hpp> | ||||||
|  | 
 | ||||||
|  | #include <memory> | ||||||
|  | #include <string> | ||||||
|  | 
 | ||||||
|  | namespace scwx | ||||||
|  | { | ||||||
|  | namespace qt | ||||||
|  | { | ||||||
|  | namespace settings | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | class UnitSettings : public SettingsCategory | ||||||
|  | { | ||||||
|  | public: | ||||||
|  |    explicit UnitSettings(); | ||||||
|  |    ~UnitSettings(); | ||||||
|  | 
 | ||||||
|  |    UnitSettings(const UnitSettings&)            = delete; | ||||||
|  |    UnitSettings& operator=(const UnitSettings&) = delete; | ||||||
|  | 
 | ||||||
|  |    UnitSettings(UnitSettings&&) noexcept; | ||||||
|  |    UnitSettings& operator=(UnitSettings&&) noexcept; | ||||||
|  | 
 | ||||||
|  |    SettingsVariable<std::string>& accumulation_units() const; | ||||||
|  |    SettingsVariable<std::string>& echo_tops_units() const; | ||||||
|  |    SettingsVariable<std::string>& speed_units() const; | ||||||
|  | 
 | ||||||
|  |    static UnitSettings& Instance(); | ||||||
|  | 
 | ||||||
|  |    friend bool operator==(const UnitSettings& lhs, const UnitSettings& rhs); | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|  |    class Impl; | ||||||
|  |    std::unique_ptr<Impl> p; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | } // namespace settings
 | ||||||
|  | } // namespace qt
 | ||||||
|  | } // namespace scwx
 | ||||||
|  | @ -1 +1 @@ | ||||||
| Subproject commit e350743fd8ca6858ce49a22bb8e40a0c6710ca86 | Subproject commit 03b6188cdf1b85f65bae0de822194bc6fab9bd14 | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Paulat
						Dan Paulat