mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-26 13:26:30 -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,
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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()) {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue