QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
InitialSetupPrompt.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("Preferences")
10 promptId: QGroundControl.corePlugin.initialSetupPromptId
11
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") ]
18
19 function changeSystemOfUnits(metric) {
20 unitComboBoxRepeater.model = 0
21 unitComboBoxRepeater.model = _rgFacts.length
22
23 if (_unitsSettings.horizontalDistanceUnits.userVisible) {
24 _unitsSettings.horizontalDistanceUnits.value = metric ? UnitsSettings.HorizontalDistanceUnitsMeters : UnitsSettings.HorizontalDistanceUnitsFeet
25 }
26 if (_unitsSettings.verticalDistanceUnits.userVisible) {
27 _unitsSettings.verticalDistanceUnits.value = metric ? UnitsSettings.VerticalDistanceUnitsMeters : UnitsSettings.VerticalDistanceUnitsFeet
28 }
29 if (_unitsSettings.areaUnits.userVisible) {
30 _unitsSettings.areaUnits.value = metric ? UnitsSettings.AreaUnitsSquareMeters : UnitsSettings.AreaUnitsSquareFeet
31 }
32 if (_unitsSettings.speedUnits.userVisible) {
33 _unitsSettings.speedUnits.value = metric ? UnitsSettings.SpeedUnitsMetersPerSecond : UnitsSettings.SpeedUnitsFeetPerSecond
34 }
35 if (_unitsSettings.temperatureUnits.userVisible) {
36 _unitsSettings.temperatureUnits.value = metric ? UnitsSettings.TemperatureUnitsCelsius : UnitsSettings.TemperatureUnitsFarenheit
37 }
38 }
39
40 ColumnLayout {
41 spacing: ScreenTools.defaultFontPixelHeight
42
43 SettingsGroupLayout {
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.")
47
48 LabelledFactComboBox {
49 Layout.fillWidth: true
50 label: qsTr("Preferred Firmware")
51 fact: _appSettings.preferredFirmwareClass
52 indexModel: false
53 visible: _multipleFirmware
54 }
55
56 LabelledFactComboBox {
57 Layout.fillWidth: true
58 label: qsTr("Preferred Vehicle")
59 fact: _appSettings.preferredVehicleClass
60 indexModel: false
61 visible: _multipleVehicleTypes
62 }
63
64 LabelledFactComboBox {
65 Layout.fillWidth: true
66 label: qsTr("Offline Firmware")
67 fact: _appSettings.offlineEditingFirmwareClass
68 indexModel: false
69 visible: _multipleFirmware && _appSettings.preferredFirmwareClass.value === 0
70 }
71
72 LabelledFactComboBox {
73 Layout.fillWidth: true
74 label: qsTr("Offline Vehicle")
75 fact: _appSettings.offlineEditingVehicleClass
76 indexModel: false
77 visible: _multipleVehicleTypes && _appSettings.preferredVehicleClass.value === 0
78 }
79 }
80
81 SettingsGroupLayout {
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.")
85
86 RowLayout {
87 Layout.fillWidth: true
88 spacing: ScreenTools.defaultFontPixelWidth * 2
89
90 QGCLabel {
91 Layout.fillWidth: true
92 text: qsTr("System of units")
93 }
94
95 QGCComboBox {
96 sizeToContents: true
97 model: [ qsTr("Metric System"), qsTr("Imperial System") ]
98 currentIndex: _unitsSettings.horizontalDistanceUnits.value === UnitsSettings.HorizontalDistanceUnitsMeters ? 0 : 1
99 onActivated: (index) => { changeSystemOfUnits(currentIndex === 0) }
100 }
101 }
102
103 Repeater {
104 id: unitComboBoxRepeater
105 model: _rgFacts.length
106
107 LabelledFactComboBox {
108 Layout.fillWidth: true
109 label: _rgLabels[index]
110 fact: _rgFacts[index]
111 indexModel: false
112 visible: _rgFacts[index].userVisible
113 }
114 }
115 }
116 }
117}