mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 04:20:05 +00:00 
			
		
		
		
	Add alert palette settings
This commit is contained in:
		
							parent
							
								
									1a30743c0a
								
							
						
					
					
						commit
						efee1653e1
					
				
					 3 changed files with 162 additions and 2 deletions
				
			
		|  | @ -169,7 +169,8 @@ set(HDR_REQUEST source/scwx/qt/request/download_request.hpp | ||||||
|                 source/scwx/qt/request/nexrad_file_request.hpp) |                 source/scwx/qt/request/nexrad_file_request.hpp) | ||||||
| set(SRC_REQUEST source/scwx/qt/request/download_request.cpp | set(SRC_REQUEST source/scwx/qt/request/download_request.cpp | ||||||
|                 source/scwx/qt/request/nexrad_file_request.cpp) |                 source/scwx/qt/request/nexrad_file_request.cpp) | ||||||
| set(HDR_SETTINGS source/scwx/qt/settings/audio_settings.hpp | set(HDR_SETTINGS source/scwx/qt/settings/alert_palette_settings.hpp | ||||||
|  |                  source/scwx/qt/settings/audio_settings.hpp | ||||||
|                  source/scwx/qt/settings/general_settings.hpp |                  source/scwx/qt/settings/general_settings.hpp | ||||||
|                  source/scwx/qt/settings/hotkey_settings.hpp |                  source/scwx/qt/settings/hotkey_settings.hpp | ||||||
|                  source/scwx/qt/settings/line_settings.hpp |                  source/scwx/qt/settings/line_settings.hpp | ||||||
|  | @ -186,7 +187,8 @@ set(HDR_SETTINGS source/scwx/qt/settings/audio_settings.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) |                  source/scwx/qt/settings/unit_settings.hpp) | ||||||
| set(SRC_SETTINGS source/scwx/qt/settings/audio_settings.cpp | set(SRC_SETTINGS source/scwx/qt/settings/alert_palette_settings.cpp | ||||||
|  |                  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 | ||||||
|                  source/scwx/qt/settings/line_settings.cpp |                  source/scwx/qt/settings/line_settings.cpp | ||||||
|  |  | ||||||
							
								
								
									
										112
									
								
								scwx-qt/source/scwx/qt/settings/alert_palette_settings.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								scwx-qt/source/scwx/qt/settings/alert_palette_settings.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,112 @@ | ||||||
|  | #include <scwx/qt/settings/alert_palette_settings.hpp> | ||||||
|  | #include <scwx/qt/util/color.hpp> | ||||||
|  | 
 | ||||||
|  | #include <map> | ||||||
|  | 
 | ||||||
|  | #include <boost/algorithm/string/case_conv.hpp> | ||||||
|  | #include <boost/gil.hpp> | ||||||
|  | 
 | ||||||
|  | namespace scwx | ||||||
|  | { | ||||||
|  | namespace qt | ||||||
|  | { | ||||||
|  | namespace settings | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | static const std::string logPrefix_ = | ||||||
|  |    "scwx::qt::settings::alert_palette_settings"; | ||||||
|  | 
 | ||||||
|  | class AlertPaletteSettings::Impl | ||||||
|  | { | ||||||
|  | public: | ||||||
|  |    explicit Impl(awips::Phenomenon phenomenon) : phenomenon_ {phenomenon} | ||||||
|  |    { | ||||||
|  |       auto& info = awips::ibw::GetImpactBasedWarningInfo(phenomenon); | ||||||
|  |       for (auto& threatCategory : info.threatCategories_) | ||||||
|  |       { | ||||||
|  |          std::string threatCategoryName = | ||||||
|  |             awips::ibw::GetThreatCategoryName(threatCategory); | ||||||
|  |          boost::algorithm::to_lower(threatCategoryName); | ||||||
|  |          threatCategoryMap_.emplace(threatCategory, threatCategoryName); | ||||||
|  |       } | ||||||
|  |    } | ||||||
|  |    ~Impl() {} | ||||||
|  | 
 | ||||||
|  |    awips::Phenomenon phenomenon_; | ||||||
|  | 
 | ||||||
|  |    std::map<awips::ibw::ThreatCategory, LineSettings> threatCategoryMap_ {}; | ||||||
|  | 
 | ||||||
|  |    LineSettings observed_ {"observed"}; | ||||||
|  |    LineSettings tornadoPossible_ {"tornado_possible"}; | ||||||
|  |    LineSettings inactive_ {"inactive"}; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | AlertPaletteSettings::AlertPaletteSettings(awips::Phenomenon phenomenon) : | ||||||
|  |     SettingsCategory(awips::GetPhenomenonCode(phenomenon)), | ||||||
|  |     p(std::make_unique<Impl>(phenomenon)) | ||||||
|  | { | ||||||
|  |    auto& info = awips::ibw::GetImpactBasedWarningInfo(p->phenomenon_); | ||||||
|  |    for (auto& threatCategory : p->threatCategoryMap_) | ||||||
|  |    { | ||||||
|  |       RegisterSubcategory(threatCategory.second); | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    if (info.hasObservedTag_) | ||||||
|  |    { | ||||||
|  |       RegisterSubcategory(p->observed_); | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    if (info.hasTornadoPossibleTag_) | ||||||
|  |    { | ||||||
|  |       RegisterSubcategory(p->tornadoPossible_); | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    RegisterSubcategory(p->inactive_); | ||||||
|  | 
 | ||||||
|  |    SetDefaults(); | ||||||
|  | } | ||||||
|  | AlertPaletteSettings::~AlertPaletteSettings() = default; | ||||||
|  | 
 | ||||||
|  | AlertPaletteSettings::AlertPaletteSettings(AlertPaletteSettings&&) noexcept = | ||||||
|  |    default; | ||||||
|  | AlertPaletteSettings& | ||||||
|  | AlertPaletteSettings::operator=(AlertPaletteSettings&&) noexcept = default; | ||||||
|  | 
 | ||||||
|  | LineSettings& AlertPaletteSettings::threat_category( | ||||||
|  |    awips::ibw::ThreatCategory threatCategory) const | ||||||
|  | { | ||||||
|  |    auto it = p->threatCategoryMap_.find(threatCategory); | ||||||
|  |    if (it != p->threatCategoryMap_.cend()) | ||||||
|  |    { | ||||||
|  |       return it->second; | ||||||
|  |    } | ||||||
|  |    return p->threatCategoryMap_.at(awips::ibw::ThreatCategory::Base); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | LineSettings& AlertPaletteSettings::inactive() const | ||||||
|  | { | ||||||
|  |    return p->inactive_; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | LineSettings& AlertPaletteSettings::observed() const | ||||||
|  | { | ||||||
|  |    return p->observed_; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | LineSettings& AlertPaletteSettings::tornado_possible() const | ||||||
|  | { | ||||||
|  |    return p->tornadoPossible_; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool operator==(const AlertPaletteSettings& lhs, | ||||||
|  |                 const AlertPaletteSettings& rhs) | ||||||
|  | { | ||||||
|  |    return (lhs.p->threatCategoryMap_ == rhs.p->threatCategoryMap_ && | ||||||
|  |            lhs.p->inactive_ == rhs.p->inactive_ && | ||||||
|  |            lhs.p->observed_ == rhs.p->observed_ && | ||||||
|  |            lhs.p->tornadoPossible_ == rhs.p->tornadoPossible_); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | } // namespace settings
 | ||||||
|  | } // namespace qt
 | ||||||
|  | } // namespace scwx
 | ||||||
							
								
								
									
										46
									
								
								scwx-qt/source/scwx/qt/settings/alert_palette_settings.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								scwx-qt/source/scwx/qt/settings/alert_palette_settings.hpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,46 @@ | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #include <scwx/qt/settings/line_settings.hpp> | ||||||
|  | #include <scwx/qt/settings/settings_category.hpp> | ||||||
|  | #include <scwx/awips/impact_based_warnings.hpp> | ||||||
|  | #include <scwx/awips/phenomenon.hpp> | ||||||
|  | 
 | ||||||
|  | #include <memory> | ||||||
|  | #include <string> | ||||||
|  | 
 | ||||||
|  | namespace scwx | ||||||
|  | { | ||||||
|  | namespace qt | ||||||
|  | { | ||||||
|  | namespace settings | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | class AlertPaletteSettings : public SettingsCategory | ||||||
|  | { | ||||||
|  | public: | ||||||
|  |    explicit AlertPaletteSettings(awips::Phenomenon phenomenon); | ||||||
|  |    ~AlertPaletteSettings(); | ||||||
|  | 
 | ||||||
|  |    AlertPaletteSettings(const AlertPaletteSettings&)            = delete; | ||||||
|  |    AlertPaletteSettings& operator=(const AlertPaletteSettings&) = delete; | ||||||
|  | 
 | ||||||
|  |    AlertPaletteSettings(AlertPaletteSettings&&) noexcept; | ||||||
|  |    AlertPaletteSettings& operator=(AlertPaletteSettings&&) noexcept; | ||||||
|  | 
 | ||||||
|  |    LineSettings& | ||||||
|  |    threat_category(awips::ibw::ThreatCategory threatCategory) const; | ||||||
|  |    LineSettings& inactive() const; | ||||||
|  |    LineSettings& observed() const; | ||||||
|  |    LineSettings& tornado_possible() const; | ||||||
|  | 
 | ||||||
|  |    friend bool operator==(const AlertPaletteSettings& lhs, | ||||||
|  |                           const AlertPaletteSettings& rhs); | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|  |    class Impl; | ||||||
|  |    std::unique_ptr<Impl> p; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | } // namespace settings
 | ||||||
|  | } // namespace qt
 | ||||||
|  | } // namespace scwx
 | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Paulat
						Dan Paulat