SYNERGY-821 The system doesn't recognize old settings (#6947)
* SYNERGY-821 The system doesn't recognize old settings * SYNERGY-821 Update ChangeLog
This commit is contained in:
parent
0d3ac899d0
commit
8b26dd3495
3 changed files with 51 additions and 36 deletions
|
|
@ -14,6 +14,7 @@ Bug fixes:
|
||||||
- #6939 Update pipelines to use correct credentials
|
- #6939 Update pipelines to use correct credentials
|
||||||
- #6942 All the text in all the windows should have the same font and size
|
- #6942 All the text in all the windows should have the same font and size
|
||||||
- #6944 Systray icon is incorrect for macOS Big Sur
|
- #6944 Systray icon is incorrect for macOS Big Sur
|
||||||
|
- #6941 The application doesn't recognize old settings
|
||||||
- #6945 Fix build for Raspberry Pi
|
- #6945 Fix build for Raspberry Pi
|
||||||
|
|
||||||
Enhancements:
|
Enhancements:
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,53 @@
|
||||||
#include "ConfigWriter.h"
|
#include "ConfigWriter.h"
|
||||||
#include "ConfigBase.h"
|
#include "ConfigBase.h"
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
QString getSystemSettingPath()
|
||||||
|
{
|
||||||
|
const QString settingFilename("SystemConfig.ini");
|
||||||
|
QString path;
|
||||||
|
#if defined(Q_OS_WIN)
|
||||||
|
// Program file
|
||||||
|
path = QCoreApplication::applicationDirPath() + "\\";
|
||||||
|
#elif defined(Q_OS_DARWIN)
|
||||||
|
//Global preferances dir
|
||||||
|
// Would be nice to use /library, but QT has no elevate system in place
|
||||||
|
path = "/usr/local/etc/symless/";
|
||||||
|
#elif defined(Q_OS_LINUX)
|
||||||
|
// QT adds application and filename to the end of the path already on linux
|
||||||
|
path = "/usr/local/etc/symless/";
|
||||||
|
return path;
|
||||||
|
#else
|
||||||
|
assert("OS not supported");
|
||||||
|
#endif
|
||||||
|
return path + settingFilename;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(Q_OS_WIN)
|
||||||
|
void loadOldSystemSettings(QSettings& settings)
|
||||||
|
{
|
||||||
|
if (!QFile(settings.fileName()).exists()) {
|
||||||
|
QSettings::setPath(QSettings::IniFormat, QSettings::SystemScope, "SystemConfig.ini");
|
||||||
|
QSettings oldSystemSettings (QSettings::IniFormat,
|
||||||
|
QSettings::SystemScope,
|
||||||
|
QCoreApplication::organizationName(),
|
||||||
|
QCoreApplication::applicationName());
|
||||||
|
|
||||||
|
if (QFile(oldSystemSettings.fileName()).exists()) {
|
||||||
|
for (const auto& key : oldSystemSettings.allKeys()) {
|
||||||
|
settings.setValue(key, oldSystemSettings.value(key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Restore system settings path
|
||||||
|
QSettings::setPath(QSettings::IniFormat, QSettings::SystemScope, getSystemSettingPath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
namespace Config {
|
namespace Config {
|
||||||
//Assignment of static variable
|
//Assignment of static variable
|
||||||
|
|
@ -37,19 +84,6 @@ namespace GUI {
|
||||||
return s_pConfiguration;
|
return s_pConfiguration;
|
||||||
}
|
}
|
||||||
|
|
||||||
void loadOldSystemSettings(QSettings& settings)
|
|
||||||
{
|
|
||||||
if (!QFile(settings.fileName()).exists()) {
|
|
||||||
QFile oldSystemSettings("SystemConfig.ini");
|
|
||||||
if (oldSystemSettings.exists()) {
|
|
||||||
QSettings oldSettings(oldSystemSettings.fileName(), QSettings::Format::IniFormat);
|
|
||||||
for (const auto& key : oldSettings.allKeys()) {
|
|
||||||
settings.setValue(key, oldSettings.value(key));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigWriter::ConfigWriter() {
|
ConfigWriter::ConfigWriter() {
|
||||||
QSettings::setPath(QSettings::Format::IniFormat,
|
QSettings::setPath(QSettings::Format::IniFormat,
|
||||||
QSettings::Scope::SystemScope,
|
QSettings::Scope::SystemScope,
|
||||||
|
|
@ -62,8 +96,10 @@ namespace GUI {
|
||||||
QCoreApplication::organizationName(),
|
QCoreApplication::organizationName(),
|
||||||
QCoreApplication::applicationName());
|
QCoreApplication::applicationName());
|
||||||
|
|
||||||
|
#if defined(Q_OS_WIN)
|
||||||
//This call is needed for backwardcapability with old settings.
|
//This call is needed for backwardcapability with old settings.
|
||||||
loadOldSystemSettings(*m_pSettingsSystem);
|
loadOldSystemSettings(*m_pSettingsSystem);
|
||||||
|
#endif
|
||||||
|
|
||||||
//defaults to user scope, if we set the scope specifically then we also have to set
|
//defaults to user scope, if we set the scope specifically then we also have to set
|
||||||
// the application name and the organisation name which breaks backwards compatibility
|
// the application name and the organisation name which breaks backwards compatibility
|
||||||
|
|
@ -162,25 +198,7 @@ namespace GUI {
|
||||||
m_pCallerList.push_back(receiver);
|
m_pCallerList.push_back(receiver);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ConfigWriter::getSystemSettingPath() {
|
|
||||||
const QString settingFilename("SystemConfig.ini");
|
|
||||||
QString path;
|
|
||||||
#if defined(Q_OS_WIN)
|
|
||||||
// Program file
|
|
||||||
path = QCoreApplication::applicationDirPath() + "\\";
|
|
||||||
#elif defined(Q_OS_DARWIN)
|
|
||||||
//Global preferances dir
|
|
||||||
// Would be nice to use /library, but QT has no elevate system in place
|
|
||||||
path = "/usr/local/etc/symless/";
|
|
||||||
#elif defined(Q_OS_LINUX)
|
|
||||||
// QT adds application and filename to the end of the path already on linux
|
|
||||||
path = "/usr/local/etc/symless/";
|
|
||||||
return path;
|
|
||||||
#else
|
|
||||||
assert("OS not supported");
|
|
||||||
#endif
|
|
||||||
return path + settingFilename;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ConfigWriter::unsavedChanges() const {
|
bool ConfigWriter::unsavedChanges() const {
|
||||||
if (m_unsavedChanges) {
|
if (m_unsavedChanges) {
|
||||||
|
|
|
||||||
|
|
@ -123,10 +123,6 @@ namespace GUI {
|
||||||
/// @brief the pointer of the ConfigWriter for singolton use
|
/// @brief the pointer of the ConfigWriter for singolton use
|
||||||
static ConfigWriter* s_pConfiguration;
|
static ConfigWriter* s_pConfiguration;
|
||||||
|
|
||||||
/// @brief Returns the OS specific settings ini file location
|
|
||||||
static QString getSystemSettingPath();
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief deletes pointers and sets the value to null
|
/// @brief deletes pointers and sets the value to null
|
||||||
template<class T> static inline void destroy(T*& p) { delete p; p = 0; }
|
template<class T> static inline void destroy(T*& p) { delete p; p = 0; }
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue