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 property real _descriptionWidth: ScreenTools.defaultFontPixelWidth * 40
19
20 function changeSystemOfUnits(metric) {
21 unitComboBoxRepeater.model = 0
22 unitComboBoxRepeater.model = _rgFacts.length
23
24 if (_unitsSettings.horizontalDistanceUnits.userVisible) {
25 _unitsSettings.horizontalDistanceUnits.value = metric ? UnitsSettings.HorizontalDistanceUnitsMeters : UnitsSettings.HorizontalDistanceUnitsFeet
26 }
27 if (_unitsSettings.verticalDistanceUnits.userVisible) {
28 _unitsSettings.verticalDistanceUnits.value = metric ? UnitsSettings.VerticalDistanceUnitsMeters : UnitsSettings.VerticalDistanceUnitsFeet
29 }
30 if (_unitsSettings.areaUnits.userVisible) {
31 _unitsSettings.areaUnits.value = metric ? UnitsSettings.AreaUnitsSquareMeters : UnitsSettings.AreaUnitsSquareFeet
32 }
33 if (_unitsSettings.speedUnits.userVisible) {
34 _unitsSettings.speedUnits.value = metric ? UnitsSettings.SpeedUnitsMetersPerSecond : UnitsSettings.SpeedUnitsFeetPerSecond
35 }
36 if (_unitsSettings.temperatureUnits.userVisible) {
37 _unitsSettings.temperatureUnits.value = metric ? UnitsSettings.TemperatureUnitsCelsius : UnitsSettings.TemperatureUnitsFarenheit
38 }
39 }
40
41 onAccepted: {
42 if (_appSettings.preferredFirmwareClass.rawValue !== 0) {
43 _appSettings.offlineEditingFirmwareClass.rawValue = _appSettings.preferredFirmwareClass.rawValue
44 }
45 if (_appSettings.preferredVehicleClass.rawValue !== 0) {
46 _appSettings.offlineEditingVehicleClass.rawValue = _appSettings.preferredVehicleClass.rawValue
47 }
48 }
49
50 ColumnLayout {
51 spacing: ScreenTools.defaultFontPixelHeight
52
53 SettingsGroupLayout {
54 Layout.fillWidth: true
55 Layout.maximumWidth: _descriptionWidth
56 heading: qsTr("Vehicle Preferences")
57 headingDescription: qsTr("Select the firmware and vehicle type you typically use.")
58
59 LabelledFactComboBox {
60 Layout.fillWidth: true
61 label: qsTr("Preferred Firmware")
62 fact: _appSettings.preferredFirmwareClass
63 indexModel: false
64 visible: _multipleFirmware
65 }
66
67 LabelledFactComboBox {
68 Layout.fillWidth: true
69 label: qsTr("Preferred Vehicle")
70 fact: _appSettings.preferredVehicleClass
71 indexModel: false
72 visible: _multipleVehicleTypes
73 }
74 }
75
76 SettingsGroupLayout {
77 Layout.fillWidth: true
78 Layout.maximumWidth: _descriptionWidth
79 heading: qsTr("Measurement Units")
80 headingDescription: qsTr("Choose the measurement units you want to use. You can also change it later in General Settings.")
81
82 RowLayout {
83 Layout.fillWidth: true
84 spacing: ScreenTools.defaultFontPixelWidth * 2
85
86 QGCLabel {
87 Layout.fillWidth: true
88 text: qsTr("System of units")
89 }
90
91 QGCComboBox {
92 sizeToContents: true
93 model: [ qsTr("Metric System"), qsTr("Imperial System") ]
94 currentIndex: _unitsSettings.horizontalDistanceUnits.value === UnitsSettings.HorizontalDistanceUnitsMeters ? 0 : 1
95 onActivated: (index) => { changeSystemOfUnits(currentIndex === 0) }
96 }
97 }
98
99 Repeater {
100 id: unitComboBoxRepeater
101 model: _rgFacts.length
102
103 LabelledFactComboBox {
104 Layout.fillWidth: true
105 label: _rgLabels[index]
106 fact: _rgFacts[index]
107 indexModel: false
108 visible: _rgFacts[index].userVisible
109 }
110 }
111 }
112 }
113}