diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt index 9379d9110f..53acba66b0 100644 --- a/src/yuzu/CMakeLists.txt +++ b/src/yuzu/CMakeLists.txt @@ -29,6 +29,8 @@ add_executable(yuzu configuration/configure_input.h configuration/configure_system.cpp configuration/configure_system.h + configuration/configure_per_game_dialog.cpp + configuration/configure_per_game_dialog.h configuration/configure_web.cpp configuration/configure_web.h debugger/graphics/graphics_breakpoint_observer.cpp @@ -74,6 +76,7 @@ set(UIS configuration/configure_general.ui configuration/configure_graphics.ui configuration/configure_input.ui + configuration/configure_per_game.ui configuration/configure_system.ui configuration/configure_web.ui hotkeys.ui diff --git a/src/yuzu/configuration/configure_per_game.ui b/src/yuzu/configuration/configure_per_game.ui new file mode 100644 index 0000000000..df4f291b87 --- /dev/null +++ b/src/yuzu/configuration/configure_per_game.ui @@ -0,0 +1,125 @@ + + + ConfigurePerGameDialog + + + + 0 + 0 + 461 + 500 + + + + yuzu Game Configuration + + + + + + 0 + + + + General + + + + + Input + + + + + Graphics + + + + + Audio + + + + + Debug + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + ConfigurePerGameGeneral + QWidget +
configuration/configure_per_general.h
+ 1 +
+ + ConfigureInput + QWidget +
configuration/configure_input.h
+ 1 +
+ + ConfigureGraphics + QWidget +
configuration/configure_graphics.h
+ 1 +
+ + ConfigureAudio + QWidget +
configuration/configure_audio.h
+ 1 +
+ + ConfigureDebug + QWidget +
configuration/configure_debug.h
+ 1 +
+
+ + + + buttonBox + accepted() + ConfigurePerGameDialog + accept() + + + 220 + 380 + + + 220 + 200 + + + + + buttonBox + rejected() + ConfigurePerGameDialog + reject() + + + 220 + 380 + + + 220 + 200 + + + + +
diff --git a/src/yuzu/configuration/configure_per_game_dialog.cpp b/src/yuzu/configuration/configure_per_game_dialog.cpp new file mode 100644 index 0000000000..b379cda127 --- /dev/null +++ b/src/yuzu/configuration/configure_per_game_dialog.cpp @@ -0,0 +1,45 @@ +// Copyright 2016 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "core/settings.h" +#include "ui_configure_per_game.h" +#include "yuzu/configuration/config.h" +#include "yuzu/configuration/configure_per_game_dialog.h" + +ConfigurePerGameDialog::ConfigurePerGameDialog(QWidget* parent, FileSys::VirtualFile file, + const PerGameValuesChange& change) + : QDialog(parent), ui(new Ui::ConfigurePerGameDialog) { + ui->setupUi(this); + ui->generalTab->loadFromFile(std::move(file)); + ui->generalTab->loadValuesChange(change); + ui->inputTab->setPerGame(true); + ui->inputTab->loadValuesChange(change); + ui->graphicsTab->setPerGame(true); + ui->graphicsTab->loadValuesChange(change); + ui->audioTab->setPerGame(true); + ui->audioTab->loadValuesChange(change); + ui->debugTab->setPerGame(true); + ui->debugTab->loadValuesChange(change); + this->setConfiguration(); +} + +ConfigurePerGameDialog::~ConfigurePerGameDialog() = default; + +void ConfigurePerGameDialog::setConfiguration() {} + +PerGameValuesChange ConfigurePerGameDialog::applyConfiguration() { + PerGameValuesChange out{}; + ui->generalTab->applyConfiguration(); + ui->generalTab->mergeValuesChange(out); + ui->inputTab->applyConfiguration(); + ui->inputTab->mergeValuesChange(out); + ui->graphicsTab->applyConfiguration(); + ui->graphicsTab->mergeValuesChange(out); + ui->audioTab->applyConfiguration(); + ui->audioTab->mergeValuesChange(out); + ui->debugTab->applyConfiguration(); + ui->debugTab->mergeValuesChange(out); + Settings::Apply(); + return out; +} diff --git a/src/yuzu/configuration/configure_per_game_dialog.h b/src/yuzu/configuration/configure_per_game_dialog.h new file mode 100644 index 0000000000..febd69afca --- /dev/null +++ b/src/yuzu/configuration/configure_per_game_dialog.h @@ -0,0 +1,29 @@ +// Copyright 2016 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include +#include +#include "core/file_sys/vfs.h" + +namespace Ui { +class ConfigurePerGameDialog; +} + +class ConfigurePerGameDialog : public QDialog { + Q_OBJECT + +public: + explicit ConfigurePerGameDialog(QWidget* parent, FileSys::VirtualFile file, + const PerGameValuesChange& change); + ~ConfigurePerGameDialog(); + + PerGameValuesChange applyConfiguration(); + +private: + void setConfiguration(); + + std::unique_ptr ui; +};