5import QGroundControl.FactControls
6import QGroundControl.Controls
9 title: qsTr("Measurement Units")
10 promptId: QGroundControl.corePlugin.unitsFirstRunPromptId
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
18 Component.onCompleted: {
20 for (var i=0; i<_rgFacts.length; i++) {
21 if (_rgFacts[i].visible) {
25 _cVisibleFacts = cVisibleFacts
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
33 if (_unitsSettings.horizontalDistanceUnits.visible) {
34 _unitsSettings.horizontalDistanceUnits.value = metric ? UnitsSettings.HorizontalDistanceUnitsMeters : UnitsSettings.HorizontalDistanceUnitsFeet
36 if (_unitsSettings.verticalDistanceUnits.visible) {
37 _unitsSettings.verticalDistanceUnits.value = metric ? UnitsSettings.VerticalDistanceUnitsMeters : UnitsSettings.VerticalDistanceUnitsFeet
39 if (_unitsSettings.areaUnits.visible) {
40 _unitsSettings.areaUnits.value = metric ? UnitsSettings.AreaUnitsSquareMeters : UnitsSettings.AreaUnitsSquareFeet
42 if (_unitsSettings.speedUnits.visible) {
43 _unitsSettings.speedUnits.value = metric ? UnitsSettings.SpeedUnitsMetersPerSecond : UnitsSettings.SpeedUnitsFeetPerSecond
45 if (_unitsSettings.temperatureUnits.visible) {
46 _unitsSettings.temperatureUnits.value = metric ? UnitsSettings.TemperatureUnitsCelsius : UnitsSettings.TemperatureUnitsFarenheit
52 spacing: ScreenTools.defaultFontPixelHeight
56 text: qsTr("Choose the measurement units you want to use. You can also change it later in General Settings.")
58 Layout.preferredWidth: unitsGrid.width
59 wrapMode: Text.WordWrap
63 Layout.preferredHeight: unitsGrid.height + (_margins * 2)
64 Layout.preferredWidth: unitsGrid.width + (_margins * 2)
65 color: qgcPal.windowShade
66 Layout.fillWidth: true
70 anchors.margins: _margins
71 anchors.top: parent.top
72 anchors.left: parent.left
73 rows: _cVisibleFacts + 1
74 flow: GridLayout.TopToBottom
76 QGCLabel { text: qsTr("System of units") }
79 model: _rgFacts.length
81 text: _rgLabels[index]
82 visible: _rgFacts[index].visible
87 Layout.fillWidth: 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 */) }
95 id: unitComboBoxRepeater
96 model: _rgFacts.length
98 Layout.fillWidth: true
100 fact: _rgFacts[index]
102 visible: _rgFacts[index].visible