configuration: Document odd widget cases
Explain why we need to do things differently at times, to serve as a reference.
This commit is contained in:
		| @@ -49,6 +49,7 @@ void ConfigureAudio::Setup() { | |||||||
|     for (auto* setting : settings) { |     for (auto* setting : settings) { | ||||||
|         auto* widget = [&]() { |         auto* widget = [&]() { | ||||||
|             if (setting->Id() == Settings::values.volume.Id()) { |             if (setting->Id() == Settings::values.volume.Id()) { | ||||||
|  |                 // volume needs to be a slider (default is line edit) | ||||||
|                 return new ConfigurationShared::Widget( |                 return new ConfigurationShared::Widget( | ||||||
|                     setting, translations, combobox_translations, this, runtime_lock, apply_funcs, |                     setting, translations, combobox_translations, this, runtime_lock, apply_funcs, | ||||||
|                     ConfigurationShared::RequestType::Slider, true, 1.0f, nullptr, |                     ConfigurationShared::RequestType::Slider, true, 1.0f, nullptr, | ||||||
| @@ -56,6 +57,7 @@ void ConfigureAudio::Setup() { | |||||||
|             } else if (setting->Id() == Settings::values.audio_output_device_id.Id() || |             } else if (setting->Id() == Settings::values.audio_output_device_id.Id() || | ||||||
|                        setting->Id() == Settings::values.audio_input_device_id.Id() || |                        setting->Id() == Settings::values.audio_input_device_id.Id() || | ||||||
|                        setting->Id() == Settings::values.sink_id.Id()) { |                        setting->Id() == Settings::values.sink_id.Id()) { | ||||||
|  |                 // These need to be unmanaged comboboxes, so we can populate them ourselves | ||||||
|                 return new ConfigurationShared::Widget( |                 return new ConfigurationShared::Widget( | ||||||
|                     setting, translations, combobox_translations, this, runtime_lock, apply_funcs, |                     setting, translations, combobox_translations, this, runtime_lock, apply_funcs, | ||||||
|                     ConfigurationShared::RequestType::ComboBox, false); |                     ConfigurationShared::RequestType::ComboBox, false); | ||||||
| @@ -79,6 +81,8 @@ void ConfigureAudio::Setup() { | |||||||
|             connect(sink_combo_box, qOverload<int>(&QComboBox::currentIndexChanged), this, |             connect(sink_combo_box, qOverload<int>(&QComboBox::currentIndexChanged), this, | ||||||
|                     &ConfigureAudio::UpdateAudioDevices); |                     &ConfigureAudio::UpdateAudioDevices); | ||||||
|         } else if (setting->Id() == Settings::values.audio_output_device_id.Id()) { |         } else if (setting->Id() == Settings::values.audio_output_device_id.Id()) { | ||||||
|  |             // Keep track of output (and input) device comboboxes to populate them with system | ||||||
|  |             // devices, which are determined at run time | ||||||
|             output_device_combo_box = widget->combobox; |             output_device_combo_box = widget->combobox; | ||||||
|         } else if (setting->Id() == Settings::values.audio_input_device_id.Id()) { |         } else if (setting->Id() == Settings::values.audio_input_device_id.Id()) { | ||||||
|             input_device_combo_box = widget->combobox; |             input_device_combo_box = widget->combobox; | ||||||
|   | |||||||
| @@ -58,9 +58,11 @@ void ConfigureCpu::Setup() { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (setting->Id() == Settings::values.cpu_accuracy.Id()) { |         if (setting->Id() == Settings::values.cpu_accuracy.Id()) { | ||||||
|  |             // Keep track of cpu_accuracy combobox to display/hide the unsafe settings | ||||||
|             accuracy_layout->addWidget(widget); |             accuracy_layout->addWidget(widget); | ||||||
|             accuracy_combobox = widget->combobox; |             accuracy_combobox = widget->combobox; | ||||||
|         } else { |         } else { | ||||||
|  |             // Presently, all other settings here are unsafe checkboxes | ||||||
|             unsafe_hold.insert({setting->GetLabel(), widget}); |             unsafe_hold.insert({setting->GetLabel(), widget}); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -231,6 +231,7 @@ void ConfigureGraphics::Setup() { | |||||||
|  |  | ||||||
|     for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) { |     for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) { | ||||||
|         ConfigurationShared::Widget* widget = [&]() { |         ConfigurationShared::Widget* widget = [&]() { | ||||||
|  |             // Set managed to false on these and set up the comboboxes ourselves | ||||||
|             if (setting->Id() == Settings::values.vulkan_device.Id() || |             if (setting->Id() == Settings::values.vulkan_device.Id() || | ||||||
|                 setting->Id() == Settings::values.shader_backend.Id() || |                 setting->Id() == Settings::values.shader_backend.Id() || | ||||||
|                 setting->Id() == Settings::values.vsync_mode.Id()) { |                 setting->Id() == Settings::values.vsync_mode.Id()) { | ||||||
| @@ -238,11 +239,13 @@ void ConfigureGraphics::Setup() { | |||||||
|                     setting, translations, combobox_translations, this, runtime_lock, apply_funcs, |                     setting, translations, combobox_translations, this, runtime_lock, apply_funcs, | ||||||
|                     ConfigurationShared::RequestType::ComboBox, false); |                     ConfigurationShared::RequestType::ComboBox, false); | ||||||
|             } else if (setting->Id() == Settings::values.fsr_sharpening_slider.Id()) { |             } else if (setting->Id() == Settings::values.fsr_sharpening_slider.Id()) { | ||||||
|  |                 // FSR needs a reversed slider | ||||||
|                 return new ConfigurationShared::Widget( |                 return new ConfigurationShared::Widget( | ||||||
|                     setting, translations, combobox_translations, this, runtime_lock, apply_funcs, |                     setting, translations, combobox_translations, this, runtime_lock, apply_funcs, | ||||||
|                     ConfigurationShared::RequestType::ReverseSlider, true, 0.5f, nullptr, |                     ConfigurationShared::RequestType::ReverseSlider, true, 0.5f, nullptr, | ||||||
|                     tr("%1%", "FSR sharpening percentage (e.g. 50%)")); |                     tr("%1%", "FSR sharpening percentage (e.g. 50%)")); | ||||||
|             } else if (setting->Id() == Settings::values.speed_limit.Id()) { |             } else if (setting->Id() == Settings::values.speed_limit.Id()) { | ||||||
|  |                 // speed_limit needs a checkbox to set use_speed_limit, as well as a spinbox | ||||||
|                 return new ConfigurationShared::Widget( |                 return new ConfigurationShared::Widget( | ||||||
|                     setting, translations, combobox_translations, this, runtime_lock, apply_funcs, |                     setting, translations, combobox_translations, this, runtime_lock, apply_funcs, | ||||||
|                     ConfigurationShared::RequestType::SpinBox, true, 1.0f, |                     ConfigurationShared::RequestType::SpinBox, true, 1.0f, | ||||||
| @@ -269,18 +272,23 @@ void ConfigureGraphics::Setup() { | |||||||
|                                  [=](bool) { UpdateAPILayout(); }); |                                  [=](bool) { UpdateAPILayout(); }); | ||||||
|  |  | ||||||
|                 // Detach API's restore button and place it where we want |                 // Detach API's restore button and place it where we want | ||||||
|  |                 // Lets us put it on the side, and it will automatically scale if there's a second | ||||||
|  |                 // combobox (shader_backend, vulkan_device) | ||||||
|                 widget->layout()->removeWidget(api_restore_global_button); |                 widget->layout()->removeWidget(api_restore_global_button); | ||||||
|                 api_layout->addWidget(api_restore_global_button); |                 api_layout->addWidget(api_restore_global_button); | ||||||
|             } |             } | ||||||
|         } else if (setting->Id() == Settings::values.vulkan_device.Id()) { |         } else if (setting->Id() == Settings::values.vulkan_device.Id()) { | ||||||
|  |             // Keep track of vulkan_device's combobox so we can populate it | ||||||
|             hold_api.push_front(widget); |             hold_api.push_front(widget); | ||||||
|             vulkan_device_combobox = widget->combobox; |             vulkan_device_combobox = widget->combobox; | ||||||
|             vulkan_device_widget = widget; |             vulkan_device_widget = widget; | ||||||
|         } else if (setting->Id() == Settings::values.shader_backend.Id()) { |         } else if (setting->Id() == Settings::values.shader_backend.Id()) { | ||||||
|  |             // Keep track of shader_backend's combobox so we can populate it | ||||||
|             hold_api.push_front(widget); |             hold_api.push_front(widget); | ||||||
|             shader_backend_combobox = widget->combobox; |             shader_backend_combobox = widget->combobox; | ||||||
|             shader_backend_widget = widget; |             shader_backend_widget = widget; | ||||||
|         } else if (setting->Id() == Settings::values.vsync_mode.Id()) { |         } else if (setting->Id() == Settings::values.vsync_mode.Id()) { | ||||||
|  |             // Keep track of vsync_mode's combobox so we can populate it | ||||||
|             vsync_mode_combobox = widget->combobox; |             vsync_mode_combobox = widget->combobox; | ||||||
|             hold_graphics.emplace(setting->Id(), widget); |             hold_graphics.emplace(setting->Id(), widget); | ||||||
|         } else { |         } else { | ||||||
| @@ -296,6 +304,8 @@ void ConfigureGraphics::Setup() { | |||||||
|         api_grid_layout->addWidget(widget); |         api_grid_layout->addWidget(widget); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     // Background color is too specific to build into the new system, so we manage it here | ||||||
|  |     // (3 settings, all collected into a single widget with a QColor to manage on top) | ||||||
|     if (Settings::IsConfiguringGlobal()) { |     if (Settings::IsConfiguringGlobal()) { | ||||||
|         apply_funcs.push_front([this](bool powered_on) { |         apply_funcs.push_front([this](bool powered_on) { | ||||||
|             Settings::values.bg_red.SetValue(static_cast<u8>(bg_color.red())); |             Settings::values.bg_red.SetValue(static_cast<u8>(bg_color.red())); | ||||||
|   | |||||||
| @@ -45,6 +45,7 @@ void ConfigureGraphicsAdvanced::SetConfiguration() { | |||||||
|  |  | ||||||
|         hold.emplace(setting->Id(), widget); |         hold.emplace(setting->Id(), widget); | ||||||
|  |  | ||||||
|  |         // Keep track of enable_compute_pipelines so we can display it when needed | ||||||
|         if (setting->Id() == Settings::values.enable_compute_pipelines.Id()) { |         if (setting->Id() == Settings::values.enable_compute_pipelines.Id()) { | ||||||
|             checkbox_enable_compute_pipelines = widget; |             checkbox_enable_compute_pipelines = widget; | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -126,11 +126,15 @@ void ConfigureSystem::Setup() { | |||||||
|         [[maybe_unused]] std::string label = setting->GetLabel(); |         [[maybe_unused]] std::string label = setting->GetLabel(); | ||||||
|         ConfigurationShared::Widget* widget = [=]() { |         ConfigurationShared::Widget* widget = [=]() { | ||||||
|             if (setting->Id() == Settings::values.custom_rtc.Id()) { |             if (setting->Id() == Settings::values.custom_rtc.Id()) { | ||||||
|  |                 // custom_rtc needs a DateTimeEdit (default is LineEdit), and a checkbox to manage | ||||||
|  |                 // it and custom_rtc_enabled | ||||||
|                 return new ConfigurationShared::Widget( |                 return new ConfigurationShared::Widget( | ||||||
|                     setting, translations, combobox_translations, this, runtime_lock, apply_funcs, |                     setting, translations, combobox_translations, this, runtime_lock, apply_funcs, | ||||||
|                     ConfigurationShared::RequestType::DateTimeEdit, true, 1.0f, |                     ConfigurationShared::RequestType::DateTimeEdit, true, 1.0f, | ||||||
|                     &Settings::values.custom_rtc_enabled); |                     &Settings::values.custom_rtc_enabled); | ||||||
|             } else if (setting->Id() == Settings::values.rng_seed.Id()) { |             } else if (setting->Id() == Settings::values.rng_seed.Id()) { | ||||||
|  |                 // rng_seed needs a HexEdit (default is LineEdit), and a checkbox to manage | ||||||
|  |                 // it and rng_seed_enabled | ||||||
|                 return new ConfigurationShared::Widget( |                 return new ConfigurationShared::Widget( | ||||||
|                     setting, translations, combobox_translations, this, runtime_lock, apply_funcs, |                     setting, translations, combobox_translations, this, runtime_lock, apply_funcs, | ||||||
|                     ConfigurationShared::RequestType::HexEdit, true, 1.0f, |                     ConfigurationShared::RequestType::HexEdit, true, 1.0f, | ||||||
| @@ -147,17 +151,20 @@ void ConfigureSystem::Setup() { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (setting->Id() == Settings::values.rng_seed.Id()) { |         if (setting->Id() == Settings::values.rng_seed.Id()) { | ||||||
|  |             // Keep track of rng_seed's widgets to reset it with the checkbox state | ||||||
|             rng_seed_checkbox = widget->checkbox; |             rng_seed_checkbox = widget->checkbox; | ||||||
|             rng_seed_edit = widget->line_edit; |             rng_seed_edit = widget->line_edit; | ||||||
|  |  | ||||||
|             rng_seed_edit->setEnabled(Settings::values.rng_seed_enabled.GetValue()); |             rng_seed_edit->setEnabled(Settings::values.rng_seed_enabled.GetValue()); | ||||||
|         } else if (setting->Id() == Settings::values.custom_rtc.Id()) { |         } else if (setting->Id() == Settings::values.custom_rtc.Id()) { | ||||||
|  |             // Keep track of custom_rtc's widgets to reset it with the checkbox state | ||||||
|             custom_rtc_checkbox = widget->checkbox; |             custom_rtc_checkbox = widget->checkbox; | ||||||
|             custom_rtc_edit = widget->date_time_edit; |             custom_rtc_edit = widget->date_time_edit; | ||||||
|  |  | ||||||
|             custom_rtc_edit->setEnabled(Settings::values.custom_rtc_enabled.GetValue()); |             custom_rtc_edit->setEnabled(Settings::values.custom_rtc_enabled.GetValue()); | ||||||
|         } else if (setting->Id() == Settings::values.region_index.Id()) { |         } else if (setting->Id() == Settings::values.region_index.Id()) { | ||||||
|  |             // Keep track of the region_index (and langauge_index) combobox to validate the selected | ||||||
|  |             // settings | ||||||
|             combo_region = widget->combobox; |             combo_region = widget->combobox; | ||||||
|         } else if (setting->Id() == Settings::values.language_index.Id()) { |         } else if (setting->Id() == Settings::values.language_index.Id()) { | ||||||
|             combo_language = widget->combobox; |             combo_language = widget->combobox; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user