Make currently used settings be printed out at application start

Due to the SettingsController being a static object it will be
initialized before the main method has been run. This will cause
easylogging to log using the default logging style instead of the
defined application style. Because of this the settings are propogated
up through a function into the main method.
This commit is contained in:
Vasily
2019-12-10 08:28:41 +01:00
committed by username223
parent 2f612f52ae
commit 752295fa63
4 changed files with 58 additions and 4 deletions
+5 -2
View File
@@ -7,6 +7,11 @@ int main( int argc, char* argv[] )
{
setUpLogging();
LOG( INFO ) << "Settings File: "
<< settings::initializeAndGetSettingsPath();
LOG( INFO ) << settings::getSettingsAndValues();
MyQApplication mainEventLoop( argc, argv );
mainEventLoop.setOrganizationName(
application_strings::applicationOrganizationName );
@@ -40,8 +45,6 @@ int main( int argc, char* argv[] )
mainEventLoop.organizationName(),
mainEventLoop.applicationName() );
advsettings::OverlayController::setAppSettings( &appSettings );
LOG( INFO ) << "Settings File: "
<< settings::initializeAndGetSettingsPath();
QQmlEngine qmlEngine;
+46 -2
View File
@@ -10,6 +10,38 @@
namespace settings
{
template <typename Value> std::string valueToString( Value value )
{
using std::is_same;
if constexpr ( is_same<bool, Value>::value )
{
return value ? "true" : "false";
}
else if constexpr ( is_same<double, Value>::value
|| is_same<int, Value>::value )
{
return std::to_string( value );
}
if constexpr ( is_same<std::string, Value>::value )
{
return value;
}
}
template <int ArraySize, typename Value>
[[nodiscard]] std::string
returnSettingsAndValues( std::array<Value, ArraySize> v )
{
std::string s = "default";
for ( const auto& setting : v )
{
s += setting.qtInfo().settingName + ": '"
+ valueToString( setting.value() ) + "' | ";
}
return s;
}
template <typename Enum, int ArraySize, typename Value>
void verifySettings( std::array<Value, ArraySize> v ) noexcept
{
@@ -40,8 +72,6 @@ void verifySettings( std::array<Value, ArraySize> v ) noexcept
exit( ReturnErrorCode::SETTING_INCORRECT_INDEX );
}
}
LOG( DEBUG ) << "Settings for '" << typeid( Enum ).name() << "' verified.";
}
class SettingsController
@@ -58,6 +88,20 @@ public:
verifySettings<IntSetting, intSettingsSize>( m_intSettings );
}
std::string getSettingsAndValues() const noexcept
{
std::string s;
s += returnSettingsAndValues<boolSettingSize>( m_boolSettings );
s += returnSettingsAndValues<doubleSettingSize>( m_doubleSettings );
s += returnSettingsAndValues<stringSettingsSize>( m_stringSettings );
s += returnSettingsAndValues<intSettingsSize>( m_intSettings );
return s;
}
std::string getSettingsFileName() const noexcept
{
return getQSettings().fileName().toStdString();
+5
View File
@@ -68,4 +68,9 @@ std::string initializeAndGetSettingsPath()
return settingController.getSettingsFileName();
}
std::string getSettingsAndValues()
{
return settingController.getSettingsAndValues();
}
} // namespace settings
+2
View File
@@ -102,6 +102,8 @@ enum class IntSetting
std::string initializeAndGetSettingsPath();
std::string getSettingsAndValues();
void saveChangedSettings();
void saveAllSettings();