diff --git a/src/gui/src/AppConfig.cpp b/src/gui/src/AppConfig.cpp index 7613b3c60..62d1d8f60 100644 --- a/src/gui/src/AppConfig.cpp +++ b/src/gui/src/AppConfig.cpp @@ -36,6 +36,32 @@ const char AppConfig::m_SynergyLogDir[] = "/var/log/"; const ElevateMode defaultElevateMode = ElevateAsNeeded; +const char* AppConfig::m_SynergySettingsName[] = { + "screenName", + "port", + "interface", + "logLevel2", + "logToFile", + "logFilename", + "wizardLastRun", + "language", + "startedBefore", + "autoConfig", + "autoConfigServer", + "elevateMode", + "elevateModeEnum", + "edition", + "cryptoEnabled", + "autoHide", + "serialKey", + "lastVersion", + "lastExpiringWarningTime", + "activationHasRun", + "minimizeToTray" +}; + + + static const char* logLevelNames[] = { "INFO", @@ -141,59 +167,66 @@ QString AppConfig::autoConfigServer() const { return m_AutoConfigServer; } void AppConfig::loadSettings() { - m_ScreenName = settings().value("screenName", QHostInfo::localHostName()).toString(); - m_Port = settings().value("port", 24800).toInt(); - m_Interface = settings().value("interface").toString(); - m_LogLevel = settings().value("logLevel2", 0).toInt(); // level 0: INFO - m_LogToFile = settings().value("logToFile", false).toBool(); - m_LogFilename = settings().value("logFilename", synergyLogDir() + "synergy.log").toString(); - m_WizardLastRun = settings().value("wizardLastRun", 0).toInt(); - m_Language = settings().value("language", QLocale::system().name()).toString(); - m_StartedBefore = settings().value("startedBefore", false).toBool(); - m_AutoConfig = settings().value("autoConfig", false).toBool(); - m_AutoConfigServer = settings().value("autoConfigServer", "").toString(); - QVariant elevateMode = settings().value("elevateModeEnum"); - if (!elevateMode.isValid()) { - elevateMode = settings().value ("elevateMode", - QVariant(static_cast(defaultElevateMode))); + m_ScreenName = loadSetting(ScreenName, QHostInfo::localHostName()).toString(); + m_Port = loadSetting(Port, 24800).toInt(); + m_Interface = loadSetting(InterfaceSetting).toString(); + m_LogLevel = loadSetting(LogLevel, 0).toInt(); + m_LogToFile = loadSetting(LogToFile, false).toBool(); + m_LogFilename = loadSetting(LogFilename,synergyLogDir() + "synergy.log").toString(); + m_WizardLastRun = loadSetting(WizardLastRun,0).toInt(); + m_Language = loadSetting(Language, QLocale::system().name()).toString(); + m_StartedBefore = loadSetting(StartedBefore, false).toBool(); + m_AutoConfig = loadSetting(AutoConfig, false).toBool(); + m_AutoConfigServer = loadSetting(AutoConfigServer,"").toString(); + + { //Scope related code together + // TODO Investigate why ElevateModeEnum isn't loaded fully + QVariant elevateMode = loadSetting(ElevateModeEnum); + if (!elevateMode.isValid()) { + elevateMode = loadSetting(ElevateModeSetting, + QVariant(static_cast(defaultElevateMode))); + } + m_ElevateMode = static_cast(elevateMode.toInt()); } - m_ElevateMode = static_cast(elevateMode.toInt()); - m_Edition = static_cast(settings().value("edition", kUnregistered).toInt()); - m_ActivateEmail = settings().value("activateEmail", "").toString(); - m_CryptoEnabled = settings().value("cryptoEnabled", true).toBool(); - m_AutoHide = settings().value("autoHide", false).toBool(); - m_Serialkey = settings().value("serialKey", "").toString().trimmed(); - m_lastVersion = settings().value("lastVersion", "Unknown").toString(); - m_LastExpiringWarningTime = settings().value("lastExpiringWarningTime", 0).toInt(); - m_ActivationHasRun = settings().value("activationHasRun", false).toBool(); - m_MinimizeToTray = settings().value("minimizeToTray", false).toBool(); + + m_Edition = static_cast(loadSetting(EditionSetting, kUnregistered).toInt()); + m_ActivateEmail = loadSetting(ActivateEmail, "").toString(); + m_CryptoEnabled = loadSetting(CryptoEnabled, true).toBool(); + m_AutoHide = loadSetting(AutoHide, false).toBool(); + m_Serialkey = loadSetting(SerialKey, "").toString().trimmed(); + m_lastVersion = loadSetting(LastVersion, "Unknown").toString(); + m_LastExpiringWarningTime = loadSetting(LastExpireWarningTime, 0).toInt(); + m_ActivationHasRun = loadSetting(ActivationHasRun, false).toBool(); + m_MinimizeToTray = loadSetting(MinimizeToTray, false).toBool(); + } void AppConfig::saveSettings() { - settings().setValue("screenName", m_ScreenName); - settings().setValue("port", m_Port); - settings().setValue("interface", m_Interface); - settings().setValue("logLevel2", m_LogLevel); - settings().setValue("logToFile", m_LogToFile); - settings().setValue("logFilename", m_LogFilename); - settings().setValue("wizardLastRun", kWizardVersion); - settings().setValue("language", m_Language); - settings().setValue("startedBefore", m_StartedBefore); - settings().setValue("autoConfig", m_AutoConfig); - settings().setValue("autoConfigServer", m_AutoConfigServer); + setSetting(ScreenName, m_ScreenName); + setSetting(Port, m_Port); + setSetting(InterfaceSetting, m_Interface); + setSetting(LogLevel, m_LogLevel); + setSetting(LogToFile, m_LogToFile); + setSetting(LogFilename, m_LogFilename); + setSetting(WizardLastRun, kWizardVersion); + setSetting(Language, m_Language); + setSetting(StartedBefore, m_StartedBefore); + setSetting(AutoConfig, m_AutoConfig); + setSetting(AutoConfigServer, m_AutoConfigServer); // Refer to enum ElevateMode declaration for insight in to why this // flag is mapped this way - settings().setValue("elevateMode", m_ElevateMode == ElevateAlways); - settings().setValue("elevateModeEnum", static_cast(m_ElevateMode)); - settings().setValue("edition", m_Edition); - settings().setValue("cryptoEnabled", m_CryptoEnabled); - settings().setValue("autoHide", m_AutoHide); - settings().setValue("serialKey", m_Serialkey); - settings().setValue("lastVersion", m_lastVersion); - settings().setValue("lastExpiringWarningTime", m_LastExpiringWarningTime); - settings().setValue("activationHasRun", m_ActivationHasRun); - settings().setValue("minimizeToTray", m_MinimizeToTray); + setSetting(ElevateModeSetting, m_ElevateMode == ElevateAlways); + setSetting(ElevateModeEnum, static_cast(m_ElevateMode)); + setSetting(EditionSetting, m_Edition); + setSetting(CryptoEnabled, m_CryptoEnabled); + setSetting(AutoHide, m_AutoHide); + setSetting(SerialKey, m_Serialkey); + setSetting(LastVersion, m_lastVersion); + setSetting(LastExpireWarningTime, m_LastExpiringWarningTime); + setSetting(ActivationHasRun, m_ActivationHasRun); + setSetting(MinimizeToTray, m_MinimizeToTray); + settings().sync(); } @@ -305,3 +338,23 @@ bool AppConfig::getAutoHide() { return m_AutoHide; } void AppConfig::setMinimizeToTray(bool b) { m_MinimizeToTray = b; } bool AppConfig::getMinimizeToTray() { return m_MinimizeToTray; } + +bool AppConfig::settingsExist(QSettings* settings) { + //Use screen name as the test to see if the settings have been saved to this location + return settings->contains(settingName(ScreenName)); +} + +QString AppConfig::settingName(AppConfig::Setting name) { + return m_SynergySettingsName[name]; +} + +template +void AppConfig::setSetting(AppConfig::Setting name, T value) { + settings().setValue(settingName(name), value); +} + +QVariant AppConfig::loadSetting(AppConfig::Setting name, const QVariant& defaultValue) { + return settings().value(settingName(name), defaultValue); +} + + diff --git a/src/gui/src/AppConfig.h b/src/gui/src/AppConfig.h index 7e075e62b..8b200aa8f 100644 --- a/src/gui/src/AppConfig.h +++ b/src/gui/src/AppConfig.h @@ -116,7 +116,38 @@ class AppConfig: public QObject void saveSettings(); void setLastVersion(QString version); + /// @brief settingsExist Checks ths settings to see if they exist in the QSettings location + /// @param [in] settings The QSettings object to check + /// @return True if the setting was found. + static bool settingsExist(QSettings* settings); + protected: + /// @brief The enumeration to easily access the names of the setting inside m_SynergySettingsName + enum Setting { + ScreenName, + Port, + InterfaceSetting, + LogLevel, + LogToFile, + LogFilename, + WizardLastRun, + Language, + StartedBefore, + AutoConfig, + AutoConfigServer, + ElevateModeSetting, + ElevateModeEnum, + EditionSetting, + CryptoEnabled, + AutoHide, + SerialKey, + LastVersion, + LastExpireWarningTime, + ActivationHasRun, + MinimizeToTray, + ActivateEmail, + }; + QSettings& settings(); void setScreenName(const QString& s); void setPort(int i); @@ -129,6 +160,7 @@ protected: void setStartedBefore(bool b); void setElevateMode(ElevateMode em); void loadSettings(); + static QString settingName(AppConfig::Setting name); private: QSettings* m_pSettings; @@ -159,6 +191,20 @@ protected: static const char m_SynergycName[]; static const char m_SynergyLogDir[]; + /// @brief Contains the string values of the settings names that will be saved + static const char* m_SynergySettingsName[]; + + /// @brief Sets the value of a setting + /// @param [in] name The Setting to be saved + /// @param [in] value The Value to be saved + template + void setSetting(AppConfig::Setting name, T value); + + /// @brief Loads a setting + /// @param [in] name The setting to be loaded + /// @param [in] defaultValue The default value of the setting + QVariant loadSetting(AppConfig::Setting name, const QVariant& defaultValue = QVariant()); + signals: void sslToggled(bool enabled); };