QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
AltModeDialog.qml
Go to the documentation of this file.
1import QtQuick
2import QtQuick.Controls
3import QtQuick.Dialogs
4import QtQuick.Layouts
5
6import QGroundControl
7import QGroundControl.Controls
8
9QGCPopupDialog {
10 title: qsTr("Altitude Mode")
11 buttons: Dialog.Close
12
13 property var rgRemoveModes
14 property var updateAltModeFn
15 property var currentAltMode
16
17 Component.onCompleted: {
18 // Check for custom build override on AMSL usage
19 if (!QGroundControl.corePlugin.options.showMissionAbsoluteAltitude && currentAltMode != QGroundControl.AltitudeModeAbsolute) {
20 rgRemoveModes.push(QGroundControl.AltitudeModeAbsolute)
21 }
22
23 // Remove modes specified by consumer
24 for (var i=0; i<rgRemoveModes.length; i++) {
25 for (var j=0; j<buttonModel.count; j++) {
26 if (buttonModel.get(j).modeValue == rgRemoveModes[i]) {
27 buttonModel.remove(j)
28 break
29 }
30 }
31 }
32
33 buttonRepeater.model = buttonModel
34 }
35
36 ListModel {
37 id: buttonModel
38
39 ListElement {
40 modeName: qsTr("Relative")
41 help: qsTr("Altitude above home position")
42 modeValue: QGroundControl.AltitudeModeRelative
43 }
44 ListElement {
45 modeName: qsTr("Absolute")
46 help: qsTr("Altitude above mean sea level (AMSL)")
47 modeValue: QGroundControl.AltitudeModeAbsolute
48 }
49 ListElement {
50 modeName: qsTr("Terrain")
51 help: qsTr("Altitude above terrain at waypoint")
52 modeValue: QGroundControl.AltitudeModeTerrainFrame
53 }
54 ListElement {
55 modeName: qsTr("Terrain Calculated")
56 help: qsTr("Altitudes are terrain-relative; converting to AMSL before upload")
57 modeValue: QGroundControl.AltitudeModeCalcAboveTerrain
58 }
59 ListElement {
60 modeName: qsTr("Waypoint Defined")
61 help: qsTr("Each waypoint specifies its own altitude mode")
62 modeValue: QGroundControl.AltitudeModeMixed
63 }
64 }
65
66 Column {
67 spacing: ScreenTools.defaultFontPixelWidth
68
69 QGCLabel {
70 text: qsTr("Altitude mode for mission items")
71 font.pointSize: ScreenTools.smallFontPointSize
72 }
73
74 Repeater {
75 id: buttonRepeater
76
77 Button {
78 hoverEnabled: true
79 checked: modeValue == currentAltMode
80
81 background: Rectangle {
82 radius: ScreenTools.defaultFontPixelHeight / 2
83 color: pressed | hovered | checked ? QGroundControl.globalPalette.buttonHighlight: QGroundControl.globalPalette.button
84 }
85
86 contentItem: Column {
87 spacing: 0
88
89 QGCLabel {
90 id: modeNameLabel
91 text: modeName
92 color: pressed | hovered | checked ? QGroundControl.globalPalette.buttonHighlightText: QGroundControl.globalPalette.buttonText
93 }
94
95 QGCLabel {
96 width: ScreenTools.defaultFontPixelWidth * 40
97 text: help
98 wrapMode: Label.WordWrap
99 font.pointSize: ScreenTools.smallFontPointSize
100 color: modeNameLabel.color
101 }
102 }
103
104 onClicked: {
105 updateAltModeFn(modeValue)
106 close()
107 }
108 }
109 }
110 }
111}