From 431433f78a22cdab3f4919770afa6d7c103d1cf8 Mon Sep 17 00:00:00 2001 From: Andrey Batyiev Date: Thu, 13 May 2021 09:30:24 +0300 Subject: [PATCH] SYNERGY-907 Client tray language switcher reverts to EN (#6989) * SYNERGY-907 Client tray language switcher reverts to EN *Dummy commit to update test coverage statistic * SYNERGY-907 Client tray language switcher reverts to EN *Update changelog * SYNERGY-907 Client tray language switcher reverts to EN * Test code to generate code coverage * SYNERGY-907 Client tray language switcher reverts to EN *Add first test for Windows hooks * SYNERGY-907 Client tray language switcher reverts to EN *Add parameter for language sync in client app * SYNERGY-907 Client tray language switcher reverts to EN *Remove debug code * SYNERGY-907 Client tray language switcher reverts to EN *Add sync language support in gui * SYNERGY-907 Client tray language switcher reverts to EN *Fix code smells * SYNERGY-907 Client tray language switcher reverts to EN *Add language sync checkbox to UI * SYNERGY-907 Client tray language switcher reverts to EN *Fix code smells * SYNERGY-907 Client tray language switcher reverts to EN *Change language sync to disable as default *Bug fix * SYNERGY-907 Client tray language switcher reverts to EN *Hide language sync in GUI for server Co-authored-by: Andrii Batyiev Co-authored-by: Serhii Hadzhilov --- ChangeLog | 3 ++- src/gui/src/AppConfig.cpp | 9 +++++++++ src/gui/src/AppConfig.h | 4 ++++ src/gui/src/MainWindow.cpp | 6 ++++++ src/gui/src/SettingsDialog.cpp | 6 ++++++ src/lib/synergy/ArgParser.cpp | 9 ++++++--- src/lib/synergy/ArgsBase.h | 3 ++- src/lib/synergy/KeyMap.cpp | 5 ++++- 8 files changed, 39 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6258404fb..67cfd0cdd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -11,9 +11,10 @@ Bug fixes: - #6976 Fix windows builds - #6979 Manual config error in client mode - #6983 Fix that mac client listens on ipv4 only +- #6989 Fix client tray language switcher reverts to EN - #6993 Fix issues with prefences UI - #6992 UI issues and use cases -======= +=========== Enhancements: - #6954 Move language selection to advanced section diff --git a/src/gui/src/AppConfig.cpp b/src/gui/src/AppConfig.cpp index 61eecda17..f5404bbcc 100644 --- a/src/gui/src/AppConfig.cpp +++ b/src/gui/src/AppConfig.cpp @@ -77,6 +77,7 @@ const char* AppConfig::m_SynergySettingsName[] = { "serverHostname", "tlsCertPath", "tlsKeyLength", + "languageSync", }; static const char* logLevelNames[] = @@ -239,6 +240,7 @@ void AppConfig::loadSettings() m_UseInternalConfig = loadSetting(kUseInternalConfig, false).toBool(); m_ClientGroupChecked = loadSetting(kGroupClientCheck, false).toBool(); m_ServerHostname = loadSetting(kServerHostname).toString(); + m_LanguageSync = loadSetting(kLanguageSync, false).toBool(); //only change the serial key if the settings being loaded contains a key bool updateSerial = ConfigWriter::make() @@ -299,6 +301,7 @@ void AppConfig::saveSettings() setSetting(kUseInternalConfig, m_UseInternalConfig); setSetting(kGroupClientCheck, m_ClientGroupChecked); setSetting(kServerHostname, m_ServerHostname); + setSetting(kLanguageSync, m_LanguageSync); } m_unsavedChanges = false; @@ -448,6 +451,12 @@ void AppConfig::setMinimizeToTray(bool newValue) { setSettingModified(m_MinimizeToTray, newValue); } +bool AppConfig::getLanguageSync() const { return m_LanguageSync; } + +void AppConfig::setLanguageSync(bool newValue) { + setSettingModified(m_LanguageSync, newValue); +} + bool AppConfig::getMinimizeToTray() { return m_MinimizeToTray; } QString AppConfig::settingName(AppConfig::Setting name) { diff --git a/src/gui/src/AppConfig.h b/src/gui/src/AppConfig.h index 8bee519e0..6fdcd2320 100644 --- a/src/gui/src/AppConfig.h +++ b/src/gui/src/AppConfig.h @@ -112,6 +112,8 @@ class AppConfig: public QObject, public GUI::Config::ConfigBase void setAutoHide(bool b); bool getAutoHide(); + void setLanguageSync(bool b); + bool getLanguageSync() const; #ifndef SYNERGY_ENTERPRISE bool activationHasRun() const; AppConfig& activationHasRun(bool value); @@ -200,6 +202,7 @@ protected: kServerHostname, kTLSCertPath, kTLSKeyLength, + kLanguageSync }; void setScreenName(const QString& s); @@ -242,6 +245,7 @@ protected: int m_LastExpiringWarningTime; bool m_ActivationHasRun; bool m_MinimizeToTray; + bool m_LanguageSync = false; bool m_ServerGroupChecked; bool m_UseExternalConfig; diff --git a/src/gui/src/MainWindow.cpp b/src/gui/src/MainWindow.cpp index f1d5a1dcb..4741a87b7 100644 --- a/src/gui/src/MainWindow.cpp +++ b/src/gui/src/MainWindow.cpp @@ -753,6 +753,12 @@ bool MainWindow::clientArgs(QStringList& args, QString& app) args << "--log" << appConfig().logFilenameCmd(); } + if (appConfig().getLanguageSync()) + { + args << "--sync-language"; + } + + #if !defined(SYNERGY_ENTERPRISE) && defined(SYNERGY_AUTOCONFIG) // check auto config first, if it is disabled or no server detected, // use line edit host name if it is not empty diff --git a/src/gui/src/SettingsDialog.cpp b/src/gui/src/SettingsDialog.cpp index 3be514636..0c5429798 100644 --- a/src/gui/src/SettingsDialog.cpp +++ b/src/gui/src/SettingsDialog.cpp @@ -52,6 +52,7 @@ SettingsDialog::SettingsDialog(QWidget* parent, AppConfig& config) : buttonBox->button(QDialogButtonBox::Save)->setEnabled(false); enableControls(appConfig().isWritable()); + m_pCheckBoxLanguageSync->setVisible(m_pMainWindow->synergyType() == MainWindow::synergyClient); const auto& serveConfig = m_pMainWindow->serverConfig(); m_pLineEditScreenName->setValidator(new validators::ScreenNameValidator(m_pLineEditScreenName, m_pLabelNameError, (&serveConfig.screens()))); @@ -61,6 +62,7 @@ SettingsDialog::SettingsDialog(QWidget* parent, AppConfig& config) : connect(m_pCheckBoxAutoConfig, SIGNAL(clicked()), this, SLOT(onChange())); connect(m_pCheckBoxMinimizeToTray, SIGNAL(clicked()), this, SLOT(onChange())); connect(m_pCheckBoxAutoHide, SIGNAL(clicked()), this, SLOT(onChange())); + connect(m_pCheckBoxLanguageSync, SIGNAL(clicked()), this, SLOT(onChange())); connect(m_pLineEditInterface, SIGNAL(textEdited(QString)), this, SLOT(onChange())); connect(m_pSpinBoxPort, SIGNAL(valueChanged(int)), this, SLOT(onChange())); connect(m_pLineEditScreenName, SIGNAL(textEdited(QString)), this, SLOT(onChange())); @@ -81,6 +83,7 @@ void SettingsDialog::accept() appConfig().setLanguage(m_pComboLanguage->itemData(m_pComboLanguage->currentIndex()).toString()); appConfig().setElevateMode(static_cast(m_pComboElevate->currentIndex())); appConfig().setAutoHide(m_pCheckBoxAutoHide->isChecked()); + appConfig().setLanguageSync(m_pCheckBoxLanguageSync->isChecked()); appConfig().setAutoConfig(m_pCheckBoxAutoConfig->isChecked()); appConfig().setMinimizeToTray(m_pCheckBoxMinimizeToTray->isChecked()); appConfig().setTLSCertPath(m_pLineEditCertificatePath->text()); @@ -139,6 +142,7 @@ void SettingsDialog::loadFromConfig() { m_pLineEditLogFilename->setText(appConfig().logFilename()); setIndexFromItemData(m_pComboLanguage, appConfig().language()); m_pCheckBoxAutoHide->setChecked(appConfig().getAutoHide()); + m_pCheckBoxLanguageSync->setChecked(appConfig().getLanguageSync()); m_pCheckBoxMinimizeToTray->setChecked(appConfig().getMinimizeToTray()); m_pLineEditCertificatePath->setText(appConfig().getTLSCertPath()); m_pCheckBoxEnableCrypto->setChecked(m_appConfig.getCryptoEnabled()); @@ -326,6 +330,7 @@ bool SettingsDialog::isModified() || appConfig().language() != m_pComboLanguage->itemData(m_pComboLanguage->currentIndex()).toString() || appConfig().elevateMode() != static_cast(m_pComboElevate->currentIndex()) || appConfig().getAutoHide() != m_pCheckBoxAutoHide->isChecked() + || appConfig().getLanguageSync() != m_pCheckBoxLanguageSync->isChecked() || appConfig().autoConfig() != m_pCheckBoxAutoConfig->isChecked() || appConfig().getMinimizeToTray() != m_pCheckBoxMinimizeToTray->isChecked() || appConfig().getTLSCertPath() != m_pLineEditCertificatePath->text() @@ -344,6 +349,7 @@ void SettingsDialog::enableControls(bool enable) { m_pComboLanguage->setEnabled(enable); m_pComboElevate->setEnabled(enable); m_pCheckBoxAutoHide->setEnabled(enable); + m_pCheckBoxLanguageSync->setEnabled(enable); m_pCheckBoxAutoConfig->setEnabled(enable); m_pCheckBoxMinimizeToTray->setEnabled(enable); m_pLineEditCertificatePath->setEnabled(enable); diff --git a/src/lib/synergy/ArgParser.cpp b/src/lib/synergy/ArgParser.cpp index 2a1814005..0da591325 100644 --- a/src/lib/synergy/ArgParser.cpp +++ b/src/lib/synergy/ArgParser.cpp @@ -101,13 +101,16 @@ ArgParser::parseClientArgs(lib::synergy::ClientArgs& args, int argc, const char* ++i; continue; } - else if (isArg(i, argc, argv, NULL, "--camp")) { + else if (isArg(i, argc, argv, nullptr, "--sync-language")) { + argsBase().m_enableLangSync = true; + } + else if (isArg(i, argc, argv, nullptr, "--camp")) { // ignore -- included for backwards compatibility } - else if (isArg(i, argc, argv, NULL, "--no-camp")) { + else if (isArg(i, argc, argv, nullptr, "--no-camp")) { // ignore -- included for backwards compatibility } - else if (isArg(i, argc, argv, NULL, "--yscroll", 1)) { + else if (isArg(i, argc, argv, nullptr, "--yscroll", 1)) { // define scroll args.m_yscroll = atoi(argv[++i]); } diff --git a/src/lib/synergy/ArgsBase.h b/src/lib/synergy/ArgsBase.h index d6e98d20d..c03fb241e 100644 --- a/src/lib/synergy/ArgsBase.h +++ b/src/lib/synergy/ArgsBase.h @@ -57,6 +57,7 @@ namespace lib { String m_profileDirectory; /// @brief The profile DIR to use for the application String m_pluginDirectory; /// @brief //TODO Plugins? Get set in ARCH but doesn't seem to get used String m_tlsCertFile; /// @brief Contains the location of the TLS certificate file + bool m_enableLangSync = false; /// @brief Should keyboard input be in same language as on server #if SYSAPI_WIN32 bool m_debugServiceWait = false; @@ -76,4 +77,4 @@ namespace lib { } } -#endif //SYNERGY_CORE_ARGSBASE_H \ No newline at end of file +#endif //SYNERGY_CORE_ARGSBASE_H diff --git a/src/lib/synergy/KeyMap.cpp b/src/lib/synergy/KeyMap.cpp index dda91fbd0..6950a160f 100644 --- a/src/lib/synergy/KeyMap.cpp +++ b/src/lib/synergy/KeyMap.cpp @@ -16,6 +16,8 @@ * along with this program. If not, see . */ +#include "synergy/App.h" +#include "synergy/ArgsBase.h" #include "synergy/KeyMap.h" #include "synergy/key_types.h" #include "base/Log.h" @@ -761,7 +763,8 @@ KeyMap::keysForKeyItem(const KeyItem& keyItem, SInt32& group, KeyModifierAltGr | KeyModifierNumLock | KeyModifierScrollLock; // add keystrokes to adjust the group - if (group != keyItem.m_group) { + if (App::instance().argsBase().m_enableLangSync && + group != keyItem.m_group) { group = keyItem.m_group; keystrokes.push_back(Keystroke(group, true, false)); }