mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-22 10:51:50 -05:00
configure_input: Update the input profiles for other player tabs
This commit is contained in:
parent
97b2220a82
commit
6f5b942897
4 changed files with 38 additions and 11 deletions
|
@ -124,8 +124,10 @@ void ConfigureInput::Initialize(InputCommon::InputSubsystem* input_subsystem,
|
|||
}
|
||||
}
|
||||
});
|
||||
connect(player_controllers[i], &ConfigureInputPlayer::RefreshInputDevices,
|
||||
[this] { UpdateAllInputDevices(); });
|
||||
connect(player_controllers[i], &ConfigureInputPlayer::RefreshInputDevices, this,
|
||||
&ConfigureInput::UpdateAllInputDevices);
|
||||
connect(player_controllers[i], &ConfigureInputPlayer::RefreshInputProfiles, this,
|
||||
&ConfigureInput::UpdateAllInputProfiles, Qt::QueuedConnection);
|
||||
connect(player_connected[i], &QCheckBox::stateChanged, [this, i](int state) {
|
||||
player_controllers[i]->ConnectPlayer(state == Qt::Checked);
|
||||
});
|
||||
|
@ -259,3 +261,13 @@ void ConfigureInput::UpdateAllInputDevices() {
|
|||
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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,6 +52,7 @@ private:
|
|||
|
||||
void UpdateDockedState(bool is_handheld);
|
||||
void UpdateAllInputDevices();
|
||||
void UpdateAllInputProfiles(std::size_t player_index);
|
||||
|
||||
/// Load configuration settings.
|
||||
void LoadConfiguration();
|
||||
|
|
|
@ -541,7 +541,7 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i
|
|||
}
|
||||
});
|
||||
|
||||
RefreshInputProfiles();
|
||||
UpdateInputProfiles();
|
||||
|
||||
connect(ui->buttonProfilesNew, &QPushButton::clicked, this,
|
||||
&ConfigureInputPlayer::CreateProfile);
|
||||
|
@ -1132,10 +1132,13 @@ void ConfigureInputPlayer::CreateProfile() {
|
|||
if (!profiles->CreateProfile(profile_name.toStdString(), player_index)) {
|
||||
QMessageBox::critical(this, tr("Create Input Profile"),
|
||||
tr("Failed to create the input profile \"%1\"").arg(profile_name));
|
||||
RefreshInputProfiles();
|
||||
UpdateInputProfiles();
|
||||
emit RefreshInputProfiles(player_index);
|
||||
return;
|
||||
}
|
||||
|
||||
emit RefreshInputProfiles(player_index);
|
||||
|
||||
ui->comboProfiles->addItem(profile_name);
|
||||
ui->comboProfiles->setCurrentIndex(ui->comboProfiles->count() - 1);
|
||||
}
|
||||
|
@ -1150,10 +1153,13 @@ void ConfigureInputPlayer::DeleteProfile() {
|
|||
if (!profiles->DeleteProfile(profile_name.toStdString())) {
|
||||
QMessageBox::critical(this, tr("Delete Input Profile"),
|
||||
tr("Failed to delete the input profile \"%1\"").arg(profile_name));
|
||||
RefreshInputProfiles();
|
||||
UpdateInputProfiles();
|
||||
emit RefreshInputProfiles(player_index);
|
||||
return;
|
||||
}
|
||||
|
||||
emit RefreshInputProfiles(player_index);
|
||||
|
||||
ui->comboProfiles->removeItem(ui->comboProfiles->currentIndex());
|
||||
ui->comboProfiles->setCurrentIndex(-1);
|
||||
}
|
||||
|
@ -1170,7 +1176,8 @@ void ConfigureInputPlayer::LoadProfile() {
|
|||
if (!profiles->LoadProfile(profile_name.toStdString(), player_index)) {
|
||||
QMessageBox::critical(this, tr("Load Input Profile"),
|
||||
tr("Failed to load the input profile \"%1\"").arg(profile_name));
|
||||
RefreshInputProfiles();
|
||||
UpdateInputProfiles();
|
||||
emit RefreshInputProfiles(player_index);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1189,12 +1196,13 @@ void ConfigureInputPlayer::SaveProfile() {
|
|||
if (!profiles->SaveProfile(profile_name.toStdString(), player_index)) {
|
||||
QMessageBox::critical(this, tr("Save Input Profile"),
|
||||
tr("Failed to save the input profile \"%1\"").arg(profile_name));
|
||||
RefreshInputProfiles();
|
||||
UpdateInputProfiles();
|
||||
emit RefreshInputProfiles(player_index);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void ConfigureInputPlayer::RefreshInputProfiles() {
|
||||
void ConfigureInputPlayer::UpdateInputProfiles() {
|
||||
ui->comboProfiles->clear();
|
||||
|
||||
for (const auto& profile_name : profiles->GetInputProfileNames()) {
|
||||
|
|
|
@ -59,6 +59,9 @@ public:
|
|||
/// Update the input devices combobox.
|
||||
void UpdateInputDeviceCombobox();
|
||||
|
||||
/// Updates the list of controller profiles.
|
||||
void UpdateInputProfiles();
|
||||
|
||||
/// Restore all buttons to their default values.
|
||||
void RestoreDefaults();
|
||||
|
||||
|
@ -72,6 +75,12 @@ signals:
|
|||
void HandheldStateChanged(bool is_handheld);
|
||||
/// Emitted when the input devices combobox is being refreshed.
|
||||
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:
|
||||
void showEvent(QShowEvent* event) override;
|
||||
|
@ -130,9 +139,6 @@ private:
|
|||
/// Saves the current controller configuration into a selected controller profile.
|
||||
void SaveProfile();
|
||||
|
||||
/// Refreshes the list of controller profiles.
|
||||
void RefreshInputProfiles();
|
||||
|
||||
std::unique_ptr<Ui::ConfigureInputPlayer> ui;
|
||||
|
||||
std::size_t player_index;
|
||||
|
|
Loading…
Reference in a new issue