地面站终端 App
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
4.0 KiB

/****************************************************************************
*
* (c) 2009-2019 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
* @file
* @author Gus Grubba <gus@auterion.com>
*/
import QtQuick 2.11
import QtQuick.Controls 1.4
import QGroundControl 1.0
import QGroundControl.Controls 1.0
import QGroundControl.MultiVehicleManager 1.0
import QGroundControl.ScreenTools 1.0
import QGroundControl.Palette 1.0
//-------------------------------------------------------------------------
//-- Multi Vehicle Selector
Item {
anchors.top: parent.top
anchors.bottom: parent.bottom
width: selectorRow.width
property bool _multiVehicles: QGroundControl.multiVehicleManager.vehicles.count > 1
Component.onCompleted: {
updatemultiVehiclesMenu()
}
Connections {
target: QGroundControl.multiVehicleManager.vehicles
onCountChanged: updatemultiVehiclesMenu()
}
Row {
id: selectorRow
spacing: ScreenTools.defaultFontPixelWidth
anchors.verticalCenter: parent.verticalCenter
QGCColoredImage {
anchors.verticalCenter: parent.verticalCenter
height: ScreenTools.defaultFontPixelHeight
width: height
sourceSize.height: parent.height
fillMode: Image.PreserveAspectFit
source: "/qmlimages/PaperPlane.svg"
color: qgcPal.text
}
QGCLabel {
id: multiVehicleSelector
text: "Vehicle " + (activeVehicle ? activeVehicle.id : "None")
color: qgcPal.buttonText
anchors.verticalCenter: parent.verticalCenter
}
QGCColoredImage {
visible: _multiVehicles
anchors.verticalCenter: parent.verticalCenter
height: ScreenTools.defaultFontPixelHeight * 0.5
width: height
sourceSize.height: parent.height
fillMode: Image.PreserveAspectFit
source: "/res/DropArrow.svg"
color: qgcPal.text
}
}
Menu {
id: multiVehiclesMenu
}
Component {
id: multiVehicleMenuItemComponent
MenuItem {
onTriggered: QGroundControl.multiVehicleManager.activeVehicle = vehicle
property int vehicleId: Number(text.split(" ")[1])
property var vehicle: QGroundControl.multiVehicleManager.getVehicleById(vehicleId)
}
}
property var multiVehiclesMenuItems: []
function updatemultiVehiclesMenu() {
if (_multiVehicles) {
// Remove old menu items
for (var i = 0; i < multiVehiclesMenuItems.length; i++) {
multiVehiclesMenu.removeItem(multiVehiclesMenuItems[i])
}
multiVehiclesMenuItems.length = 0
// Add new items
for (i = 0; i < QGroundControl.multiVehicleManager.vehicles.count; i++) {
var vehicle = QGroundControl.multiVehicleManager.vehicles.get(i)
var menuItem = multiVehicleMenuItemComponent.createObject(null, { "text": "Vehicle " + vehicle.id })
multiVehiclesMenuItems.push(menuItem)
multiVehiclesMenu.insertItem(i, menuItem)
console.log("Vehicle " + vehicle.id)
}
} else {
console.log('No multiple vehicles: ' + QGroundControl.multiVehicleManager.vehicles.count)
}
}
MouseArea {
visible: _multiVehicles
anchors.fill: parent
onClicked: {
console.log('Clicked')
multiVehiclesMenu.popup()
}
}
}