diff options
author | lat9nq <22451773+lat9nq@users.noreply.github.com> | 2023-06-21 01:42:42 -0400 |
---|---|---|
committer | lat9nq <22451773+lat9nq@users.noreply.github.com> | 2023-07-21 10:56:55 -0400 |
commit | ad645c29a44bd117cad90bda56e1f4d6296f2666 (patch) | |
tree | 6301d2470cd09ea5ef3bd4007d1aa1c97fe7717d /src/yuzu/configuration/configure_audio.cpp | |
parent | 62ffaa730fabd2101947dd28e50fae6d03162aa4 (diff) |
configuration: Use a builder to create widgets
This gets rid of some repeated code and sets us up to send more
information to the new widget.
Diffstat (limited to 'src/yuzu/configuration/configure_audio.cpp')
-rw-r--r-- | src/yuzu/configuration/configure_audio.cpp | 38 |
1 files changed, 15 insertions, 23 deletions
diff --git a/src/yuzu/configuration/configure_audio.cpp b/src/yuzu/configuration/configure_audio.cpp index 8c5378925..6db47fd61 100644 --- a/src/yuzu/configuration/configure_audio.cpp +++ b/src/yuzu/configuration/configure_audio.cpp @@ -16,23 +16,19 @@ #include "yuzu/configuration/shared_widget.h" #include "yuzu/uisettings.h" -ConfigureAudio::ConfigureAudio( - const Core::System& system_, - std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group_, - const ConfigurationShared::TranslationMap& translations_, - const ConfigurationShared::ComboboxTranslationMap& combobox_translations_, QWidget* parent) - : Tab(group_, parent), ui(std::make_unique<Ui::ConfigureAudio>()), system{system_}, - translations{translations_}, combobox_translations{combobox_translations_} { +ConfigureAudio::ConfigureAudio(const Core::System& system_, + std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group_, + const ConfigurationShared::Builder& builder, QWidget* parent) + : Tab(group_, parent), ui(std::make_unique<Ui::ConfigureAudio>()), system{system_} { ui->setupUi(this); - Setup(); + Setup(builder); SetConfiguration(); } ConfigureAudio::~ConfigureAudio() = default; -void ConfigureAudio::Setup() { - const bool runtime_lock = !system.IsPoweredOn(); +void ConfigureAudio::Setup(const ConfigurationShared::Builder& builder) { auto& layout = *ui->audio_widget->layout(); std::forward_list<Settings::BasicSetting*> settings; @@ -47,31 +43,27 @@ void ConfigureAudio::Setup() { push(Settings::Category::SystemAudio); for (auto* setting : settings) { - if (!Settings::IsConfiguringGlobal() && !setting->Switchable()) { - continue; - } - auto* widget = [&]() { if (setting->Id() == Settings::values.volume.Id()) { // volume needs to be a slider (default is line edit) - return new ConfigurationShared::Widget(setting, translations, combobox_translations, - this, runtime_lock, apply_funcs, nullptr, - ConfigurationShared::RequestType::Slider, - tr("%1%", "Volume percentage (e.g. 50%)")); + return builder.BuildWidget(setting, apply_funcs, nullptr, + ConfigurationShared::RequestType::Slider, + tr("%1%", "Volume percentage (e.g. 50%)")); } else if (setting->Id() == Settings::values.audio_output_device_id.Id() || setting->Id() == Settings::values.audio_input_device_id.Id() || setting->Id() == Settings::values.sink_id.Id()) { // These need to be unmanaged comboboxes, so we can populate them ourselves // TODO (lat9nq): Let it manage sink_id - return new ConfigurationShared::Widget( - setting, translations, combobox_translations, this, runtime_lock, apply_funcs, - ConfigurationShared::RequestType::ComboBox, false); + return builder.BuildWidget(setting, apply_funcs, + ConfigurationShared::RequestType::ComboBox, false); } else { - return new ConfigurationShared::Widget(setting, translations, combobox_translations, - this, runtime_lock, apply_funcs); + return builder.BuildWidget(setting, apply_funcs); } }(); + if (widget == nullptr) { + continue; + } if (!widget->Valid()) { delete widget; continue; |