LinkIndicator.qml 3.37 KB
Newer Older
1 2
/****************************************************************************
 *
Gus Grubba's avatar
Gus Grubba committed
3
 * (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
4 5 6 7 8 9 10
 *
 * QGroundControl is licensed according to the terms in the file
 * COPYING.md in the root of the source code directory.
 *
 ****************************************************************************/


11 12
import QtQuick                              2.11
import QtQuick.Controls                     2.4
13 14 15 16 17 18

import QGroundControl                       1.0
import QGroundControl.Controls              1.0
import QGroundControl.MultiVehicleManager   1.0
import QGroundControl.ScreenTools           1.0
import QGroundControl.Palette               1.0
19
import QGroundControl.Vehicle               1.0
20 21 22 23 24 25

//-------------------------------------------------------------------------
//-- Link Indicator
Item {
    anchors.top:    parent.top
    anchors.bottom: parent.bottom
26
    width:          priorityLinkSelector.width
27

28
    property bool showIndicator: false
29 30 31

    QGCLabel {
        id:                     priorityLinkSelector
32
        text:                   activeVehicle ? activeVehicle.priorityLinkName : qsTr("N/A", "No data to display")
33 34 35
        font.pointSize:         ScreenTools.mediumFontPointSize
        color:                  qgcPal.buttonText
        anchors.verticalCenter: parent.verticalCenter
36
        QGCMenu {
37 38 39 40
            id: linkSelectionMenu
        }
        Component {
            id: linkSelectionMenuItemComponent
41
            QGCMenuItem {
42
                onTriggered: activeVehicle.priorityLinkName = text
43 44 45 46
            }
        }
        property var linkSelectionMenuItems: []
        function updatelinkSelectionMenu() {
47
            if (activeVehicle) {
48
                // Remove old menu items
Gus Grubba's avatar
Gus Grubba committed
49 50
                var i
                for (i = 0; i < linkSelectionMenuItems.length; i++) {
51 52 53
                    linkSelectionMenu.removeItem(linkSelectionMenuItems[i])
                }
                linkSelectionMenuItems.length = 0
54

55
                // Add new items
56
                var has_hl = false;
57
                var links = activeVehicle.links
Gus Grubba's avatar
Gus Grubba committed
58
                for (i = 0; i < links.length; i++) {
59
                    var menuItem = linkSelectionMenuItemComponent.createObject(null, { "text": links[i].getName(), "enabled": links[i].link_active(activeVehicle.id)})
60 61
                    linkSelectionMenuItems.push(menuItem)
                    linkSelectionMenu.insertItem(i, menuItem)
62 63 64 65

                    if (links[i].getHighLatency()) {
                        has_hl = true
                    }
66
                }
67

68
                showIndicator = links.length > 1 && has_hl
69 70
            }
        }
71

72
        Component.onCompleted: priorityLinkSelector.updatelinkSelectionMenu()
acfloria's avatar
acfloria committed
73

74 75 76 77
        Connections {
            target:                 QGroundControl.multiVehicleManager
            onActiveVehicleChanged: priorityLinkSelector.updatelinkSelectionMenu()
        }
acfloria's avatar
acfloria committed
78

79
        Connections {
80
            target:                 activeVehicle
81
            onLinksChanged:         priorityLinkSelector.updatelinkSelectionMenu()
82
        }
83 84

        Connections {
85
            target:                     activeVehicle
86 87 88
            onLinksPropertiesChanged:   priorityLinkSelector.updatelinkSelectionMenu()
        }

89
        MouseArea {
90
            visible:        activeVehicle
91 92 93 94 95
            anchors.fill:   parent
            onClicked:      linkSelectionMenu.popup()
        }
    }
}