configuration_shared: Make CheckState strongly typed
Also gets rid of unnecessary explicit namespace usage.
This commit is contained in:
		
							parent
							
								
									55ac28769a
								
							
						
					
					
						commit
						335aef78c4
					
				@ -95,42 +95,42 @@ void ConfigurationShared::SetHighlight(QWidget* widget, const std::string& name,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void ConfigurationShared::SetColoredTristate(QCheckBox* checkbox, const std::string& name,
 | 
					void ConfigurationShared::SetColoredTristate(QCheckBox* checkbox, const std::string& name,
 | 
				
			||||||
                                             const Settings::Setting<bool>& setting,
 | 
					                                             const Settings::Setting<bool>& setting,
 | 
				
			||||||
                                             ConfigurationShared::CheckState& tracker) {
 | 
					                                             CheckState& tracker) {
 | 
				
			||||||
    if (setting.UsingGlobal()) {
 | 
					    if (setting.UsingGlobal()) {
 | 
				
			||||||
        tracker = CheckState::Global;
 | 
					        tracker = CheckState::Global;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        tracker = (setting.GetValue() == setting.GetValue(true)) ? CheckState::On : CheckState::Off;
 | 
					        tracker = (setting.GetValue() == setting.GetValue(true)) ? CheckState::On : CheckState::Off;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    SetHighlight(checkbox, name, tracker != CheckState::Global);
 | 
					    SetHighlight(checkbox, name, tracker != CheckState::Global);
 | 
				
			||||||
    QObject::connect(
 | 
					    QObject::connect(checkbox, &QCheckBox::clicked, checkbox,
 | 
				
			||||||
        checkbox, &QCheckBox::clicked, checkbox, [checkbox, name, setting, &tracker]() {
 | 
					                     [checkbox, name, setting, &tracker]() {
 | 
				
			||||||
            tracker =
 | 
					                         tracker = static_cast<CheckState>((static_cast<int>(tracker) + 1) %
 | 
				
			||||||
                static_cast<ConfigurationShared::CheckState>((tracker + 1) % CheckState::Count);
 | 
					                                                           static_cast<int>(CheckState::Count));
 | 
				
			||||||
            if (tracker == CheckState::Global) {
 | 
					                         if (tracker == CheckState::Global) {
 | 
				
			||||||
                checkbox->setChecked(setting.GetValue(true));
 | 
					                             checkbox->setChecked(setting.GetValue(true));
 | 
				
			||||||
            }
 | 
					                         }
 | 
				
			||||||
            SetHighlight(checkbox, name, tracker != CheckState::Global);
 | 
					                         SetHighlight(checkbox, name, tracker != CheckState::Global);
 | 
				
			||||||
        });
 | 
					                     });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ConfigurationShared::SetColoredTristate(QCheckBox* checkbox, const std::string& name,
 | 
					void ConfigurationShared::SetColoredTristate(QCheckBox* checkbox, const std::string& name,
 | 
				
			||||||
                                             bool global, bool state, bool global_state,
 | 
					                                             bool global, bool state, bool global_state,
 | 
				
			||||||
                                             ConfigurationShared::CheckState& tracker) {
 | 
					                                             CheckState& tracker) {
 | 
				
			||||||
    if (global) {
 | 
					    if (global) {
 | 
				
			||||||
        tracker = CheckState::Global;
 | 
					        tracker = CheckState::Global;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        tracker = (state == global_state) ? CheckState::On : CheckState::Off;
 | 
					        tracker = (state == global_state) ? CheckState::On : CheckState::Off;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    SetHighlight(checkbox, name, tracker != CheckState::Global);
 | 
					    SetHighlight(checkbox, name, tracker != CheckState::Global);
 | 
				
			||||||
    QObject::connect(
 | 
					    QObject::connect(checkbox, &QCheckBox::clicked, checkbox,
 | 
				
			||||||
        checkbox, &QCheckBox::clicked, checkbox, [checkbox, name, global_state, &tracker]() {
 | 
					                     [checkbox, name, global_state, &tracker]() {
 | 
				
			||||||
            tracker =
 | 
					                         tracker = static_cast<CheckState>((static_cast<int>(tracker) + 1) %
 | 
				
			||||||
                static_cast<ConfigurationShared::CheckState>((tracker + 1) % CheckState::Count);
 | 
					                                                           static_cast<int>(CheckState::Count));
 | 
				
			||||||
            if (tracker == CheckState::Global) {
 | 
					                         if (tracker == CheckState::Global) {
 | 
				
			||||||
                checkbox->setChecked(global_state);
 | 
					                             checkbox->setChecked(global_state);
 | 
				
			||||||
            }
 | 
					                         }
 | 
				
			||||||
            SetHighlight(checkbox, name, tracker != CheckState::Global);
 | 
					                         SetHighlight(checkbox, name, tracker != CheckState::Global);
 | 
				
			||||||
        });
 | 
					                     });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ConfigurationShared::SetColoredComboBox(QComboBox* combobox, QWidget* target,
 | 
					void ConfigurationShared::SetColoredComboBox(QComboBox* combobox, QWidget* target,
 | 
				
			||||||
 | 
				
			|||||||
@ -15,7 +15,7 @@ constexpr int USE_GLOBAL_INDEX = 0;
 | 
				
			|||||||
constexpr int USE_GLOBAL_SEPARATOR_INDEX = 1;
 | 
					constexpr int USE_GLOBAL_SEPARATOR_INDEX = 1;
 | 
				
			||||||
constexpr int USE_GLOBAL_OFFSET = 2;
 | 
					constexpr int USE_GLOBAL_OFFSET = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum CheckState {
 | 
					enum class CheckState {
 | 
				
			||||||
    Off,
 | 
					    Off,
 | 
				
			||||||
    On,
 | 
					    On,
 | 
				
			||||||
    Global,
 | 
					    Global,
 | 
				
			||||||
@ -42,10 +42,9 @@ void SetPerGameSetting(QComboBox* combobox,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void SetHighlight(QWidget* widget, const std::string& name, bool highlighted);
 | 
					void SetHighlight(QWidget* widget, const std::string& name, bool highlighted);
 | 
				
			||||||
void SetColoredTristate(QCheckBox* checkbox, const std::string& name,
 | 
					void SetColoredTristate(QCheckBox* checkbox, const std::string& name,
 | 
				
			||||||
                        const Settings::Setting<bool>& setting,
 | 
					                        const Settings::Setting<bool>& setting, CheckState& tracker);
 | 
				
			||||||
                        ConfigurationShared::CheckState& tracker);
 | 
					 | 
				
			||||||
void SetColoredTristate(QCheckBox* checkbox, const std::string& name, bool global, bool state,
 | 
					void SetColoredTristate(QCheckBox* checkbox, const std::string& name, bool global, bool state,
 | 
				
			||||||
                        bool global_state, ConfigurationShared::CheckState& tracker);
 | 
					                        bool global_state, CheckState& tracker);
 | 
				
			||||||
void SetColoredComboBox(QComboBox* combobox, QWidget* target, const std::string& target_name,
 | 
					void SetColoredComboBox(QComboBox* combobox, QWidget* target, const std::string& target_name,
 | 
				
			||||||
                        int global);
 | 
					                        int global);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user