Browse Source

MultiVehicle List supports flight mode change

QGC4.4
Don Gagne 8 years ago
parent
commit
d90dd92475
  1. 1
      qgroundcontrol.qrc
  2. 8
      src/FlightDisplay/MultiVehicleList.qml
  3. 66
      src/QmlControls/FlightModeMenu.qml
  4. 1
      src/QmlControls/QGroundControl.Controls.qmldir

1
qgroundcontrol.qrc

@ -48,6 +48,7 @@ @@ -48,6 +48,7 @@
<file alias="QGroundControl/Controls/ExclusiveGroupItem.qml">src/QmlControls/ExclusiveGroupItem.qml</file>
<file alias="QGroundControl/Controls/FactSliderPanel.qml">src/QmlControls/FactSliderPanel.qml</file>
<file alias="QGroundControl/Controls/FlightModeDropdown.qml">src/QmlControls/FlightModeDropdown.qml</file>
<file alias="QGroundControl/Controls/FlightModeMenu.qml">src/QmlControls/FlightModeMenu.qml</file>
<file alias="QGroundControl/Controls/GuidedBar.qml">src/QmlControls/GuidedBar.qml</file>
<file alias="QGroundControl/Controls/IndicatorButton.qml">src/QmlControls/IndicatorButton.qml</file>
<file alias="QGroundControl/Controls/JoystickThumbPad.qml">src/QmlControls/JoystickThumbPad.qml</file>

8
src/FlightDisplay/MultiVehicleList.qml

@ -77,10 +77,10 @@ QGCListView { @@ -77,10 +77,10 @@ QGCListView {
color: _textColor
}
QGCLabel {
text: _vehicle.flightMode
font.pointSize: ScreenTools.largeFontPointSize
color: _textColor
FlightModeMenu {
font.pointSize: ScreenTools.largeFontPointSize
color: _textColor
activeVehicle: _vehicle
}
}

66
src/QmlControls/FlightModeMenu.qml

@ -0,0 +1,66 @@ @@ -0,0 +1,66 @@
/****************************************************************************
*
* (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.5
import QtQuick.Controls 1.2
import QGroundControl 1.0
import QGroundControl.Controls 1.0
import QGroundControl.ScreenTools 1.0
// Label control whichs pop up a flight mode change menu when clicked
QGCLabel {
id: flightModeMenuLabel
text: activeVehicle ? activeVehicle.flightMode : qsTr("N/A", "No data to display")
property var activeVehicle: QGroundControl.multiVehicleManager.activeVehicle
Menu {
id: flightModesMenu
}
Component {
id: flightModeMenuItemComponent
MenuItem {
onTriggered: activeVehicle.flightMode = text
}
}
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)
}
}
}
Component.onCompleted: flightModeMenuLabel.updateFlightModesMenu()
Connections {
target: QGroundControl.multiVehicleManager
onActiveVehicleChanged: flightModeMenuLabel.updateFlightModesMenu()
}
MouseArea {
visible: activeVehicle && activeVehicle.flightModeSetAvailable
anchors.fill: parent
onClicked: flightModesMenu.popup()
}
}

1
src/QmlControls/QGroundControl.Controls.qmldir

@ -7,6 +7,7 @@ DropButton 1.0 DropButton.qml @@ -7,6 +7,7 @@ DropButton 1.0 DropButton.qml
ExclusiveGroupItem 1.0 ExclusiveGroupItem.qml
FactSliderPanel 1.0 FactSliderPanel.qml
FlightModeDropdown 1.0 FlightModeDropdown.qml
FlightModeMenu 1.0 FlightModeMenu.qml
GuidedBar 1.0 GuidedBar.qml
IndicatorButton 1.0 IndicatorButton.qml
JoystickThumbPad 1.0 JoystickThumbPad.qml

Loading…
Cancel
Save