From 3a3ccb83f7ffa9a4e419e34eeb57cffff01aae50 Mon Sep 17 00:00:00 2001 From: Sprite Date: Fri, 4 Feb 2022 02:00:34 +0800 Subject: [PATCH] Fix the first click of "..." item in the language combo box --- Source/Gui/SettingsWindow.cpp | 25 +++++++++++-------------- Source/Gui/SettingsWindow.h | 4 ++-- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/Source/Gui/SettingsWindow.cpp b/Source/Gui/SettingsWindow.cpp index 983963b..5dc27ff 100644 --- a/Source/Gui/SettingsWindow.cpp +++ b/Source/Gui/SettingsWindow.cpp @@ -96,22 +96,16 @@ SettingsWindow::SettingsWindow(QWidget *parent) : QDialog{parent} } _ui.cbLanguages->addItem("..."); + Update(Core::Settings::GetCurrent(), false); + connect( _ui.buttonBox->button(QDialogButtonBox::RestoreDefaults), &QPushButton::clicked, this, &SettingsWindow::RestoreDefaults); connect( _ui.cbLanguages, qOverload(&QComboBox::currentIndexChanged), this, [this](int index) { - static auto lastIndex = _ui.cbLanguages->currentIndex(); - bool isMore = _ui.cbLanguages->count() == index + 1; - if (!isMore) { - lastIndex = _ui.cbLanguages->currentIndex(); - } if (_trigger) { - On_cbLanguages_currentIndexChanged(index, isMore); - } - if (isMore) { - _ui.cbLanguages->setCurrentIndex(lastIndex); + On_cbLanguages_currentIndexChanged(index); } }); @@ -175,8 +169,6 @@ SettingsWindow::SettingsWindow(QWidget *parent) : QDialog{parent} On_pbOpenLogsDirectory_clicked(); } }); - - Update(Core::Settings::GetCurrent(), false); } int SettingsWindow::GetTabCount() const @@ -258,7 +250,9 @@ void SettingsWindow::Update(const Core::Settings::Fields &fields, bool trigger) _trigger = trigger; - _ui.cbLanguages->setCurrentIndex(ApdApp->GetCurrentLoadedLocaleIndex()); + auto currentLangIndex = ApdApp->GetCurrentLoadedLocaleIndex(); + _lastLanguageIndex = currentLangIndex; + _ui.cbLanguages->setCurrentIndex(currentLangIndex); _ui.cbAutoRun->setChecked(fields.auto_run); @@ -287,15 +281,18 @@ void SettingsWindow::showEvent(QShowEvent *event) Update(Core::Settings::GetCurrent(), false); } -void SettingsWindow::On_cbLanguages_currentIndexChanged(int index, bool isMore) +void SettingsWindow::On_cbLanguages_currentIndexChanged(int index) { - if (!isMore) { + if (_ui.cbLanguages->count() != index + 1) { + _lastLanguageIndex = index; + const auto &availableLocales = ApdApp->AvailableLocales(); const auto &locale = availableLocales.at(index); Core::Settings::ModifiableAccess()->language_locale = locale.name(); } else { + _ui.cbLanguages->setCurrentIndex(_lastLanguageIndex); // clang-format off QDesktopServices::openUrl(QUrl{ "https://github.com/SpriteOvO/AirPodsDesktop/blob/main/CONTRIBUTING.md#-translation-guide" diff --git a/Source/Gui/SettingsWindow.h b/Source/Gui/SettingsWindow.h index 72d10d8..4945d4e 100644 --- a/Source/Gui/SettingsWindow.h +++ b/Source/Gui/SettingsWindow.h @@ -43,8 +43,8 @@ class SettingsWindow : public QDialog private: Ui::SettingsWindow _ui; - bool _trigger{true}; + int _lastLanguageIndex{0}; void InitCreditsText(); void RestoreDefaults(); @@ -53,7 +53,7 @@ class SettingsWindow : public QDialog void showEvent(QShowEvent *event) override; // General - void On_cbLanguages_currentIndexChanged(int index, bool isMore); + void On_cbLanguages_currentIndexChanged(int index); void On_cbAutoRun_toggled(bool checked); void On_pbUnbind_clicked();