From 67d83fe28cd71686cbfa2a6561c51c053b16d06d Mon Sep 17 00:00:00 2001 From: Arseniy Movshev Date: Sun, 2 Jul 2023 11:01:50 +0100 Subject: Split settings into separate pages in preparation for further customisation settings UI page is currently empty --- src/settings/LoggerSettingsPage.qml | 107 ++++++++++++++++++++++++++++++++++++ src/settings/RootSettingsPage.qml | 62 +++++++++++++++++++++ src/settings/UiSettingsPage.qml | 39 +++++++++++++ 3 files changed, 208 insertions(+) create mode 100644 src/settings/LoggerSettingsPage.qml create mode 100644 src/settings/RootSettingsPage.qml create mode 100644 src/settings/UiSettingsPage.qml (limited to 'src/settings') 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 + * 2019 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 + * 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 . + */ + +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 + * 2019 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 + * 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 . + */ + +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 + * 2019 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 + * 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 . + */ + +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} + } + } +} -- cgit v1.2.3-54-g00ecf