From 737a0f6f12ac10db634f6d5249ae35a1409f0b4b Mon Sep 17 00:00:00 2001 From: Florent Revest Date: Mon, 12 Jun 2017 01:26:43 +0200 Subject: Vastly simplify asteroid-stopwatch.pro and main.cpp thanks to the new AsteroidApp module --- asteroid-stopwatch.pro | 34 ++++------------------------------ main.cpp | 17 ++++------------- 2 files changed, 8 insertions(+), 43 deletions(-) diff --git a/asteroid-stopwatch.pro b/asteroid-stopwatch.pro index 600a861..ecb1f21 100644 --- a/asteroid-stopwatch.pro +++ b/asteroid-stopwatch.pro @@ -1,35 +1,9 @@ -TEMPLATE = app -QT += qml quick -CONFIG += link_pkgconfig -PKGCONFIG += qdeclarative5-boostable +TARGET = asteroid-stopwatch +CONFIG += asteroidapp SOURCES += main.cpp RESOURCES += resources.qrc OTHER_FILES += main.qml -lupdate_only{ - SOURCES = i18n/asteroid-stopwatch.desktop.h -} - -# Needed for lupdate -TRANSLATIONS = i18n/asteroid-stopwatch.de_DE.ts \ - i18n/asteroid-stopwatch.es.ts \ - i18n/asteroid-stopwatch.fa.ts \ - i18n/asteroid-stopwatch.fr.ts \ - i18n/asteroid-stopwatch.ko.ts \ - i18n/asteroid-stopwatch.nl_NL.ts \ - i18n/asteroid-stopwatch.pl.ts \ - i18n/asteroid-stopwatch.pt_BR.ts \ - i18n/asteroid-stopwatch.ru.ts \ - i18n/asteroid-stopwatch.sv.ts \ - i18n/asteroid-stopwatch.uk.ts - -TARGET = asteroid-stopwatch -target.path = /usr/bin/ - -desktop.commands = bash $$PWD/i18n/generate-desktop.sh $$PWD asteroid-stopwatch.desktop -desktop.files = $$OUT_PWD/asteroid-stopwatch.desktop -desktop.path = /usr/share/applications -desktop.CONFIG = no_check_exist - -INSTALLS += target desktop +lupdate_only{ SOURCES = i18n/$$TARGET.desktop.h } +TRANSLATIONS = $$files(i18n/$$TARGET.*.ts) diff --git a/main.cpp b/main.cpp index f710ec4..a44544c 100644 --- a/main.cpp +++ b/main.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015 - Florent Revest + * Copyright (C) 2017 - Florent Revest * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,18 +15,9 @@ * along with this program. If not, see . */ -#include -#include -#include -#include +#include -Q_DECL_EXPORT int main(int argc, char *argv[]) +int main(int argc, char *argv[]) { - QScopedPointer app(MDeclarativeCache::qApplication(argc, argv)); - QScopedPointer view(MDeclarativeCache::qQuickView()); - view->setSource(QUrl("qrc:/main.qml")); - view->setTitle("Stopwatch"); - view->resize(app->primaryScreen()->size()); - view->show(); - return app->exec(); + return AsteroidApp::main(argc, argv); } -- cgit v1.2.3-54-g00ecf From 941e702b9d244a9f469bbdef531dffa1c6f3eac4 Mon Sep 17 00:00:00 2001 From: Florent Revest Date: Mon, 12 Jun 2017 02:28:12 +0200 Subject: Use persistent values to keep stopwatch counting/paused even when the app is closed --- main.qml | 51 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/main.qml b/main.qml index 9c7c215..92fdf3f 100644 --- a/main.qml +++ b/main.qml @@ -20,6 +20,7 @@ import QtQuick 2.5 import org.asteroid.controls 1.0 +import org.nemomobile.configuration 1.0 Application { id: app @@ -27,9 +28,21 @@ Application { centerColor: "#b01c7e" outerColor: "#420a2f" - property bool running - property var previousTime - property int elapsed: 0 + ConfigurationValue { + id: previousTime + key: "/stopwatch/previousTime" + defaultValue: -1 + } + ConfigurationValue { + id: elapsed + key: "/stopwatch/elapsed" + defaultValue: -1 + } + ConfigurationValue { + id: running + key: "/stopwatch/running" + defaultValue: false + } function zeroPad(n) { return (n < 10 ? "0" : "") + n @@ -56,7 +69,7 @@ Application { id: mainPage anchors.fill: parent - state: "zero" + state: running.value ? "running" : elapsed.value == -1 ? "zero" : "paused" states: [ State { name: "zero" }, State { name: "running" }, @@ -67,7 +80,7 @@ Application { id: elapsedLabel textFormat: Text.RichText anchors.centerIn: parent - text: toTimeString(elapsed) + text: toTimeString(elapsed.value) font.pixelSize: parent.height*0.25 color: "#FFFFFF" horizontalAlignment: Text.AlignHCenter @@ -84,18 +97,19 @@ Application { MouseArea { anchors.fill: parent onClicked: { - switch (mainPage.state) { + console.log("from:" + mainPage.state + " " + elapsed.value + " " + running.value + " " + previousTime.value) + switch(mainPage.state) { case "zero": case "paused": - previousTime = new Date; - stopwatch.start(); - mainPage.state = "running"; + var curTime = new Date + previousTime.value = curTime.getTime() + running.value = true break; case "running": - mainPage.state = "paused"; - stopwatch.stop(); + running.value = false break; } + console.log("from:" + mainPage.state + " " + elapsed.value + " " + running.value + " " + previousTime.value) } } @@ -114,26 +128,21 @@ Application { top: parent.top } - onClicked: { - elapsed = 0; - mainPage.state = "zero" - } + onClicked: elapsed.value = -1 } } Timer { - id: stopwatch - interval: 100 repeat: true - running: false + running: mainPage.state == "running" triggeredOnStart: true onTriggered: { var currentTime = new Date - var delta = (currentTime.getTime() - previousTime.getTime()) - previousTime = currentTime - elapsed += delta + var delta = (currentTime.getTime() - previousTime.value) + previousTime.value = currentTime.getTime() + elapsed.value += delta } } } -- cgit v1.2.3-54-g00ecf