aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorArseniy Movshev <dodoradio@outlook.com>2023-07-02 11:21:12 +0100
committerArseniy Movshev <dodoradio@outlook.com>2023-07-02 11:30:31 +0100
commitda300be2aa8cada0969d68c22c036aec73c8ec2e (patch)
treebf70bc7ca5a3338baeac4cba42b449dc53715cb9 /src
parent67d83fe28cd71686cbfa2a6561c51c053b16d06d (diff)
Make the main preview page more modular
this splits off the graphs for different sensors into separate files which should make maintenance a bit easier
Diffstat (limited to 'src')
-rw-r--r--src/heartrate/HeartratePreview.qml42
-rw-r--r--src/main.qml74
-rw-r--r--src/resources.qrc2
-rw-r--r--src/stepCounter/StepCounterPreview.qml85
4 files changed, 135 insertions, 68 deletions
diff --git a/src/heartrate/HeartratePreview.qml b/src/heartrate/HeartratePreview.qml
new file mode 100644
index 0000000..7b79264
--- /dev/null
+++ b/src/heartrate/HeartratePreview.qml
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2023 Arseniy Movshev <dodoradio@outlook.com>
+ * 2019 Florent Revest <revestflo@gmail.com>
+ *
+ * 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
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import org.asteroid.controls 1.0
+
+import org.asteroid.sensorlogd 1.0
+
+import "../graphs"
+
+Column {
+ Label {
+ anchors {
+ left: parent.left
+ margins: app.width*0.1
+ }
+ text: "Heartrate"
+ }
+
+ Item { width: parent.width; height: parent.width*0.1}
+
+ HrGraph {
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: parent.width*0.9
+ height: app.height*2/3
+ }
+}
diff --git a/src/main.qml b/src/main.qml
index f44160f..491d246 100644
--- a/src/main.qml
+++ b/src/main.qml
@@ -23,6 +23,8 @@ import org.asteroid.sensorlogd 1.0
import "graphs"
import "settings"
+import "stepCounter"
+import "heartrate"
Application {
id: app
@@ -36,7 +38,6 @@ Application {
id: loggerSettings
}
-
LayerStack {
id: pageStack
anchors.fill: parent
@@ -55,79 +56,16 @@ Application {
Column {
id: contentColumn
anchors.fill: parent
-
Item { width: parent.width; height: parent.width*0.2}
- Label {
- width: parent.width*0.8
- anchors.horizontalCenter: parent.horizontalCenter
- text: stepsDataLoader.getTodayTotal() ? "You've walked " + stepsDataLoader.todayTotal + " steps today, keep it up!" : "You haven't yet logged any steps today"
- wrapMode: Text.WordWrap
- horizontalAlignment: Text.AlignHCenter
+ StepCounterPreview {
+ width: parent.width
}
Item { width: parent.width; height: parent.width*0.1}
- Label {
- anchors {
- left: parent.left
- margins: app.width*0.1
- }
- text: "Steps"
- }
-
- BarGraph {
- id: stepsGraph
- anchors.horizontalCenter: parent.horizontalCenter
- width: parent.width*0.85
- height: app.width*3/5
- StepsDataLoader {
- id: stepsDataLoader
- Component.onCompleted: {
- triggerDaemonRecording()
- stepsGraph.loadData()
- }
- }
- function loadData() {
- var currDate = new Date()
- currDate.setDate(currDate.getDate() - 7)
- for (var i = 0; i < 7; i++) {
- currDate.setDate(currDate.getDate() + 1)
- console.log(currDate)
- var currvalue = stepsDataLoader.getTotalForDate(currDate)
- if (currvalue > 0 || valuesArr.length > 0) {
- if (currvalue > maxValue) {
- maxValue = currvalue
- }
- valuesArr.push(currvalue)
- labelsArr.push(weekday[currDate.getDay()])
- }
- }
-
- //this code figures out graph scaling
- var powTen = Math.floor(Math.log10(maxValue))
- divisionsInterval = Math.pow(10,powTen)
- console.log(Math.floor(maxValue/divisionsInterval))
- maxValue = divisionsInterval*Math.floor(maxValue/divisionsInterval) + (divisionsInterval/5)*Math.ceil((maxValue%divisionsInterval)/(divisionsInterval/5))
- divisionsCount = Math.floor(maxValue/divisionsInterval) + 1
- console.log(maxValue,divisionsInterval,divisionsCount)
- dataLoadingDone()
- }
- indicatorLineHeight: loggerSettings.stepGoalEnabled ? loggerSettings.stepGoalTarget : 0
- }
-
- Item { width: parent.width; height: parent.width*0.1}
- Label {
- anchors {
- left: parent.left
- margins: app.width*0.1
- }
- text: "Heartrate"
- }
- HrGraph {
- anchors.horizontalCenter: parent.horizontalCenter
- width: parent.width*0.9
- height: app.height*2/3
+ HeartratePreview {
+ width: parent.width
}
ListItem {
diff --git a/src/resources.qrc b/src/resources.qrc
index 2b04841..64a9f5f 100644
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -1,6 +1,8 @@
<RCC>
<qresource prefix="/">
<file>main.qml</file>
+ <file>stepCounter/StepCounterPreview.qml</file>
+ <file>heartrate/HeartratePreview.qml</file>
<file>settings/RootSettingsPage.qml</file>
<file>settings/LoggerSettingsPage.qml</file>
<file>settings/UiSettingsPage.qml</file>
diff --git a/src/stepCounter/StepCounterPreview.qml b/src/stepCounter/StepCounterPreview.qml
new file mode 100644
index 0000000..ed9a999
--- /dev/null
+++ b/src/stepCounter/StepCounterPreview.qml
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2023 Arseniy Movshev <dodoradio@outlook.com>
+ * 2019 Florent Revest <revestflo@gmail.com>
+ *
+ * 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
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.15
+import org.asteroid.controls 1.0
+
+import org.asteroid.sensorlogd 1.0
+
+import "../graphs"
+
+Column {
+ property var weekday: ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
+
+ Label {
+ width: parent.width*0.8
+ anchors.horizontalCenter: parent.horizontalCenter
+ text: stepsDataLoader.getTodayTotal() ? "You've walked " + stepsDataLoader.todayTotal + " steps today, keep it up!" : "You haven't yet logged any steps today"
+ wrapMode: Text.WordWrap
+ horizontalAlignment: Text.AlignHCenter
+ }
+
+ Item { width: parent.width; height: parent.width*0.1}
+ Label {
+ anchors {
+ left: parent.left
+ margins: app.width*0.1
+ }
+ text: "Steps"
+ }
+
+ BarGraph {
+ id: stepsGraph
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: parent.width*0.85
+ height: app.width*3/5
+ StepsDataLoader {
+ id: stepsDataLoader
+ Component.onCompleted: {
+ triggerDaemonRecording()
+ stepsGraph.loadData()
+ }
+ }
+ function loadData() {
+ var currDate = new Date()
+ currDate.setDate(currDate.getDate() - 7)
+ for (var i = 0; i < 7; i++) {
+ currDate.setDate(currDate.getDate() + 1)
+ console.log(currDate)
+ var currvalue = stepsDataLoader.getTotalForDate(currDate)
+ if (currvalue > 0 || valuesArr.length > 0) {
+ if (currvalue > maxValue) {
+ maxValue = currvalue
+ }
+ valuesArr.push(currvalue)
+ labelsArr.push(weekday[currDate.getDay()])
+ }
+ }
+
+ //this code figures out graph scaling
+ var powTen = Math.floor(Math.log10(maxValue))
+ divisionsInterval = Math.pow(10,powTen)
+ console.log(Math.floor(maxValue/divisionsInterval))
+ maxValue = divisionsInterval*Math.floor(maxValue/divisionsInterval) + (divisionsInterval/5)*Math.ceil((maxValue%divisionsInterval)/(divisionsInterval/5))
+ divisionsCount = Math.floor(maxValue/divisionsInterval) + 1
+ console.log(maxValue,divisionsInterval,divisionsCount)
+ dataLoadingDone()
+ }
+ indicatorLineHeight: loggerSettings.stepGoalEnabled ? loggerSettings.stepGoalTarget : 0
+ }
+}