Add images to buttons on main page
[harbour-pedalo.git] / src / settings.cpp
1 #include <QDesktopServices>
2 #include <QDateTime>
3 #include <QDebug>
4 #include <sailfishapp.h>
5 #include <mlite5/MGConfItem>
6
7 #include "settings.h"
8
9 Settings * Settings::instance = nullptr;
10
11 Settings::Settings(QObject *parent) : QObject(parent),
12 settings(this),
13 mainStatus(nullptr)
14 {
15 QScopedPointer<MGConfItem> ratioItem(new MGConfItem("/desktop/sailfish/silica/theme_pixel_ratio"));
16 pixelRatio = ratioItem->value(1.0).toDouble();
17 QString dir;
18 if (pixelRatio > 1.75) {
19 dir = "2.0";
20 }
21 else if (pixelRatio > 1.5) {
22 dir = "1.75";
23 }
24 else if (pixelRatio > 1.25) {
25 dir = "1.5";
26 }
27 else if (pixelRatio > 1.0) {
28 dir = "1.25";
29 }
30 else {
31 dir = "1.0";
32 }
33
34 imageDir = SailfishApp::pathTo("qml/images/z" + dir).toString(QUrl::RemoveScheme) + "/";
35 qDebug() << "Image folder: " << imageDir;
36 }
37
38 Settings::~Settings() {
39 }
40
41 void Settings::instantiate(QObject *parent) {
42 if (instance == nullptr) {
43 instance = new Settings(parent);
44 }
45 }
46
47 Settings & Settings::getInstance() {
48 return *instance;
49 }
50
51 QObject * Settings::provider(QQmlEngine *engine, QJSEngine *scriptEngine) {
52 Q_UNUSED(engine)
53 Q_UNUSED(scriptEngine)
54
55 return instance;
56 }
57
58 QString Settings::getConfigDir() {
59 return QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
60 }
61
62 QString Settings::getImageDir() const {
63 return imageDir;
64 }
65 QString Settings::getImageUrl(const QString &id) const {
66 return imageDir + id + ".png";
67 }
68
69 void Settings::setMainStatus(Status &value) {
70 mainStatus = &value;
71 }
72
73 void Settings::loadSettings() {
74 if (mainStatus != nullptr) {
75 mainStatus->setCycling(settings.value("status/cycling", false).toBool());
76 mainStatus->setStartTime(settings.value("status/startTime", QDateTime::currentMSecsSinceEpoch()).toULongLong());
77 }
78 }
79
80 void Settings::saveSettings() {
81 if (mainStatus != nullptr) {
82 settings.setValue("status/cycling", mainStatus->getCycling());
83 settings.setValue("status/startTime", mainStatus->getStartTime());
84 }
85 settings.sync();
86 }