Store current journey details in persistent settings
[harbour-pedalo.git] / src / settings.cpp
diff --git a/src/settings.cpp b/src/settings.cpp
new file mode 100644 (file)
index 0000000..0998d37
--- /dev/null
@@ -0,0 +1,56 @@
+#include <QDesktopServices>
+#include <QDateTime>
+#include <QDebug>
+
+#include "settings.h"
+
+Settings * Settings::instance = nullptr;
+
+Settings::Settings(QObject *parent) : QObject(parent),
+    settings(this),
+    mainStatus(nullptr)
+{
+}
+
+Settings::~Settings() {
+}
+
+void Settings::instantiate(QObject *parent) {
+    if (instance == nullptr) {
+        instance = new Settings(parent);
+    }
+}
+
+Settings & Settings::getInstance() {
+    return *instance;
+}
+
+QObject * Settings::provider(QQmlEngine *engine, QJSEngine *scriptEngine) {
+    Q_UNUSED(engine)
+    Q_UNUSED(scriptEngine)
+
+    return instance;
+}
+
+QString Settings::getConfigDir() {
+    return QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
+}
+
+void Settings::setMainStatus(Status &value) {
+    mainStatus = &value;
+}
+
+void Settings::loadSettings() {
+    if (mainStatus != nullptr) {
+        mainStatus->setCycling(settings.value("status/cycling", false).toBool());
+        mainStatus->setStartTime(settings.value("status/startTime", QDateTime::currentMSecsSinceEpoch()).toULongLong());
+    }
+}
+
+void Settings::saveSettings() {
+    if (mainStatus != nullptr) {
+        settings.setValue("status/cycling", mainStatus->getCycling());
+        settings.setValue("status/startTime", mainStatus->getStartTime());
+    }
+    settings.sync();
+}