From 969595dfe03cfdbceb00a968e523a1087587d244 Mon Sep 17 00:00:00 2001 From: Jamie Newbon Date: Thu, 13 Feb 2020 09:21:02 +0000 Subject: [PATCH] #6538 Loading of global settings if user setting dont exist --- src/gui/src/AppConfig.cpp | 16 ++++++++++++---- src/gui/src/AppConfig.h | 6 +++++- src/gui/src/main.cpp | 15 ++++++++++++--- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/gui/src/AppConfig.cpp b/src/gui/src/AppConfig.cpp index 62d1d8f60b..93924a3ca0 100644 --- a/src/gui/src/AppConfig.cpp +++ b/src/gui/src/AppConfig.cpp @@ -16,6 +16,7 @@ * along with this program. If not, see . */ +#include "QSynergyApplication.h" #include "AppConfig.h" #include "QUtility.h" @@ -70,8 +71,8 @@ static const char* logLevelNames[] = "DEBUG2" }; -AppConfig::AppConfig(QSettings* settings) : - m_pSettings(settings), +AppConfig::AppConfig(QSettings* userSettings, QSettings* systemSettings) : + m_pSettings(userSettings), m_ScreenName(), m_Port(24800), m_Interface(), @@ -88,6 +89,15 @@ AppConfig::AppConfig(QSettings* settings) : { Q_ASSERT(m_pSettings); + //If user setting dont exist but system ones do, load the system setting and save them to user settings + if (!settingsExist(userSettings) && settingsExist(systemSettings)) + { + m_pSettings = systemSettings; + loadSettings(); + m_pSettings = userSettings; + saveSettings(); + } + loadSettings(); } @@ -356,5 +366,3 @@ void AppConfig::setSetting(AppConfig::Setting name, T 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 8b200aa8f7..10da8222e6 100644 --- a/src/gui/src/AppConfig.h +++ b/src/gui/src/AppConfig.h @@ -22,6 +22,7 @@ #include #include +#include #include "ElevateMode.h" #include @@ -59,7 +60,7 @@ class AppConfig: public QObject friend class SetupWizard; public: - AppConfig(QSettings* settings); + AppConfig(QSettings* userSettings, QSettings* systemSettings); ~AppConfig(); public: @@ -205,6 +206,9 @@ protected: /// @param [in] defaultValue The default value of the setting QVariant loadSetting(AppConfig::Setting name, const QVariant& defaultValue = QVariant()); + /// @brief This will save the settings to globalScope instead of userScope + void saveToGlobalScope(); + signals: void sslToggled(bool enabled); }; diff --git a/src/gui/src/main.cpp b/src/gui/src/main.cpp index 5d8a5e8997..e05b7ba842 100644 --- a/src/gui/src/main.cpp +++ b/src/gui/src/main.cpp @@ -89,8 +89,17 @@ int main(int argc, char* argv[]) QApplication::setQuitOnLastWindowClosed(false); #endif - QSettings settings; - AppConfig appConfig (&settings); + //Config will default to User settings if they exist, + // otherwise it will load System setting and save them to User settings + QSettings systemSettings(QSettings::Scope::SystemScope, + QCoreApplication::organizationName(), + QCoreApplication::applicationName()); + + QSettings userSettings(QSettings::Scope::UserScope, + QCoreApplication::organizationName(), + QCoreApplication::applicationName()); + + AppConfig appConfig (&userSettings, &systemSettings); qRegisterMetaType("Edition"); #ifndef SYNERGY_ENTERPRISE LicenseManager licenseManager (&appConfig); @@ -101,7 +110,7 @@ int main(int argc, char* argv[]) #ifdef SYNERGY_ENTERPRISE MainWindow mainWindow(settings, appConfig); #else - MainWindow mainWindow(settings, appConfig, licenseManager); + MainWindow mainWindow(userSettings, appConfig, licenseManager); #endif QObject::connect(dynamic_cast(&app), SIGNAL(aboutToQuit()),