# The name of your application
TARGET = harbour-pedalo
+VERSION_MAJOR = 0
+VERSION_MINOR = 1
+VERSION_BUILD = 1
+
+#Target version
+VERSION = $${VERSION_MAJOR}.$${VERSION_MINOR}-$${VERSION_BUILD}
+
+DEFINES += "VERSION_MAJOR=$$VERSION_MAJOR" \
+ "VERSION_MINOR=$$VERSION_MINOR" \
+ "VERSION_BUILD=$$VERSION_BUILD" \
+ "VERSION=\\\"$$VERSION\\\""
+
CONFIG += sailfishapp
SOURCES += src/harbour-pedalo.cpp \
src/journey.cpp \
src/journeymodel.cpp \
- src/status.cpp
+ src/status.cpp \
+ src/settings.cpp
DISTFILES += qml/harbour-pedalo.qml \
qml/cover/CoverPage.qml \
HEADERS += \
src/journey.h \
src/journeymodel.h \
- src/status.h
+ src/status.h \
+ src/settings.h \
+ src/harbour-pedalo.h
import QtQuick 2.0
import Sailfish.Silica 1.0
import "pages"
+import harbour.pedalo.settings 1.0
ApplicationWindow
{
#include "journey.h"
#include "journeymodel.h"
#include "status.h"
+#include "settings.h"
+
+#include "harbour-pedalo.h"
int main(int argc, char *argv[])
{
// To display the view, call "show()" (will show fullscreen on device).
QScopedPointer<QGuiApplication> app(SailfishApp::application(argc, argv));
+ // These values are used by QSettings to access the config file in
+ // /home/nemo/.local/share/flypig/harbour-pedalo.conf
+ //QCoreApplication::setOrganizationName("flypig");
+ QCoreApplication::setOrganizationDomain("www.flypig.co.uk");
+ QCoreApplication::setApplicationName(APP_NAME);
+
+ Settings::instantiate();
+ qmlRegisterSingletonType<Settings>("harbour.pedalo.settings", 1, 0, "Settings", Settings::provider);
JourneyModel journeys;
Status currentStatus;
+ Settings::getInstance().setMainStatus(currentStatus);
+ Settings::getInstance().loadSettings();
QFile file;
- file.setFileName(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/journeys.csv");
+ file.setFileName(Settings::getConfigDir() + "/journeys.csv");
journeys.importFromFile(file);
QScopedPointer<QQuickView> view(SailfishApp::createView());
// Write out the journey data
QDir dir;
- dir.mkpath(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation));
- file.setFileName(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/journeys.csv");
+ dir.mkpath(Settings::getConfigDir());
+ file.setFileName(Settings::getConfigDir() + "/journeys.csv");
qDebug() << "File saved as: " << file.fileName();
journeys.exportToFile(file);
+ Settings::getInstance().saveSettings();
+
return result;
}
--- /dev/null
+#ifndef HARBOURPEDALO_H
+#define HARBOURPEDALO_H
+
+#define APP_NAME "harbour-pedalo"
+
+#endif // HARBOURPEDALO_H
--- /dev/null
+#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();
+}
--- /dev/null
+#ifndef SETTINGS_H
+#define SETTINGS_H
+
+#include <QObject>
+#include <QQmlEngine>
+#include <QSettings>
+
+#include "status.h"
+
+class Settings : public QObject
+{
+ Q_OBJECT
+public:
+ explicit Settings(QObject *parent = nullptr);
+ ~Settings();
+
+ static void instantiate(QObject *parent = nullptr);
+ static Settings & getInstance();
+ static QObject * provider(QQmlEngine *engine, QJSEngine *scriptEngine);
+
+ Q_INVOKABLE static QString getConfigDir();
+
+ void loadSettings();
+ void saveSettings();
+
+ void setMainStatus(Status & value);
+signals:
+
+public slots:
+
+private:
+ static Settings * instance;
+ QSettings settings;
+
+ // Configurable values
+ Status * mainStatus;
+};
+
+#endif // SETTINGS_H