mirror of
https://git.suyu.dev/suyu/suyu
synced 2024-11-01 12:57:52 +00:00
applets/controller: Load configuration prior to setting up connections
This avoids unintentionally changing the states of elements while loading them in.
This commit is contained in:
parent
aeec0f8a38
commit
72b2f5d34f
2 changed files with 29 additions and 23 deletions
|
@ -171,7 +171,18 @@ QtControllerSelectorDialog::QtControllerSelectorDialog(
|
|||
ui->checkboxPlayer7Connected, ui->checkboxPlayer8Connected,
|
||||
};
|
||||
|
||||
// Setup/load everything prior to setting up connections.
|
||||
// This avoids unintentionally changing the states of elements while loading them in.
|
||||
SetSupportedControllers();
|
||||
DisableUnsupportedPlayers();
|
||||
LoadConfiguration();
|
||||
|
||||
for (std::size_t i = 0; i < NUM_PLAYERS; ++i) {
|
||||
SetExplainText(i);
|
||||
UpdateControllerIcon(i);
|
||||
UpdateLEDPattern(i);
|
||||
UpdateBorderColor(i);
|
||||
|
||||
connect(player_groupboxes[i], &QGroupBox::toggled, [this, i](bool checked) {
|
||||
if (checked) {
|
||||
for (std::size_t index = 0; index <= i; ++index) {
|
||||
|
@ -208,8 +219,6 @@ QtControllerSelectorDialog::QtControllerSelectorDialog(
|
|||
Settings::ControllerType::Handheld);
|
||||
});
|
||||
}
|
||||
|
||||
SetExplainText(i);
|
||||
}
|
||||
|
||||
connect(ui->inputConfigButton, &QPushButton::clicked, this,
|
||||
|
@ -218,10 +227,6 @@ QtControllerSelectorDialog::QtControllerSelectorDialog(
|
|||
connect(ui->buttonBox, &QDialogButtonBox::accepted, this,
|
||||
&QtControllerSelectorDialog::ApplyConfiguration);
|
||||
|
||||
SetSupportedControllers();
|
||||
DisableUnsupportedPlayers();
|
||||
LoadConfiguration();
|
||||
|
||||
// If keep_controllers_connected is false, forcefully disconnect all controllers
|
||||
if (!parameters.keep_controllers_connected) {
|
||||
for (auto player : player_groupboxes) {
|
||||
|
@ -249,6 +254,21 @@ void QtControllerSelectorDialog::ApplyConfiguration() {
|
|||
Settings::values.vibration_enabled = ui->vibrationGroup->isChecked();
|
||||
}
|
||||
|
||||
void QtControllerSelectorDialog::LoadConfiguration() {
|
||||
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);
|
||||
connected_controller_checkboxes[index]->setChecked(connected);
|
||||
emulated_controllers[index]->setCurrentIndex(
|
||||
GetIndexFromControllerType(Settings::values.players[index].controller_type));
|
||||
}
|
||||
|
||||
UpdateDockedState(Settings::values.players[8].connected);
|
||||
|
||||
ui->vibrationGroup->setChecked(Settings::values.vibration_enabled);
|
||||
}
|
||||
|
||||
void QtControllerSelectorDialog::CallConfigureInputDialog() {
|
||||
const auto max_supported_players = parameters.enable_single_mode ? 1 : parameters.max_players;
|
||||
|
||||
|
@ -557,20 +577,6 @@ void QtControllerSelectorDialog::DisableUnsupportedPlayers() {
|
|||
}
|
||||
}
|
||||
|
||||
void QtControllerSelectorDialog::LoadConfiguration() {
|
||||
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);
|
||||
emulated_controllers[index]->setCurrentIndex(
|
||||
GetIndexFromControllerType(Settings::values.players[index].controller_type));
|
||||
}
|
||||
|
||||
UpdateDockedState(Settings::values.players[8].connected);
|
||||
|
||||
ui->vibrationGroup->setChecked(Settings::values.vibration_enabled);
|
||||
}
|
||||
|
||||
QtControllerSelector::QtControllerSelector(GMainWindow& parent) {
|
||||
connect(this, &QtControllerSelector::MainWindowReconfigureControllers, &parent,
|
||||
&GMainWindow::ControllerSelectorReconfigureControllers, Qt::QueuedConnection);
|
||||
|
|
|
@ -37,6 +37,9 @@ private:
|
|||
// Applies the current configuration.
|
||||
void ApplyConfiguration();
|
||||
|
||||
// Loads the current input configuration into the frontend applet.
|
||||
void LoadConfiguration();
|
||||
|
||||
// Initializes the "Configure Input" Dialog.
|
||||
void CallConfigureInputDialog();
|
||||
|
||||
|
@ -68,9 +71,6 @@ private:
|
|||
// Disables and disconnects unsupported players based on the given parameters.
|
||||
void DisableUnsupportedPlayers();
|
||||
|
||||
// Loads the current input configuration into the frontend applet.
|
||||
void LoadConfiguration();
|
||||
|
||||
std::unique_ptr<Ui::QtControllerSelectorDialog> ui;
|
||||
|
||||
// Parameters sent in from the backend HLE applet.
|
||||
|
|
Loading…
Reference in a new issue