Skip to content

Commit e4bd1a8

Browse files
committed
Add settings folder creation
1 parent c0bba50 commit e4bd1a8

File tree

3 files changed

+52
-49
lines changed

3 files changed

+52
-49
lines changed

build_folder_reference/settings/settings.ini

Lines changed: 0 additions & 11 deletions
This file was deleted.

source/services/settings/settings_manager.cpp

Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
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

4446
void 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

105106
void SettingsManager::ReloadSettings() {
@@ -108,7 +109,6 @@ void SettingsManager::ReloadSettings() {
108109
}
109110

110111
void 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);

source/services/settings/settings_manager.h

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939

4040
class SettingsManager {
4141
public:
42-
4342
enum SaveType {
4443
SAVE_NONE = 0b000,
4544
SAVE_DATABASE = 0b001,
@@ -58,7 +57,7 @@ class SettingsManager {
5857
Models::Image image;
5958
Models::Passwords passwords;
6059

61-
Settings &operator=(const Settings &other) {
60+
Settings& operator=(const Settings& other) {
6261
output_folder = other.output_folder;
6362
theme = other.theme;
6463
font_settings = other.font_settings;
@@ -67,24 +66,22 @@ class SettingsManager {
6766
passwords = other.passwords;
6867
return *this;
6968
}
70-
7169
};
7270

73-
explicit SettingsManager(const QString &connection_name = "default");
71+
explicit SettingsManager(const QString& connection_name = "default");
7472

7573
void ReloadSettings();
7674

7775
Settings GetSettings();
7876

79-
void SetSettings(const Settings &settings);
77+
void SetSettings(const Settings& settings);
8078

8179
void Save(int type = SaveType::SAVE_ALL);
8280

8381
private:
84-
8582
void LoadFromDatabase();
8683

87-
void LoadFromIni(const QString &connection_name);
84+
void LoadFromIni(const QString& connection_name);
8885

8986
Database database_;
9087

@@ -93,7 +90,8 @@ class SettingsManager {
9390

9491
const QString SELECT_FONT_SETTINGS = "SELECT * FROM %1.font_settings;";
9592

96-
const QString UPDATE_FONT_SETTINGS = "UPDATE %1.font_settings SET font = %2, color = %3, position_x = %4, position_y = %5, size = %6, bold = %7 WHERE id = %8;";
93+
const QString UPDATE_FONT_SETTINGS =
94+
"UPDATE %1.font_settings SET font = %2, color = %3, position_x = %4, position_y = %5, size = %6, bold = %7 WHERE id = %8;";
9795

9896
const QString SELECT_IMAGE = "SELECT url, format FROM %1.image WHERE id = 1;";
9997

@@ -103,6 +101,16 @@ class SettingsManager {
103101

104102
const std::string SETTINGS_FILE_PATH_ = "./settings/settings.ini";
105103

104+
const std::string DEFAULT_SETTINGS_ = {
105+
"[general]\n"
106+
"path_to=default\n"
107+
"theme=Darkeum\n\n"
108+
"[database]\n"
109+
"host=localhost\n"
110+
"port=5432\n"
111+
"username=postgres\n"
112+
"password=root\n"
113+
"name=tip\n"
114+
"schema=main\n"
115+
};
106116
};
107-
108-

0 commit comments

Comments
 (0)