|  |  |  | @@ -282,22 +282,23 @@ void Config::Initialize(const std::string& config_name) { | 
		
	
		
			
				|  |  |  |  | template <> | 
		
	
		
			
				|  |  |  |  | void Config::ReadBasicSetting(Settings::BasicSetting<std::string>& setting) { | 
		
	
		
			
				|  |  |  |  |     const QString name = QString::fromStdString(setting.GetLabel()); | 
		
	
		
			
				|  |  |  |  |     const auto default_value = QString::fromStdString(setting.GetDefault()); | 
		
	
		
			
				|  |  |  |  |     if (qt_config->value(name + QStringLiteral("/default"), false).toBool()) { | 
		
	
		
			
				|  |  |  |  |         setting.SetValue(setting.GetDefault()); | 
		
	
		
			
				|  |  |  |  |         setting.SetValue(default_value.toStdString()); | 
		
	
		
			
				|  |  |  |  |     } else { | 
		
	
		
			
				|  |  |  |  |         setting.SetValue(qt_config->value(name, QString::fromStdString(setting.GetDefault())) | 
		
	
		
			
				|  |  |  |  |                              .toString() | 
		
	
		
			
				|  |  |  |  |                              .toStdString()); | 
		
	
		
			
				|  |  |  |  |         setting.SetValue(qt_config->value(name, default_value).toString().toStdString()); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | template <typename Type> | 
		
	
		
			
				|  |  |  |  | void Config::ReadBasicSetting(Settings::BasicSetting<Type>& setting) { | 
		
	
		
			
				|  |  |  |  |     const QString name = QString::fromStdString(setting.GetLabel()); | 
		
	
		
			
				|  |  |  |  |     const Type default_value = setting.GetDefault(); | 
		
	
		
			
				|  |  |  |  |     if (qt_config->value(name + QStringLiteral("/default"), false).toBool()) { | 
		
	
		
			
				|  |  |  |  |         setting.SetValue(setting.GetDefault()); | 
		
	
		
			
				|  |  |  |  |         setting.SetValue(default_value); | 
		
	
		
			
				|  |  |  |  |     } else { | 
		
	
		
			
				|  |  |  |  |         setting.SetValue( | 
		
	
		
			
				|  |  |  |  |             static_cast<QVariant>(qt_config->value(name, setting.GetDefault())).value<Type>()); | 
		
	
		
			
				|  |  |  |  |             static_cast<QVariant>(qt_config->value(name, default_value)).value<Type>()); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -305,10 +306,11 @@ void Config::ReadBasicSetting(Settings::BasicSetting<Type>& setting) { | 
		
	
		
			
				|  |  |  |  | template <> | 
		
	
		
			
				|  |  |  |  | void Config::WriteBasicSetting(const Settings::BasicSetting<std::string>& setting) { | 
		
	
		
			
				|  |  |  |  |     const QString name = QString::fromStdString(setting.GetLabel()); | 
		
	
		
			
				|  |  |  |  |     qt_config->setValue(name + QStringLiteral("/default"), | 
		
	
		
			
				|  |  |  |  |                         setting.GetValue() == setting.GetDefault()); | 
		
	
		
			
				|  |  |  |  |     qt_config->setValue(name, QString::fromStdString(setting.GetValue())); | 
		
	
		
			
				|  |  |  |  |     const std::string& value = setting.GetValue(); | 
		
	
		
			
				|  |  |  |  |     qt_config->setValue(name + QStringLiteral("/default"), value == setting.GetDefault()); | 
		
	
		
			
				|  |  |  |  |     qt_config->setValue(name, QString::fromStdString(value)); | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | // Explicit float definition: use a double as Qt doesn't write legible floats to config files | 
		
	
		
			
				|  |  |  |  | template <> | 
		
	
		
			
				|  |  |  |  | void Config::WriteBasicSetting(const Settings::BasicSetting<float>& setting) { | 
		
	
	
		
			
				
					
					|  |  |  | @@ -318,12 +320,13 @@ void Config::WriteBasicSetting(const Settings::BasicSetting<float>& setting) { | 
		
	
		
			
				|  |  |  |  |                         setting.GetValue() == setting.GetDefault()); | 
		
	
		
			
				|  |  |  |  |     qt_config->setValue(name, value); | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | template <typename Type> | 
		
	
		
			
				|  |  |  |  | void Config::WriteBasicSetting(const Settings::BasicSetting<Type>& setting) { | 
		
	
		
			
				|  |  |  |  |     const QString name = QString::fromStdString(setting.GetLabel()); | 
		
	
		
			
				|  |  |  |  |     qt_config->setValue(name + QStringLiteral("/default"), | 
		
	
		
			
				|  |  |  |  |                         setting.GetValue() == setting.GetDefault()); | 
		
	
		
			
				|  |  |  |  |     qt_config->setValue(name, setting.GetValue()); | 
		
	
		
			
				|  |  |  |  |     const Type value = setting.GetValue(); | 
		
	
		
			
				|  |  |  |  |     qt_config->setValue(name + QStringLiteral("/default"), value == setting.GetDefault()); | 
		
	
		
			
				|  |  |  |  |     qt_config->setValue(name, value); | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | // Explicit float definition: use a double as Qt doesn't write legible floats to config files | 
		
	
	
		
			
				
					
					|  |  |  | @@ -340,16 +343,17 @@ void Config::WriteGlobalSetting(const Settings::Setting<float>& setting) { | 
		
	
		
			
				|  |  |  |  |         qt_config->setValue(name, value); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | template <typename Type> | 
		
	
		
			
				|  |  |  |  | void Config::WriteGlobalSetting(const Settings::Setting<Type>& setting) { | 
		
	
		
			
				|  |  |  |  |     QString name = QString::fromStdString(setting.GetLabel()); | 
		
	
		
			
				|  |  |  |  |     const QString name = QString::fromStdString(setting.GetLabel()); | 
		
	
		
			
				|  |  |  |  |     const Type& value = setting.GetValue(global); | 
		
	
		
			
				|  |  |  |  |     if (!global) { | 
		
	
		
			
				|  |  |  |  |         qt_config->setValue(name + QStringLiteral("/use_global"), setting.UsingGlobal()); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     if (global || !setting.UsingGlobal()) { | 
		
	
		
			
				|  |  |  |  |         qt_config->setValue(name + QStringLiteral("/default"), | 
		
	
		
			
				|  |  |  |  |                             setting.GetValue(global) == setting.GetDefault()); | 
		
	
		
			
				|  |  |  |  |         qt_config->setValue(name, setting.GetValue(global)); | 
		
	
		
			
				|  |  |  |  |         qt_config->setValue(name + QStringLiteral("/default"), value == setting.GetDefault()); | 
		
	
		
			
				|  |  |  |  |         qt_config->setValue(name, value); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  |   |