aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/settings.cpp23
-rw-r--r--src/settings.h2
2 files changed, 19 insertions, 6 deletions
diff --git a/src/settings.cpp b/src/settings.cpp
index efaed6f..7a08061 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -24,16 +24,26 @@
Settings::Settings(const QString &configFile)
{
- path = configFile;
std::ifstream ifs(configFile.toStdString().c_str());
- toml::ParseResult pr = toml::parse(ifs);
+ if(ifs.is_open()) {
+ toml::ParseResult pr = toml::parse(ifs);
+
+ if(!pr.valid()) {
+ qWarning("Invalid configuration: %s", pr.errorReason.c_str());
+ return;
+ }
+
+ v = pr.value;
+ ifs.close();
- if(!pr.valid()) {
- qWarning("Invalid configuration: %s", pr.errorReason.c_str());
+ } else {
+ qWarning("Cannot open configuration: %s", qUtf8Printable(configFile));
return;
}
- v = pr.value;
+ path = configFile;
+ homeLocation = QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
+ settingsLocation = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
}
Settings::~Settings()
@@ -104,7 +114,8 @@ QVariant Settings::value(const QString &key, const QVariant &defaultValue) const
// check if key is a path, in which case replace '~' with the home location
if(key.endsWith(QLatin1String("path"), Qt::CaseInsensitive)) {
QString value = r.toString();
- value.replace('~', QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
+ value.replace("~settings", settingsLocation);
+ value.replace('~', homeLocation);
r = QVariant(value);
}
diff --git a/src/settings.h b/src/settings.h
index b536d62..12c508b 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -40,6 +40,8 @@ private:
toml::Value v;
QString path;
+ QString homeLocation;
+ QString settingsLocation;
};
#endif // SETTINGS_H