aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Altimeter.qml62
-rw-r--r--src/SettingsPage.qml85
-rw-r--r--src/main.qml5
-rw-r--r--src/resources.qrc1
4 files changed, 153 insertions, 0 deletions
diff --git a/src/Altimeter.qml b/src/Altimeter.qml
new file mode 100644
index 0000000..ae71493
--- /dev/null
+++ b/src/Altimeter.qml
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2023 Arseniy Movshev <dodoradio@outlook.com>
+ * 2021 Timo Könnecke <github.com/eLtMosen>
+ * 2021 Darrel Griët <dgriet@gmail.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.9
+import QtSensors 5.11
+import org.asteroid.controls 1.0
+import org.asteroid.utils 1.0
+import Nemo.Configuration 1.0
+
+Item {
+ id: altimeterRoot
+
+
+ PressureSensor {
+ id: pressureSensor
+ active: true
+ }
+ IconButton {
+ onClicked: pageStack.push(settingsPage)
+ iconName: "ios-settings-outline"
+ width: parent.width*0.2
+ height: width
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: pressureText.top
+ }
+ Label {
+ id: pressureText
+ anchors.centerIn: parent
+ horizontalAlignment: Text.AlignHCenter
+ text: Math.round(pressureSensor.reading.pressure/12 + altimeterOffset.value)
+ font.pixelSize: parent.height / 4
+ }
+ ConfigurationValue {
+ id: altimeterOffset
+ key: "/org/asteroidos/sensors/altimeter-offset"
+ defaultValue: -8443
+ }
+ Label {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: pressureText.bottom
+ horizontalAlignment: Text.AlignHCenter
+ text: "m"
+ font.pixelSize: parent.height / 6
+ }
+}
diff --git a/src/SettingsPage.qml b/src/SettingsPage.qml
index c5c81f1..4d36e7f 100644
--- a/src/SettingsPage.qml
+++ b/src/SettingsPage.qml
@@ -42,6 +42,13 @@ Item {
icon: "ios-settings-outline"
onClicked: pageStack.push(barometerAdjustDialog,{})
}
+ LabeledActionButton {
+ width: parent.width
+ height: width*0.2
+ text: qsTr("Adjust altimeter")
+ icon: "ios-settings-outline"
+ onClicked: pageStack.push(altimeterAdjustDialog,{})
+ }
}
}
PressureSensor {
@@ -53,6 +60,11 @@ Item {
key: "/org/asteroidos/sensors/barometer-offset"
defaultValue: 0
}
+ ConfigurationValue {
+ id: altimeterOffset
+ key: "/org/asteroidos/sensors/altimeter-offset"
+ defaultValue: -8443
+ }
Component {
id: barometerAdjustDialog
Item {
@@ -135,4 +147,77 @@ Item {
}
}
}
+ Component {
+ id: altimeterAdjustDialog
+ Item {
+ id: root
+ Row {
+ id: valueSelector
+ anchors {
+ left: parent.left
+ leftMargin: DeviceInfo.hasRoundScreen ? Dims.w(5) : 0
+ right: parent.right
+ rightMargin: DeviceInfo.hasRoundScreen ? Dims.w(5) : 0
+ verticalCenter: parent.verticalCenter
+ }
+ height: parent.height*0.6
+
+ CircularSpinner {
+ id: thousandsSelector
+ height: parent.height
+ width: parent.width/3
+ model: 10
+ showSeparator: false
+ delegate: SpinnerDelegate { text: index }
+ }
+ CircularSpinner {
+ id: hundredsSelector
+ height: parent.height
+ width: parent.width/4
+ model: 10
+ showSeparator: false
+ delegate: SpinnerDelegate { text: index }
+ }
+ CircularSpinner {
+ id: tensSelector
+ height: parent.height
+ width: parent.width/4
+ model: 10
+ delegate: SpinnerDelegate { text: index }
+ }
+ CircularSpinner {
+ id: onesSelector
+ height: parent.height
+ width: parent.width/4
+ model: 10
+ showSeparator: true
+ delegate: SpinnerDelegate { text: index }
+ }
+ }
+
+ Component.onCompleted: {
+ var currValue = Math.round(altimeterOffset.value + pressureSensor.reading.pressure/12);
+ console.log(currValue)
+ thousandsSelector.currentIndex = Math.floor((currValue/1000))
+ hundredsSelector.currentIndex = Math.floor((currValue/100)%10)
+ tensSelector.currentIndex = Math.floor((currValue/10)%10)
+ onesSelector.currentIndex = Math.floor((currValue)%10)
+ }
+
+ IconButton {
+ iconName: "ios-checkmark-circle-outline"
+ anchors {
+ bottom: parent.bottom
+ horizontalCenter: parent.horizontalCenter
+ bottomMargin: Dims.iconButtonMargin
+ }
+
+ onClicked: {
+ var newValue = thousandsSelector.currentIndex*1000 + hundredsSelector.currentIndex*100 + tensSelector.currentIndex*10 + onesSelector.currentIndex
+ altimeterOffset.value = newValue - Math.round(pressureSensor.reading.pressure/12)
+ pageStack.pop(pageStack.currentLayer)
+ }
+ }
+ }
+ }
}
diff --git a/src/main.qml b/src/main.qml
index 5471752..2457d8c 100644
--- a/src/main.qml
+++ b/src/main.qml
@@ -55,6 +55,11 @@ Application {
width: pv.width
property string name: qsTr("Barometer")
}
+ Altimeter {
+ height: pv.height
+ width: pv.width
+ property string name: qsTr("Altimeter")
+ }
}
path: Path {
diff --git a/src/resources.qrc b/src/resources.qrc
index 804fc9e..6b7d9fa 100644
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -1,6 +1,7 @@
<RCC>
<qresource prefix="/">
<file>main.qml</file>
+ <file>Altimeter.qml</file>
<file>Compass.qml</file>
<file>Barometer.qml</file>
<file>compass.svg</file>