diff options
author | Arseniy Movshev <dodoradio@outlook.com> | 2023-07-02 11:21:12 +0100 |
---|---|---|
committer | Arseniy Movshev <dodoradio@outlook.com> | 2023-07-02 11:30:31 +0100 |
commit | da300be2aa8cada0969d68c22c036aec73c8ec2e (patch) | |
tree | bf70bc7ca5a3338baeac4cba42b449dc53715cb9 | |
parent | 67d83fe28cd71686cbfa2a6561c51c053b16d06d (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
-rw-r--r-- | src/heartrate/HeartratePreview.qml | 42 | ||||
-rw-r--r-- | src/main.qml | 74 | ||||
-rw-r--r-- | src/resources.qrc | 2 | ||||
-rw-r--r-- | src/stepCounter/StepCounterPreview.qml | 85 |
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 + } +} |