QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
AltFrameDialog.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 Frame")
11 buttons: Dialog.Close
12
13 property var rgRemoveModes
14 property var updateAltFrameFn
15 property var currentAltFrame
16
17 Component.onCompleted: {
18 // Populate model dynamically since ListElement cannot use script expressions
19 buttonModel.append({ modeName: QGroundControl.altitudeFrameShortDescription(QGroundControl.AltitudeFrameRelative),
20 help: qsTr("Altitude above home position"),
21 modeValue: QGroundControl.AltitudeFrameRelative })
22 buttonModel.append({ modeName: QGroundControl.altitudeFrameShortDescription(QGroundControl.AltitudeFrameAbsolute),
23 help: qsTr("Altitude above mean sea level"),
24 modeValue: QGroundControl.AltitudeFrameAbsolute })
25 buttonModel.append({ modeName: QGroundControl.altitudeFrameShortDescription(QGroundControl.AltitudeFrameTerrain),
26 help: qsTr("Altitude above terrain at waypoint using MAVLink terrain protocol"),
27 modeValue: QGroundControl.AltitudeFrameTerrain })
28 buttonModel.append({ modeName: QGroundControl.altitudeFrameShortDescription(QGroundControl.AltitudeFrameCalcAboveTerrain),
29 help: qsTr("Altitudes are terrain-relative; converting to AMSL before upload"),
30 modeValue: QGroundControl.AltitudeFrameCalcAboveTerrain })
31 buttonModel.append({ modeName: QGroundControl.altitudeFrameShortDescription(QGroundControl.AltitudeFrameMixed),
32 help: qsTr("Each waypoint specifies its own altitude frame"),
33 modeValue: QGroundControl.AltitudeFrameMixed })
34
35 // Check for custom build override on AMSL usage
36 if (!QGroundControl.corePlugin.options.showMissionAbsoluteAltitude && currentAltFrame != QGroundControl.AltitudeFrameAbsolute) {
37 rgRemoveModes.push(QGroundControl.AltitudeFrameAbsolute)
38 }
39
40 // Remove modes specified by consumer
41 for (var i=0; i<rgRemoveModes.length; i++) {
42 for (var j=0; j<buttonModel.count; j++) {
43 if (buttonModel.get(j).modeValue == rgRemoveModes[i]) {
44 buttonModel.remove(j)
45 break
46 }
47 }
48 }
49
50 buttonRepeater.model = buttonModel
51 }
52
53 ListModel {
54 id: buttonModel
55 }
56
57 Column {
58 spacing: ScreenTools.defaultFontPixelWidth
59
60 QGCLabel {
61 text: qsTr("Altitude frame for mission items")
62 font.pointSize: ScreenTools.smallFontPointSize
63 }
64
65 Repeater {
66 id: buttonRepeater
67
68 Button {
69 hoverEnabled: true
70 checked: modeValue == currentAltFrame
71
72 background: Rectangle {
73 radius: ScreenTools.defaultFontPixelHeight / 2
74 color: pressed | hovered | checked ? QGroundControl.globalPalette.buttonHighlight: QGroundControl.globalPalette.button
75 }
76
77 contentItem: Column {
78 spacing: 0
79
80 QGCLabel {
81 id: modeNameLabel
82 text: modeName
83 color: pressed | hovered | checked ? QGroundControl.globalPalette.buttonHighlightText: QGroundControl.globalPalette.buttonText
84 }
85
86 QGCLabel {
87 width: ScreenTools.defaultFontPixelWidth * 40
88 text: help
89 wrapMode: Label.WordWrap
90 font.pointSize: ScreenTools.smallFontPointSize
91 color: modeNameLabel.color
92 }
93 }
94
95 onClicked: {
96 updateAltFrameFn(modeValue)
97 close()
98 }
99 }
100 }
101 }
102}