QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
FlightModeMenu.qml
Go to the documentation of this file.
1import QtQuick
2import QtQuick.Controls
3
4import QGroundControl
5import QGroundControl.Controls
6
7// Label control whichs pop up a flight mode change menu when clicked
8QGCLabel {
9 id: _root
10 text: currentVehicle ? currentVehicle.flightMode : qsTr("N/A", "No data to display")
11
12 property var currentVehicle: QGroundControl.multiVehicleManager.activeVehicle
13 property real mouseAreaLeftMargin: 0
14
15 Menu {
16 id: flightModesMenu
17 }
18
19 Component {
20 id: flightModeMenuItemComponent
21
22 MenuItem {
23 enabled: true
24 onTriggered: currentVehicle.flightMode = text
25 }
26 }
27
28 property var flightModesMenuItems: []
29
30 function updateFlightModesMenu() {
31 if (currentVehicle && currentVehicle.flightModeSetAvailable) {
32 var i;
33 // Remove old menu items
34 for (i = 0; i < flightModesMenuItems.length; i++) {
35 flightModesMenu.removeItem(flightModesMenuItems[i])
36 }
37 flightModesMenuItems.length = 0
38 // Add new items
39 for (i = 0; i < currentVehicle.flightModes.length; i++) {
40 var menuItem = flightModeMenuItemComponent.createObject(null, { "text": currentVehicle.flightModes[i] })
41 flightModesMenuItems.push(menuItem)
42 flightModesMenu.insertItem(i, menuItem)
43 }
44 }
45 }
46
47 Component.onCompleted: _root.updateFlightModesMenu()
48
49 Connections {
50 target: QGroundControl.multiVehicleManager
51 function onActiveVehicleChanged(activeVehicle) { _root.updateFlightModesMenu() }
52 }
53
54 Connections {
55 target: currentVehicle
56 function onFlightModesChanged() { _root.updateFlightModesMenu() }
57 }
58
59 MouseArea {
60 id: mouseArea
61 visible: currentVehicle && currentVehicle.flightModeSetAvailable
62 anchors.leftMargin: mouseAreaLeftMargin
63 anchors.fill: parent
64 onClicked: flightModesMenu.popup((_root.width - flightModesMenu.width) / 2, _root.height)
65 }
66}