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 <andrii-external@symless.com> Co-authored-by: Serhii Hadzhilov <serhii-external@symless.com>
This commit is contained in:
parent
350e2e247b
commit
431433f78a
8 changed files with 39 additions and 6 deletions
|
|
@ -11,9 +11,10 @@ Bug fixes:
|
||||||
- #6976 Fix windows builds
|
- #6976 Fix windows builds
|
||||||
- #6979 Manual config error in client mode
|
- #6979 Manual config error in client mode
|
||||||
- #6983 Fix that mac client listens on ipv4 only
|
- #6983 Fix that mac client listens on ipv4 only
|
||||||
|
- #6989 Fix client tray language switcher reverts to EN
|
||||||
- #6993 Fix issues with prefences UI
|
- #6993 Fix issues with prefences UI
|
||||||
- #6992 UI issues and use cases
|
- #6992 UI issues and use cases
|
||||||
=======
|
===========
|
||||||
|
|
||||||
Enhancements:
|
Enhancements:
|
||||||
- #6954 Move language selection to advanced section
|
- #6954 Move language selection to advanced section
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,7 @@ const char* AppConfig::m_SynergySettingsName[] = {
|
||||||
"serverHostname",
|
"serverHostname",
|
||||||
"tlsCertPath",
|
"tlsCertPath",
|
||||||
"tlsKeyLength",
|
"tlsKeyLength",
|
||||||
|
"languageSync",
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char* logLevelNames[] =
|
static const char* logLevelNames[] =
|
||||||
|
|
@ -239,6 +240,7 @@ void AppConfig::loadSettings()
|
||||||
m_UseInternalConfig = loadSetting(kUseInternalConfig, false).toBool();
|
m_UseInternalConfig = loadSetting(kUseInternalConfig, false).toBool();
|
||||||
m_ClientGroupChecked = loadSetting(kGroupClientCheck, false).toBool();
|
m_ClientGroupChecked = loadSetting(kGroupClientCheck, false).toBool();
|
||||||
m_ServerHostname = loadSetting(kServerHostname).toString();
|
m_ServerHostname = loadSetting(kServerHostname).toString();
|
||||||
|
m_LanguageSync = loadSetting(kLanguageSync, false).toBool();
|
||||||
|
|
||||||
//only change the serial key if the settings being loaded contains a key
|
//only change the serial key if the settings being loaded contains a key
|
||||||
bool updateSerial = ConfigWriter::make()
|
bool updateSerial = ConfigWriter::make()
|
||||||
|
|
@ -299,6 +301,7 @@ void AppConfig::saveSettings()
|
||||||
setSetting(kUseInternalConfig, m_UseInternalConfig);
|
setSetting(kUseInternalConfig, m_UseInternalConfig);
|
||||||
setSetting(kGroupClientCheck, m_ClientGroupChecked);
|
setSetting(kGroupClientCheck, m_ClientGroupChecked);
|
||||||
setSetting(kServerHostname, m_ServerHostname);
|
setSetting(kServerHostname, m_ServerHostname);
|
||||||
|
setSetting(kLanguageSync, m_LanguageSync);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_unsavedChanges = false;
|
m_unsavedChanges = false;
|
||||||
|
|
@ -448,6 +451,12 @@ void AppConfig::setMinimizeToTray(bool newValue) {
|
||||||
setSettingModified(m_MinimizeToTray, 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; }
|
bool AppConfig::getMinimizeToTray() { return m_MinimizeToTray; }
|
||||||
|
|
||||||
QString AppConfig::settingName(AppConfig::Setting name) {
|
QString AppConfig::settingName(AppConfig::Setting name) {
|
||||||
|
|
|
||||||
|
|
@ -112,6 +112,8 @@ class AppConfig: public QObject, public GUI::Config::ConfigBase
|
||||||
|
|
||||||
void setAutoHide(bool b);
|
void setAutoHide(bool b);
|
||||||
bool getAutoHide();
|
bool getAutoHide();
|
||||||
|
void setLanguageSync(bool b);
|
||||||
|
bool getLanguageSync() const;
|
||||||
#ifndef SYNERGY_ENTERPRISE
|
#ifndef SYNERGY_ENTERPRISE
|
||||||
bool activationHasRun() const;
|
bool activationHasRun() const;
|
||||||
AppConfig& activationHasRun(bool value);
|
AppConfig& activationHasRun(bool value);
|
||||||
|
|
@ -200,6 +202,7 @@ protected:
|
||||||
kServerHostname,
|
kServerHostname,
|
||||||
kTLSCertPath,
|
kTLSCertPath,
|
||||||
kTLSKeyLength,
|
kTLSKeyLength,
|
||||||
|
kLanguageSync
|
||||||
};
|
};
|
||||||
|
|
||||||
void setScreenName(const QString& s);
|
void setScreenName(const QString& s);
|
||||||
|
|
@ -242,6 +245,7 @@ protected:
|
||||||
int m_LastExpiringWarningTime;
|
int m_LastExpiringWarningTime;
|
||||||
bool m_ActivationHasRun;
|
bool m_ActivationHasRun;
|
||||||
bool m_MinimizeToTray;
|
bool m_MinimizeToTray;
|
||||||
|
bool m_LanguageSync = false;
|
||||||
|
|
||||||
bool m_ServerGroupChecked;
|
bool m_ServerGroupChecked;
|
||||||
bool m_UseExternalConfig;
|
bool m_UseExternalConfig;
|
||||||
|
|
|
||||||
|
|
@ -753,6 +753,12 @@ bool MainWindow::clientArgs(QStringList& args, QString& app)
|
||||||
args << "--log" << appConfig().logFilenameCmd();
|
args << "--log" << appConfig().logFilenameCmd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (appConfig().getLanguageSync())
|
||||||
|
{
|
||||||
|
args << "--sync-language";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#if !defined(SYNERGY_ENTERPRISE) && defined(SYNERGY_AUTOCONFIG)
|
#if !defined(SYNERGY_ENTERPRISE) && defined(SYNERGY_AUTOCONFIG)
|
||||||
// check auto config first, if it is disabled or no server detected,
|
// check auto config first, if it is disabled or no server detected,
|
||||||
// use line edit host name if it is not empty
|
// use line edit host name if it is not empty
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ SettingsDialog::SettingsDialog(QWidget* parent, AppConfig& config) :
|
||||||
buttonBox->button(QDialogButtonBox::Save)->setEnabled(false);
|
buttonBox->button(QDialogButtonBox::Save)->setEnabled(false);
|
||||||
enableControls(appConfig().isWritable());
|
enableControls(appConfig().isWritable());
|
||||||
|
|
||||||
|
m_pCheckBoxLanguageSync->setVisible(m_pMainWindow->synergyType() == MainWindow::synergyClient);
|
||||||
const auto& serveConfig = m_pMainWindow->serverConfig();
|
const auto& serveConfig = m_pMainWindow->serverConfig();
|
||||||
m_pLineEditScreenName->setValidator(new validators::ScreenNameValidator(m_pLineEditScreenName, m_pLabelNameError, (&serveConfig.screens())));
|
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_pCheckBoxAutoConfig, SIGNAL(clicked()), this, SLOT(onChange()));
|
||||||
connect(m_pCheckBoxMinimizeToTray, SIGNAL(clicked()), this, SLOT(onChange()));
|
connect(m_pCheckBoxMinimizeToTray, SIGNAL(clicked()), this, SLOT(onChange()));
|
||||||
connect(m_pCheckBoxAutoHide, 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_pLineEditInterface, SIGNAL(textEdited(QString)), this, SLOT(onChange()));
|
||||||
connect(m_pSpinBoxPort, SIGNAL(valueChanged(int)), this, SLOT(onChange()));
|
connect(m_pSpinBoxPort, SIGNAL(valueChanged(int)), this, SLOT(onChange()));
|
||||||
connect(m_pLineEditScreenName, SIGNAL(textEdited(QString)), 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().setLanguage(m_pComboLanguage->itemData(m_pComboLanguage->currentIndex()).toString());
|
||||||
appConfig().setElevateMode(static_cast<ElevateMode>(m_pComboElevate->currentIndex()));
|
appConfig().setElevateMode(static_cast<ElevateMode>(m_pComboElevate->currentIndex()));
|
||||||
appConfig().setAutoHide(m_pCheckBoxAutoHide->isChecked());
|
appConfig().setAutoHide(m_pCheckBoxAutoHide->isChecked());
|
||||||
|
appConfig().setLanguageSync(m_pCheckBoxLanguageSync->isChecked());
|
||||||
appConfig().setAutoConfig(m_pCheckBoxAutoConfig->isChecked());
|
appConfig().setAutoConfig(m_pCheckBoxAutoConfig->isChecked());
|
||||||
appConfig().setMinimizeToTray(m_pCheckBoxMinimizeToTray->isChecked());
|
appConfig().setMinimizeToTray(m_pCheckBoxMinimizeToTray->isChecked());
|
||||||
appConfig().setTLSCertPath(m_pLineEditCertificatePath->text());
|
appConfig().setTLSCertPath(m_pLineEditCertificatePath->text());
|
||||||
|
|
@ -139,6 +142,7 @@ void SettingsDialog::loadFromConfig() {
|
||||||
m_pLineEditLogFilename->setText(appConfig().logFilename());
|
m_pLineEditLogFilename->setText(appConfig().logFilename());
|
||||||
setIndexFromItemData(m_pComboLanguage, appConfig().language());
|
setIndexFromItemData(m_pComboLanguage, appConfig().language());
|
||||||
m_pCheckBoxAutoHide->setChecked(appConfig().getAutoHide());
|
m_pCheckBoxAutoHide->setChecked(appConfig().getAutoHide());
|
||||||
|
m_pCheckBoxLanguageSync->setChecked(appConfig().getLanguageSync());
|
||||||
m_pCheckBoxMinimizeToTray->setChecked(appConfig().getMinimizeToTray());
|
m_pCheckBoxMinimizeToTray->setChecked(appConfig().getMinimizeToTray());
|
||||||
m_pLineEditCertificatePath->setText(appConfig().getTLSCertPath());
|
m_pLineEditCertificatePath->setText(appConfig().getTLSCertPath());
|
||||||
m_pCheckBoxEnableCrypto->setChecked(m_appConfig.getCryptoEnabled());
|
m_pCheckBoxEnableCrypto->setChecked(m_appConfig.getCryptoEnabled());
|
||||||
|
|
@ -326,6 +330,7 @@ bool SettingsDialog::isModified()
|
||||||
|| appConfig().language() != m_pComboLanguage->itemData(m_pComboLanguage->currentIndex()).toString()
|
|| appConfig().language() != m_pComboLanguage->itemData(m_pComboLanguage->currentIndex()).toString()
|
||||||
|| appConfig().elevateMode() != static_cast<ElevateMode>(m_pComboElevate->currentIndex())
|
|| appConfig().elevateMode() != static_cast<ElevateMode>(m_pComboElevate->currentIndex())
|
||||||
|| appConfig().getAutoHide() != m_pCheckBoxAutoHide->isChecked()
|
|| appConfig().getAutoHide() != m_pCheckBoxAutoHide->isChecked()
|
||||||
|
|| appConfig().getLanguageSync() != m_pCheckBoxLanguageSync->isChecked()
|
||||||
|| appConfig().autoConfig() != m_pCheckBoxAutoConfig->isChecked()
|
|| appConfig().autoConfig() != m_pCheckBoxAutoConfig->isChecked()
|
||||||
|| appConfig().getMinimizeToTray() != m_pCheckBoxMinimizeToTray->isChecked()
|
|| appConfig().getMinimizeToTray() != m_pCheckBoxMinimizeToTray->isChecked()
|
||||||
|| appConfig().getTLSCertPath() != m_pLineEditCertificatePath->text()
|
|| appConfig().getTLSCertPath() != m_pLineEditCertificatePath->text()
|
||||||
|
|
@ -344,6 +349,7 @@ void SettingsDialog::enableControls(bool enable) {
|
||||||
m_pComboLanguage->setEnabled(enable);
|
m_pComboLanguage->setEnabled(enable);
|
||||||
m_pComboElevate->setEnabled(enable);
|
m_pComboElevate->setEnabled(enable);
|
||||||
m_pCheckBoxAutoHide->setEnabled(enable);
|
m_pCheckBoxAutoHide->setEnabled(enable);
|
||||||
|
m_pCheckBoxLanguageSync->setEnabled(enable);
|
||||||
m_pCheckBoxAutoConfig->setEnabled(enable);
|
m_pCheckBoxAutoConfig->setEnabled(enable);
|
||||||
m_pCheckBoxMinimizeToTray->setEnabled(enable);
|
m_pCheckBoxMinimizeToTray->setEnabled(enable);
|
||||||
m_pLineEditCertificatePath->setEnabled(enable);
|
m_pLineEditCertificatePath->setEnabled(enable);
|
||||||
|
|
|
||||||
|
|
@ -101,13 +101,16 @@ ArgParser::parseClientArgs(lib::synergy::ClientArgs& args, int argc, const char*
|
||||||
++i;
|
++i;
|
||||||
continue;
|
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
|
// 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
|
// 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
|
// define scroll
|
||||||
args.m_yscroll = atoi(argv[++i]);
|
args.m_yscroll = atoi(argv[++i]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,7 @@ namespace lib {
|
||||||
String m_profileDirectory; /// @brief The profile DIR to use for the application
|
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_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
|
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
|
#if SYSAPI_WIN32
|
||||||
bool m_debugServiceWait = false;
|
bool m_debugServiceWait = false;
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "synergy/App.h"
|
||||||
|
#include "synergy/ArgsBase.h"
|
||||||
#include "synergy/KeyMap.h"
|
#include "synergy/KeyMap.h"
|
||||||
#include "synergy/key_types.h"
|
#include "synergy/key_types.h"
|
||||||
#include "base/Log.h"
|
#include "base/Log.h"
|
||||||
|
|
@ -761,7 +763,8 @@ KeyMap::keysForKeyItem(const KeyItem& keyItem, SInt32& group,
|
||||||
KeyModifierAltGr | KeyModifierNumLock | KeyModifierScrollLock;
|
KeyModifierAltGr | KeyModifierNumLock | KeyModifierScrollLock;
|
||||||
|
|
||||||
// add keystrokes to adjust the group
|
// 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;
|
group = keyItem.m_group;
|
||||||
keystrokes.push_back(Keystroke(group, true, false));
|
keystrokes.push_back(Keystroke(group, true, false));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue