mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 00:40:06 +00:00 
			
		
		
		
	Implement discard functionality for line settings
This commit is contained in:
		
							parent
							
								
									6063de2095
								
							
						
					
					
						commit
						76809de2df
					
				
					 7 changed files with 89 additions and 7 deletions
				
			
		|  | @ -13,6 +13,8 @@ | |||
| #include <QToolButton> | ||||
| #include <QVBoxLayout> | ||||
| 
 | ||||
| #include <boost/signals2.hpp> | ||||
| 
 | ||||
| namespace scwx | ||||
| { | ||||
| namespace qt | ||||
|  | @ -35,7 +37,13 @@ public: | |||
|       SetupUi(); | ||||
|       ConnectSignals(); | ||||
|    } | ||||
|    ~Impl() = default; | ||||
|    ~Impl() | ||||
|    { | ||||
|       for (auto& c : bs2Connections_) | ||||
|       { | ||||
|          c.disconnect(); | ||||
|       } | ||||
|    }; | ||||
| 
 | ||||
|    void     AddPhenomenonLine(const std::string&      name, | ||||
|                               settings::LineSettings& lineSettings, | ||||
|  | @ -54,6 +62,8 @@ public: | |||
|    EditLineDialog* editLineDialog_; | ||||
|    LineLabel*      activeLineLabel_ {nullptr}; | ||||
| 
 | ||||
|    std::vector<boost::signals2::connection> bs2Connections_ {}; | ||||
| 
 | ||||
|    boost::unordered_flat_map<awips::Phenomenon, QWidget*> phenomenonPages_ {}; | ||||
| }; | ||||
| 
 | ||||
|  | @ -250,6 +260,11 @@ void AlertPaletteSettingsWidget::Impl::AddPhenomenonLine( | |||
| 
 | ||||
|    self_->AddSettingsCategory(&lineSettings); | ||||
| 
 | ||||
|    boost::signals2::connection c = lineSettings.RegisterResetCallback( | ||||
|       [lineLabel, &lineSettings]() | ||||
|       { lineLabel->set_line_settings(lineSettings); }); | ||||
|    bs2Connections_.push_back(c); | ||||
| 
 | ||||
|    connect( | ||||
|       toolButton, | ||||
|       &QAbstractButton::clicked, | ||||
|  |  | |||
|  | @ -61,6 +61,11 @@ bool SettingsPageWidget::CommitChanges() | |||
| 
 | ||||
| void SettingsPageWidget::DiscardChanges() | ||||
| { | ||||
|    for (auto& category : p->categories_) | ||||
|    { | ||||
|       category->Reset(); | ||||
|    } | ||||
| 
 | ||||
|    for (auto& setting : p->settings_) | ||||
|    { | ||||
|       setting->Reset(); | ||||
|  |  | |||
|  | @ -60,9 +60,17 @@ public: | |||
|    void ResetToDefault(); | ||||
| 
 | ||||
| protected: | ||||
|    void AddSettingsCategory(settings::SettingsCategory* category); | ||||
|    void AddSettingsInterface(settings::SettingsInterfaceBase* setting); | ||||
| 
 | ||||
|    /**
 | ||||
|     * Commits and resets all settings within a category upon page commit or | ||||
|     * reset. The use of SettingsInterface is preferred, as it allows the binding | ||||
|     * of widgets to these actions. | ||||
|     * | ||||
|     * @param [in] category Settings category | ||||
|     */ | ||||
|    void AddSettingsCategory(settings::SettingsCategory* category); | ||||
| 
 | ||||
| private: | ||||
|    class Impl; | ||||
|    std::shared_ptr<Impl> p; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Paulat
						Dan Paulat