summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar LC2020-10-20 15:00:06 -0400
committerGravatar GitHub2020-10-20 15:00:06 -0400
commitea8345cdcdafddaab8e5531eb4727bc6a8e2ebe4 (patch)
tree219065019585526f9fe65479fc2b64b9c75e3858 /src
parentMerge pull request #4627 from Morph1984/fix-dinput-controller-disconnect (diff)
parentconfigure_input_player: Fix modifier buttons (diff)
downloadyuzu-ea8345cdcdafddaab8e5531eb4727bc6a8e2ebe4.tar.gz
yuzu-ea8345cdcdafddaab8e5531eb4727bc6a8e2ebe4.tar.xz
yuzu-ea8345cdcdafddaab8e5531eb4727bc6a8e2ebe4.zip
Merge pull request #4809 from Morph1984/mjolnir-p3
configure_input_player: Fix modifier buttons
Diffstat (limited to 'src')
-rw-r--r--src/input_common/settings.h2
-rw-r--r--src/yuzu/configuration/configure_input_player.cpp37
-rw-r--r--src/yuzu/configuration/configure_input_player.h9
3 files changed, 23 insertions, 25 deletions
diff --git a/src/input_common/settings.h b/src/input_common/settings.h
index ab0b95cf1..f52d28540 100644
--- a/src/input_common/settings.h
+++ b/src/input_common/settings.h
@@ -331,8 +331,6 @@ struct PlayerInput {
331 ButtonsRaw buttons; 331 ButtonsRaw buttons;
332 AnalogsRaw analogs; 332 AnalogsRaw analogs;
333 MotionRaw motions; 333 MotionRaw motions;
334 std::string lstick_mod;
335 std::string rstick_mod;
336 334
337 u32 body_color_left; 335 u32 body_color_left;
338 u32 body_color_right; 336 u32 body_color_right;
diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp
index 698cb1940..f58ca29d7 100644
--- a/src/yuzu/configuration/configure_input_player.cpp
+++ b/src/yuzu/configuration/configure_input_player.cpp
@@ -256,11 +256,6 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i
256 ui->buttonSL, ui->buttonSR, ui->buttonHome, ui->buttonScreenshot, 256 ui->buttonSL, ui->buttonSR, ui->buttonHome, ui->buttonScreenshot,
257 }; 257 };
258 258
259 mod_buttons = {
260 ui->buttonLStickMod,
261 ui->buttonRStickMod,
262 };
263
264 analog_map_buttons = {{ 259 analog_map_buttons = {{
265 { 260 {
266 ui->buttonLStickUp, 261 ui->buttonLStickUp,
@@ -284,6 +279,7 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i
284 analog_map_deadzone_label = {ui->labelLStickDeadzone, ui->labelRStickDeadzone}; 279 analog_map_deadzone_label = {ui->labelLStickDeadzone, ui->labelRStickDeadzone};
285 analog_map_deadzone_slider = {ui->sliderLStickDeadzone, ui->sliderRStickDeadzone}; 280 analog_map_deadzone_slider = {ui->sliderLStickDeadzone, ui->sliderRStickDeadzone};
286 analog_map_modifier_groupbox = {ui->buttonLStickModGroup, ui->buttonRStickModGroup}; 281 analog_map_modifier_groupbox = {ui->buttonLStickModGroup, ui->buttonRStickModGroup};
282 analog_map_modifier_button = {ui->buttonLStickMod, ui->buttonRStickMod};
287 analog_map_modifier_label = {ui->labelLStickModifierRange, ui->labelRStickModifierRange}; 283 analog_map_modifier_label = {ui->labelLStickModifierRange, ui->labelRStickModifierRange};
288 analog_map_modifier_slider = {ui->sliderLStickModifierRange, ui->sliderRStickModifierRange}; 284 analog_map_modifier_slider = {ui->sliderLStickModifierRange, ui->sliderRStickModifierRange};
289 analog_map_range_groupbox = {ui->buttonLStickRangeGroup, ui->buttonRStickRangeGroup}; 285 analog_map_range_groupbox = {ui->buttonLStickRangeGroup, ui->buttonRStickRangeGroup};
@@ -394,20 +390,26 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i
394 } 390 }
395 391
396 // Handle clicks for the modifier buttons as well. 392 // Handle clicks for the modifier buttons as well.
397 ConfigureButtonClick(mod_buttons[analog_id], &stick_mod_param[analog_id], 393 connect(analog_map_modifier_button[analog_id], &QPushButton::clicked, [=, this] {
398 Config::default_stick_mod[analog_id], 394 HandleClick(
399 InputCommon::Polling::DeviceType::Button); 395 analog_map_modifier_button[analog_id],
396 [=, this](const Common::ParamPackage& params) {
397 analogs_param[analog_id].Set("modifier", params.Serialize());
398 },
399 InputCommon::Polling::DeviceType::Button);
400 });
400 401
401 mod_buttons[analog_id]->setContextMenuPolicy(Qt::CustomContextMenu); 402 analog_map_modifier_button[analog_id]->setContextMenuPolicy(Qt::CustomContextMenu);
402 403
403 connect(mod_buttons[analog_id], &QPushButton::customContextMenuRequested, 404 connect(analog_map_modifier_button[analog_id], &QPushButton::customContextMenuRequested,
404 [=, this](const QPoint& menu_location) { 405 [=, this](const QPoint& menu_location) {
405 QMenu context_menu; 406 QMenu context_menu;
406 context_menu.addAction(tr("Clear"), [&] { 407 context_menu.addAction(tr("Clear"), [&] {
407 stick_mod_param[analog_id].Clear(); 408 analogs_param[analog_id].Set("modifier", "");
408 mod_buttons[analog_id]->setText(tr("[not set]")); 409 analog_map_modifier_button[analog_id]->setText(tr("[not set]"));
409 }); 410 });
410 context_menu.exec(mod_buttons[analog_id]->mapToGlobal(menu_location)); 411 context_menu.exec(
412 analog_map_modifier_button[analog_id]->mapToGlobal(menu_location));
411 }); 413 });
412 414
413 connect(analog_map_range_spinbox[analog_id], qOverload<int>(&QSpinBox::valueChanged), 415 connect(analog_map_range_spinbox[analog_id], qOverload<int>(&QSpinBox::valueChanged),
@@ -636,8 +638,8 @@ void ConfigureInputPlayer::RestoreDefaults() {
636 SetAnalogParam(params, analogs_param[analog_id], analog_sub_buttons[sub_button_id]); 638 SetAnalogParam(params, analogs_param[analog_id], analog_sub_buttons[sub_button_id]);
637 } 639 }
638 640
639 stick_mod_param[analog_id] = Common::ParamPackage( 641 analogs_param[analog_id].Set(
640 InputCommon::GenerateKeyboardParam(Config::default_stick_mod[analog_id])); 642 "modifier", InputCommon::GenerateKeyboardParam(Config::default_stick_mod[analog_id]));
641 } 643 }
642 644
643 for (int motion_id = 0; motion_id < Settings::NativeMotion::NumMotions; ++motion_id) { 645 for (int motion_id = 0; motion_id < Settings::NativeMotion::NumMotions; ++motion_id) {
@@ -669,8 +671,6 @@ void ConfigureInputPlayer::ClearAll() {
669 671
670 analogs_param[analog_id].Clear(); 672 analogs_param[analog_id].Clear();
671 } 673 }
672
673 stick_mod_param[analog_id].Clear();
674 } 674 }
675 675
676 for (int motion_id = 0; motion_id < Settings::NativeMotion::NumMotions; ++motion_id) { 676 for (int motion_id = 0; motion_id < Settings::NativeMotion::NumMotions; ++motion_id) {
@@ -707,7 +707,8 @@ void ConfigureInputPlayer::UpdateUI() {
707 AnalogToText(analogs_param[analog_id], analog_sub_buttons[sub_button_id])); 707 AnalogToText(analogs_param[analog_id], analog_sub_buttons[sub_button_id]));
708 } 708 }
709 709
710 mod_buttons[analog_id]->setText(ButtonToText(stick_mod_param[analog_id])); 710 analog_map_modifier_button[analog_id]->setText(
711 ButtonToText(Common::ParamPackage{analogs_param[analog_id].Get("modifier", "")}));
711 712
712 const auto deadzone_label = analog_map_deadzone_label[analog_id]; 713 const auto deadzone_label = analog_map_deadzone_label[analog_id];
713 const auto deadzone_slider = analog_map_deadzone_slider[analog_id]; 714 const auto deadzone_slider = analog_map_deadzone_slider[analog_id];
diff --git a/src/yuzu/configuration/configure_input_player.h b/src/yuzu/configuration/configure_input_player.h
index ce443dec5..c19aefffa 100644
--- a/src/yuzu/configuration/configure_input_player.h
+++ b/src/yuzu/configuration/configure_input_player.h
@@ -131,26 +131,25 @@ private:
131 131
132 std::array<Common::ParamPackage, Settings::NativeButton::NumButtons> buttons_param; 132 std::array<Common::ParamPackage, Settings::NativeButton::NumButtons> buttons_param;
133 std::array<Common::ParamPackage, Settings::NativeAnalog::NumAnalogs> analogs_param; 133 std::array<Common::ParamPackage, Settings::NativeAnalog::NumAnalogs> analogs_param;
134 std::array<Common::ParamPackage, Settings::NativeAnalog::NumAnalogs> stick_mod_param;
135 std::array<Common::ParamPackage, Settings::NativeMotion::NumMotions> motions_param; 134 std::array<Common::ParamPackage, Settings::NativeMotion::NumMotions> motions_param;
136 135
137 static constexpr int ANALOG_SUB_BUTTONS_NUM = 4; 136 static constexpr int ANALOG_SUB_BUTTONS_NUM = 4;
138 137
139 /// Each button input is represented by a QPushButton. 138 /// Each button input is represented by a QPushButton.
140 std::array<QPushButton*, Settings::NativeButton::NumButtons> button_map; 139 std::array<QPushButton*, Settings::NativeButton::NumButtons> button_map;
141 /// Each motion input is represented by a QPushButton.
142 std::array<QPushButton*, Settings::NativeMotion::NumMotions> motion_map;
143 /// Extra buttons for the modifiers.
144 std::array<QPushButton*, Settings::NativeAnalog::NumAnalogs> mod_buttons;
145 140
146 /// A group of four QPushButtons represent one analog input. The buttons each represent up, 141 /// A group of four QPushButtons represent one analog input. The buttons each represent up,
147 /// down, left, right, respectively. 142 /// down, left, right, respectively.
148 std::array<std::array<QPushButton*, ANALOG_SUB_BUTTONS_NUM>, Settings::NativeAnalog::NumAnalogs> 143 std::array<std::array<QPushButton*, ANALOG_SUB_BUTTONS_NUM>, Settings::NativeAnalog::NumAnalogs>
149 analog_map_buttons; 144 analog_map_buttons;
150 145
146 /// Each motion input is represented by a QPushButton.
147 std::array<QPushButton*, Settings::NativeMotion::NumMotions> motion_map;
148
151 std::array<QLabel*, Settings::NativeAnalog::NumAnalogs> analog_map_deadzone_label; 149 std::array<QLabel*, Settings::NativeAnalog::NumAnalogs> analog_map_deadzone_label;
152 std::array<QSlider*, Settings::NativeAnalog::NumAnalogs> analog_map_deadzone_slider; 150 std::array<QSlider*, Settings::NativeAnalog::NumAnalogs> analog_map_deadzone_slider;
153 std::array<QGroupBox*, Settings::NativeAnalog::NumAnalogs> analog_map_modifier_groupbox; 151 std::array<QGroupBox*, Settings::NativeAnalog::NumAnalogs> analog_map_modifier_groupbox;
152 std::array<QPushButton*, Settings::NativeAnalog::NumAnalogs> analog_map_modifier_button;
154 std::array<QLabel*, Settings::NativeAnalog::NumAnalogs> analog_map_modifier_label; 153 std::array<QLabel*, Settings::NativeAnalog::NumAnalogs> analog_map_modifier_label;
155 std::array<QSlider*, Settings::NativeAnalog::NumAnalogs> analog_map_modifier_slider; 154 std::array<QSlider*, Settings::NativeAnalog::NumAnalogs> analog_map_modifier_slider;
156 std::array<QGroupBox*, Settings::NativeAnalog::NumAnalogs> analog_map_range_groupbox; 155 std::array<QGroupBox*, Settings::NativeAnalog::NumAnalogs> analog_map_range_groupbox;