ModeIndicator.qml 2.65 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
/****************************************************************************
 *
 *   (c) 2009-2016 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.
 *
 ****************************************************************************/


11
import QtQuick          2.7
12
import QtQuick.Controls 1.4
13 14 15 16 17 18 19 20 21

import QGroundControl                       1.0
import QGroundControl.Controls              1.0
import QGroundControl.MultiVehicleManager   1.0
import QGroundControl.ScreenTools           1.0
import QGroundControl.Palette               1.0

//-------------------------------------------------------------------------
//-- Mode Indicator
22 23 24 25 26 27 28 29 30 31 32 33
Item {
    anchors.top:    parent.top
    anchors.bottom: parent.bottom
    width:          flightModeSelector.width
    QGCLabel {
        id:                     flightModeSelector
        text:                   activeVehicle ? activeVehicle.flightMode : qsTr("N/A", "No data to display")
        font.pointSize:         ScreenTools.mediumFontPointSize
        color:                  qgcPal.buttonText
        anchors.verticalCenter: parent.verticalCenter
        Menu {
            id: flightModesMenu
34
        }
35 36 37 38
        Component {
            id: flightModeMenuItemComponent
            MenuItem {
                onTriggered: activeVehicle.flightMode = text
39
            }
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
        }
        property var flightModesMenuItems: []
        function updateFlightModesMenu() {
            if (activeVehicle && activeVehicle.flightModeSetAvailable) {
                // Remove old menu items
                for (var i = 0; i < flightModesMenuItems.length; i++) {
                    flightModesMenu.removeItem(flightModesMenuItems[i])
                }
                flightModesMenuItems.length = 0
                // Add new items
                for (var i = 0; i < activeVehicle.flightModes.length; i++) {
                    var menuItem = flightModeMenuItemComponent.createObject(null, { "text": activeVehicle.flightModes[i] })
                    flightModesMenuItems.push(menuItem)
                    flightModesMenu.insertItem(i, menuItem)
                }
55 56
            }
        }
57 58 59 60 61 62 63 64 65 66
        Component.onCompleted: flightModeSelector.updateFlightModesMenu()
        Connections {
            target:                 QGroundControl.multiVehicleManager
            onActiveVehicleChanged: flightModeSelector.updateFlightModesMenu()
        }
        MouseArea {
            visible:        activeVehicle && activeVehicle.flightModeSetAvailable
            anchors.fill:   parent
            onClicked:      flightModesMenu.popup()
        }
67 68
    }
}