diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/yuzu/applets/controller.cpp | 15 | ||||
-rw-r--r-- | src/yuzu/applets/controller.h | 22 |
2 files changed, 22 insertions, 15 deletions
diff --git a/src/yuzu/applets/controller.cpp b/src/yuzu/applets/controller.cpp index 7482174c6..4783446a8 100644 --- a/src/yuzu/applets/controller.cpp +++ b/src/yuzu/applets/controller.cpp @@ -171,14 +171,14 @@ QtControllerSelectorDialog::QtControllerSelectorDialog( ui->checkboxPlayer7Connected, ui->checkboxPlayer8Connected, }; - for (std::size_t i = 0; i < player_widgets.size(); ++i) { + for (std::size_t i = 0; i < NUM_PLAYERS; ++i) { connect(player_groupboxes[i], &QGroupBox::toggled, [this, i](bool checked) { if (checked) { for (std::size_t index = 0; index <= i; ++index) { connected_controller_checkboxes[index]->setChecked(checked); } } else { - for (std::size_t index = i; index < player_widgets.size(); ++index) { + for (std::size_t index = i; index < NUM_PLAYERS; ++index) { connected_controller_checkboxes[index]->setChecked(checked); } } @@ -237,6 +237,11 @@ QtControllerSelectorDialog::QtControllerSelectorDialog( QtControllerSelectorDialog::~QtControllerSelectorDialog() = default; void QtControllerSelectorDialog::ApplyConfiguration() { + // Update the controller state once more, just to be sure they are properly applied. + for (std::size_t index = 0; index < NUM_PLAYERS; ++index) { + UpdateControllerState(index); + } + const bool pre_docked_mode = Settings::values.use_docked_mode; Settings::values.use_docked_mode = ui->radioDocked->isChecked(); OnDockedModeChanged(pre_docked_mode, Settings::values.use_docked_mode); @@ -281,7 +286,7 @@ void QtControllerSelectorDialog::CheckIfParametersMet() { // Next, check against all connected controllers. const auto all_controllers_compatible = [this] { - for (std::size_t index = 0; index < player_widgets.size(); ++index) { + for (std::size_t index = 0; index < NUM_PLAYERS; ++index) { // Skip controllers that are not used, we only care about the currently connected ones. if (!player_groupboxes[index]->isChecked() || !player_groupboxes[index]->isEnabled()) { continue; @@ -535,7 +540,7 @@ void QtControllerSelectorDialog::DisableUnsupportedPlayers() { break; } - for (std::size_t index = max_supported_players; index < player_widgets.size(); ++index) { + for (std::size_t index = max_supported_players; index < NUM_PLAYERS; ++index) { // Disconnect any unsupported players here and disable or hide them if applicable. Settings::values.players[index].connected = false; UpdateController(Settings::values.players[index].controller_type, index, false); @@ -553,7 +558,7 @@ void QtControllerSelectorDialog::DisableUnsupportedPlayers() { } void QtControllerSelectorDialog::LoadConfiguration() { - for (std::size_t index = 0; index < player_widgets.size(); ++index) { + for (std::size_t index = 0; index < NUM_PLAYERS; ++index) { const auto connected = Settings::values.players[index].connected || (index == 0 && Settings::values.players[8].connected); player_groupboxes[index]->setChecked(connected); diff --git a/src/yuzu/applets/controller.h b/src/yuzu/applets/controller.h index db59dd631..6ab4bea09 100644 --- a/src/yuzu/applets/controller.h +++ b/src/yuzu/applets/controller.h @@ -79,36 +79,38 @@ private: InputCommon::InputSubsystem* input_subsystem; // This is true if and only if all parameters are met. Otherwise, this is false. - // This determines whether the "Ok" button can be clicked to exit the applet. + // This determines whether the "OK" button can be clicked to exit the applet. bool parameters_met{false}; + static constexpr std::size_t NUM_PLAYERS = 8; + // Widgets encapsulating the groupboxes and comboboxes per player. - std::array<QWidget*, 8> player_widgets; + std::array<QWidget*, NUM_PLAYERS> player_widgets; // Groupboxes encapsulating the controller icons and LED patterns per player. - std::array<QGroupBox*, 8> player_groupboxes; + std::array<QGroupBox*, NUM_PLAYERS> player_groupboxes; // Icons for currently connected controllers/players. - std::array<QWidget*, 8> connected_controller_icons; + std::array<QWidget*, NUM_PLAYERS> connected_controller_icons; // Labels that represent the player numbers in place of the controller icons. - std::array<QLabel*, 8> player_labels; + std::array<QLabel*, NUM_PLAYERS> player_labels; // LED patterns for currently connected controllers/players. - std::array<std::array<QCheckBox*, 4>, 8> led_patterns_boxes; + std::array<std::array<QCheckBox*, 4>, NUM_PLAYERS> led_patterns_boxes; // Labels representing additional information known as "Explain Text" per player. - std::array<QLabel*, 8> explain_text_labels; + std::array<QLabel*, NUM_PLAYERS> explain_text_labels; // Comboboxes with a list of emulated controllers per player. - std::array<QComboBox*, 8> emulated_controllers; + std::array<QComboBox*, NUM_PLAYERS> emulated_controllers; // Labels representing the number of connected controllers // above the "Connected Controllers" checkboxes. - std::array<QLabel*, 8> connected_controller_labels; + std::array<QLabel*, NUM_PLAYERS> connected_controller_labels; // Checkboxes representing the "Connected Controllers". - std::array<QCheckBox*, 8> connected_controller_checkboxes; + std::array<QCheckBox*, NUM_PLAYERS> connected_controller_checkboxes; }; class QtControllerSelector final : public QObject, public Core::Frontend::ControllerApplet { |