From cad54771eac17789695d5820548af5ef8b78c20e Mon Sep 17 00:00:00 2001 From: fireph <443370+fireph@users.noreply.github.com> Date: Sun, 6 Oct 2024 03:24:57 -0700 Subject: [PATCH] make more generic so translations can be supported in combobox --- src/common/config.cpp | 6 +++--- src/qt_gui/settings_dialog.cpp | 21 ++++++++++++++++++--- src/qt_gui/settings_dialog.ui | 20 -------------------- src/qt_gui/translations/en.ts | 32 +++++++++++++++++++++++++++++++- src/sdl_window.cpp | 4 ++-- 5 files changed, 54 insertions(+), 29 deletions(-) diff --git a/src/common/config.cpp b/src/common/config.cpp index 9169c4c8b..8c1c4f79d 100644 --- a/src/common/config.cpp +++ b/src/common/config.cpp @@ -41,7 +41,7 @@ static std::string logFilter; static std::string logType = "async"; static std::string userName = "shadPS4"; static std::string updateChannel; -static std::string backButtonBehavior = "Touchpad Left"; +static std::string backButtonBehavior = "left"; static bool useSpecialPad = false; static int specialPadClass = 1; static bool isDebugDump = false; @@ -444,7 +444,7 @@ void load(const std::filesystem::path& path) { } isShowSplash = toml::find_or(general, "showSplash", true); isAutoUpdate = toml::find_or(general, "autoUpdate", false); - backButtonBehavior = toml::find_or(general, "backButtonBehavior", "Touchpad Left"); + backButtonBehavior = toml::find_or(general, "backButtonBehavior", "left"); } if (data.contains("Input")) { @@ -602,7 +602,7 @@ void setDefaultValues() { } else { updateChannel = "Nightly"; } - backButtonBehavior = "Touchpad Left"; + backButtonBehavior = "left"; useSpecialPad = false; specialPadClass = 1; isDebugDump = false; diff --git a/src/qt_gui/settings_dialog.cpp b/src/qt_gui/settings_dialog.cpp index 1a8fcaa80..35c2f0390 100644 --- a/src/qt_gui/settings_dialog.cpp +++ b/src/qt_gui/settings_dialog.cpp @@ -98,6 +98,15 @@ SettingsDialog::SettingsDialog(std::span physical_devices, QWidge ui->buttonBox->button(QDialogButtonBox::RestoreDefaults)->setText(tr("Restore Defaults")); ui->buttonBox->button(QDialogButtonBox::Close)->setText(tr("Close")); + ui->backButtonBehaviorComboBox->addItem(tr("Touchpad Left"), "left"); + ui->backButtonBehaviorComboBox->addItem(tr("Touchpad Center"), "center"); + ui->backButtonBehaviorComboBox->addItem(tr("Touchpad Right"), "right"); + ui->backButtonBehaviorComboBox->addItem(tr("None"), "none"); + + QString currentBackButtonBehavior = QString::fromStdString(Config::getBackButtonBehavior()); + int index = ui->backButtonBehaviorComboBox->findData(currentBackButtonBehavior); + ui->backButtonBehaviorComboBox->setCurrentIndex(index != -1 ? index : 0); + connect(ui->tabWidgetSettings, &QTabWidget::currentChanged, this, [this]() { ui->buttonBox->button(QDialogButtonBox::Close)->setFocus(); }); @@ -152,8 +161,12 @@ SettingsDialog::SettingsDialog(std::span physical_devices, QWidge BackgroundMusicPlayer::getInstance().setVolume(val); }); - connect(ui->backButtonBehaviorComboBox, &QComboBox::currentTextChanged, this, [](const QString& text) { - Config::setBackButtonBehavior(text.toStdString()); + connect(ui->backButtonBehaviorComboBox, QOverload::of(&QComboBox::currentIndexChanged), + this, [this](int index) { + if (index >= 0 && index < ui->backButtonBehaviorComboBox->count()) { + QString data = ui->backButtonBehaviorComboBox->itemData(index).toString(); + Config::setBackButtonBehavior(data.toStdString()); + } }); } @@ -264,7 +277,9 @@ void SettingsDialog::LoadValuesFromConfig() { } ui->updateComboBox->setCurrentText(QString::fromStdString(updateChannel)); - ui->backButtonBehaviorComboBox->setCurrentText(QString::fromStdString(Config::getBackButtonBehavior())); + QString backButtonBehavior = QString::fromStdString(Config::getBackButtonBehavior()); + int index = ui->backButtonBehaviorComboBox->findData(backButtonBehavior); + ui->backButtonBehaviorComboBox->setCurrentIndex(index != -1 ? index : 0); } void SettingsDialog::InitializeEmulatorLanguages() { diff --git a/src/qt_gui/settings_dialog.ui b/src/qt_gui/settings_dialog.ui index 01e93bcb9..a6264af6f 100644 --- a/src/qt_gui/settings_dialog.ui +++ b/src/qt_gui/settings_dialog.ui @@ -475,26 +475,6 @@ 28 - - - Touchpad Left - - - - - Touchpad Right - - - - - Touchpad Center - - - - - None - - diff --git a/src/qt_gui/translations/en.ts b/src/qt_gui/translations/en.ts index 09cffc7ce..59523add9 100644 --- a/src/qt_gui/translations/en.ts +++ b/src/qt_gui/translations/en.ts @@ -539,6 +539,16 @@ Volume Volume + + + Controller Settings + Controller Settings + + + + Back Button Behavior + Back Button Behavior + MainWindow @@ -1029,10 +1039,30 @@ Play Title Music:\nIf a game supports it, enable playing special music when selecting the game in the GUI. - + backButtonBehaviorGroupBox Back Button Behavior:\nAllows setting which part of the touchpad the back button will emulate a touch on. + + + Touchpad Left + Touchpad Left + + + + Touchpad Right + Touchpad Right + + + + Touchpad Center + Touchpad Center + + + + None + None + graphicsAdapterGroupBox diff --git a/src/sdl_window.cpp b/src/sdl_window.cpp index 6e3dc9d04..d4e6d1206 100644 --- a/src/sdl_window.cpp +++ b/src/sdl_window.cpp @@ -332,8 +332,8 @@ void WindowSDL::onGamepadEvent(const SDL_Event* event) { if (button != 0) { if (event->gbutton.button == SDL_GAMEPAD_BUTTON_BACK) { std::string backButtonBehavior = Config::getBackButtonBehavior(); - if (backButtonBehavior != "None") { - float x = backButtonBehavior == "Touchpad Left" ? 0.25f : (backButtonBehavior == "Touchpad Right" ? 0.75f : 0.5f); + if (backButtonBehavior != "none") { + float x = backButtonBehavior == "left" ? 0.25f : (backButtonBehavior == "right" ? 0.75f : 0.5f); // trigger a touchpad event so that the touchpad emulation for back button works controller->SetTouchpadState(0, true, x, 0.5f); controller->CheckButton(0, button, event->type == SDL_EVENT_GAMEPAD_BUTTON_DOWN);