• acfloria's avatar
    Remove the advanced link settings · 317fe902
    acfloria authored
    Show the link indicator in the tool bar if two or more links are connected and at least one of them is a high latency link.
    Show in the link indicator if a link is inactive.
    317fe902
LinkIndicator.qml 3.43 KB
/****************************************************************************
 *
 *   (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.
 *
 ****************************************************************************/


import QtQuick          2.3
import QtQuick.Controls 1.2

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

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

    property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle
    property bool _visible: false

    QGCLabel {
        id:                     priorityLinkSelector
        text:                   _activeVehicle ? _activeVehicle.priorityLinkName : qsTr("N/A", "No data to display")
        font.pointSize:         ScreenTools.mediumFontPointSize
        color:                  qgcPal.buttonText
        anchors.verticalCenter: parent.verticalCenter
        visible:                _visible
        Menu {
            id: linkSelectionMenu
        }
        Component {
            id: linkSelectionMenuItemComponent
            MenuItem {
                onTriggered: _activeVehicle.priorityLinkName = text
            }
        }
        property var linkSelectionMenuItems: []
        function updatelinkSelectionMenu() {
            if (_activeVehicle) {
                // Remove old menu items
                for (var i = 0; i < linkSelectionMenuItems.length; i++) {
                    linkSelectionMenu.removeItem(linkSelectionMenuItems[i])
                }
                linkSelectionMenuItems.length = 0

                // Add new items
                var has_hl = false;
                var links = _activeVehicle.links
                for (var i = 0; i < links.length; i++) {
                    var menuItem = linkSelectionMenuItemComponent.createObject(null, { "text": links[i].getName(), "enabled": links[i].link_active(_activeVehicle.id)})
                    linkSelectionMenuItems.push(menuItem)
                    linkSelectionMenu.insertItem(i, menuItem)

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

                _visible = links.length > 1 && has_hl
            }
        }

        Component.onCompleted: priorityLinkSelector.updatelinkSelectionMenu()

        Connections {
            target:                 QGroundControl.multiVehicleManager
            onActiveVehicleChanged: priorityLinkSelector.updatelinkSelectionMenu()
        }

        Connections {
            target:                 _activeVehicle
            onLinksChanged:         priorityLinkSelector.updatelinkSelectionMenu()
        }

        Connections {
            target:                     _activeVehicle
            onLinksPropertiesChanged:   priorityLinkSelector.updatelinkSelectionMenu()
        }

        MouseArea {
            visible:        _activeVehicle
            anchors.fill:   parent
            onClicked:      linkSelectionMenu.popup()
        }
    }
}