QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
MultiVehicleList.qml
Go to the documentation of this file.
1import QtQuick
2import QtQuick.Controls
3import QtQuick.Layouts
4
5import QGroundControl
6import QGroundControl.Controls
7import QGroundControl.FlightMap
8import QGroundControl.FlyView
9
10Item {
11 property real _margin: ScreenTools.defaultFontPixelWidth / 2
12 property real _widgetHeight: ScreenTools.defaultFontPixelHeight * 2.5
13 property var _guidedController: globals.guidedControllerFlyView
14 property var _activeVehicleColor: "green"
15 property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle
16 property var selectedVehicles: QGroundControl.multiVehicleManager.selectedVehicles
17
18 implicitHeight: vehicleList.contentHeight
19
20 function armAvailable() {
21 for (var i = 0; i < selectedVehicles.count; i++) {
22 var vehicle = selectedVehicles.get(i)
23 if (vehicle.armed === false) {
24 return true
25 }
26 }
27 return false
28 }
29
30
31 function disarmAvailable() {
32 for (var i = 0; i < selectedVehicles.count; i++) {
33 var vehicle = selectedVehicles.get(i)
34 if (vehicle.armed === true) {
35 return true
36 }
37 }
38 return false
39 }
40
41 function startAvailable() {
42 for (var i = 0; i < selectedVehicles.count; i++) {
43 var vehicle = selectedVehicles.get(i)
44 if (vehicle.armed === true && vehicle.flightMode !== vehicle.missionFlightMode){
45 return true
46 }
47 }
48 return false
49 }
50
51 function pauseAvailable() {
52 for (var i = 0; i < selectedVehicles.count; i++) {
53 var vehicle = selectedVehicles.get(i)
54 if (vehicle.armed === true && vehicle.supports.pauseVehicle) {
55 return true
56 }
57 }
58 return false
59 }
60
61 function selectVehicle(vehicleId) {
62 QGroundControl.multiVehicleManager.selectVehicle(vehicleId)
63 }
64
65 function deselectVehicle(vehicleId) {
66 QGroundControl.multiVehicleManager.deselectVehicle(vehicleId)
67 }
68
69 function toggleSelect(vehicleId) {
70 if (!vehicleSelected(vehicleId)) {
71 selectVehicle(vehicleId)
72 } else {
73 deselectVehicle(vehicleId)
74 }
75 }
76
77 function selectAll() {
78 var vehicles = QGroundControl.multiVehicleManager.vehicles
79 for (var i = 0; i < vehicles.count; i++) {
80 var vehicle = vehicles.get(i)
81 var vehicleId = vehicle.id
82 if (!vehicleSelected(vehicleId)) {
83 selectVehicle(vehicleId)
84 }
85 }
86 }
87
88 function deselectAll() {
89 QGroundControl.multiVehicleManager.deselectAllVehicles()
90 }
91
92 function vehicleSelected(vehicleId) {
93 for (var i = 0; i < selectedVehicles.count; i++ ) {
94 var currentId = selectedVehicles.get(i).id
95 if (vehicleId === currentId) {
96 return true
97 }
98 }
99 return false
100 }
101
102 QGCListView {
103 id: vehicleList
104 anchors.left: parent.left
105 anchors.right: parent.right
106 anchors.top: parent.top
107 anchors.bottom: parent.bottom
108 spacing: ScreenTools.defaultFontPixelWidth * 0.75 // _layoutMargin
109 orientation: ListView.Vertical
110 model: QGroundControl.multiVehicleManager.vehicles
111 cacheBuffer: _cacheBuffer < 0 ? 0 : _cacheBuffer
112 clip: true
113
114 property real _cacheBuffer: height * 2
115
116 delegate: Rectangle {
117 width: vehicleList.width
118 height: innerColumn.height + _margin * 2
119 color: QGroundControl.multiVehicleManager.activeVehicle == _vehicle ? _activeVehicleColor : qgcPal.button
120 radius: _margin
121 border.width: _vehicle && vehicleSelected(_vehicle.id) ? 2 : 0
122 border.color: qgcPal.text
123
124 property var _vehicle: object
125
126 QGCMouseArea {
127 anchors.fill: parent
128 onClicked: toggleSelect(_vehicle.id)
129 }
130
131 Column {
132 id: innerColumn
133 anchors.centerIn: parent
134 spacing: _margin
135
136 RowLayout {
137 anchors.horizontalCenter: parent.horizontalCenter
138 anchors.margins: _margin
139 spacing: _margin
140
141 IntegratedCompassAttitude {
142 id: compassWidget
143 compassRadius: _widgetHeight / 2 - attitudeSize / 2
144 compassBorder: 0
145 attitudeSize: ScreenTools.defaultFontPixelWidth / 2
146 attitudeSpacing: attitudeSize / 2
147 usedByMultipleVehicleList: true
148 vehicle: _vehicle
149 }
150
151 QGCLabel {
152 text: " | "
153 font.pointSize: ScreenTools.largeFontPointSize
154 color: qgcPal.text
155 Layout.alignment: Qt.AlignHCenter
156 }
157
158 QGCLabel {
159 text: _vehicle ? _vehicle.id : ""
160 font.pointSize: ScreenTools.largeFontPointSize
161 color: qgcPal.text
162 Layout.alignment: Qt.AlignHCenter
163 }
164
165 QGCLabel {
166 text: " | "
167 font.pointSize: ScreenTools.largeFontPointSize
168 color: qgcPal.text
169 Layout.alignment: Qt.AlignHCenter
170 }
171
172 ColumnLayout {
173 spacing: _margin
174 Layout.rightMargin: compassWidget.width / 4
175 Layout.alignment: Qt.AlignCenter
176
177 FlightModeMenu {
178 Layout.alignment: Qt.AlignHCenter
179 font.pointSize: ScreenTools.largeFontPointSize
180 color: qgcPal.text
181 currentVehicle: _vehicle
182 }
183
184 QGCLabel {
185 Layout.alignment: Qt.AlignHCenter
186 text: _vehicle && _vehicle.armed ? qsTr("Armed") : qsTr("Disarmed")
187 color: qgcPal.text
188 }
189 }
190 }
191
192 QGCFlickable {
193 anchors.horizontalCenter: parent.horizontalCenter
194 width: Math.min(contentWidth, vehicleList.width)
195 height: control.height
196 contentWidth: control.width
197 contentHeight: control.height
198
199 TelemetryValuesBar {
200 id: control
201 settingsGroup: factValueGrid.vehicleCardSettingsGroup
202 specificVehicleForCard: _vehicle
203 }
204 }
205 }
206 }
207 }
208}