From ec7ea4ae960e6944d794585d3ad78ca5d7998d1f Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 27 Nov 2018 05:00:56 -0500 Subject: [PATCH 1/7] yuzu/configure_input: Remove unnecessary includes --- src/yuzu/configuration/configure_input.cpp | 10 ++-------- src/yuzu/configuration/configure_input.h | 8 -------- src/yuzu/configuration/configure_mouse_advanced.h | 2 +- 3 files changed, 3 insertions(+), 17 deletions(-) diff --git a/src/yuzu/configuration/configure_input.cpp b/src/yuzu/configuration/configure_input.cpp index 7ee572761d..e58c62c9af 100644 --- a/src/yuzu/configuration/configure_input.cpp +++ b/src/yuzu/configuration/configure_input.cpp @@ -4,11 +4,9 @@ #include #include -#include -#include -#include + #include -#include "common/param_package.h" + #include "configuration/configure_touchscreen_advanced.h" #include "core/core.h" #include "core/hle/service/am/am.h" @@ -16,12 +14,8 @@ #include "core/hle/service/am/applet_oe.h" #include "core/hle/service/hid/controllers/npad.h" #include "core/hle/service/sm/sm.h" -#include "input_common/main.h" #include "ui_configure_input.h" #include "ui_configure_input_player.h" -#include "ui_configure_mouse_advanced.h" -#include "ui_configure_touchscreen_advanced.h" -#include "yuzu/configuration/config.h" #include "yuzu/configuration/configure_input.h" #include "yuzu/configuration/configure_input_player.h" #include "yuzu/configuration/configure_mouse_advanced.h" diff --git a/src/yuzu/configuration/configure_input.h b/src/yuzu/configuration/configure_input.h index 29a8a03f81..0de442bf0a 100644 --- a/src/yuzu/configuration/configure_input.h +++ b/src/yuzu/configuration/configure_input.h @@ -5,20 +5,12 @@ #pragma once #include -#include #include -#include -#include -#include #include #include -#include "common/param_package.h" -#include "core/settings.h" -#include "input_common/main.h" #include "ui_configure_input.h" -#include "yuzu/configuration/config.h" class QPushButton; class QString; diff --git a/src/yuzu/configuration/configure_mouse_advanced.h b/src/yuzu/configuration/configure_mouse_advanced.h index 218df2bda6..057b3aa72d 100644 --- a/src/yuzu/configuration/configure_mouse_advanced.h +++ b/src/yuzu/configuration/configure_mouse_advanced.h @@ -7,7 +7,7 @@ #include #include #include -#include + #include "core/settings.h" class QCheckBox; From d67e88e59c1a2f1ac8099e5c5684de2dcaf583eb Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 27 Nov 2018 05:02:12 -0500 Subject: [PATCH 2/7] yuzu/configure_input*: Move data members after function declarations The common pattern is to put the data members after the function interface where applicable. --- .../configuration/configure_input_player.h | 49 ++++++++++--------- .../configuration/configure_mouse_advanced.h | 34 ++++++------- 2 files changed, 42 insertions(+), 41 deletions(-) diff --git a/src/yuzu/configuration/configure_input_player.h b/src/yuzu/configuration/configure_input_player.h index b0e5550c57..937f779982 100644 --- a/src/yuzu/configuration/configure_input_player.h +++ b/src/yuzu/configuration/configure_input_player.h @@ -9,9 +9,10 @@ #include #include #include -#include + #include #include + #include "common/param_package.h" #include "core/settings.h" #include "input_common/main.h" @@ -36,6 +37,29 @@ public: void applyConfiguration(); private: + void OnControllerButtonClick(int i); + + /// Load configuration settings. + void loadConfiguration(); + /// Restore all buttons to their default values. + void restoreDefaults(); + /// Clear all input configuration + void ClearAll(); + + /// Update UI to reflect current configuration. + void updateButtonLabels(); + + /// Called when the button was pressed. + void handleClick(QPushButton* button, + std::function new_input_setter, + InputCommon::Polling::DeviceType type); + + /// Finish polling and configure input using the input_setter + void setPollingResult(const Common::ParamPackage& params, bool abort); + + /// Handle key press events. + void keyPressEvent(QKeyEvent* event) override; + std::unique_ptr ui; u8 player_index; @@ -77,27 +101,4 @@ private: std::array controller_color_buttons; std::array controller_colors; - - void OnControllerButtonClick(int i); - - /// Load configuration settings. - void loadConfiguration(); - /// Restore all buttons to their default values. - void restoreDefaults(); - /// Clear all input configuration - void ClearAll(); - - /// Update UI to reflect current configuration. - void updateButtonLabels(); - - /// Called when the button was pressed. - void handleClick(QPushButton* button, - std::function new_input_setter, - InputCommon::Polling::DeviceType type); - - /// Finish polling and configure input using the input_setter - void setPollingResult(const Common::ParamPackage& params, bool abort); - - /// Handle key press events. - void keyPressEvent(QKeyEvent* event) override; }; diff --git a/src/yuzu/configuration/configure_mouse_advanced.h b/src/yuzu/configuration/configure_mouse_advanced.h index 057b3aa72d..e04da4bf23 100644 --- a/src/yuzu/configuration/configure_mouse_advanced.h +++ b/src/yuzu/configuration/configure_mouse_advanced.h @@ -28,23 +28,6 @@ public: void applyConfiguration(); private: - std::unique_ptr ui; - - /// This will be the the setting function when an input is awaiting configuration. - std::optional> input_setter; - - std::array button_map; - std::array buttons_param; - - std::vector> device_pollers; - - std::unique_ptr timeout_timer; - std::unique_ptr poll_timer; - - /// A flag to indicate if keyboard keys are okay when configuring an input. If this is false, - /// keyboard events are ignored. - bool want_keyboard_keys = false; - /// Load configuration settings. void loadConfiguration(); /// Restore all buttons to their default values. @@ -65,4 +48,21 @@ private: /// Handle key press events. void keyPressEvent(QKeyEvent* event) override; + + std::unique_ptr ui; + + /// This will be the the setting function when an input is awaiting configuration. + std::optional> input_setter; + + std::array button_map; + std::array buttons_param; + + std::vector> device_pollers; + + std::unique_ptr timeout_timer; + std::unique_ptr poll_timer; + + /// A flag to indicate if keyboard keys are okay when configuring an input. If this is false, + /// keyboard events are ignored. + bool want_keyboard_keys = false; }; From 53bff5379144c22532affdfa8952690a5f0d5fd1 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 27 Nov 2018 05:03:26 -0500 Subject: [PATCH 3/7] yuzu/configure_input: Remove unused function MoveGridElement --- src/yuzu/configuration/configure_input_player.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index ba6e09368d..5898a065e1 100644 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp @@ -25,13 +25,6 @@ const std::array "modifier", }}; -static void MoveGridElement(QGridLayout* grid, int row_old, int column_old, int row_new, - int column_new) { - const auto item = grid->itemAtPosition(row_old, column_old); - // grid->removeItem(item); - grid->addItem(item, row_new, column_new); -} - static void LayerGridElements(QGridLayout* grid, QWidget* item, QWidget* onTopOf) { const int index1 = grid->indexOf(item); const int index2 = grid->indexOf(onTopOf); From 73a48d6523d2105854f836f70b900448ae03cd91 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 27 Nov 2018 05:04:49 -0500 Subject: [PATCH 4/7] yuzu/configure_input_player: Amend constructor initializer list order Orders the elements the way they would actually be initialized in. Resolves compiler warnings with gcc and clang --- src/yuzu/configuration/configure_input_player.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index 5898a065e1..44d3d1a563 100644 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp @@ -105,10 +105,9 @@ static QString AnalogToText(const Common::ParamPackage& param, const std::string }; ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, u8 player_index, bool debug) - : QDialog(parent), ui(std::make_unique()), - timeout_timer(std::make_unique()), poll_timer(std::make_unique()), - player_index(player_index), debug(debug) { - + : QDialog(parent), ui(std::make_unique()), player_index(player_index), + debug(debug), timeout_timer(std::make_unique()), + poll_timer(std::make_unique()) { ui->setupUi(this); setFocusPolicy(Qt::ClickFocus); From 11cf13a6e10e36714dd1a0df7365d93f3a5b5b73 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 27 Nov 2018 05:08:09 -0500 Subject: [PATCH 5/7] yuzu/configure_input_player: Use a lambda expression instead of std::bind std::bind is the pre-C++11 way of doing this. --- src/yuzu/configuration/configure_input_player.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index 44d3d1a563..4a26684d86 100644 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp @@ -307,7 +307,7 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, u8 player_index, boo for (std::size_t i = 0; i < controller_color_buttons.size(); ++i) { connect(controller_color_buttons[i], &QPushButton::clicked, this, - std::bind(&ConfigureInputPlayer::OnControllerButtonClick, this, i)); + [this, i] { OnControllerButtonClick(static_cast(i)); }); } this->loadConfiguration(); From 0782d3971bcc92f4c4e346f1cdf72ca13d64c2f7 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 27 Nov 2018 05:14:59 -0500 Subject: [PATCH 6/7] yuzu/configure_input: Make CallConfigureDialog a non-member template function This doesn't depend on any part of the private interface, so it can be made a non-member internal function. --- src/yuzu/configuration/configure_input.cpp | 34 ++++++++++--------- src/yuzu/configuration/configure_input.h | 3 -- .../configure_mouse_advanced.cpp | 4 +-- 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/yuzu/configuration/configure_input.cpp b/src/yuzu/configuration/configure_input.cpp index e58c62c9af..ec46dc4e37 100644 --- a/src/yuzu/configuration/configure_input.cpp +++ b/src/yuzu/configuration/configure_input.cpp @@ -20,6 +20,19 @@ #include "yuzu/configuration/configure_input_player.h" #include "yuzu/configuration/configure_mouse_advanced.h" +namespace { +template +void CallConfigureDialog(ConfigureInput& parent, Args&&... args) { + parent.applyConfiguration(); + Dialog dialog(&parent, std::forward(args)...); + + const auto res = dialog.exec(); + if (res == QDialog::Accepted) { + dialog.applyConfiguration(); + } +} +} // Anonymous namespace + ConfigureInput::ConfigureInput(QWidget* parent) : QWidget(parent), ui(std::make_unique()) { ui->setupUi(this); @@ -59,31 +72,20 @@ ConfigureInput::ConfigureInput(QWidget* parent) for (std::size_t i = 0; i < players_configure.size(); ++i) { connect(players_configure[i], &QPushButton::pressed, this, - [this, i]() { CallConfigureDialog(i, false); }); + [this, i] { CallConfigureDialog(*this, i, false); }); } connect(ui->handheld_configure, &QPushButton::pressed, this, - [this]() { CallConfigureDialog(8, false); }); + [this] { CallConfigureDialog(*this, 8, false); }); connect(ui->debug_configure, &QPushButton::pressed, this, - [this]() { CallConfigureDialog(9, true); }); + [this] { CallConfigureDialog(*this, 9, true); }); connect(ui->mouse_advanced, &QPushButton::pressed, this, - [this]() { CallConfigureDialog(); }); + [this] { CallConfigureDialog(*this); }); connect(ui->touchscreen_advanced, &QPushButton::pressed, this, - [this]() { CallConfigureDialog(); }); -} - -template -void ConfigureInput::CallConfigureDialog(Args&&... args) { - this->applyConfiguration(); - Dialog dialog(this, std::forward(args)...); - - const auto res = dialog.exec(); - if (res == QDialog::Accepted) { - dialog.applyConfiguration(); - } + [this] { CallConfigureDialog(*this); }); } void ConfigureInput::OnDockedModeChanged(bool last_state, bool new_state) { diff --git a/src/yuzu/configuration/configure_input.h b/src/yuzu/configuration/configure_input.h index 0de442bf0a..e8723dfcb8 100644 --- a/src/yuzu/configuration/configure_input.h +++ b/src/yuzu/configuration/configure_input.h @@ -32,9 +32,6 @@ public: private: void updateUIEnabled(); - template - void CallConfigureDialog(Args&&... args); - void OnDockedModeChanged(bool last_state, bool new_state); /// Load configuration settings. diff --git a/src/yuzu/configuration/configure_mouse_advanced.cpp b/src/yuzu/configuration/configure_mouse_advanced.cpp index dab58fbaaa..ef857035e0 100644 --- a/src/yuzu/configuration/configure_mouse_advanced.cpp +++ b/src/yuzu/configuration/configure_mouse_advanced.cpp @@ -4,11 +4,11 @@ #include #include -#include + #include #include -#include #include + #include "common/assert.h" #include "common/param_package.h" #include "input_common/main.h" From 2a22c1b27e01f43395d035ebc017df4ba088a67c Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 27 Nov 2018 05:17:11 -0500 Subject: [PATCH 7/7] yuzu/configure_input_player: Use std::size_t to represent the player index instead of u8 Prevents compiler warnings related to truncation when invoking the dialog. It's also extremely suspect to use a u8 value here instead of a more general type to begin with. --- src/yuzu/configuration/configure_input_player.cpp | 2 +- src/yuzu/configuration/configure_input_player.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index 4a26684d86..7dadd83c1a 100644 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp @@ -104,7 +104,7 @@ static QString AnalogToText(const Common::ParamPackage& param, const std::string } }; -ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, u8 player_index, bool debug) +ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_index, bool debug) : QDialog(parent), ui(std::make_unique()), player_index(player_index), debug(debug), timeout_timer(std::make_unique()), poll_timer(std::make_unique()) { diff --git a/src/yuzu/configuration/configure_input_player.h b/src/yuzu/configuration/configure_input_player.h index 937f779982..7a53f6715c 100644 --- a/src/yuzu/configuration/configure_input_player.h +++ b/src/yuzu/configuration/configure_input_player.h @@ -30,7 +30,7 @@ class ConfigureInputPlayer : public QDialog { Q_OBJECT public: - explicit ConfigureInputPlayer(QWidget* parent, u8 player_index, bool debug = false); + explicit ConfigureInputPlayer(QWidget* parent, std::size_t player_index, bool debug = false); ~ConfigureInputPlayer() override; /// Save all button configurations to settings file @@ -62,7 +62,7 @@ private: std::unique_ptr ui; - u8 player_index; + std::size_t player_index; bool debug; std::unique_ptr timeout_timer;