configure_input: Update the input profiles for other player tabs

This commit is contained in:
Morph 2020-10-29 12:15:35 -04:00
parent 97b2220a82
commit 6f5b942897
4 changed files with 38 additions and 11 deletions

View file

@ -124,8 +124,10 @@ void ConfigureInput::Initialize(InputCommon::InputSubsystem* input_subsystem,
} }
} }
}); });
connect(player_controllers[i], &ConfigureInputPlayer::RefreshInputDevices, connect(player_controllers[i], &ConfigureInputPlayer::RefreshInputDevices, this,
[this] { UpdateAllInputDevices(); }); &ConfigureInput::UpdateAllInputDevices);
connect(player_controllers[i], &ConfigureInputPlayer::RefreshInputProfiles, this,
&ConfigureInput::UpdateAllInputProfiles, Qt::QueuedConnection);
connect(player_connected[i], &QCheckBox::stateChanged, [this, i](int state) { connect(player_connected[i], &QCheckBox::stateChanged, [this, i](int state) {
player_controllers[i]->ConnectPlayer(state == Qt::Checked); player_controllers[i]->ConnectPlayer(state == Qt::Checked);
}); });
@ -259,3 +261,13 @@ void ConfigureInput::UpdateAllInputDevices() {
player->UpdateInputDeviceCombobox(); player->UpdateInputDeviceCombobox();
} }
} }
void ConfigureInput::UpdateAllInputProfiles(std::size_t player_index) {
for (std::size_t i = 0; i < player_controllers.size(); ++i) {
if (i == player_index) {
continue;
}
player_controllers[i]->UpdateInputProfiles();
}
}

View file

@ -52,6 +52,7 @@ private:
void UpdateDockedState(bool is_handheld); void UpdateDockedState(bool is_handheld);
void UpdateAllInputDevices(); void UpdateAllInputDevices();
void UpdateAllInputProfiles(std::size_t player_index);
/// Load configuration settings. /// Load configuration settings.
void LoadConfiguration(); void LoadConfiguration();

View file

@ -541,7 +541,7 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i
} }
}); });
RefreshInputProfiles(); UpdateInputProfiles();
connect(ui->buttonProfilesNew, &QPushButton::clicked, this, connect(ui->buttonProfilesNew, &QPushButton::clicked, this,
&ConfigureInputPlayer::CreateProfile); &ConfigureInputPlayer::CreateProfile);
@ -1132,10 +1132,13 @@ void ConfigureInputPlayer::CreateProfile() {
if (!profiles->CreateProfile(profile_name.toStdString(), player_index)) { if (!profiles->CreateProfile(profile_name.toStdString(), player_index)) {
QMessageBox::critical(this, tr("Create Input Profile"), QMessageBox::critical(this, tr("Create Input Profile"),
tr("Failed to create the input profile \"%1\"").arg(profile_name)); tr("Failed to create the input profile \"%1\"").arg(profile_name));
RefreshInputProfiles(); UpdateInputProfiles();
emit RefreshInputProfiles(player_index);
return; return;
} }
emit RefreshInputProfiles(player_index);
ui->comboProfiles->addItem(profile_name); ui->comboProfiles->addItem(profile_name);
ui->comboProfiles->setCurrentIndex(ui->comboProfiles->count() - 1); ui->comboProfiles->setCurrentIndex(ui->comboProfiles->count() - 1);
} }
@ -1150,10 +1153,13 @@ void ConfigureInputPlayer::DeleteProfile() {
if (!profiles->DeleteProfile(profile_name.toStdString())) { if (!profiles->DeleteProfile(profile_name.toStdString())) {
QMessageBox::critical(this, tr("Delete Input Profile"), QMessageBox::critical(this, tr("Delete Input Profile"),
tr("Failed to delete the input profile \"%1\"").arg(profile_name)); tr("Failed to delete the input profile \"%1\"").arg(profile_name));
RefreshInputProfiles(); UpdateInputProfiles();
emit RefreshInputProfiles(player_index);
return; return;
} }
emit RefreshInputProfiles(player_index);
ui->comboProfiles->removeItem(ui->comboProfiles->currentIndex()); ui->comboProfiles->removeItem(ui->comboProfiles->currentIndex());
ui->comboProfiles->setCurrentIndex(-1); ui->comboProfiles->setCurrentIndex(-1);
} }
@ -1170,7 +1176,8 @@ void ConfigureInputPlayer::LoadProfile() {
if (!profiles->LoadProfile(profile_name.toStdString(), player_index)) { if (!profiles->LoadProfile(profile_name.toStdString(), player_index)) {
QMessageBox::critical(this, tr("Load Input Profile"), QMessageBox::critical(this, tr("Load Input Profile"),
tr("Failed to load the input profile \"%1\"").arg(profile_name)); tr("Failed to load the input profile \"%1\"").arg(profile_name));
RefreshInputProfiles(); UpdateInputProfiles();
emit RefreshInputProfiles(player_index);
return; return;
} }
@ -1189,12 +1196,13 @@ void ConfigureInputPlayer::SaveProfile() {
if (!profiles->SaveProfile(profile_name.toStdString(), player_index)) { if (!profiles->SaveProfile(profile_name.toStdString(), player_index)) {
QMessageBox::critical(this, tr("Save Input Profile"), QMessageBox::critical(this, tr("Save Input Profile"),
tr("Failed to save the input profile \"%1\"").arg(profile_name)); tr("Failed to save the input profile \"%1\"").arg(profile_name));
RefreshInputProfiles(); UpdateInputProfiles();
emit RefreshInputProfiles(player_index);
return; return;
} }
} }
void ConfigureInputPlayer::RefreshInputProfiles() { void ConfigureInputPlayer::UpdateInputProfiles() {
ui->comboProfiles->clear(); ui->comboProfiles->clear();
for (const auto& profile_name : profiles->GetInputProfileNames()) { for (const auto& profile_name : profiles->GetInputProfileNames()) {

View file

@ -59,6 +59,9 @@ public:
/// Update the input devices combobox. /// Update the input devices combobox.
void UpdateInputDeviceCombobox(); void UpdateInputDeviceCombobox();
/// Updates the list of controller profiles.
void UpdateInputProfiles();
/// Restore all buttons to their default values. /// Restore all buttons to their default values.
void RestoreDefaults(); void RestoreDefaults();
@ -72,6 +75,12 @@ signals:
void HandheldStateChanged(bool is_handheld); void HandheldStateChanged(bool is_handheld);
/// Emitted when the input devices combobox is being refreshed. /// Emitted when the input devices combobox is being refreshed.
void RefreshInputDevices(); void RefreshInputDevices();
/**
* Emitted when the input profiles combobox is being refreshed.
* The player_index represents the current player's index, and the profile combobox
* will not be updated for this index as they are already updated by other mechanisms.
*/
void RefreshInputProfiles(std::size_t player_index);
protected: protected:
void showEvent(QShowEvent* event) override; void showEvent(QShowEvent* event) override;
@ -130,9 +139,6 @@ private:
/// Saves the current controller configuration into a selected controller profile. /// Saves the current controller configuration into a selected controller profile.
void SaveProfile(); void SaveProfile();
/// Refreshes the list of controller profiles.
void RefreshInputProfiles();
std::unique_ptr<Ui::ConfigureInputPlayer> ui; std::unique_ptr<Ui::ConfigureInputPlayer> ui;
std::size_t player_index; std::size_t player_index;