1919
2020#include " settings_manager.h"
2121
22+ #include < QDir>
23+ #include < qfileinfo.h>
2224#include < QSqlRecord>
2325#include < QString>
2426#include < QVariant>
@@ -28,7 +30,7 @@ using std::string;
2830// Qt
2931#include < QSqlQuery>
3032
31- SettingsManager::SettingsManager (const QString & connection_name) {
33+ SettingsManager::SettingsManager (const QString& connection_name) {
3234 LoadFromIni (connection_name);
3335 LoadFromDatabase ();
3436}
@@ -37,12 +39,12 @@ SettingsManager::Settings SettingsManager::GetSettings() {
3739 return settings_;
3840}
3941
40- void SettingsManager::SetSettings (const SettingsManager::Settings & settings) {
42+ void SettingsManager::SetSettings (const SettingsManager::Settings& settings) {
4143 settings_ = settings;
4244}
4345
4446void SettingsManager::Save (int type) {
45- if (type == SaveType::SAVE_NONE){
47+ if (type == SaveType::SAVE_NONE) {
4648 return ;
4749 }
4850 if (~(type ^ SaveType::SAVE_GENERAL)) {
@@ -61,7 +63,7 @@ void SettingsManager::Save(int type) {
6163
6264 settings_file_.save (SETTINGS_FILE_PATH_);
6365
64- if (!(~(type ^ SaveType::SAVE_SYNCING))){
66+ if (!(~(type ^ SaveType::SAVE_SYNCING))) {
6567 return ;
6668 }
6769 database_.db .open ();
@@ -75,31 +77,30 @@ void SettingsManager::Save(int type) {
7577 {
7678 QSqlQuery query (database_.db );
7779 QString sql_request = UPDATE_FONT_SETTINGS.arg (database_.schema );
78- for (const auto & font: settings_.font_settings ) {
80+ for (const auto & font : settings_.font_settings ) {
7981 query.prepare (
80- sql_request
81- .arg (" \' " + font.font .family () + " \' " )
82- .arg (" \' " + font.color .name (QColor::HexRgb) + " \' " )
83- .arg (font.position .x ())
84- .arg (font.position .y ())
85- .arg (font.font .pixelSize ())
86- .arg (font.font .bold () ? " true" : " false" )
87- .arg (index++)
82+ sql_request
83+ .arg (" \' " + font.font .family () + " \' " )
84+ .arg (" \' " + font.color .name (QColor::HexRgb) + " \' " )
85+ .arg (font.position .x ())
86+ .arg (font.position .y ())
87+ .arg (font.font .pixelSize ())
88+ .arg (font.font .bold () ? " true" : " false" )
89+ .arg (index++)
8890 );
8991 query.exec ();
9092 }
9193
9294 query.prepare (
93- UPDATE_IMAGE
94- .arg (database_.schema )
95- .arg (" \' " + settings_.image .url .toString () + " \' " )
96- .arg (" \' " + settings_.image .format + " \' " )
95+ UPDATE_IMAGE
96+ .arg (database_.schema )
97+ .arg (" \' " + settings_.image .url .toString () + " \' " )
98+ .arg (" \' " + settings_.image .format + " \' " )
9799 );
98100 query.exec ();
99101 }
100102
101103 database_.db .close ();
102-
103104}
104105
105106void SettingsManager::ReloadSettings () {
@@ -108,7 +109,6 @@ void SettingsManager::ReloadSettings() {
108109}
109110
110111void SettingsManager::LoadFromDatabase () {
111-
112112 database_.db .open ();
113113
114114 if (!database_.connect ()) {
@@ -122,7 +122,7 @@ void SettingsManager::LoadFromDatabase() {
122122 if (!query.exec ()) {
123123 assert (false );
124124 }
125- for (auto & item: settings_.font_settings ) {
125+ for (auto & item : settings_.font_settings ) {
126126 if (!query.next ()) {
127127 break ;
128128 }
@@ -159,22 +159,28 @@ void SettingsManager::LoadFromDatabase() {
159159 }
160160
161161 database_.db .close ();
162-
163162}
164163
165- void SettingsManager::LoadFromIni (const QString &connection_name) {
164+ void SettingsManager::LoadFromIni (const QString& connection_name) {
165+ QFileInfo file_info (QString::fromStdString (SETTINGS_FILE_PATH_));
166+ if (!file_info.exists ()) {
167+ file_info.dir ().mkdir (file_info.absolutePath ());
168+ std::ofstream file (SETTINGS_FILE_PATH_);
169+ file << DEFAULT_SETTINGS_;
170+ }
171+
166172 settings_file_.load (SETTINGS_FILE_PATH_);
167173
168174 settings_.output_folder = QString::fromStdString (settings_file_[" general" ][" path_to" ].as <string>());
169175 settings_.theme = QString::fromStdString (settings_file_[" general" ][" theme" ].as <string>());
170176
171177 settings_.database = {
172- QString::fromStdString (settings_file_[" database" ][" host" ].as <string>()),
173- settings_file_[" database" ][" port" ].as <uint16_t >(),
174- QString::fromStdString (settings_file_[" database" ][" username" ].as <string>()),
175- QString::fromStdString (settings_file_[" database" ][" password" ].as <string>()),
176- QString::fromStdString (settings_file_[" database" ][" name" ].as <string>()),
177- QString::fromStdString (settings_file_[" database" ][" schema" ].as <string>())
178+ QString::fromStdString (settings_file_[" database" ][" host" ].as <string>()),
179+ settings_file_[" database" ][" port" ].as <uint16_t >(),
180+ QString::fromStdString (settings_file_[" database" ][" username" ].as <string>()),
181+ QString::fromStdString (settings_file_[" database" ][" password" ].as <string>()),
182+ QString::fromStdString (settings_file_[" database" ][" name" ].as <string>()),
183+ QString::fromStdString (settings_file_[" database" ][" schema" ].as <string>())
178184 };
179185
180186 database_ = Database (settings_.database , connection_name);
0 commit comments