5import QGroundControl.FactControls
6import QGroundControl.Controls
9 title: qsTr("Preferences")
10 promptId: QGroundControl.corePlugin.initialSetupPromptId
12 property var _appSettings: QGroundControl.settingsManager.appSettings
13 property var _unitsSettings: QGroundControl.settingsManager.unitsSettings
14 property bool _multipleFirmware: !QGroundControl.singleFirmwareSupport
15 property bool _multipleVehicleTypes: !QGroundControl.singleVehicleSupport
16 property var _rgFacts: [ _unitsSettings.horizontalDistanceUnits, _unitsSettings.verticalDistanceUnits, _unitsSettings.areaUnits, _unitsSettings.speedUnits, _unitsSettings.temperatureUnits ]
17 property var _rgLabels: [ qsTr("Horizontal Distance"), qsTr("Vertical Distance"), qsTr("Area"), qsTr("Speed"), qsTr("Temperature") ]
19 function changeSystemOfUnits(metric) {
20 unitComboBoxRepeater.model = 0
21 unitComboBoxRepeater.model = _rgFacts.length
23 if (_unitsSettings.horizontalDistanceUnits.userVisible) {
24 _unitsSettings.horizontalDistanceUnits.value = metric ? UnitsSettings.HorizontalDistanceUnitsMeters : UnitsSettings.HorizontalDistanceUnitsFeet
26 if (_unitsSettings.verticalDistanceUnits.userVisible) {
27 _unitsSettings.verticalDistanceUnits.value = metric ? UnitsSettings.VerticalDistanceUnitsMeters : UnitsSettings.VerticalDistanceUnitsFeet
29 if (_unitsSettings.areaUnits.userVisible) {
30 _unitsSettings.areaUnits.value = metric ? UnitsSettings.AreaUnitsSquareMeters : UnitsSettings.AreaUnitsSquareFeet
32 if (_unitsSettings.speedUnits.userVisible) {
33 _unitsSettings.speedUnits.value = metric ? UnitsSettings.SpeedUnitsMetersPerSecond : UnitsSettings.SpeedUnitsFeetPerSecond
35 if (_unitsSettings.temperatureUnits.userVisible) {
36 _unitsSettings.temperatureUnits.value = metric ? UnitsSettings.TemperatureUnitsCelsius : UnitsSettings.TemperatureUnitsFarenheit
41 spacing: ScreenTools.defaultFontPixelHeight
44 Layout.fillWidth: true
45 heading: qsTr("Vehicle Preferences")
46 headingDescription: qsTr("Select the firmware and vehicle type you use. This tailors the interface for a simpler experience. Choose 'All' if you use multiple types.")
48 LabelledFactComboBox {
49 Layout.fillWidth: true
50 label: qsTr("Preferred Firmware")
51 fact: _appSettings.preferredFirmwareClass
53 visible: _multipleFirmware
56 LabelledFactComboBox {
57 Layout.fillWidth: true
58 label: qsTr("Preferred Vehicle")
59 fact: _appSettings.preferredVehicleClass
61 visible: _multipleVehicleTypes
64 LabelledFactComboBox {
65 Layout.fillWidth: true
66 label: qsTr("Offline Firmware")
67 fact: _appSettings.offlineEditingFirmwareClass
69 visible: _multipleFirmware && _appSettings.preferredFirmwareClass.value === 0
72 LabelledFactComboBox {
73 Layout.fillWidth: true
74 label: qsTr("Offline Vehicle")
75 fact: _appSettings.offlineEditingVehicleClass
77 visible: _multipleVehicleTypes && _appSettings.preferredVehicleClass.value === 0
82 Layout.fillWidth: true
83 heading: qsTr("Measurement Units")
84 headingDescription: qsTr("Choose the measurement units you want to use. You can also change it later in General Settings.")
87 Layout.fillWidth: true
88 spacing: ScreenTools.defaultFontPixelWidth * 2
91 Layout.fillWidth: true
92 text: qsTr("System of units")
97 model: [ qsTr("Metric System"), qsTr("Imperial System") ]
98 currentIndex: _unitsSettings.horizontalDistanceUnits.value === UnitsSettings.HorizontalDistanceUnitsMeters ? 0 : 1
99 onActivated: (index) => { changeSystemOfUnits(currentIndex === 0) }
104 id: unitComboBoxRepeater
105 model: _rgFacts.length
107 LabelledFactComboBox {
108 Layout.fillWidth: true
109 label: _rgLabels[index]
110 fact: _rgFacts[index]
112 visible: _rgFacts[index].userVisible