#6538 started adding modified settings check to prevent saving changes multiple times
This commit is contained in:
parent
2bff3807f8
commit
c62d23ab06
3 changed files with 87 additions and 39 deletions
|
|
@ -97,7 +97,8 @@ AppConfig::AppConfig(QSettings* userSettings, QSettings* systemSettings) :
|
||||||
m_AutoHide(false),
|
m_AutoHide(false),
|
||||||
m_LastExpiringWarningTime(0),
|
m_LastExpiringWarningTime(0),
|
||||||
m_AutoConfigServer(),
|
m_AutoConfigServer(),
|
||||||
m_MinimizeToTray(false)
|
m_MinimizeToTray(false),
|
||||||
|
m_SettingModified(false)
|
||||||
{
|
{
|
||||||
|
|
||||||
//If user setting don't exist but system ones do, load the system settings
|
//If user setting don't exist but system ones do, load the system settings
|
||||||
|
|
@ -273,6 +274,7 @@ void AppConfig::saveSettings()
|
||||||
setSetting(ServerHostname, m_ServerHostname);
|
setSetting(ServerHostname, m_ServerHostname);
|
||||||
|
|
||||||
settings().sync();
|
settings().sync();
|
||||||
|
m_SettingModified = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef SYNERGY_ENTERPRISE
|
#ifndef SYNERGY_ENTERPRISE
|
||||||
|
|
@ -293,53 +295,71 @@ QString AppConfig::lastVersion() const
|
||||||
return m_lastVersion;
|
return m_lastVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppConfig::setLastVersion(QString version) {
|
void AppConfig::setLastVersion(const QString& version) {
|
||||||
m_lastVersion = version;
|
setSettingModified(m_lastVersion, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
QSettings &AppConfig::settings() { return *m_pSettings; }
|
QSettings &AppConfig::settings() { return *m_pSettings; }
|
||||||
|
|
||||||
void AppConfig::setScreenName(const QString &s) { m_ScreenName = s; }
|
void AppConfig::setScreenName(const QString &s) {
|
||||||
|
setSettingModified(m_ScreenName, s);
|
||||||
|
}
|
||||||
|
|
||||||
void AppConfig::setPort(int i) { m_Port = i; }
|
void AppConfig::setPort(int i) {
|
||||||
|
setSettingModified(m_Port, i);
|
||||||
|
}
|
||||||
|
|
||||||
void AppConfig::setNetworkInterface(const QString &s) { m_Interface = s; }
|
void AppConfig::setNetworkInterface(const QString &s) {
|
||||||
|
setSettingModified(m_Interface, s);
|
||||||
|
}
|
||||||
|
|
||||||
void AppConfig::setLogLevel(int i) { m_LogLevel = i; }
|
void AppConfig::setLogLevel(int i) {
|
||||||
|
setSettingModified(m_LogLevel, i);
|
||||||
|
}
|
||||||
|
|
||||||
void AppConfig::setLogToFile(bool b) { m_LogToFile = b; }
|
void AppConfig::setLogToFile(bool b) {
|
||||||
|
setSettingModified(m_LogToFile, b);
|
||||||
|
}
|
||||||
|
|
||||||
void AppConfig::setLogFilename(const QString &s) { m_LogFilename = s; }
|
void AppConfig::setLogFilename(const QString &s) {
|
||||||
|
setSettingModified(m_LogFilename, s);
|
||||||
|
}
|
||||||
|
|
||||||
void AppConfig::setWizardHasRun() { m_WizardLastRun = kWizardVersion; }
|
void AppConfig::setWizardHasRun() {
|
||||||
|
setSettingModified(m_WizardLastRun, kWizardVersion);
|
||||||
|
}
|
||||||
|
|
||||||
void AppConfig::setLanguage(const QString language) { m_Language = language; }
|
void AppConfig::setLanguage(const QString& language) {
|
||||||
|
setSettingModified(m_Language, language);
|
||||||
|
}
|
||||||
|
|
||||||
void AppConfig::setStartedBefore(bool b) { m_StartedBefore = b; }
|
void AppConfig::setStartedBefore(bool b) {
|
||||||
|
setSettingModified(m_StartedBefore, b);
|
||||||
|
}
|
||||||
|
|
||||||
void AppConfig::setElevateMode(ElevateMode em) { m_ElevateMode = em; }
|
void AppConfig::setElevateMode(ElevateMode em) {
|
||||||
|
setSettingModified(m_ElevateMode, em);
|
||||||
|
}
|
||||||
|
|
||||||
void AppConfig::setAutoConfig(bool autoConfig)
|
void AppConfig::setAutoConfig(bool autoConfig)
|
||||||
{
|
{
|
||||||
m_AutoConfig = autoConfig;
|
setSettingModified(m_AutoConfig, autoConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppConfig::setAutoConfigServer(QString autoConfigServer)
|
void AppConfig::setAutoConfigServer(const QString& autoConfigServer)
|
||||||
{
|
{
|
||||||
m_AutoConfigServer = autoConfigServer;
|
setSettingModified(m_AutoConfigServer, autoConfigServer);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef SYNERGY_ENTERPRISE
|
#ifndef SYNERGY_ENTERPRISE
|
||||||
void AppConfig::setEdition(Edition e) {
|
void AppConfig::setEdition(Edition e) {
|
||||||
m_Edition = e;
|
setSettingModified(m_Edition, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
Edition AppConfig::edition() const { return m_Edition; }
|
Edition AppConfig::edition() const { return m_Edition; }
|
||||||
|
|
||||||
QString AppConfig::setSerialKey(QString serial) {
|
void AppConfig::setSerialKey(const QString& serial) {
|
||||||
using std::swap;
|
setSettingModified(m_Serialkey, serial);
|
||||||
swap (serial, m_Serialkey);
|
|
||||||
return serial;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppConfig::clearSerialKey()
|
void AppConfig::clearSerialKey()
|
||||||
|
|
@ -351,7 +371,9 @@ QString AppConfig::serialKey() { return m_Serialkey; }
|
||||||
|
|
||||||
int AppConfig::lastExpiringWarningTime() const { return m_LastExpiringWarningTime; }
|
int AppConfig::lastExpiringWarningTime() const { return m_LastExpiringWarningTime; }
|
||||||
|
|
||||||
void AppConfig::setLastExpiringWarningTime(int t) { m_LastExpiringWarningTime = t; }
|
void AppConfig::setLastExpiringWarningTime(int newValue) {
|
||||||
|
setSettingModified(m_LastExpiringWarningTime, newValue);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
QString AppConfig::synergysName() const { return m_SynergysName; }
|
QString AppConfig::synergysName() const { return m_SynergysName; }
|
||||||
|
|
@ -363,9 +385,9 @@ ElevateMode AppConfig::elevateMode()
|
||||||
return m_ElevateMode;
|
return m_ElevateMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppConfig::setCryptoEnabled(bool e) {
|
void AppConfig::setCryptoEnabled(bool newValue) {
|
||||||
m_CryptoEnabled = e;
|
setSettingModified(m_CryptoEnabled, newValue);
|
||||||
emit sslToggled(e);
|
emit sslToggled(m_CryptoEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AppConfig::getCryptoEnabled() const {
|
bool AppConfig::getCryptoEnabled() const {
|
||||||
|
|
@ -376,11 +398,15 @@ bool AppConfig::getCryptoEnabled() const {
|
||||||
m_CryptoEnabled;
|
m_CryptoEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppConfig::setAutoHide(bool b) { m_AutoHide = b; }
|
void AppConfig::setAutoHide(bool b) {
|
||||||
|
setSettingModified(m_MinimizeToTray, b);
|
||||||
|
}
|
||||||
|
|
||||||
bool AppConfig::getAutoHide() { return m_AutoHide; }
|
bool AppConfig::getAutoHide() { return m_AutoHide; }
|
||||||
|
|
||||||
void AppConfig::setMinimizeToTray(bool b) { m_MinimizeToTray = b; }
|
void AppConfig::setMinimizeToTray(bool newValue) {
|
||||||
|
setSettingModified(m_MinimizeToTray, newValue);
|
||||||
|
}
|
||||||
|
|
||||||
bool AppConfig::getMinimizeToTray() { return m_MinimizeToTray; }
|
bool AppConfig::getMinimizeToTray() { return m_MinimizeToTray; }
|
||||||
|
|
||||||
|
|
@ -492,25 +518,35 @@ QString AppConfig::getServerHostname() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppConfig::setServerGroupChecked(bool newValue) {
|
void AppConfig::setServerGroupChecked(bool newValue) {
|
||||||
m_ServerGroupChecked = newValue;
|
setSettingModified(m_ServerGroupChecked, newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppConfig::setUseExternalConfig(bool newValue) {
|
void AppConfig::setUseExternalConfig(bool newValue) {
|
||||||
m_UseExternalConfig = newValue;
|
setSettingModified(m_UseExternalConfig, newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppConfig::setConfigFile(const QString& newValue) {
|
void AppConfig::setConfigFile(const QString& newValue) {
|
||||||
m_ConfigFile = newValue;
|
setSettingModified(m_ConfigFile, newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppConfig::setUseInternalConfig(bool newValue) {
|
void AppConfig::setUseInternalConfig(bool newValue) {
|
||||||
m_UseInternalConfig = newValue;
|
setSettingModified(m_UseInternalConfig, newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppConfig::setClientGroupChecked(bool newValue) {
|
void AppConfig::setClientGroupChecked(bool newValue) {
|
||||||
m_ClientGroupChecked = newValue;
|
setSettingModified(m_ClientGroupChecked, newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppConfig::setServerHostname(const QString& newValue) {
|
void AppConfig::setServerHostname(const QString& newValue) {
|
||||||
m_ServerHostname = newValue;
|
setSettingModified(m_ServerHostname, newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void AppConfig::setSettingModified(T &variable, const T& newValue) {
|
||||||
|
if (variable != newValue)
|
||||||
|
{
|
||||||
|
variable = newValue;
|
||||||
|
m_SettingModified = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,11 +92,11 @@ class AppConfig: public QObject
|
||||||
bool autoConfig() const;
|
bool autoConfig() const;
|
||||||
void setAutoConfig(bool autoConfig);
|
void setAutoConfig(bool autoConfig);
|
||||||
QString autoConfigServer() const;
|
QString autoConfigServer() const;
|
||||||
void setAutoConfigServer(QString autoConfigServer);
|
void setAutoConfigServer(const QString& autoConfigServer);
|
||||||
#ifndef SYNERGY_ENTERPRISE
|
#ifndef SYNERGY_ENTERPRISE
|
||||||
void setEdition(Edition);
|
void setEdition(Edition);
|
||||||
Edition edition() const;
|
Edition edition() const;
|
||||||
QString setSerialKey(QString serial);
|
void setSerialKey(const QString& serial);
|
||||||
void clearSerialKey();
|
void clearSerialKey();
|
||||||
QString serialKey();
|
QString serialKey();
|
||||||
int lastExpiringWarningTime() const;
|
int lastExpiringWarningTime() const;
|
||||||
|
|
@ -151,7 +151,11 @@ class AppConfig: public QObject
|
||||||
bool getMinimizeToTray();
|
bool getMinimizeToTray();
|
||||||
|
|
||||||
void saveSettings();
|
void saveSettings();
|
||||||
void setLastVersion(QString version);
|
void setLastVersion(const QString& version);
|
||||||
|
|
||||||
|
/// @brief settingsExist Checks ths settings to see if they exist in the QSettings location
|
||||||
|
/// @return bool True if there are unsaved changes
|
||||||
|
bool unsavedChanges();
|
||||||
|
|
||||||
/// @brief settingsExist Checks ths settings to see if they exist in the QSettings location
|
/// @brief settingsExist Checks ths settings to see if they exist in the QSettings location
|
||||||
/// @param [in] settings The QSettings object to check
|
/// @param [in] settings The QSettings object to check
|
||||||
|
|
@ -209,7 +213,7 @@ protected:
|
||||||
void setLogToFile(bool b);
|
void setLogToFile(bool b);
|
||||||
void setLogFilename(const QString& s);
|
void setLogFilename(const QString& s);
|
||||||
void setWizardHasRun();
|
void setWizardHasRun();
|
||||||
void setLanguage(const QString language);
|
void setLanguage(const QString& language);
|
||||||
void setStartedBefore(bool b);
|
void setStartedBefore(bool b);
|
||||||
void setElevateMode(ElevateMode em);
|
void setElevateMode(ElevateMode em);
|
||||||
|
|
||||||
|
|
@ -255,6 +259,7 @@ protected:
|
||||||
bool m_LoadFromSystemScope; /// @brief should the setting be loaded from SystemScope
|
bool m_LoadFromSystemScope; /// @brief should the setting be loaded from SystemScope
|
||||||
/// If the user has settings but this is true then
|
/// If the user has settings but this is true then
|
||||||
/// system settings will be loaded instead of the users
|
/// system settings will be loaded instead of the users
|
||||||
|
bool m_SettingModified; /// @brief Have the setting been changed since the last save
|
||||||
|
|
||||||
static const char m_SynergysName[];
|
static const char m_SynergysName[];
|
||||||
static const char m_SynergycName[];
|
static const char m_SynergycName[];
|
||||||
|
|
@ -282,6 +287,13 @@ protected:
|
||||||
/// from system to user.
|
/// from system to user.
|
||||||
std::mutex m_settings_lock;
|
std::mutex m_settings_lock;
|
||||||
|
|
||||||
|
/// @brief Sets the setting in the config checking if it has changed and flagging that settings
|
||||||
|
/// needs to be saved if the setting was different
|
||||||
|
/// @param [in] variable the setting that will be changed
|
||||||
|
/// @param [in] newValue The new value of the setting
|
||||||
|
template <typename T>
|
||||||
|
void setSettingModified(T& variable,const T& newValue);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void sslToggled(bool enabled);
|
void sslToggled(bool enabled);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -326,7 +326,7 @@ void MainWindow::loadSettings()
|
||||||
m_pRadioExternalConfig->setChecked(appConfig().getUseExternalConfig());
|
m_pRadioExternalConfig->setChecked(appConfig().getUseExternalConfig());
|
||||||
m_pRadioInternalConfig->setChecked(appConfig().getUseInternalConfig());
|
m_pRadioInternalConfig->setChecked(appConfig().getUseInternalConfig());
|
||||||
|
|
||||||
m_pGroupServer->setChecked(appConfig().getServerGroupChecked()));
|
m_pGroupServer->setChecked(appConfig().getServerGroupChecked());
|
||||||
m_pLineEditConfigFile->setText(appConfig().getConfigFile());
|
m_pLineEditConfigFile->setText(appConfig().getConfigFile());
|
||||||
m_pGroupClient->setChecked(appConfig().getClientGroupChecked());
|
m_pGroupClient->setChecked(appConfig().getClientGroupChecked());
|
||||||
m_pLineEditHostname->setText(appConfig().getServerHostname());
|
m_pLineEditHostname->setText(appConfig().getServerHostname());
|
||||||
|
|
@ -362,7 +362,7 @@ void MainWindow::saveSettings()
|
||||||
//Switch to local and overrun into the save case
|
//Switch to local and overrun into the save case
|
||||||
appConfig().switchToGlobal(false);
|
appConfig().switchToGlobal(false);
|
||||||
case AppConfig::Save:
|
case AppConfig::Save:
|
||||||
settings().sync();
|
appConfig().saveSettings();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue