diff options
author | Arseniy Movshev <dodoradio@outlook.com> | 2023-07-02 11:01:50 +0100 |
---|---|---|
committer | Arseniy Movshev <dodoradio@outlook.com> | 2023-07-02 11:20:42 +0100 |
commit | 67d83fe28cd71686cbfa2a6561c51c053b16d06d (patch) | |
tree | adede938d9308ee27492c094e1abeb2c121828bc | |
parent | deb5c14eed66b5e0d819136959345f43f7f925d0 (diff) |
Split settings into separate pages in preparation for further customisation settings
UI page is currently empty
Diffstat (limited to '')
-rw-r--r-- | src/SettingsPage.qml | 2 | ||||
-rw-r--r-- | src/main.qml | 3 | ||||
-rw-r--r-- | src/resources.qrc | 4 | ||||
-rw-r--r-- | src/settings/LoggerSettingsPage.qml | 107 | ||||
-rw-r--r-- | src/settings/RootSettingsPage.qml | 62 | ||||
-rw-r--r-- | src/settings/UiSettingsPage.qml | 39 |
6 files changed, 214 insertions, 3 deletions
diff --git a/src/SettingsPage.qml b/src/SettingsPage.qml index c2f6d2e..8dc14a1 100644 --- a/src/SettingsPage.qml +++ b/src/SettingsPage.qml @@ -57,7 +57,7 @@ Item { width: parent.width height: width*0.25 text: "Enable steps goal" - Component.onCompleted: checked = loggerSettings.heartrateSensorEnabled + Component.onCompleted: checked = loggerSettings.stepGoalEnabled } IntSelector { id: stepsGoalSelector diff --git a/src/main.qml b/src/main.qml index e59ed82..f44160f 100644 --- a/src/main.qml +++ b/src/main.qml @@ -22,6 +22,7 @@ import org.asteroid.controls 1.0 import org.asteroid.sensorlogd 1.0 import "graphs" +import "settings" Application { id: app @@ -143,7 +144,7 @@ Application { } Component { id: settingsPage - SettingsPage { + RootSettingsPage { } } } diff --git a/src/resources.qrc b/src/resources.qrc index 1515184..2b04841 100644 --- a/src/resources.qrc +++ b/src/resources.qrc @@ -1,7 +1,9 @@ <RCC> <qresource prefix="/"> <file>main.qml</file> - <file>SettingsPage.qml</file> + <file>settings/RootSettingsPage.qml</file> + <file>settings/LoggerSettingsPage.qml</file> + <file>settings/UiSettingsPage.qml</file> <file>graphs/BarGraph.qml</file> <file>graphs/HrGraph.qml</file> </qresource> diff --git a/src/settings/LoggerSettingsPage.qml b/src/settings/LoggerSettingsPage.qml new file mode 100644 index 0000000..6d5cb36 --- /dev/null +++ b/src/settings/LoggerSettingsPage.qml @@ -0,0 +1,107 @@ +/* + * 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 + +Item { + PageHeader { + text: "Logger Settings" + z: 5 + } + Flickable { + anchors.fill: parent + contentHeight: contentColumn.implicitHeight + Column { + id: contentColumn + anchors.fill: parent + + Item { width: parent.width; height: parent.width*0.2} + + LabeledSwitch { + id: stepsEnableSwitch + width: parent.width + height: width*0.25 + text: "Log step count" + Component.onCompleted: checked = loggerSettings.stepCounterEnabled + } + IntSelector { + id: stepsIntervalSelector + width: parent.width + height: width*0.25 + value: loggerSettings.stepCounterInterval/60000 + min: 5 + max: 60 + stepSize: 1 + unitMarker: "m" + } + LabeledSwitch { + id: stepsGoalEnableSwitch + width: parent.width + height: width*0.25 + text: "Enable steps goal" + Component.onCompleted: checked = loggerSettings.stepGoalEnabled + } + IntSelector { + id: stepsGoalSelector + width: parent.width + height: width*0.25 + value: loggerSettings.stepGoalTarget + min: 500 + max: 50000 + stepSize: 500 + unitMarker: " steps" + } + LabeledSwitch { + id: hrEnableSwitch + width: parent.width + height: width*0.25 + text: "Log heart rate" + Component.onCompleted: checked = loggerSettings.heartrateSensorEnabled + } + IntSelector { + id: hrIntervalSelector + width: parent.width + height: width*0.25 + value: loggerSettings.heartrateSensorInterval/60000 + min: 5 + max: 60 + stepSize: 1 + unitMarker: "m" + } + IconButton { + iconName: "ios-checkmark-circle-outline" + height: parent.width*0.2 + width: height + anchors.horizontalCenter: parent.horizontalCenter + onClicked: { + loggerSettings.stepCounterEnabled = stepsEnableSwitch.checked + loggerSettings.stepCounterInterval = stepsIntervalSelector.value*60000 + loggerSettings.stepGoalEnabled = stepsGoalEnableSwitch.checked + loggerSettings.stepGoalTarget = stepsGoalSelector.value + loggerSettings.heartrateSensorEnabled = hrEnableSwitch.checked + loggerSettings.heartrateSensorInterval = hrIntervalSelector.value*60000 + loggerSettings.reInitLogger() + pageStack.pop(pageStack.currentLayer) + } + } + } + } +} diff --git a/src/settings/RootSettingsPage.qml b/src/settings/RootSettingsPage.qml new file mode 100644 index 0000000..8e0504d --- /dev/null +++ b/src/settings/RootSettingsPage.qml @@ -0,0 +1,62 @@ +/* + * 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 + +Item { + PageHeader { + text: "Settings" + z: 5 + } + Flickable { + anchors.fill: parent + contentHeight: contentColumn.implicitHeight + Column { + id: contentColumn + anchors.fill: parent + + Item { width: parent.width; height: parent.width*0.2} + + ListItem { + title: "UI settings" + iconName: "ios-settings-outline" + onClicked: pageStack.push(uiSettingsPage) + } + ListItem { + title: "Logger settings" + iconName: "ios-settings-outline" + onClicked: pageStack.push(loggerSettingsPage) + } + + Item { width: parent.width; height: parent.width*0.2} + } + } + Component { + id: uiSettingsPage + UiSettingsPage { + } + } + Component { + id: loggerSettingsPage + LoggerSettingsPage { + } + } +} diff --git a/src/settings/UiSettingsPage.qml b/src/settings/UiSettingsPage.qml new file mode 100644 index 0000000..8abea6c --- /dev/null +++ b/src/settings/UiSettingsPage.qml @@ -0,0 +1,39 @@ +/* + * 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 + +Item { + PageHeader { + text: "UI Settings" + z: 5 + } + Flickable { + anchors.fill: parent + contentHeight: contentColumn.implicitHeight + Column { + id: contentColumn + anchors.fill: parent + + Item { width: parent.width; height: parent.width*0.2} + } + } +} |