QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
UnitsFirstRunPrompt.qml
Go to the documentation of this file.
1import QtQuick
2import QtQuick.Layouts
3
4import QGroundControl
5import QGroundControl.FactControls
6import QGroundControl.Controls
7
8FirstRunPrompt {
9 title: qsTr("Measurement Units")
10 promptId: QGroundControl.corePlugin.unitsFirstRunPromptId
11
12 property real _margins: ScreenTools.defaultFontPixelHeight / 2
13 property var _unitsSettings: QGroundControl.settingsManager.unitsSettings
14 property var _rgFacts: [ _unitsSettings.horizontalDistanceUnits, _unitsSettings.verticalDistanceUnits, _unitsSettings.areaUnits, _unitsSettings.speedUnits, _unitsSettings.temperatureUnits ]
15 property var _rgLabels: [ qsTr("Horizontal Distance"), qsTr("Vertical Distance"), qsTr("Area"), qsTr("Speed"), qsTr("Temperature") ]
16 property int _cVisibleFacts: 0
17
18 Component.onCompleted: {
19 var cVisibleFacts = 0
20 for (var i=0; i<_rgFacts.length; i++) {
21 if (_rgFacts[i].visible) {
22 cVisibleFacts++
23 }
24 }
25 _cVisibleFacts = cVisibleFacts
26 }
27
28 function changeSystemOfUnits(metric) {
29 // Hack to force reload the ComboBoxes, otherwise they don't update
30 unitComboBoxRepeater.model = 0
31 unitComboBoxRepeater.model = _rgFacts.length
32
33 if (_unitsSettings.horizontalDistanceUnits.visible) {
34 _unitsSettings.horizontalDistanceUnits.value = metric ? UnitsSettings.HorizontalDistanceUnitsMeters : UnitsSettings.HorizontalDistanceUnitsFeet
35 }
36 if (_unitsSettings.verticalDistanceUnits.visible) {
37 _unitsSettings.verticalDistanceUnits.value = metric ? UnitsSettings.VerticalDistanceUnitsMeters : UnitsSettings.VerticalDistanceUnitsFeet
38 }
39 if (_unitsSettings.areaUnits.visible) {
40 _unitsSettings.areaUnits.value = metric ? UnitsSettings.AreaUnitsSquareMeters : UnitsSettings.AreaUnitsSquareFeet
41 }
42 if (_unitsSettings.speedUnits.visible) {
43 _unitsSettings.speedUnits.value = metric ? UnitsSettings.SpeedUnitsMetersPerSecond : UnitsSettings.SpeedUnitsFeetPerSecond
44 }
45 if (_unitsSettings.temperatureUnits.visible) {
46 _unitsSettings.temperatureUnits.value = metric ? UnitsSettings.TemperatureUnitsCelsius : UnitsSettings.TemperatureUnitsFarenheit
47 }
48 }
49
50 ColumnLayout {
51 id: settingsColumn
52 spacing: ScreenTools.defaultFontPixelHeight
53
54 QGCLabel {
55 id: unitsSectionLabel
56 text: qsTr("Choose the measurement units you want to use. You can also change it later in General Settings.")
57
58 Layout.preferredWidth: unitsGrid.width
59 wrapMode: Text.WordWrap
60 }
61
62 Rectangle {
63 Layout.preferredHeight: unitsGrid.height + (_margins * 2)
64 Layout.preferredWidth: unitsGrid.width + (_margins * 2)
65 color: qgcPal.windowShade
66 Layout.fillWidth: true
67
68 GridLayout {
69 id: unitsGrid
70 anchors.margins: _margins
71 anchors.top: parent.top
72 anchors.left: parent.left
73 rows: _cVisibleFacts + 1
74 flow: GridLayout.TopToBottom
75
76 QGCLabel { text: qsTr("System of units") }
77
78 Repeater {
79 model: _rgFacts.length
80 QGCLabel {
81 text: _rgLabels[index]
82 visible: _rgFacts[index].visible
83 }
84 }
85
86 QGCComboBox {
87 Layout.fillWidth: true
88 sizeToContents: true
89 model: [ qsTr("Metric System"), qsTr("Imperial System") ]
90 currentIndex: _unitsSettings.horizontalDistanceUnits.value === UnitsSettings.HorizontalDistanceUnitsMeters ? 0 : 1
91 onActivated: (index) => { changeSystemOfUnits(currentIndex === 0 /* metric */) }
92 }
93
94 Repeater {
95 id: unitComboBoxRepeater
96 model: _rgFacts.length
97 FactComboBox {
98 Layout.fillWidth: true
99 sizeToContents: true
100 fact: _rgFacts[index]
101 indexModel: false
102 visible: _rgFacts[index].visible
103 }
104 }
105 }
106 }
107 }
108}