CustomMultiVehicleSelector.qml 4.05 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
/****************************************************************************
 *
 * (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>
 */

12 13
import QtQuick                              2.11
import QtQuick.Controls                     1.4
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

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()
        }
    }
}