diff options
Diffstat (limited to 'src/yuzu/configuration')
-rw-r--r-- | src/yuzu/configuration/configure_debug_controller.cpp | 5 | ||||
-rw-r--r-- | src/yuzu/configuration/configure_debug_controller.h | 7 | ||||
-rw-r--r-- | src/yuzu/configuration/configure_dialog.cpp | 5 | ||||
-rw-r--r-- | src/yuzu/configuration/configure_dialog.h | 7 | ||||
-rw-r--r-- | src/yuzu/configuration/configure_input.cpp | 32 | ||||
-rw-r--r-- | src/yuzu/configuration/configure_input.h | 9 | ||||
-rw-r--r-- | src/yuzu/configuration/configure_input_player.cpp | 34 | ||||
-rw-r--r-- | src/yuzu/configuration/configure_input_player.h | 10 | ||||
-rw-r--r-- | src/yuzu/configuration/configure_mouse_advanced.cpp | 8 | ||||
-rw-r--r-- | src/yuzu/configuration/configure_mouse_advanced.h | 10 |
10 files changed, 83 insertions, 44 deletions
diff --git a/src/yuzu/configuration/configure_debug_controller.cpp b/src/yuzu/configuration/configure_debug_controller.cpp index 72885b4b8..0097c9a29 100644 --- a/src/yuzu/configuration/configure_debug_controller.cpp +++ b/src/yuzu/configuration/configure_debug_controller.cpp @@ -5,9 +5,10 @@ #include "ui_configure_debug_controller.h" #include "yuzu/configuration/configure_debug_controller.h" -ConfigureDebugController::ConfigureDebugController(QWidget* parent) +ConfigureDebugController::ConfigureDebugController(QWidget* parent, + InputCommon::InputSubsystem* input_subsystem) : QDialog(parent), ui(std::make_unique<Ui::ConfigureDebugController>()), - debug_controller(new ConfigureInputPlayer(this, 9, nullptr, true)) { + debug_controller(new ConfigureInputPlayer(this, 9, nullptr, input_subsystem, 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 36475bbea..34dcf705f 100644 --- a/src/yuzu/configuration/configure_debug_controller.h +++ b/src/yuzu/configuration/configure_debug_controller.h @@ -10,6 +10,10 @@ class QPushButton; +namespace InputCommon { +class InputSubsystem; +} + namespace Ui { class ConfigureDebugController; } @@ -18,7 +22,8 @@ class ConfigureDebugController : public QDialog { Q_OBJECT public: - explicit ConfigureDebugController(QWidget* parent); + explicit ConfigureDebugController(QWidget* parent, + InputCommon::InputSubsystem* input_subsystem); ~ConfigureDebugController() override; void ApplyConfiguration(); diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp index 857577591..8186929a6 100644 --- a/src/yuzu/configuration/configure_dialog.cpp +++ b/src/yuzu/configuration/configure_dialog.cpp @@ -12,7 +12,8 @@ #include "yuzu/configuration/configure_input_player.h" #include "yuzu/hotkeys.h" -ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry) +ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry, + InputCommon::InputSubsystem* input_subsystem) : QDialog(parent), ui(new Ui::ConfigureDialog), registry(registry) { Settings::configuring_global = true; @@ -20,6 +21,8 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry) ui->hotkeysTab->Populate(registry); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + ui->inputTab->Initialize(input_subsystem); + SetConfiguration(); PopulateSelectionList(); diff --git a/src/yuzu/configuration/configure_dialog.h b/src/yuzu/configuration/configure_dialog.h index 4289bc225..570c3b941 100644 --- a/src/yuzu/configuration/configure_dialog.h +++ b/src/yuzu/configuration/configure_dialog.h @@ -9,6 +9,10 @@ class HotkeyRegistry; +namespace InputCommon { +class InputSubsystem; +} + namespace Ui { class ConfigureDialog; } @@ -17,7 +21,8 @@ class ConfigureDialog : public QDialog { Q_OBJECT public: - explicit ConfigureDialog(QWidget* parent, HotkeyRegistry& registry); + explicit ConfigureDialog(QWidget* parent, HotkeyRegistry& registry, + InputCommon::InputSubsystem* input_subsystem); ~ConfigureDialog() override; void ApplyConfiguration(); diff --git a/src/yuzu/configuration/configure_input.cpp b/src/yuzu/configuration/configure_input.cpp index 0d004c2f7..5223eed1d 100644 --- a/src/yuzu/configuration/configure_input.cpp +++ b/src/yuzu/configuration/configure_input.cpp @@ -65,16 +65,20 @@ void OnDockedModeChanged(bool last_state, bool new_state) { ConfigureInput::ConfigureInput(QWidget* parent) : QWidget(parent), ui(std::make_unique<Ui::ConfigureInput>()) { ui->setupUi(this); +} + +ConfigureInput::~ConfigureInput() = default; +void ConfigureInput::Initialize(InputCommon::InputSubsystem* input_subsystem) { player_controllers = { - new ConfigureInputPlayer(this, 0, ui->consoleInputSettings), - new ConfigureInputPlayer(this, 1, ui->consoleInputSettings), - new ConfigureInputPlayer(this, 2, ui->consoleInputSettings), - new ConfigureInputPlayer(this, 3, ui->consoleInputSettings), - new ConfigureInputPlayer(this, 4, ui->consoleInputSettings), - new ConfigureInputPlayer(this, 5, ui->consoleInputSettings), - new ConfigureInputPlayer(this, 6, ui->consoleInputSettings), - new ConfigureInputPlayer(this, 7, ui->consoleInputSettings), + new ConfigureInputPlayer(this, 0, ui->consoleInputSettings, input_subsystem), + new ConfigureInputPlayer(this, 1, ui->consoleInputSettings, input_subsystem), + new ConfigureInputPlayer(this, 2, ui->consoleInputSettings, input_subsystem), + new ConfigureInputPlayer(this, 3, ui->consoleInputSettings, input_subsystem), + new ConfigureInputPlayer(this, 4, ui->consoleInputSettings, input_subsystem), + new ConfigureInputPlayer(this, 5, ui->consoleInputSettings, input_subsystem), + new ConfigureInputPlayer(this, 6, ui->consoleInputSettings, input_subsystem), + new ConfigureInputPlayer(this, 7, ui->consoleInputSettings, input_subsystem), }; player_tabs = { @@ -115,10 +119,12 @@ ConfigureInput::ConfigureInput(QWidget* parent) advanced = new ConfigureInputAdvanced(this); ui->tabAdvanced->setLayout(new QHBoxLayout(ui->tabAdvanced)); ui->tabAdvanced->layout()->addWidget(advanced); - connect(advanced, &ConfigureInputAdvanced::CallDebugControllerDialog, - [this] { CallConfigureDialog<ConfigureDebugController>(*this); }); - connect(advanced, &ConfigureInputAdvanced::CallMouseConfigDialog, - [this] { CallConfigureDialog<ConfigureMouseAdvanced>(*this); }); + connect(advanced, &ConfigureInputAdvanced::CallDebugControllerDialog, [this, input_subsystem] { + CallConfigureDialog<ConfigureDebugController>(*this, input_subsystem); + }); + connect(advanced, &ConfigureInputAdvanced::CallMouseConfigDialog, [this, input_subsystem] { + CallConfigureDialog<ConfigureMouseAdvanced>(*this, input_subsystem); + }); connect(advanced, &ConfigureInputAdvanced::CallTouchscreenConfigDialog, [this] { CallConfigureDialog<ConfigureTouchscreenAdvanced>(*this); }); @@ -129,8 +135,6 @@ ConfigureInput::ConfigureInput(QWidget* parent) LoadConfiguration(); } -ConfigureInput::~ConfigureInput() = default; - QList<QWidget*> ConfigureInput::GetSubTabs() const { return { ui->tabPlayer1, ui->tabPlayer2, ui->tabPlayer3, ui->tabPlayer4, ui->tabPlayer5, diff --git a/src/yuzu/configuration/configure_input.h b/src/yuzu/configuration/configure_input.h index 78ca659da..d08a24f96 100644 --- a/src/yuzu/configuration/configure_input.h +++ b/src/yuzu/configuration/configure_input.h @@ -7,8 +7,8 @@ #include <array> #include <memory> -#include <QDialog> #include <QKeyEvent> +#include <QWidget> #include "yuzu/configuration/configure_input_advanced.h" #include "yuzu/configuration/configure_input_player.h" @@ -19,6 +19,10 @@ class QCheckBox; class QString; class QTimer; +namespace InputCommon { +class InputSubsystem; +} + namespace Ui { class ConfigureInput; } @@ -32,6 +36,9 @@ public: explicit ConfigureInput(QWidget* parent = nullptr); ~ConfigureInput() override; + /// Initializes the input dialog with the given input subsystem. + void Initialize(InputCommon::InputSubsystem* input_subsystem_); + /// Save all button configurations to settings file. void ApplyConfiguration(); diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index d3980eb49..80bf40acb 100644 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp @@ -11,12 +11,12 @@ #include <QMenu> #include <QMessageBox> #include <QTimer> -#include "common/assert.h" #include "common/param_package.h" #include "core/core.h" #include "core/hle/service/hid/controllers/npad.h" #include "core/hle/service/hid/hid.h" #include "core/hle/service/sm/sm.h" +#include "input_common/gcadapter/gc_poller.h" #include "input_common/main.h" #include "ui_configure_input_player.h" #include "yuzu/configuration/config.h" @@ -229,9 +229,11 @@ QString AnalogToText(const Common::ParamPackage& param, const std::string& dir) } // namespace ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_index, - QWidget* bottom_row, bool debug) + QWidget* bottom_row, + InputCommon::InputSubsystem* input_subsystem_, + bool debug) : QWidget(parent), ui(std::make_unique<Ui::ConfigureInputPlayer>()), player_index(player_index), - debug(debug), timeout_timer(std::make_unique<QTimer>()), + debug(debug), input_subsystem{input_subsystem_}, timeout_timer(std::make_unique<QTimer>()), poll_timer(std::make_unique<QTimer>()), bottom_row(bottom_row) { ui->setupUi(this); @@ -287,7 +289,7 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i params.Set("direction", "+"); params.Set("threshold", "0.5"); } - (*param) = std::move(params); + *param = std::move(params); }, InputCommon::Polling::DeviceType::Button); }); @@ -401,15 +403,15 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i connect(poll_timer.get(), &QTimer::timeout, [this] { Common::ParamPackage params; - if (InputCommon::GetGCButtons()->IsPolling()) { - params = InputCommon::GetGCButtons()->GetNextInput(); + if (input_subsystem->GetGCButtons()->IsPolling()) { + params = input_subsystem->GetGCButtons()->GetNextInput(); if (params.Has("engine")) { SetPollingResult(params, false); return; } } - if (InputCommon::GetGCAnalogs()->IsPolling()) { - params = InputCommon::GetGCAnalogs()->GetNextInput(); + if (input_subsystem->GetGCAnalogs()->IsPolling()) { + params = input_subsystem->GetGCAnalogs()->GetNextInput(); if (params.Has("engine")) { SetPollingResult(params, false); return; @@ -514,7 +516,7 @@ void ConfigureInputPlayer::LoadConfiguration() { } void ConfigureInputPlayer::UpdateInputDevices() { - input_devices = InputCommon::GetInputDevices(); + input_devices = input_subsystem->GetInputDevices(); ui->comboDevices->clear(); for (auto device : input_devices) { ui->comboDevices->addItem(QString::fromStdString(device.Get("display", "Unknown")), {}); @@ -642,8 +644,8 @@ void ConfigureInputPlayer::UpdateMappingWithDefaults() { return; } const auto& device = input_devices[ui->comboDevices->currentIndex()]; - auto button_mapping = InputCommon::GetButtonMappingForDevice(device); - auto analog_mapping = InputCommon::GetAnalogMappingForDevice(device); + auto button_mapping = input_subsystem->GetButtonMappingForDevice(device); + auto analog_mapping = input_subsystem->GetAnalogMappingForDevice(device); for (int i = 0; i < buttons_param.size(); ++i) { buttons_param[i] = button_mapping[static_cast<Settings::NativeButton::Values>(i)]; } @@ -666,7 +668,7 @@ void ConfigureInputPlayer::HandleClick( input_setter = new_input_setter; - device_pollers = InputCommon::Polling::GetPollers(type); + device_pollers = input_subsystem->GetPollers(type); for (auto& poller : device_pollers) { poller->Start(); @@ -676,9 +678,9 @@ void ConfigureInputPlayer::HandleClick( QWidget::grabKeyboard(); if (type == InputCommon::Polling::DeviceType::Button) { - InputCommon::GetGCButtons()->BeginConfiguration(); + input_subsystem->GetGCButtons()->BeginConfiguration(); } else { - InputCommon::GetGCAnalogs()->BeginConfiguration(); + input_subsystem->GetGCAnalogs()->BeginConfiguration(); } timeout_timer->start(2500); // Cancel after 2.5 seconds @@ -695,8 +697,8 @@ void ConfigureInputPlayer::SetPollingResult(const Common::ParamPackage& params, QWidget::releaseMouse(); QWidget::releaseKeyboard(); - InputCommon::GetGCButtons()->EndConfiguration(); - InputCommon::GetGCAnalogs()->EndConfiguration(); + input_subsystem->GetGCButtons()->EndConfiguration(); + input_subsystem->GetGCAnalogs()->EndConfiguration(); if (!abort) { (*input_setter)(params); diff --git a/src/yuzu/configuration/configure_input_player.h b/src/yuzu/configuration/configure_input_player.h index 25d4cde5e..a25bc3bd9 100644 --- a/src/yuzu/configuration/configure_input_player.h +++ b/src/yuzu/configuration/configure_input_player.h @@ -10,12 +10,11 @@ #include <optional> #include <string> -#include <QDialog> +#include <QWidget> #include "common/param_package.h" #include "core/settings.h" #include "ui_configure_input.h" -#include "yuzu/uisettings.h" class QCheckBox; class QKeyEvent; @@ -27,6 +26,10 @@ class QString; class QTimer; class QWidget; +namespace InputCommon { +class InputSubsystem; +} + namespace InputCommon::Polling { class DevicePoller; enum class DeviceType; @@ -41,6 +44,7 @@ class ConfigureInputPlayer : public QWidget { public: explicit ConfigureInputPlayer(QWidget* parent, std::size_t player_index, QWidget* bottom_row, + InputCommon::InputSubsystem* input_subsystem_, bool debug = false); ~ConfigureInputPlayer() override; @@ -111,6 +115,8 @@ private: std::size_t player_index; bool debug; + InputCommon::InputSubsystem* input_subsystem; + std::unique_ptr<QTimer> timeout_timer; std::unique_ptr<QTimer> poll_timer; diff --git a/src/yuzu/configuration/configure_mouse_advanced.cpp b/src/yuzu/configuration/configure_mouse_advanced.cpp index dcda8ab14..2af3afda8 100644 --- a/src/yuzu/configuration/configure_mouse_advanced.cpp +++ b/src/yuzu/configuration/configure_mouse_advanced.cpp @@ -76,8 +76,10 @@ static QString ButtonToText(const Common::ParamPackage& param) { return QObject::tr("[unknown]"); } -ConfigureMouseAdvanced::ConfigureMouseAdvanced(QWidget* parent) - : QDialog(parent), ui(std::make_unique<Ui::ConfigureMouseAdvanced>()), +ConfigureMouseAdvanced::ConfigureMouseAdvanced(QWidget* parent, + InputCommon::InputSubsystem* input_subsystem_) + : QDialog(parent), + ui(std::make_unique<Ui::ConfigureMouseAdvanced>()), input_subsystem{input_subsystem_}, timeout_timer(std::make_unique<QTimer>()), poll_timer(std::make_unique<QTimer>()) { ui->setupUi(this); setFocusPolicy(Qt::ClickFocus); @@ -209,7 +211,7 @@ void ConfigureMouseAdvanced::HandleClick( input_setter = new_input_setter; - device_pollers = InputCommon::Polling::GetPollers(type); + device_pollers = input_subsystem->GetPollers(type); for (auto& poller : device_pollers) { poller->Start(); diff --git a/src/yuzu/configuration/configure_mouse_advanced.h b/src/yuzu/configuration/configure_mouse_advanced.h index e7d27dab7..65b6fca9a 100644 --- a/src/yuzu/configuration/configure_mouse_advanced.h +++ b/src/yuzu/configuration/configure_mouse_advanced.h @@ -8,12 +8,14 @@ #include <optional> #include <QDialog> -#include "core/settings.h" - class QCheckBox; class QPushButton; class QTimer; +namespace InputCommon { +class InputSubsystem; +} + namespace Ui { class ConfigureMouseAdvanced; } @@ -22,7 +24,7 @@ class ConfigureMouseAdvanced : public QDialog { Q_OBJECT public: - explicit ConfigureMouseAdvanced(QWidget* parent); + explicit ConfigureMouseAdvanced(QWidget* parent, InputCommon::InputSubsystem* input_subsystem_); ~ConfigureMouseAdvanced() override; void ApplyConfiguration(); @@ -57,6 +59,8 @@ private: std::unique_ptr<Ui::ConfigureMouseAdvanced> ui; + InputCommon::InputSubsystem* input_subsystem; + /// This will be the the setting function when an input is awaiting configuration. std::optional<std::function<void(const Common::ParamPackage&)>> input_setter; |