From fb66a455c4c7c1e196fc1001a52325a33e50b127 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Thu, 2 Sep 2021 21:40:55 -0400 Subject: yuzu qt: Remove global system instances from config, WaitTree, main --- src/yuzu/configuration/config.cpp | 5 +- src/yuzu/configuration/config.h | 8 +- src/yuzu/configuration/configure.ui | 200 +-------------------- src/yuzu/configuration/configure_audio.cpp | 6 +- src/yuzu/configuration/configure_audio.h | 10 +- src/yuzu/configuration/configure_audio.ui | 3 + src/yuzu/configuration/configure_cpu.cpp | 5 +- src/yuzu/configuration/configure_cpu.h | 11 +- src/yuzu/configuration/configure_cpu.ui | 5 +- src/yuzu/configuration/configure_cpu_debug.cpp | 6 +- src/yuzu/configuration/configure_cpu_debug.h | 8 +- src/yuzu/configuration/configure_cpu_debug.ui | 3 + src/yuzu/configuration/configure_debug.cpp | 5 +- src/yuzu/configuration/configure_debug.h | 8 +- .../configuration/configure_debug_controller.cpp | 5 +- .../configuration/configure_debug_controller.h | 6 +- src/yuzu/configuration/configure_debug_tab.cpp | 17 +- src/yuzu/configuration/configure_debug_tab.h | 14 +- src/yuzu/configuration/configure_debug_tab.ui | 29 +-- src/yuzu/configuration/configure_dialog.cpp | 109 ++++++++--- src/yuzu/configuration/configure_dialog.h | 38 +++- src/yuzu/configuration/configure_filesystem.ui | 3 + src/yuzu/configuration/configure_general.cpp | 6 +- src/yuzu/configuration/configure_general.h | 11 +- src/yuzu/configuration/configure_general.ui | 3 + src/yuzu/configuration/configure_graphics.cpp | 6 +- src/yuzu/configuration/configure_graphics.h | 11 +- src/yuzu/configuration/configure_graphics.ui | 5 +- .../configuration/configure_graphics_advanced.cpp | 6 +- .../configuration/configure_graphics_advanced.h | 11 +- .../configuration/configure_graphics_advanced.ui | 3 + src/yuzu/configuration/configure_hotkeys.ui | 3 + src/yuzu/configuration/configure_input.cpp | 44 ++--- src/yuzu/configuration/configure_input.h | 10 +- src/yuzu/configuration/configure_input_player.cpp | 18 +- src/yuzu/configuration/configure_input_player.h | 9 +- .../configure_input_profile_dialog.cpp | 7 +- .../configuration/configure_input_profile_dialog.h | 6 +- src/yuzu/configuration/configure_network.cpp | 6 +- src/yuzu/configuration/configure_network.h | 4 +- src/yuzu/configuration/configure_network.ui | 3 + src/yuzu/configuration/configure_per_game.cpp | 66 +++++-- src/yuzu/configuration/configure_per_game.h | 25 ++- src/yuzu/configuration/configure_per_game.ui | 104 +++-------- .../configuration/configure_per_game_addons.cpp | 7 +- src/yuzu/configuration/configure_per_game_addons.h | 8 +- .../configuration/configure_per_game_addons.ui | 3 + .../configuration/configure_profile_manager.cpp | 8 +- src/yuzu/configuration/configure_profile_manager.h | 8 +- .../configuration/configure_profile_manager.ui | 5 +- src/yuzu/configuration/configure_system.cpp | 9 +- src/yuzu/configuration/configure_system.h | 11 +- src/yuzu/configuration/configure_system.ui | 3 + src/yuzu/configuration/configure_ui.cpp | 5 +- src/yuzu/configuration/configure_ui.h | 8 +- src/yuzu/configuration/configure_ui.ui | 5 +- src/yuzu/configuration/configure_web.ui | 36 ++-- src/yuzu/configuration/input_profiles.cpp | 9 +- src/yuzu/configuration/input_profiles.h | 8 +- 59 files changed, 513 insertions(+), 491 deletions(-) (limited to 'src/yuzu/configuration') diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index eb941ce02..30a864135 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -16,7 +16,8 @@ namespace FS = Common::FS; -Config::Config(const std::string& config_name, ConfigType config_type) : type(config_type) { +Config::Config(Core::System& system_, const std::string& config_name, ConfigType config_type) + : type(config_type), system{system_} { global = config_type == ConfigType::GlobalConfig; Initialize(config_name); @@ -1593,7 +1594,7 @@ void Config::Reload() { ReadValues(); // To apply default value changes SaveValues(); - Core::System::GetInstance().ApplySettings(); + system.ApplySettings(); } void Config::Save() { diff --git a/src/yuzu/configuration/config.h b/src/yuzu/configuration/config.h index 3ee694e7c..a7f4a6720 100644 --- a/src/yuzu/configuration/config.h +++ b/src/yuzu/configuration/config.h @@ -14,6 +14,10 @@ class QSettings; +namespace Core { +class System; +} + class Config { public: enum class ConfigType { @@ -22,7 +26,7 @@ public: InputProfile, }; - explicit Config(const std::string& config_name = "qt-config", + explicit Config(Core::System& system_, const std::string& config_name = "qt-config", ConfigType config_type = ConfigType::GlobalConfig); ~Config(); @@ -176,6 +180,8 @@ private: std::unique_ptr qt_config; std::string qt_config_loc; bool global; + + Core::System& system; }; // These metatype declarations cannot be in common/settings.h because core is devoid of QT diff --git a/src/yuzu/configuration/configure.ui b/src/yuzu/configuration/configure.ui index 6258dcf20..eb8078467 100644 --- a/src/yuzu/configuration/configure.ui +++ b/src/yuzu/configuration/configure.ui @@ -41,120 +41,8 @@ - 11 + -1 - - - General - - - General - - - - - UI - - - Game List - - - - - System - - - System - - - - - Profiles - - - Profiles - - - - - Filesystem - - - Filesystem - - - - - Controls - - - Controls - - - - - Hotkeys - - - Hotkeys - - - - - CPU - - - CPU - - - - - Graphics - - - Graphics - - - - - Advanced - - - GraphicsAdvanced - - - - - Audio - - - Audio - - - - - Debug - - - Debug - - - - - Web - - - Web - - - - - Network - - - Network - - @@ -168,92 +56,6 @@ - - - ConfigureGeneral - QWidget -
configuration/configure_general.h
- 1 -
- - ConfigureSystem - QWidget -
configuration/configure_system.h
- 1 -
- - ConfigureProfileManager - QWidget -
configuration/configure_profile_manager.h
- 1 -
- - ConfigureFilesystem - QWidget -
configuration/configure_filesystem.h
- 1 -
- - ConfigureAudio - QWidget -
configuration/configure_audio.h
- 1 -
- - ConfigureCpu - QWidget -
configuration/configure_cpu.h
- 1 -
- - ConfigureGraphics - QWidget -
configuration/configure_graphics.h
- 1 -
- - ConfigureGraphicsAdvanced - QWidget -
configuration/configure_graphics_advanced.h
- 1 -
- - ConfigureWeb - QWidget -
configuration/configure_web.h
- 1 -
- - ConfigureUi - QWidget -
configuration/configure_ui.h
- 1 -
- - ConfigureInput - QWidget -
configuration/configure_input.h
- 1 -
- - ConfigureHotkeys - QWidget -
configuration/configure_hotkeys.h
- 1 -
- - ConfigureNetwork - QWidget -
configuration/configure_network.h
- 1 -
- - ConfigureDebugTab - QWidget -
configuration/configure_debug_tab.h
- 1 -
-
diff --git a/src/yuzu/configuration/configure_audio.cpp b/src/yuzu/configuration/configure_audio.cpp index f437cb53d..7ddfd822b 100644 --- a/src/yuzu/configuration/configure_audio.cpp +++ b/src/yuzu/configuration/configure_audio.cpp @@ -14,8 +14,8 @@ #include "yuzu/configuration/configuration_shared.h" #include "yuzu/configuration/configure_audio.h" -ConfigureAudio::ConfigureAudio(QWidget* parent) - : QWidget(parent), ui(std::make_unique()) { +ConfigureAudio::ConfigureAudio(Core::System& system_, QWidget* parent) + : QWidget(parent), ui(std::make_unique()), system{system_} { ui->setupUi(this); InitializeAudioOutputSinkComboBox(); @@ -32,7 +32,7 @@ ConfigureAudio::ConfigureAudio(QWidget* parent) SetConfiguration(); - const bool is_powered_on = Core::System::GetInstance().IsPoweredOn(); + const bool is_powered_on = system.IsPoweredOn(); ui->output_sink_combo_box->setEnabled(!is_powered_on); ui->audio_device_combo_box->setEnabled(!is_powered_on); } diff --git a/src/yuzu/configuration/configure_audio.h b/src/yuzu/configuration/configure_audio.h index 5a01c8de7..7b503ff48 100644 --- a/src/yuzu/configuration/configure_audio.h +++ b/src/yuzu/configuration/configure_audio.h @@ -7,6 +7,10 @@ #include #include +namespace Core { +class System; +} + namespace ConfigurationShared { enum class CheckState; } @@ -19,10 +23,11 @@ class ConfigureAudio : public QWidget { Q_OBJECT public: - explicit ConfigureAudio(QWidget* parent = nullptr); + explicit ConfigureAudio(Core::System& system_, QWidget* parent = nullptr); ~ConfigureAudio() override; void ApplyConfiguration(); + void SetConfiguration(); private: void changeEvent(QEvent* event) override; @@ -33,7 +38,6 @@ private: void UpdateAudioDevices(int sink_index); - void SetConfiguration(); void SetOutputSinkFromSinkID(); void SetAudioDeviceFromDeviceID(); void SetVolumeIndicatorText(int percentage); @@ -41,4 +45,6 @@ private: void SetupPerGameUI(); std::unique_ptr ui; + + Core::System& system; }; diff --git a/src/yuzu/configuration/configure_audio.ui b/src/yuzu/configuration/configure_audio.ui index bf736fc2c..d1ac8ad02 100644 --- a/src/yuzu/configuration/configure_audio.ui +++ b/src/yuzu/configuration/configure_audio.ui @@ -10,6 +10,9 @@ 368 + + Audio + diff --git a/src/yuzu/configuration/configure_cpu.cpp b/src/yuzu/configuration/configure_cpu.cpp index 784b6484e..a232e8970 100644 --- a/src/yuzu/configuration/configure_cpu.cpp +++ b/src/yuzu/configuration/configure_cpu.cpp @@ -13,7 +13,8 @@ #include "yuzu/configuration/configuration_shared.h" #include "yuzu/configuration/configure_cpu.h" -ConfigureCpu::ConfigureCpu(QWidget* parent) : QWidget(parent), ui(new Ui::ConfigureCpu) { +ConfigureCpu::ConfigureCpu(Core::System& system_, QWidget* parent) + : QWidget(parent), ui(new Ui::ConfigureCpu), system{system_} { ui->setupUi(this); SetupPerGameUI(); @@ -27,7 +28,7 @@ ConfigureCpu::ConfigureCpu(QWidget* parent) : QWidget(parent), ui(new Ui::Config ConfigureCpu::~ConfigureCpu() = default; void ConfigureCpu::SetConfiguration() { - const bool runtime_lock = !Core::System::GetInstance().IsPoweredOn(); + const bool runtime_lock = !system.IsPoweredOn(); ui->accuracy->setEnabled(runtime_lock); ui->cpuopt_unsafe_unfuse_fma->setEnabled(runtime_lock); diff --git a/src/yuzu/configuration/configure_cpu.h b/src/yuzu/configuration/configure_cpu.h index 154931482..ae4e389f6 100644 --- a/src/yuzu/configuration/configure_cpu.h +++ b/src/yuzu/configuration/configure_cpu.h @@ -8,6 +8,10 @@ #include #include "common/settings.h" +namespace Core { +class System; +} + namespace ConfigurationShared { enum class CheckState; } @@ -20,10 +24,11 @@ class ConfigureCpu : public QWidget { Q_OBJECT public: - explicit ConfigureCpu(QWidget* parent = nullptr); + explicit ConfigureCpu(Core::System& system_, QWidget* parent = nullptr); ~ConfigureCpu() override; void ApplyConfiguration(); + void SetConfiguration(); private: void changeEvent(QEvent* event) override; @@ -31,8 +36,6 @@ private: void UpdateGroup(int index); - void SetConfiguration(); - void SetupPerGameUI(); std::unique_ptr ui; @@ -42,4 +45,6 @@ private: ConfigurationShared::CheckState cpuopt_unsafe_ignore_standard_fpcr; ConfigurationShared::CheckState cpuopt_unsafe_inaccurate_nan; ConfigurationShared::CheckState cpuopt_unsafe_fastmem_check; + + Core::System& system; }; diff --git a/src/yuzu/configuration/configure_cpu.ui b/src/yuzu/configuration/configure_cpu.ui index 5b9457faf..d8064db24 100644 --- a/src/yuzu/configuration/configure_cpu.ui +++ b/src/yuzu/configuration/configure_cpu.ui @@ -7,12 +7,15 @@ 0 0 448 - 433 + 439 Form + + CPU + diff --git a/src/yuzu/configuration/configure_cpu_debug.cpp b/src/yuzu/configuration/configure_cpu_debug.cpp index 98e2d2be5..e22f6166c 100644 --- a/src/yuzu/configuration/configure_cpu_debug.cpp +++ b/src/yuzu/configuration/configure_cpu_debug.cpp @@ -11,8 +11,8 @@ #include "ui_configure_cpu_debug.h" #include "yuzu/configuration/configure_cpu_debug.h" -ConfigureCpuDebug::ConfigureCpuDebug(QWidget* parent) - : QWidget(parent), ui(new Ui::ConfigureCpuDebug) { +ConfigureCpuDebug::ConfigureCpuDebug(Core::System& system_, QWidget* parent) + : QWidget(parent), ui(new Ui::ConfigureCpuDebug), system{system_} { ui->setupUi(this); SetConfiguration(); @@ -21,7 +21,7 @@ ConfigureCpuDebug::ConfigureCpuDebug(QWidget* parent) ConfigureCpuDebug::~ConfigureCpuDebug() = default; void ConfigureCpuDebug::SetConfiguration() { - const bool runtime_lock = !Core::System::GetInstance().IsPoweredOn(); + const bool runtime_lock = !system.IsPoweredOn(); ui->cpuopt_page_tables->setEnabled(runtime_lock); ui->cpuopt_page_tables->setChecked(Settings::values.cpuopt_page_tables.GetValue()); diff --git a/src/yuzu/configuration/configure_cpu_debug.h b/src/yuzu/configuration/configure_cpu_debug.h index 1b0d8050c..3811fd602 100644 --- a/src/yuzu/configuration/configure_cpu_debug.h +++ b/src/yuzu/configuration/configure_cpu_debug.h @@ -7,6 +7,10 @@ #include #include +namespace Core { +class System; +} + namespace Ui { class ConfigureCpuDebug; } @@ -15,7 +19,7 @@ class ConfigureCpuDebug : public QWidget { Q_OBJECT public: - explicit ConfigureCpuDebug(QWidget* parent = nullptr); + explicit ConfigureCpuDebug(Core::System& system_, QWidget* parent = nullptr); ~ConfigureCpuDebug() override; void ApplyConfiguration(); @@ -27,4 +31,6 @@ private: void SetConfiguration(); std::unique_ptr ui; + + Core::System& system; }; diff --git a/src/yuzu/configuration/configure_cpu_debug.ui b/src/yuzu/configuration/configure_cpu_debug.ui index abf469b55..6e635bb2f 100644 --- a/src/yuzu/configuration/configure_cpu_debug.ui +++ b/src/yuzu/configuration/configure_cpu_debug.ui @@ -13,6 +13,9 @@ Form + + CPU + diff --git a/src/yuzu/configuration/configure_debug.cpp b/src/yuzu/configuration/configure_debug.cpp index c0b240c1e..f67a3d723 100644 --- a/src/yuzu/configuration/configure_debug.cpp +++ b/src/yuzu/configuration/configure_debug.cpp @@ -14,7 +14,8 @@ #include "yuzu/debugger/console.h" #include "yuzu/uisettings.h" -ConfigureDebug::ConfigureDebug(QWidget* parent) : QWidget(parent), ui(new Ui::ConfigureDebug) { +ConfigureDebug::ConfigureDebug(Core::System& system_, QWidget* parent) + : QWidget(parent), ui(new Ui::ConfigureDebug), system{system_} { ui->setupUi(this); SetConfiguration(); @@ -28,7 +29,7 @@ ConfigureDebug::ConfigureDebug(QWidget* parent) : QWidget(parent), ui(new Ui::Co ConfigureDebug::~ConfigureDebug() = default; void ConfigureDebug::SetConfiguration() { - const bool runtime_lock = !Core::System::GetInstance().IsPoweredOn(); + const bool runtime_lock = !system.IsPoweredOn(); ui->toggle_console->setEnabled(runtime_lock); ui->toggle_console->setChecked(UISettings::values.show_console.GetValue()); diff --git a/src/yuzu/configuration/configure_debug.h b/src/yuzu/configuration/configure_debug.h index f4805a1d8..89eb9d76c 100644 --- a/src/yuzu/configuration/configure_debug.h +++ b/src/yuzu/configuration/configure_debug.h @@ -7,6 +7,10 @@ #include #include +namespace Core { +class System; +} + namespace Ui { class ConfigureDebug; } @@ -15,7 +19,7 @@ class ConfigureDebug : public QWidget { Q_OBJECT public: - explicit ConfigureDebug(QWidget* parent = nullptr); + explicit ConfigureDebug(Core::System& system_, QWidget* parent = nullptr); ~ConfigureDebug() override; void ApplyConfiguration(); @@ -27,4 +31,6 @@ private: void SetConfiguration(); std::unique_ptr ui; + + Core::System& system; }; diff --git a/src/yuzu/configuration/configure_debug_controller.cpp b/src/yuzu/configuration/configure_debug_controller.cpp index a878ef9c6..31ec48384 100644 --- a/src/yuzu/configuration/configure_debug_controller.cpp +++ b/src/yuzu/configuration/configure_debug_controller.cpp @@ -2,16 +2,17 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include "core/core.h" #include "ui_configure_debug_controller.h" #include "yuzu/configuration/configure_debug_controller.h" #include "yuzu/configuration/configure_input_player.h" ConfigureDebugController::ConfigureDebugController(QWidget* parent, InputCommon::InputSubsystem* input_subsystem, - InputProfiles* profiles) + InputProfiles* profiles, Core::System& system) : QDialog(parent), ui(std::make_unique()), debug_controller( - new ConfigureInputPlayer(this, 9, nullptr, input_subsystem, profiles, true)) { + new ConfigureInputPlayer(this, 9, nullptr, input_subsystem, profiles, system, true)) { ui->setupUi(this); ui->controllerLayout->addWidget(debug_controller); diff --git a/src/yuzu/configuration/configure_debug_controller.h b/src/yuzu/configuration/configure_debug_controller.h index b4f53fad5..6e17c5aa0 100644 --- a/src/yuzu/configuration/configure_debug_controller.h +++ b/src/yuzu/configuration/configure_debug_controller.h @@ -13,6 +13,10 @@ class ConfigureInputPlayer; class InputProfiles; +namespace Core { +class System; +} + namespace InputCommon { class InputSubsystem; } @@ -26,7 +30,7 @@ class ConfigureDebugController : public QDialog { public: explicit ConfigureDebugController(QWidget* parent, InputCommon::InputSubsystem* input_subsystem, - InputProfiles* profiles); + InputProfiles* profiles, Core::System& system); ~ConfigureDebugController() override; void ApplyConfiguration(); diff --git a/src/yuzu/configuration/configure_debug_tab.cpp b/src/yuzu/configuration/configure_debug_tab.cpp index 67d369249..03f266adf 100644 --- a/src/yuzu/configuration/configure_debug_tab.cpp +++ b/src/yuzu/configuration/configure_debug_tab.cpp @@ -2,21 +2,30 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include #include "ui_configure_debug_tab.h" +#include "yuzu/configuration/configure_cpu_debug.h" +#include "yuzu/configuration/configure_debug.h" #include "yuzu/configuration/configure_debug_tab.h" -ConfigureDebugTab::ConfigureDebugTab(QWidget* parent) - : QWidget(parent), ui(new Ui::ConfigureDebugTab) { +ConfigureDebugTab::ConfigureDebugTab(Core::System& system_, QWidget* parent) + : QWidget(parent), + ui(new Ui::ConfigureDebugTab), system{system_}, debug_tab{std::make_unique( + system_, this)}, + cpu_debug_tab{std::make_unique(system_, this)} { ui->setupUi(this); + ui->tabWidget->addTab(debug_tab.get(), tr("Debug")); + ui->tabWidget->addTab(cpu_debug_tab.get(), tr("CPU")); + SetConfiguration(); } ConfigureDebugTab::~ConfigureDebugTab() = default; void ConfigureDebugTab::ApplyConfiguration() { - ui->debugTab->ApplyConfiguration(); - ui->cpuDebugTab->ApplyConfiguration(); + debug_tab->ApplyConfiguration(); + cpu_debug_tab->ApplyConfiguration(); } void ConfigureDebugTab::SetCurrentIndex(int index) { diff --git a/src/yuzu/configuration/configure_debug_tab.h b/src/yuzu/configuration/configure_debug_tab.h index 0a96d43d0..9cf309a83 100644 --- a/src/yuzu/configuration/configure_debug_tab.h +++ b/src/yuzu/configuration/configure_debug_tab.h @@ -7,6 +7,13 @@ #include #include +class ConfigureDebug; +class ConfigureCpuDebug; + +namespace Core { +class System; +} + namespace Ui { class ConfigureDebugTab; } @@ -15,7 +22,7 @@ class ConfigureDebugTab : public QWidget { Q_OBJECT public: - explicit ConfigureDebugTab(QWidget* parent = nullptr); + explicit ConfigureDebugTab(Core::System& system_, QWidget* parent = nullptr); ~ConfigureDebugTab() override; void ApplyConfiguration(); @@ -29,4 +36,9 @@ private: void SetConfiguration(); std::unique_ptr ui; + + Core::System& system; + + std::unique_ptr debug_tab; + std::unique_ptr cpu_debug_tab; }; diff --git a/src/yuzu/configuration/configure_debug_tab.ui b/src/yuzu/configuration/configure_debug_tab.ui index 7dc6dd704..15ec74727 100644 --- a/src/yuzu/configuration/configure_debug_tab.ui +++ b/src/yuzu/configuration/configure_debug_tab.ui @@ -13,40 +13,19 @@ Form + + Debug + - 1 + -1 - - - General - - - - - CPU - - - - - ConfigureDebug - QWidget -
configuration/configure_debug.h
- 1 -
- - ConfigureCpuDebug - QWidget -
configuration/configure_cpu_debug.h
- 1 -
-
diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp index fe4186157..759625ef7 100644 --- a/src/yuzu/configuration/configure_dialog.cpp +++ b/src/yuzu/configuration/configure_dialog.cpp @@ -2,6 +2,7 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include #include #include #include @@ -9,37 +10,84 @@ #include #include #include +#include "common/logging/log.h" #include "common/settings.h" #include "core/core.h" #include "ui_configure.h" #include "yuzu/configuration/config.h" +#include "yuzu/configuration/configure_audio.h" +#include "yuzu/configuration/configure_cpu.h" +#include "yuzu/configuration/configure_debug_tab.h" #include "yuzu/configuration/configure_dialog.h" +#include "yuzu/configuration/configure_filesystem.h" +#include "yuzu/configuration/configure_general.h" +#include "yuzu/configuration/configure_graphics.h" +#include "yuzu/configuration/configure_graphics_advanced.h" +#include "yuzu/configuration/configure_hotkeys.h" +#include "yuzu/configuration/configure_input.h" #include "yuzu/configuration/configure_input_player.h" +#include "yuzu/configuration/configure_network.h" +#include "yuzu/configuration/configure_profile_manager.h" +#include "yuzu/configuration/configure_system.h" +#include "yuzu/configuration/configure_ui.h" +#include "yuzu/configuration/configure_web.h" #include "yuzu/hotkeys.h" ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry, - InputCommon::InputSubsystem* input_subsystem) - : QDialog(parent), ui(new Ui::ConfigureDialog), registry(registry) { + InputCommon::InputSubsystem* input_subsystem, + Core::System& system_) + : QDialog(parent), ui(new Ui::ConfigureDialog), + registry(registry), system{system_}, audio_tab{std::make_unique(system_, + this)}, + cpu_tab{std::make_unique(system_, this)}, + debug_tab_tab{std::make_unique(system_, this)}, + filesystem_tab{std::make_unique(this)}, + general_tab{std::make_unique(system_, this)}, + graphics_tab{std::make_unique(system_, this)}, + graphics_advanced_tab{std::make_unique(system_, this)}, + hotkeys_tab{std::make_unique(this)}, + input_tab{std::make_unique(system_, this)}, + network_tab{std::make_unique(system_, this)}, + profile_tab{std::make_unique(system_, this)}, + system_tab{std::make_unique(system_, this)}, + ui_tab{std::make_unique(system_, this)}, web_tab{std::make_unique( + this)} { Settings::SetConfiguringGlobal(true); ui->setupUi(this); - ui->hotkeysTab->Populate(registry); + + ui->tabWidget->addTab(audio_tab.get(), tr("Audio")); + ui->tabWidget->addTab(cpu_tab.get(), tr("CPU")); + ui->tabWidget->addTab(debug_tab_tab.get(), tr("Debug")); + ui->tabWidget->addTab(filesystem_tab.get(), tr("Filesystem")); + ui->tabWidget->addTab(general_tab.get(), tr("General")); + ui->tabWidget->addTab(graphics_tab.get(), tr("Graphics")); + ui->tabWidget->addTab(graphics_advanced_tab.get(), tr("GraphicsAdvanced")); + ui->tabWidget->addTab(hotkeys_tab.get(), tr("Hotkeys")); + ui->tabWidget->addTab(input_tab.get(), tr("Controls")); + ui->tabWidget->addTab(profile_tab.get(), tr("Profiles")); + ui->tabWidget->addTab(network_tab.get(), tr("Network")); + ui->tabWidget->addTab(system_tab.get(), tr("System")); + ui->tabWidget->addTab(ui_tab.get(), tr("Game List")); + ui->tabWidget->addTab(web_tab.get(), tr("Web")); + + hotkeys_tab->Populate(registry); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); - ui->inputTab->Initialize(input_subsystem); + input_tab->Initialize(input_subsystem); - ui->generalTab->SetResetCallback([&] { this->close(); }); + general_tab->SetResetCallback([&] { this->close(); }); SetConfiguration(); PopulateSelectionList(); connect(ui->tabWidget, &QTabWidget::currentChanged, this, - [this]() { ui->debugTab->SetCurrentIndex(0); }); - connect(ui->uiTab, &ConfigureUi::LanguageChanged, this, &ConfigureDialog::OnLanguageChanged); + [this]() { debug_tab_tab->SetCurrentIndex(0); }); + connect(ui_tab.get(), &ConfigureUi::LanguageChanged, this, &ConfigureDialog::OnLanguageChanged); connect(ui->selectorList, &QListWidget::itemSelectionChanged, this, &ConfigureDialog::UpdateVisibleTabs); - if (Core::System::GetInstance().IsPoweredOn()) { + if (system.IsPoweredOn()) { QPushButton* apply_button = ui->buttonBox->addButton(QDialogButtonBox::Apply); connect(apply_button, &QAbstractButton::clicked, this, &ConfigureDialog::HandleApplyButtonClicked); @@ -54,21 +102,21 @@ ConfigureDialog::~ConfigureDialog() = default; void ConfigureDialog::SetConfiguration() {} void ConfigureDialog::ApplyConfiguration() { - ui->generalTab->ApplyConfiguration(); - ui->uiTab->ApplyConfiguration(); - ui->systemTab->ApplyConfiguration(); - ui->profileManagerTab->ApplyConfiguration(); - ui->filesystemTab->applyConfiguration(); - ui->inputTab->ApplyConfiguration(); - ui->hotkeysTab->ApplyConfiguration(registry); - ui->cpuTab->ApplyConfiguration(); - ui->graphicsTab->ApplyConfiguration(); - ui->graphicsAdvancedTab->ApplyConfiguration(); - ui->audioTab->ApplyConfiguration(); - ui->debugTab->ApplyConfiguration(); - ui->webTab->ApplyConfiguration(); - ui->networkTab->ApplyConfiguration(); - Core::System::GetInstance().ApplySettings(); + general_tab->ApplyConfiguration(); + ui_tab->ApplyConfiguration(); + system_tab->ApplyConfiguration(); + profile_tab->ApplyConfiguration(); + filesystem_tab->applyConfiguration(); + input_tab->ApplyConfiguration(); + hotkeys_tab->ApplyConfiguration(registry); + cpu_tab->ApplyConfiguration(); + graphics_tab->ApplyConfiguration(); + graphics_advanced_tab->ApplyConfiguration(); + audio_tab->ApplyConfiguration(); + debug_tab_tab->ApplyConfiguration(); + web_tab->ApplyConfiguration(); + network_tab->ApplyConfiguration(); + system.ApplySettings(); Settings::LogSettings(); } @@ -102,12 +150,14 @@ Q_DECLARE_METATYPE(QList); void ConfigureDialog::PopulateSelectionList() { const std::array>, 6> items{ - {{tr("General"), {ui->generalTab, ui->hotkeysTab, ui->uiTab, ui->webTab, ui->debugTab}}, - {tr("System"), {ui->systemTab, ui->profileManagerTab, ui->networkTab, ui->filesystemTab}}, - {tr("CPU"), {ui->cpuTab}}, - {tr("Graphics"), {ui->graphicsTab, ui->graphicsAdvancedTab}}, - {tr("Audio"), {ui->audioTab}}, - {tr("Controls"), ui->inputTab->GetSubTabs()}}, + {{tr("General"), + {general_tab.get(), hotkeys_tab.get(), ui_tab.get(), web_tab.get(), debug_tab_tab.get()}}, + {tr("System"), + {system_tab.get(), profile_tab.get(), network_tab.get(), filesystem_tab.get()}}, + {tr("CPU"), {cpu_tab.get()}}, + {tr("Graphics"), {graphics_tab.get(), graphics_advanced_tab.get()}}, + {tr("Audio"), {audio_tab.get()}}, + {tr("Controls"), input_tab->GetSubTabs()}}, }; [[maybe_unused]] const QSignalBlocker blocker(ui->selectorList); @@ -142,6 +192,7 @@ void ConfigureDialog::UpdateVisibleTabs() { const auto tabs = qvariant_cast>(items[0]->data(Qt::UserRole)); for (auto* const tab : tabs) { + LOG_DEBUG(Frontend, "{}", tab->accessibleName().toStdString()); ui->tabWidget->addTab(tab, tab->accessibleName()); } } diff --git a/src/yuzu/configuration/configure_dialog.h b/src/yuzu/configuration/configure_dialog.h index abe019635..32ddfd4e0 100644 --- a/src/yuzu/configuration/configure_dialog.h +++ b/src/yuzu/configuration/configure_dialog.h @@ -7,6 +7,25 @@ #include #include +namespace Core { +class System; +} + +class ConfigureAudio; +class ConfigureCpu; +class ConfigureDebugTab; +class ConfigureFilesystem; +class ConfigureGeneral; +class ConfigureGraphics; +class ConfigureGraphicsAdvanced; +class ConfigureHotkeys; +class ConfigureInput; +class ConfigureProfileManager; +class ConfigureSystem; +class ConfigureNetwork; +class ConfigureUi; +class ConfigureWeb; + class HotkeyRegistry; namespace InputCommon { @@ -22,7 +41,7 @@ class ConfigureDialog : public QDialog { public: explicit ConfigureDialog(QWidget* parent, HotkeyRegistry& registry, - InputCommon::InputSubsystem* input_subsystem); + InputCommon::InputSubsystem* input_subsystem, Core::System& system_); ~ConfigureDialog() override; void ApplyConfiguration(); @@ -45,4 +64,21 @@ private: std::unique_ptr ui; HotkeyRegistry& registry; + + Core::System& system; + + std::unique_ptr audio_tab; + std::unique_ptr cpu_tab; + std::unique_ptr debug_tab_tab; + std::unique_ptr filesystem_tab; + std::unique_ptr general_tab; + std::unique_ptr graphics_tab; + std::unique_ptr graphics_advanced_tab; + std::unique_ptr hotkeys_tab; + std::unique_ptr input_tab; + std::unique_ptr network_tab; + std::unique_ptr profile_tab; + std::unique_ptr system_tab; + std::unique_ptr ui_tab; + std::unique_ptr web_tab; }; diff --git a/src/yuzu/configuration/configure_filesystem.ui b/src/yuzu/configuration/configure_filesystem.ui index 62b9abc7a..2f6030b5c 100644 --- a/src/yuzu/configuration/configure_filesystem.ui +++ b/src/yuzu/configuration/configure_filesystem.ui @@ -13,6 +13,9 @@ Form + + Filesystem + diff --git a/src/yuzu/configuration/configure_general.cpp b/src/yuzu/configuration/configure_general.cpp index 1f647a0d1..70f067ea7 100644 --- a/src/yuzu/configuration/configure_general.cpp +++ b/src/yuzu/configuration/configure_general.cpp @@ -15,8 +15,8 @@ #include "yuzu/configuration/configure_general.h" #include "yuzu/uisettings.h" -ConfigureGeneral::ConfigureGeneral(QWidget* parent) - : QWidget(parent), ui(new Ui::ConfigureGeneral) { +ConfigureGeneral::ConfigureGeneral(Core::System& system_, QWidget* parent) + : QWidget(parent), ui(new Ui::ConfigureGeneral), system{system_} { ui->setupUi(this); SetupPerGameUI(); @@ -35,7 +35,7 @@ ConfigureGeneral::ConfigureGeneral(QWidget* parent) ConfigureGeneral::~ConfigureGeneral() = default; void ConfigureGeneral::SetConfiguration() { - const bool runtime_lock = !Core::System::GetInstance().IsPoweredOn(); + const bool runtime_lock = !system.IsPoweredOn(); ui->use_multi_core->setEnabled(runtime_lock); ui->use_multi_core->setChecked(Settings::values.use_multi_core.GetValue()); diff --git a/src/yuzu/configuration/configure_general.h b/src/yuzu/configuration/configure_general.h index c9df37d73..6f8957280 100644 --- a/src/yuzu/configuration/configure_general.h +++ b/src/yuzu/configuration/configure_general.h @@ -8,6 +8,10 @@ #include #include +namespace Core { +class System; +} + class ConfigureDialog; namespace ConfigurationShared { @@ -24,19 +28,18 @@ class ConfigureGeneral : public QWidget { Q_OBJECT public: - explicit ConfigureGeneral(QWidget* parent = nullptr); + explicit ConfigureGeneral(Core::System& system_, QWidget* parent = nullptr); ~ConfigureGeneral() override; void SetResetCallback(std::function callback); void ResetDefaults(); void ApplyConfiguration(); + void SetConfiguration(); private: void changeEvent(QEvent* event) override; void RetranslateUI(); - void SetConfiguration(); - void SetupPerGameUI(); std::function reset_callback; @@ -45,4 +48,6 @@ private: ConfigurationShared::CheckState use_speed_limit; ConfigurationShared::CheckState use_multi_core; + + Core::System& system; }; diff --git a/src/yuzu/configuration/configure_general.ui b/src/yuzu/configuration/configure_general.ui index 69b6c2d66..f9f0e3ebf 100644 --- a/src/yuzu/configuration/configure_general.ui +++ b/src/yuzu/configuration/configure_general.ui @@ -13,6 +13,9 @@ Form + + General + diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index c594164be..cb4df429c 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -19,8 +19,8 @@ #include "yuzu/configuration/configuration_shared.h" #include "yuzu/configuration/configure_graphics.h" -ConfigureGraphics::ConfigureGraphics(QWidget* parent) - : QWidget(parent), ui(new Ui::ConfigureGraphics) { +ConfigureGraphics::ConfigureGraphics(Core::System& system_, QWidget* parent) + : QWidget(parent), ui(new Ui::ConfigureGraphics), system{system_} { vulkan_device = Settings::values.vulkan_device.GetValue(); RetrieveVulkanDevices(); @@ -83,7 +83,7 @@ void ConfigureGraphics::UpdateShaderBackendSelection(int backend) { ConfigureGraphics::~ConfigureGraphics() = default; void ConfigureGraphics::SetConfiguration() { - const bool runtime_lock = !Core::System::GetInstance().IsPoweredOn(); + const bool runtime_lock = !system.IsPoweredOn(); ui->api_widget->setEnabled(runtime_lock); ui->use_asynchronous_gpu_emulation->setEnabled(runtime_lock); diff --git a/src/yuzu/configuration/configure_graphics.h b/src/yuzu/configuration/configure_graphics.h index 7d7ac329d..d0dddf864 100644 --- a/src/yuzu/configuration/configure_graphics.h +++ b/src/yuzu/configuration/configure_graphics.h @@ -10,6 +10,10 @@ #include #include "common/settings.h" +namespace Core { +class System; +} + namespace ConfigurationShared { enum class CheckState; } @@ -22,17 +26,16 @@ class ConfigureGraphics : public QWidget { Q_OBJECT public: - explicit ConfigureGraphics(QWidget* parent = nullptr); + explicit ConfigureGraphics(Core::System& system_, QWidget* parent = nullptr); ~ConfigureGraphics() override; void ApplyConfiguration(); + void SetConfiguration(); private: void changeEvent(QEvent* event) override; void RetranslateUI(); - void SetConfiguration(); - void UpdateBackgroundColorButton(QColor color); void UpdateAPILayout(); void UpdateDeviceSelection(int device); @@ -56,4 +59,6 @@ private: std::vector vulkan_devices; u32 vulkan_device{}; Settings::ShaderBackend shader_backend{}; + + Core::System& system; }; diff --git a/src/yuzu/configuration/configure_graphics.ui b/src/yuzu/configuration/configure_graphics.ui index 1a12cfa4d..451d86859 100644 --- a/src/yuzu/configuration/configure_graphics.ui +++ b/src/yuzu/configuration/configure_graphics.ui @@ -7,12 +7,15 @@ 0 0 437 - 321 + 482 Form + + Graphics + diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp index bfd464061..de2d669b4 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.cpp +++ b/src/yuzu/configuration/configure_graphics_advanced.cpp @@ -8,8 +8,8 @@ #include "yuzu/configuration/configuration_shared.h" #include "yuzu/configuration/configure_graphics_advanced.h" -ConfigureGraphicsAdvanced::ConfigureGraphicsAdvanced(QWidget* parent) - : QWidget(parent), ui(new Ui::ConfigureGraphicsAdvanced) { +ConfigureGraphicsAdvanced::ConfigureGraphicsAdvanced(Core::System& system_, QWidget* parent) + : QWidget(parent), ui(new Ui::ConfigureGraphicsAdvanced), system{system_} { ui->setupUi(this); @@ -21,7 +21,7 @@ ConfigureGraphicsAdvanced::ConfigureGraphicsAdvanced(QWidget* parent) ConfigureGraphicsAdvanced::~ConfigureGraphicsAdvanced() = default; void ConfigureGraphicsAdvanced::SetConfiguration() { - const bool runtime_lock = !Core::System::GetInstance().IsPoweredOn(); + const bool runtime_lock = !system.IsPoweredOn(); ui->use_vsync->setEnabled(runtime_lock); ui->use_asynchronous_shaders->setEnabled(runtime_lock); ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); diff --git a/src/yuzu/configuration/configure_graphics_advanced.h b/src/yuzu/configuration/configure_graphics_advanced.h index 13ba4ff6b..eee5343fb 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.h +++ b/src/yuzu/configuration/configure_graphics_advanced.h @@ -7,6 +7,10 @@ #include #include +namespace Core { +class System; +} + namespace ConfigurationShared { enum class CheckState; } @@ -19,17 +23,16 @@ class ConfigureGraphicsAdvanced : public QWidget { Q_OBJECT public: - explicit ConfigureGraphicsAdvanced(QWidget* parent = nullptr); + explicit ConfigureGraphicsAdvanced(Core::System& system_, QWidget* parent = nullptr); ~ConfigureGraphicsAdvanced() override; void ApplyConfiguration(); + void SetConfiguration(); private: void changeEvent(QEvent* event) override; void RetranslateUI(); - void SetConfiguration(); - void SetupPerGameUI(); std::unique_ptr ui; @@ -37,4 +40,6 @@ private: ConfigurationShared::CheckState use_vsync; ConfigurationShared::CheckState use_asynchronous_shaders; ConfigurationShared::CheckState use_fast_gpu_time; + + Core::System& system; }; diff --git a/src/yuzu/configuration/configure_graphics_advanced.ui b/src/yuzu/configuration/configure_graphics_advanced.ui index b91abc2f0..d06b45f17 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.ui +++ b/src/yuzu/configuration/configure_graphics_advanced.ui @@ -13,6 +13,9 @@ Form + + Advanced + diff --git a/src/yuzu/configuration/configure_hotkeys.ui b/src/yuzu/configuration/configure_hotkeys.ui index 6d9f861e3..a6902a5d8 100644 --- a/src/yuzu/configuration/configure_hotkeys.ui +++ b/src/yuzu/configuration/configure_hotkeys.ui @@ -13,6 +13,9 @@ Hotkey Settings + + Hotkeys + diff --git a/src/yuzu/configuration/configure_input.cpp b/src/yuzu/configuration/configure_input.cpp index 422022d02..1599299db 100644 --- a/src/yuzu/configuration/configure_input.cpp +++ b/src/yuzu/configuration/configure_input.cpp @@ -39,12 +39,11 @@ void CallConfigureDialog(ConfigureInput& parent, Args&&... args) { } } // Anonymous namespace -void OnDockedModeChanged(bool last_state, bool new_state) { +void OnDockedModeChanged(bool last_state, bool new_state, Core::System& system) { if (last_state == new_state) { return; } - Core::System& system{Core::System::GetInstance()}; if (!system.IsPoweredOn()) { return; } @@ -66,9 +65,9 @@ void OnDockedModeChanged(bool last_state, bool new_state) { } } -ConfigureInput::ConfigureInput(QWidget* parent) +ConfigureInput::ConfigureInput(Core::System& system_, QWidget* parent) : QWidget(parent), ui(std::make_unique()), - profiles(std::make_unique()) { + profiles(std::make_unique(system_)), system{system_} { ui->setupUi(this); } @@ -77,22 +76,22 @@ ConfigureInput::~ConfigureInput() = default; void ConfigureInput::Initialize(InputCommon::InputSubsystem* input_subsystem, std::size_t max_players) { player_controllers = { - new ConfigureInputPlayer(this, 0, ui->consoleInputSettings, input_subsystem, - profiles.get()), - new ConfigureInputPlayer(this, 1, ui->consoleInputSettings, input_subsystem, - profiles.get()), - new ConfigureInputPlayer(this, 2, ui->consoleInputSettings, input_subsystem, - profiles.get()), - new ConfigureInputPlayer(this, 3, ui->consoleInputSettings, input_subsystem, - profiles.get()), - new ConfigureInputPlayer(this, 4, ui->consoleInputSettings, input_subsystem, - profiles.get()), - new ConfigureInputPlayer(this, 5, ui->consoleInputSettings, input_subsystem, - profiles.get()), - new ConfigureInputPlayer(this, 6, ui->consoleInputSettings, input_subsystem, - profiles.get()), - new ConfigureInputPlayer(this, 7, ui->consoleInputSettings, input_subsystem, - profiles.get()), + new ConfigureInputPlayer(this, 0, ui->consoleInputSettings, input_subsystem, profiles.get(), + system), + new ConfigureInputPlayer(this, 1, ui->consoleInputSettings, input_subsystem, profiles.get(), + system), + new ConfigureInputPlayer(this, 2, ui->consoleInputSettings, input_subsystem, profiles.get(), + system), + new ConfigureInputPlayer(this, 3, ui->consoleInputSettings, input_subsystem, profiles.get(), + system), + new ConfigureInputPlayer(this, 4, ui->consoleInputSettings, input_subsystem, profiles.get(), + system), + new ConfigureInputPlayer(this, 5, ui->consoleInputSettings, input_subsystem, profiles.get(), + system), + new ConfigureInputPlayer(this, 6, ui->consoleInputSettings, input_subsystem, profiles.get(), + system), + new ConfigureInputPlayer(this, 7, ui->consoleInputSettings, input_subsystem, profiles.get(), + system), }; player_tabs = { @@ -148,7 +147,8 @@ void ConfigureInput::Initialize(InputCommon::InputSubsystem* input_subsystem, ui->tabAdvanced->setLayout(new QHBoxLayout(ui->tabAdvanced)); ui->tabAdvanced->layout()->addWidget(advanced); connect(advanced, &ConfigureInputAdvanced::CallDebugControllerDialog, [this, input_subsystem] { - CallConfigureDialog(*this, input_subsystem, profiles.get()); + CallConfigureDialog(*this, input_subsystem, profiles.get(), + system); }); connect(advanced, &ConfigureInputAdvanced::CallMouseConfigDialog, [this, input_subsystem] { CallConfigureDialog(*this, input_subsystem); @@ -204,7 +204,7 @@ void ConfigureInput::ApplyConfiguration() { const bool pre_docked_mode = Settings::values.use_docked_mode.GetValue(); Settings::values.use_docked_mode.SetValue(ui->radioDocked->isChecked()); - OnDockedModeChanged(pre_docked_mode, Settings::values.use_docked_mode.GetValue()); + OnDockedModeChanged(pre_docked_mode, Settings::values.use_docked_mode.GetValue(), system); Settings::values.vibration_enabled.SetValue(ui->vibrationGroup->isChecked()); Settings::values.motion_enabled.SetValue(ui->motionGroup->isChecked()); diff --git a/src/yuzu/configuration/configure_input.h b/src/yuzu/configuration/configure_input.h index f4eb0d78b..4cafa3dab 100644 --- a/src/yuzu/configuration/configure_input.h +++ b/src/yuzu/configuration/configure_input.h @@ -11,6 +11,10 @@ #include #include +namespace Core { +class System; +} + class QCheckBox; class QString; class QTimer; @@ -28,13 +32,13 @@ namespace Ui { class ConfigureInput; } -void OnDockedModeChanged(bool last_state, bool new_state); +void OnDockedModeChanged(bool last_state, bool new_state, Core::System& system); class ConfigureInput : public QWidget { Q_OBJECT public: - explicit ConfigureInput(QWidget* parent = nullptr); + explicit ConfigureInput(Core::System& system_, QWidget* parent = nullptr); ~ConfigureInput() override; /// Initializes the input dialog with the given input subsystem. @@ -69,4 +73,6 @@ private: std::array player_tabs; std::array player_connected; ConfigureInputAdvanced* advanced; + + Core::System& system; }; diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index 88f4bf388..3aab5d5f8 100644 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp @@ -44,8 +44,7 @@ namespace { constexpr std::size_t HANDHELD_INDEX = 8; void UpdateController(Settings::ControllerType controller_type, std::size_t npad_index, - bool connected) { - Core::System& system{Core::System::GetInstance()}; + bool connected, Core::System& system) { if (!system.IsPoweredOn()) { return; } @@ -232,11 +231,12 @@ QString AnalogToText(const Common::ParamPackage& param, const std::string& dir) ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_index, QWidget* bottom_row, InputCommon::InputSubsystem* input_subsystem_, - InputProfiles* profiles_, bool debug) + InputProfiles* profiles_, Core::System& system_, + bool debug) : QWidget(parent), ui(std::make_unique()), player_index(player_index), debug(debug), input_subsystem{input_subsystem_}, profiles(profiles_), timeout_timer(std::make_unique()), poll_timer(std::make_unique()), - bottom_row(bottom_row) { + bottom_row(bottom_row), system{system_} { ui->setupUi(this); setFocusPolicy(Qt::ClickFocus); @@ -683,7 +683,7 @@ void ConfigureInputPlayer::TryConnectSelectedController() { controller_type == Settings::ControllerType::Handheld; // Connect only if handheld is going from disconnected to connected if (!handheld.connected && handheld_connected) { - UpdateController(controller_type, HANDHELD_INDEX, true); + UpdateController(controller_type, HANDHELD_INDEX, true, system); } handheld.connected = handheld_connected; } @@ -703,7 +703,7 @@ void ConfigureInputPlayer::TryConnectSelectedController() { return; } - UpdateController(controller_type, player_index, true); + UpdateController(controller_type, player_index, true, system); } void ConfigureInputPlayer::TryDisconnectSelectedController() { @@ -721,7 +721,7 @@ void ConfigureInputPlayer::TryDisconnectSelectedController() { controller_type == Settings::ControllerType::Handheld; // Disconnect only if handheld is going from connected to disconnected if (handheld.connected && !handheld_connected) { - UpdateController(controller_type, HANDHELD_INDEX, false); + UpdateController(controller_type, HANDHELD_INDEX, false, system); } return; } @@ -737,7 +737,7 @@ void ConfigureInputPlayer::TryDisconnectSelectedController() { } // Disconnect the controller first. - UpdateController(controller_type, player_index, false); + UpdateController(controller_type, player_index, false, system); } void ConfigureInputPlayer::showEvent(QShowEvent* event) { @@ -1017,8 +1017,6 @@ void ConfigureInputPlayer::SetConnectableControllers() { } }; - Core::System& system{Core::System::GetInstance()}; - if (!system.IsPoweredOn()) { add_controllers(true); return; diff --git a/src/yuzu/configuration/configure_input_player.h b/src/yuzu/configuration/configure_input_player.h index c7d101682..39b44b8a5 100644 --- a/src/yuzu/configuration/configure_input_player.h +++ b/src/yuzu/configuration/configure_input_player.h @@ -29,6 +29,10 @@ class QWidget; class InputProfiles; +namespace Core { +class System; +} + namespace InputCommon { class InputSubsystem; } @@ -48,7 +52,8 @@ class ConfigureInputPlayer : public QWidget { public: explicit ConfigureInputPlayer(QWidget* parent, std::size_t player_index, QWidget* bottom_row, InputCommon::InputSubsystem* input_subsystem_, - InputProfiles* profiles_, bool debug = false); + InputProfiles* profiles_, Core::System& system_, + bool debug = false); ~ConfigureInputPlayer() override; /// Save all button configurations to settings file. @@ -233,4 +238,6 @@ private: /// ConfigureInput widget. On show, add this widget to the main layout. This will change the /// parent of the widget to this widget (but thats fine). QWidget* bottom_row; + + Core::System& system; }; diff --git a/src/yuzu/configuration/configure_input_profile_dialog.cpp b/src/yuzu/configuration/configure_input_profile_dialog.cpp index 1f5cfa75b..cd5a88cea 100644 --- a/src/yuzu/configuration/configure_input_profile_dialog.cpp +++ b/src/yuzu/configuration/configure_input_profile_dialog.cpp @@ -2,14 +2,17 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include "core/core.h" #include "ui_configure_input_profile_dialog.h" #include "yuzu/configuration/configure_input_player.h" #include "yuzu/configuration/configure_input_profile_dialog.h" ConfigureInputProfileDialog::ConfigureInputProfileDialog( - QWidget* parent, InputCommon::InputSubsystem* input_subsystem, InputProfiles* profiles) + QWidget* parent, InputCommon::InputSubsystem* input_subsystem, InputProfiles* profiles, + Core::System& system) : QDialog(parent), ui(std::make_unique()), - profile_widget(new ConfigureInputPlayer(this, 9, nullptr, input_subsystem, profiles, false)) { + profile_widget( + new ConfigureInputPlayer(this, 9, nullptr, input_subsystem, profiles, system, false)) { ui->setupUi(this); ui->controllerLayout->addWidget(profile_widget); diff --git a/src/yuzu/configuration/configure_input_profile_dialog.h b/src/yuzu/configuration/configure_input_profile_dialog.h index e6386bdbb..84b1f6d1a 100644 --- a/src/yuzu/configuration/configure_input_profile_dialog.h +++ b/src/yuzu/configuration/configure_input_profile_dialog.h @@ -13,6 +13,10 @@ class ConfigureInputPlayer; class InputProfiles; +namespace Core { +class System; +} + namespace InputCommon { class InputSubsystem; } @@ -27,7 +31,7 @@ class ConfigureInputProfileDialog : public QDialog { public: explicit ConfigureInputProfileDialog(QWidget* parent, InputCommon::InputSubsystem* input_subsystem, - InputProfiles* profiles); + InputProfiles* profiles, Core::System& system); ~ConfigureInputProfileDialog() override; private: diff --git a/src/yuzu/configuration/configure_network.cpp b/src/yuzu/configuration/configure_network.cpp index cc15d36c2..7020d2964 100644 --- a/src/yuzu/configuration/configure_network.cpp +++ b/src/yuzu/configuration/configure_network.cpp @@ -10,8 +10,8 @@ #include "ui_configure_network.h" #include "yuzu/configuration/configure_network.h" -ConfigureNetwork::ConfigureNetwork(QWidget* parent) - : QWidget(parent), ui(std::make_unique()) { +ConfigureNetwork::ConfigureNetwork(const Core::System& system_, QWidget* parent) + : QWidget(parent), ui(std::make_unique()), system{system_} { ui->setupUi(this); ui->network_interface->addItem(tr("None")); @@ -33,7 +33,7 @@ void ConfigureNetwork::RetranslateUi() { } void ConfigureNetwork::SetConfiguration() { - const bool runtime_lock = !Core::System::GetInstance().IsPoweredOn(); + const bool runtime_lock = !system.IsPoweredOn(); const std::string& network_interface = Settings::values.network_interface.GetValue(); diff --git a/src/yuzu/configuration/configure_network.h b/src/yuzu/configuration/configure_network.h index 028fd4acc..8507c62eb 100644 --- a/src/yuzu/configuration/configure_network.h +++ b/src/yuzu/configuration/configure_network.h @@ -16,7 +16,7 @@ class ConfigureNetwork : public QWidget { Q_OBJECT public: - explicit ConfigureNetwork(QWidget* parent = nullptr); + explicit ConfigureNetwork(const Core::System& system_, QWidget* parent = nullptr); ~ConfigureNetwork() override; void ApplyConfiguration(); @@ -26,4 +26,6 @@ private: void SetConfiguration(); std::unique_ptr ui; + + const Core::System& system; }; diff --git a/src/yuzu/configuration/configure_network.ui b/src/yuzu/configuration/configure_network.ui index 9a79262f0..f10e973b1 100644 --- a/src/yuzu/configuration/configure_network.ui +++ b/src/yuzu/configuration/configure_network.ui @@ -13,6 +13,9 @@ Form + + Network + diff --git a/src/yuzu/configuration/configure_per_game.cpp b/src/yuzu/configuration/configure_per_game.cpp index 8c00eec59..1031399e1 100644 --- a/src/yuzu/configuration/configure_per_game.cpp +++ b/src/yuzu/configuration/configure_per_game.cpp @@ -30,32 +30,56 @@ #include "core/loader/loader.h" #include "ui_configure_per_game.h" #include "yuzu/configuration/config.h" +#include "yuzu/configuration/configure_audio.h" +#include "yuzu/configuration/configure_cpu.h" +#include "yuzu/configuration/configure_general.h" +#include "yuzu/configuration/configure_graphics.h" +#include "yuzu/configuration/configure_graphics_advanced.h" #include "yuzu/configuration/configure_input.h" #include "yuzu/configuration/configure_per_game.h" +#include "yuzu/configuration/configure_per_game_addons.h" +#include "yuzu/configuration/configure_system.h" #include "yuzu/uisettings.h" #include "yuzu/util/util.h" -ConfigurePerGame::ConfigurePerGame(QWidget* parent, u64 title_id, const std::string& file_name) - : QDialog(parent), ui(std::make_unique()), title_id(title_id) { +ConfigurePerGame::ConfigurePerGame(QWidget* parent, u64 title_id, const std::string& file_name, + Core::System& system_) + : QDialog(parent), ui(std::make_unique()), + title_id(title_id), system{system_}, addons_tab{std::make_unique( + system_, this)}, + audio_tab{std::make_unique(system_, this)}, + cpu_tab{std::make_unique(system_, this)}, + general_tab{std::make_unique(system_, this)}, + graphics_tab{std::make_unique(system_, this)}, + graphics_advanced_tab{std::make_unique(system_, this)}, + system_tab{std::make_unique(system_, this)} { const auto file_path = std::filesystem::path(Common::FS::ToU8String(file_name)); const auto config_file_name = title_id == 0 ? Common::FS::PathToUTF8String(file_path.filename()) : fmt::format("{:016X}", title_id); - game_config = std::make_unique(config_file_name, Config::ConfigType::PerGameConfig); - - Settings::SetConfiguringGlobal(false); + game_config = + std::make_unique(system, config_file_name, Config::ConfigType::PerGameConfig); ui->setupUi(this); + + ui->tabWidget->addTab(addons_tab.get(), tr("Add-Ons")); + ui->tabWidget->addTab(general_tab.get(), tr("General")); + ui->tabWidget->addTab(system_tab.get(), tr("System")); + ui->tabWidget->addTab(cpu_tab.get(), tr("CPU")); + ui->tabWidget->addTab(graphics_tab.get(), tr("Graphics")); + ui->tabWidget->addTab(graphics_advanced_tab.get(), tr("GraphicsAdvanced")); + ui->tabWidget->addTab(audio_tab.get(), tr("Audio")); + setFocusPolicy(Qt::ClickFocus); setWindowTitle(tr("Properties")); // remove Help question mark button from the title bar setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); - ui->addonsTab->SetTitleId(title_id); + addons_tab->SetTitleId(title_id); scene = new QGraphicsScene; ui->icon_view->setScene(scene); - if (Core::System::GetInstance().IsPoweredOn()) { + if (system.IsPoweredOn()) { QPushButton* apply_button = ui->buttonBox->addButton(QDialogButtonBox::Apply); connect(apply_button, &QAbstractButton::clicked, this, &ConfigurePerGame::HandleApplyButtonClicked); @@ -67,15 +91,15 @@ ConfigurePerGame::ConfigurePerGame(QWidget* parent, u64 title_id, const std::str ConfigurePerGame::~ConfigurePerGame() = default; void ConfigurePerGame::ApplyConfiguration() { - ui->addonsTab->ApplyConfiguration(); - ui->generalTab->ApplyConfiguration(); - ui->cpuTab->ApplyConfiguration(); - ui->systemTab->ApplyConfiguration(); - ui->graphicsTab->ApplyConfiguration(); - ui->graphicsAdvancedTab->ApplyConfiguration(); - ui->audioTab->ApplyConfiguration(); - - Core::System::GetInstance().ApplySettings(); + addons_tab->ApplyConfiguration(); + general_tab->ApplyConfiguration(); + cpu_tab->ApplyConfiguration(); + system_tab->ApplyConfiguration(); + graphics_tab->ApplyConfiguration(); + graphics_advanced_tab->ApplyConfiguration(); + audio_tab->ApplyConfiguration(); + + system.ApplySettings(); Settings::LogSettings(); game_config->Save(); @@ -108,12 +132,11 @@ void ConfigurePerGame::LoadConfiguration() { return; } - ui->addonsTab->LoadFromFile(file); + addons_tab->LoadFromFile(file); ui->display_title_id->setText( QStringLiteral("%1").arg(title_id, 16, 16, QLatin1Char{'0'}).toUpper()); - auto& system = Core::System::GetInstance(); const FileSys::PatchManager pm{title_id, system.GetFileSystemController(), system.GetContentProvider()}; const auto control = pm.GetControlMetadata(); @@ -164,4 +187,11 @@ void ConfigurePerGame::LoadConfiguration() { const auto valueText = ReadableByteSize(file->GetSize()); ui->display_size->setText(valueText); + + general_tab->SetConfiguration(); + cpu_tab->SetConfiguration(); + system_tab->SetConfiguration(); + graphics_tab->SetConfiguration(); + graphics_advanced_tab->SetConfiguration(); + audio_tab->SetConfiguration(); } diff --git a/src/yuzu/configuration/configure_per_game.h b/src/yuzu/configuration/configure_per_game.h index a2d0211a3..c1a57d87b 100644 --- a/src/yuzu/configuration/configure_per_game.h +++ b/src/yuzu/configuration/configure_per_game.h @@ -14,6 +14,18 @@ #include "core/file_sys/vfs_types.h" #include "yuzu/configuration/config.h" +namespace Core { +class System; +} + +class ConfigurePerGameAddons; +class ConfigureAudio; +class ConfigureCpu; +class ConfigureGeneral; +class ConfigureGraphics; +class ConfigureGraphicsAdvanced; +class ConfigureSystem; + class QGraphicsScene; class QStandardItem; class QStandardItemModel; @@ -29,7 +41,8 @@ class ConfigurePerGame : public QDialog { public: // Cannot use std::filesystem::path due to https://bugreports.qt.io/browse/QTBUG-73263 - explicit ConfigurePerGame(QWidget* parent, u64 title_id, const std::string& file_name); + explicit ConfigurePerGame(QWidget* parent, u64 title_id, const std::string& file_name, + Core::System& system_); ~ConfigurePerGame() override; /// Save all button configurations to settings file @@ -52,4 +65,14 @@ private: QGraphicsScene* scene; std::unique_ptr game_config; + + Core::System& system; + + std::unique_ptr addons_tab; + std::unique_ptr audio_tab; + std::unique_ptr cpu_tab; + std::unique_ptr general_tab; + std::unique_ptr graphics_tab; + std::unique_ptr graphics_advanced_tab; + std::unique_ptr system_tab; }; diff --git a/src/yuzu/configuration/configure_per_game.ui b/src/yuzu/configuration/configure_per_game.ui index 7da14146b..60efdbf21 100644 --- a/src/yuzu/configuration/configure_per_game.ui +++ b/src/yuzu/configuration/configure_per_game.ui @@ -7,12 +7,13 @@ 0 0 900 - 600 + 630 900 + 0 @@ -214,7 +215,7 @@ true - 0 + -1 true @@ -225,41 +226,6 @@ false - - - Add-Ons - - - - - General - - - - - System - - - - - CPU - - - - - Graphics - - - - - Adv. Graphics - - - - - Audio - - @@ -284,50 +250,6 @@ - - - ConfigureGeneral - QWidget -
configuration/configure_general.h
- 1 -
- - ConfigureSystem - QWidget -
configuration/configure_system.h
- 1 -
- - ConfigureAudio - QWidget -
configuration/configure_audio.h
- 1 -
- - ConfigureGraphics - QWidget -
configuration/configure_graphics.h
- 1 -
- - ConfigureGraphicsAdvanced - QWidget -
configuration/configure_graphics_advanced.h
- 1 -
- - ConfigurePerGameAddons - QWidget -
configuration/configure_per_game_addons.h
- 1 -
- - ConfigureCpu - QWidget -
configuration/configure_cpu.h
- 1 -
-
@@ -335,12 +257,32 @@ accepted() ConfigurePerGame accept() + + + 20 + 20 + + + 20 + 20 + + buttonBox rejected() ConfigurePerGame reject() + + + 20 + 20 + + + 20 + 20 + + diff --git a/src/yuzu/configuration/configure_per_game_addons.cpp b/src/yuzu/configuration/configure_per_game_addons.cpp index ebb0f411c..c8de8e2ff 100644 --- a/src/yuzu/configuration/configure_per_game_addons.cpp +++ b/src/yuzu/configuration/configure_per_game_addons.cpp @@ -26,8 +26,8 @@ #include "yuzu/uisettings.h" #include "yuzu/util/util.h" -ConfigurePerGameAddons::ConfigurePerGameAddons(QWidget* parent) - : QWidget(parent), ui(new Ui::ConfigurePerGameAddons) { +ConfigurePerGameAddons::ConfigurePerGameAddons(Core::System& system_, QWidget* parent) + : QWidget(parent), ui(new Ui::ConfigurePerGameAddons), system{system_} { ui->setupUi(this); layout = new QVBoxLayout; @@ -58,7 +58,7 @@ ConfigurePerGameAddons::ConfigurePerGameAddons(QWidget* parent) ui->scrollArea->setLayout(layout); - ui->scrollArea->setEnabled(!Core::System::GetInstance().IsPoweredOn()); + ui->scrollArea->setEnabled(!system.IsPoweredOn()); connect(item_model, &QStandardItemModel::itemChanged, [] { UISettings::values.is_game_list_reload_pending.exchange(true); }); @@ -112,7 +112,6 @@ void ConfigurePerGameAddons::LoadConfiguration() { return; } - auto& system = Core::System::GetInstance(); const FileSys::PatchManager pm{title_id, system.GetFileSystemController(), system.GetContentProvider()}; const auto loader = Loader::GetLoader(system, file); diff --git a/src/yuzu/configuration/configure_per_game_addons.h b/src/yuzu/configuration/configure_per_game_addons.h index a00ec3539..24b017494 100644 --- a/src/yuzu/configuration/configure_per_game_addons.h +++ b/src/yuzu/configuration/configure_per_game_addons.h @@ -11,6 +11,10 @@ #include "core/file_sys/vfs_types.h" +namespace Core { +class System; +} + class QGraphicsScene; class QStandardItem; class QStandardItemModel; @@ -25,7 +29,7 @@ class ConfigurePerGameAddons : public QWidget { Q_OBJECT public: - explicit ConfigurePerGameAddons(QWidget* parent = nullptr); + explicit ConfigurePerGameAddons(Core::System& system_, QWidget* parent = nullptr); ~ConfigurePerGameAddons() override; /// Save all button configurations to settings file @@ -50,4 +54,6 @@ private: QStandardItemModel* item_model; std::vector> list_items; + + Core::System& system; }; diff --git a/src/yuzu/configuration/configure_per_game_addons.ui b/src/yuzu/configuration/configure_per_game_addons.ui index aefdebfcd..f9cf6f2c3 100644 --- a/src/yuzu/configuration/configure_per_game_addons.ui +++ b/src/yuzu/configuration/configure_per_game_addons.ui @@ -13,6 +13,9 @@ Form + + Add-Ons + diff --git a/src/yuzu/configuration/configure_profile_manager.cpp b/src/yuzu/configuration/configure_profile_manager.cpp index 136614bf8..2ba65c638 100644 --- a/src/yuzu/configuration/configure_profile_manager.cpp +++ b/src/yuzu/configuration/configure_profile_manager.cpp @@ -76,9 +76,9 @@ QString GetProfileUsernameFromUser(QWidget* parent, const QString& description_t } } // Anonymous namespace -ConfigureProfileManager::ConfigureProfileManager(QWidget* parent) +ConfigureProfileManager::ConfigureProfileManager(Core::System& system_, QWidget* parent) : QWidget(parent), ui(new Ui::ConfigureProfileManager), - profile_manager(std::make_unique()) { + profile_manager(std::make_unique()), system{system_} { ui->setupUi(this); tree_view = new QTreeView; @@ -137,7 +137,7 @@ void ConfigureProfileManager::RetranslateUI() { } void ConfigureProfileManager::SetConfiguration() { - enabled = !Core::System::GetInstance().IsPoweredOn(); + enabled = !system.IsPoweredOn(); item_model->removeRows(0, item_model->rowCount()); list_items.clear(); @@ -180,8 +180,6 @@ void ConfigureProfileManager::ApplyConfiguration() { if (!enabled) { return; } - - Core::System::GetInstance().ApplySettings(); } void ConfigureProfileManager::SelectUser(const QModelIndex& index) { diff --git a/src/yuzu/configuration/configure_profile_manager.h b/src/yuzu/configuration/configure_profile_manager.h index 0a9bca2a6..afd9b3679 100644 --- a/src/yuzu/configuration/configure_profile_manager.h +++ b/src/yuzu/configuration/configure_profile_manager.h @@ -9,6 +9,10 @@ #include #include +namespace Core { +class System; +} + class QGraphicsScene; class QStandardItem; class QStandardItemModel; @@ -27,7 +31,7 @@ class ConfigureProfileManager : public QWidget { Q_OBJECT public: - explicit ConfigureProfileManager(QWidget* parent = nullptr); + explicit ConfigureProfileManager(Core::System& system_, QWidget* parent = nullptr); ~ConfigureProfileManager() override; void ApplyConfiguration(); @@ -58,4 +62,6 @@ private: bool enabled = false; std::unique_ptr profile_manager; + + Core::System& system; }; diff --git a/src/yuzu/configuration/configure_profile_manager.ui b/src/yuzu/configuration/configure_profile_manager.ui index dedba4998..cfe7478c8 100644 --- a/src/yuzu/configuration/configure_profile_manager.ui +++ b/src/yuzu/configuration/configure_profile_manager.ui @@ -6,13 +6,16 @@ 0 0 - 366 + 390 483 Form + + Profiles + diff --git a/src/yuzu/configuration/configure_system.cpp b/src/yuzu/configuration/configure_system.cpp index 99a5df241..a405e05ca 100644 --- a/src/yuzu/configuration/configure_system.cpp +++ b/src/yuzu/configuration/configure_system.cpp @@ -17,7 +17,8 @@ #include "yuzu/configuration/configuration_shared.h" #include "yuzu/configuration/configure_system.h" -ConfigureSystem::ConfigureSystem(QWidget* parent) : QWidget(parent), ui(new Ui::ConfigureSystem) { +ConfigureSystem::ConfigureSystem(Core::System& system_, QWidget* parent) + : QWidget(parent), ui(new Ui::ConfigureSystem), system{system_} { ui->setupUi(this); connect(ui->button_regenerate_console_id, &QPushButton::clicked, this, &ConfigureSystem::RefreshConsoleID); @@ -59,7 +60,7 @@ void ConfigureSystem::RetranslateUI() { } void ConfigureSystem::SetConfiguration() { - enabled = !Core::System::GetInstance().IsPoweredOn(); + enabled = !system.IsPoweredOn(); const auto rng_seed = QStringLiteral("%1") .arg(Settings::values.rng_seed.GetValue().value_or(0), 8, 16, QLatin1Char{'0'}) @@ -103,8 +104,6 @@ void ConfigureSystem::SetConfiguration() { void ConfigureSystem::ReadSystemSettings() {} void ConfigureSystem::ApplyConfiguration() { - auto& system = Core::System::GetInstance(); - // Allow setting custom RTC even if system is powered on, // to allow in-game time to be fast forwarded if (Settings::IsConfiguringGlobal()) { @@ -162,8 +161,6 @@ void ConfigureSystem::ApplyConfiguration() { break; } } - - system.ApplySettings(); } void ConfigureSystem::RefreshConsoleID() { diff --git a/src/yuzu/configuration/configure_system.h b/src/yuzu/configuration/configure_system.h index fc5cd2945..bb24c9ae7 100644 --- a/src/yuzu/configuration/configure_system.h +++ b/src/yuzu/configuration/configure_system.h @@ -9,6 +9,10 @@ #include #include +namespace Core { +class System; +} + namespace ConfigurationShared { enum class CheckState; } @@ -21,17 +25,16 @@ class ConfigureSystem : public QWidget { Q_OBJECT public: - explicit ConfigureSystem(QWidget* parent = nullptr); + explicit ConfigureSystem(Core::System& system_, QWidget* parent = nullptr); ~ConfigureSystem() override; void ApplyConfiguration(); + void SetConfiguration(); private: void changeEvent(QEvent* event) override; void RetranslateUI(); - void SetConfiguration(); - void ReadSystemSettings(); void RefreshConsoleID(); @@ -48,4 +51,6 @@ private: ConfigurationShared::CheckState use_rng_seed; ConfigurationShared::CheckState use_custom_rtc; + + Core::System& system; }; diff --git a/src/yuzu/configuration/configure_system.ui b/src/yuzu/configuration/configure_system.ui index 27f552f59..5b68dcb29 100644 --- a/src/yuzu/configuration/configure_system.ui +++ b/src/yuzu/configuration/configure_system.ui @@ -13,6 +13,9 @@ Form + + System + diff --git a/src/yuzu/configuration/configure_ui.cpp b/src/yuzu/configuration/configure_ui.cpp index 9d7d51126..d01895bf2 100644 --- a/src/yuzu/configuration/configure_ui.cpp +++ b/src/yuzu/configuration/configure_ui.cpp @@ -54,7 +54,8 @@ QString GetTranslatedRowTextName(size_t index) { } } // Anonymous namespace -ConfigureUi::ConfigureUi(QWidget* parent) : QWidget(parent), ui(new Ui::ConfigureUi) { +ConfigureUi::ConfigureUi(Core::System& system_, QWidget* parent) + : QWidget(parent), ui(new Ui::ConfigureUi), system{system_} { ui->setupUi(this); InitializeLanguageComboBox(); @@ -116,7 +117,7 @@ void ConfigureUi::ApplyConfiguration() { UISettings::values.enable_screenshot_save_as = ui->enable_screenshot_save_as->isChecked(); Common::FS::SetYuzuPath(Common::FS::YuzuPath::ScreenshotsDir, ui->screenshot_path_edit->text().toStdString()); - Core::System::GetInstance().ApplySettings(); + system.ApplySettings(); } void ConfigureUi::RequestGameListUpdate() { diff --git a/src/yuzu/configuration/configure_ui.h b/src/yuzu/configuration/configure_ui.h index c30bcf6ff..48b6e6d82 100644 --- a/src/yuzu/configuration/configure_ui.h +++ b/src/yuzu/configuration/configure_ui.h @@ -7,6 +7,10 @@ #include #include +namespace Core { +class System; +} + namespace Ui { class ConfigureUi; } @@ -15,7 +19,7 @@ class ConfigureUi : public QWidget { Q_OBJECT public: - explicit ConfigureUi(QWidget* parent = nullptr); + explicit ConfigureUi(Core::System& system_, QWidget* parent = nullptr); ~ConfigureUi() override; void ApplyConfiguration(); @@ -42,4 +46,6 @@ private: void UpdateSecondRowComboBox(bool init = false); std::unique_ptr ui; + + Core::System& system; }; diff --git a/src/yuzu/configuration/configure_ui.ui b/src/yuzu/configuration/configure_ui.ui index 394f9fe04..a50df7f6f 100644 --- a/src/yuzu/configuration/configure_ui.ui +++ b/src/yuzu/configuration/configure_ui.ui @@ -7,12 +7,15 @@ 0 0 363 - 391 + 507 Form + + UI + diff --git a/src/yuzu/configuration/configure_web.ui b/src/yuzu/configuration/configure_web.ui index 8c07d1165..35b4274b0 100644 --- a/src/yuzu/configuration/configure_web.ui +++ b/src/yuzu/configuration/configure_web.ui @@ -13,6 +13,9 @@ Form + + Web + @@ -55,7 +58,7 @@ - + @@ -65,8 +68,7 @@ - - + @@ -163,20 +165,20 @@ - - - Discord Presence - - - - - - Show Current Game in your Discord Status - - - - - + + + Discord Presence + + + + + + Show Current Game in your Discord Status + + + + + diff --git a/src/yuzu/configuration/input_profiles.cpp b/src/yuzu/configuration/input_profiles.cpp index 333eeb84e..38ea6c772 100644 --- a/src/yuzu/configuration/input_profiles.cpp +++ b/src/yuzu/configuration/input_profiles.cpp @@ -28,7 +28,7 @@ std::filesystem::path GetNameWithoutExtension(std::filesystem::path filename) { } // namespace -InputProfiles::InputProfiles() { +InputProfiles::InputProfiles(Core::System& system_) : system{system_} { const auto input_profile_loc = FS::GetYuzuPath(FS::YuzuPath::ConfigDir) / "input"; if (!FS::IsDir(input_profile_loc)) { @@ -44,8 +44,8 @@ InputProfiles::InputProfiles() { if (IsINI(filename) && IsProfileNameValid(name_without_ext)) { map_profiles.insert_or_assign( - name_without_ext, - std::make_unique(name_without_ext, Config::ConfigType::InputProfile)); + name_without_ext, std::make_unique(system, name_without_ext, + Config::ConfigType::InputProfile)); } return true; @@ -81,7 +81,8 @@ bool InputProfiles::CreateProfile(const std::string& profile_name, std::size_t p } map_profiles.insert_or_assign( - profile_name, std::make_unique(profile_name, Config::ConfigType::InputProfile)); + profile_name, + std::make_unique(system, profile_name, Config::ConfigType::InputProfile)); return SaveProfile(profile_name, player_index); } diff --git a/src/yuzu/configuration/input_profiles.h b/src/yuzu/configuration/input_profiles.h index cb41fd9be..a567bd5a9 100644 --- a/src/yuzu/configuration/input_profiles.h +++ b/src/yuzu/configuration/input_profiles.h @@ -8,12 +8,16 @@ #include #include +namespace Core { +class System; +} + class Config; class InputProfiles { public: - explicit InputProfiles(); + explicit InputProfiles(Core::System& system_); virtual ~InputProfiles(); std::vector GetInputProfileNames(); @@ -29,4 +33,6 @@ private: bool ProfileExistsInMap(const std::string& profile_name) const; std::unordered_map> map_profiles; + + Core::System& system; }; -- cgit v1.2.3