diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2023-08-22 11:30:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-22 11:30:25 -0400 |
commit | ef61d129d3ce357eeb12bc3ed14a1f5e376f1f95 (patch) | |
tree | 318a5af7edcf8c38de2d1d8a857fa25ce82cb827 /src/yuzu/configuration/configure_graphics.cpp | |
parent | b8bab551a4852395de473412bfc9d3f02f4cc01c (diff) | |
parent | 6af8cca2c1596f935cc9f71bf8b4b1497b9db5f7 (diff) |
Merge pull request #11303 from lat9nq/screenshots-configurable
yuzu-qt: Add configuration for screenshot resolution
Diffstat (limited to 'src/yuzu/configuration/configure_graphics.cpp')
-rw-r--r-- | src/yuzu/configuration/configure_graphics.cpp | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index a94fbc89a..8622dc184 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -24,6 +24,7 @@ #include <QtCore/qobjectdefs.h> #include <qabstractbutton.h> #include <qboxlayout.h> +#include <qcombobox.h> #include <qcoreevent.h> #include <qglobal.h> #include <qgridlayout.h> @@ -77,13 +78,16 @@ static constexpr Settings::VSyncMode PresentModeToSetting(VkPresentModeKHR mode) } } -ConfigureGraphics::ConfigureGraphics(const Core::System& system_, - std::vector<VkDeviceInfo::Record>& records_, - const std::function<void()>& expose_compute_option_, - std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group_, - const ConfigurationShared::Builder& builder, QWidget* parent) +ConfigureGraphics::ConfigureGraphics( + const Core::System& system_, std::vector<VkDeviceInfo::Record>& records_, + const std::function<void()>& expose_compute_option_, + const std::function<void(Settings::AspectRatio, Settings::ResolutionSetup)>& + update_aspect_ratio_, + std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group_, + const ConfigurationShared::Builder& builder, QWidget* parent) : ConfigurationShared::Tab(group_, parent), ui{std::make_unique<Ui::ConfigureGraphics>()}, - records{records_}, expose_compute_option{expose_compute_option_}, system{system_}, + records{records_}, expose_compute_option{expose_compute_option_}, + update_aspect_ratio{update_aspect_ratio_}, system{system_}, combobox_translations{builder.ComboboxTranslations()}, shader_mapping{ combobox_translations.at(Settings::EnumMetadata<Settings::ShaderBackend>::Index())} { @@ -140,6 +144,26 @@ ConfigureGraphics::ConfigureGraphics(const Core::System& system_, UpdateBackgroundColorButton(new_bg_color); }); + const auto& update_screenshot_info = [this, &builder]() { + const auto& combobox_enumerations = builder.ComboboxTranslations().at( + Settings::EnumMetadata<Settings::AspectRatio>::Index()); + const auto index = aspect_ratio_combobox->currentIndex(); + const auto ratio = static_cast<Settings::AspectRatio>(combobox_enumerations[index].first); + + const auto& combobox_enumerations_resolution = builder.ComboboxTranslations().at( + Settings::EnumMetadata<Settings::ResolutionSetup>::Index()); + const auto res_index = resolution_combobox->currentIndex(); + const auto setup = static_cast<Settings::ResolutionSetup>( + combobox_enumerations_resolution[res_index].first); + + update_aspect_ratio(ratio, setup); + }; + + connect(aspect_ratio_combobox, QOverload<int>::of(&QComboBox::currentIndexChanged), + update_screenshot_info); + connect(resolution_combobox, QOverload<int>::of(&QComboBox::currentIndexChanged), + update_screenshot_info); + api_combobox->setEnabled(!UISettings::values.has_broken_vulkan && api_combobox->isEnabled()); ui->api_widget->setEnabled( (!UISettings::values.has_broken_vulkan || Settings::IsConfiguringGlobal()) && @@ -280,6 +304,14 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) { // Keep track of vsync_mode's combobox so we can populate it vsync_mode_combobox = widget->combobox; hold_graphics.emplace(setting->Id(), widget); + } else if (setting->Id() == Settings::values.aspect_ratio.Id()) { + // Keep track of the aspect ratio combobox to update other UI tabs that need it + aspect_ratio_combobox = widget->combobox; + hold_graphics.emplace(setting->Id(), widget); + } else if (setting->Id() == Settings::values.resolution_setup.Id()) { + // Keep track of the resolution combobox to update other UI tabs that need it + resolution_combobox = widget->combobox; + hold_graphics.emplace(setting->Id(), widget); } else { hold_graphics.emplace(setting->Id(), widget); } |