Unverified Commit f62c8640 authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #8972 from DonLakeFlyer/MainStatus

Fly: Move flight mode, vtol mode, armed into main status
parents 3543cd37 863e2abe
......@@ -320,9 +320,6 @@ const QVariantList& FirmwarePlugin::modeIndicators(const Vehicle*)
if(_modeIndicatorList.size() == 0) {
_modeIndicatorList = QVariantList({
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/ROIIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/ArmedIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/ModeIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/VTOLModeIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/MultiVehicleSelector.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/LinkIndicator.qml")),
});
......
......@@ -19,7 +19,8 @@ QGCLabel {
id: flightModeMenuLabel
text: currentVehicle ? currentVehicle.flightMode : qsTr("N/A", "No data to display")
property var currentVehicle: QGroundControl.multiVehicleManager.activeVehicle
property var currentVehicle: QGroundControl.multiVehicleManager.activeVehicle
property real mouseAreaLeftMargin: 0
QGCMenu {
id: flightModesMenu
......@@ -60,8 +61,10 @@ QGCLabel {
}
MouseArea {
visible: currentVehicle && currentVehicle.flightModeSetAvailable
anchors.fill: parent
onClicked: flightModesMenu.popup()
id: mouseArea
visible: currentVehicle && currentVehicle.flightModeSetAvailable
anchors.leftMargin: mouseAreaLeftMargin
anchors.fill: parent
onClicked: flightModesMenu.popup()
}
}
// QtQuick.Control 1.x Menu
// Use old QtQuick.Control 1.x Menu to work around bug in new Qml Menu
import QtQuick 2.6
import QtQuick.Controls 1.4
......
......@@ -59,7 +59,6 @@ void TrajectoryPoints::start(void)
void TrajectoryPoints::stop(void)
{
qDebug() << "Stop" << _points.count();
disconnect(_vehicle, &Vehicle::coordinateChanged, this, &TrajectoryPoints::_vehicleCoordinateChanged);
}
......
......@@ -758,20 +758,20 @@ ApplicationWindow {
//-------------------------------------------------------------------------
//-- Indicator Popups
function showPopUp(item, dropItem) {
indicatorDropdown.currentIndicator = dropItem
indicatorDropdown.currentItem = item
indicatorDropdown.open()
function showIndicatorPopup(item, dropItem) {
indicatorPopup.currentIndicator = dropItem
indicatorPopup.currentItem = item
indicatorPopup.open()
}
function hidePopUp() {
indicatorDropdown.close()
indicatorDropdown.currentItem = null
indicatorDropdown.currentIndicator = null
function hideIndicatorPopup() {
indicatorPopup.close()
indicatorPopup.currentItem = null
indicatorPopup.currentIndicator = null
}
Popup {
id: indicatorDropdown
id: indicatorPopup
padding: ScreenTools.defaultFontPixelWidth * 0.75
modal: true
focus: true
......@@ -786,19 +786,19 @@ ApplicationWindow {
Loader {
id: loader
onLoaded: {
var centerX = mainWindow.contentItem.mapFromItem(indicatorDropdown.currentItem, 0, 0).x - (loader.width * 0.5)
if((centerX + indicatorDropdown.width) > (mainWindow.width - ScreenTools.defaultFontPixelWidth)) {
centerX = mainWindow.width - indicatorDropdown.width - ScreenTools.defaultFontPixelWidth
var centerX = mainWindow.contentItem.mapFromItem(indicatorPopup.currentItem, 0, 0).x - (loader.width * 0.5)
if((centerX + indicatorPopup.width) > (mainWindow.width - ScreenTools.defaultFontPixelWidth)) {
centerX = mainWindow.width - indicatorPopup.width - ScreenTools.defaultFontPixelWidth
}
indicatorDropdown.x = centerX
indicatorPopup.x = centerX
}
}
onOpened: {
loader.sourceComponent = indicatorDropdown.currentIndicator
loader.sourceComponent = indicatorPopup.currentIndicator
}
onClosed: {
loader.sourceComponent = null
indicatorDropdown.currentIndicator = null
indicatorPopup.currentIndicator = null
}
}
}
......@@ -120,7 +120,7 @@ Item {
MouseArea {
anchors.fill: parent
onClicked: {
mainWindow.showPopUp(_root, batteryInfo)
mainWindow.showIndicatorPopup(_root, batteryInfo)
}
}
}
......@@ -109,7 +109,7 @@ Item {
MouseArea {
anchors.fill: parent
onClicked: {
mainWindow.showPopUp(_root, gpsInfo)
mainWindow.showIndicatorPopup(_root, gpsInfo)
}
}
}
......@@ -109,7 +109,7 @@ Item {
MouseArea {
anchors.fill: parent
onClicked: {
mainWindow.showPopUp(_root, gpsInfo)
mainWindow.showIndicatorPopup(_root, gpsInfo)
}
}
}
......@@ -91,7 +91,7 @@ Item {
MouseArea {
anchors.fill: parent
onClicked: {
mainWindow.showPopUp(_root, joystickInfo)
mainWindow.showIndicatorPopup(_root, joystickInfo)
}
}
}
......@@ -16,57 +16,21 @@ import QGroundControl.MultiVehicleManager 1.0
import QGroundControl.ScreenTools 1.0
import QGroundControl.Palette 1.0
Item {
id: _root
Layout.preferredWidth: mainStatusLabel.contentWidth + ScreenTools.defaultFontPixelWidth
RowLayout {
id: _root
spacing: 0
property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle
property real _margins: ScreenTools.defaultFontPixelWidth
Component {
id: mainStatusInfo
Rectangle {
width: mainLayout.width + (_margins * 2)
height: mainLayout.height + (_margins * 2)
radius: ScreenTools.defaultFontPixelHeight * 0.5
color: qgcPal.window
border.color: qgcPal.text
GridLayout {
id: mainLayout
anchors.margins: _margins
anchors.top: parent.top
anchors.left: parent.left
rowSpacing: ScreenTools.defaultFontPixelWidth / 2
columnSpacing: rowSpacing
rows: _activeVehicle.sysStatusSensorInfo.sensorNames.length
flow: GridLayout.TopToBottom
Repeater {
model: _activeVehicle.sysStatusSensorInfo.sensorNames
QGCLabel {
text: modelData
}
}
Repeater {
model: _activeVehicle.sysStatusSensorInfo.sensorStatus
QGCLabel {
text: modelData
}
}
}
}
}
property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle
property var _vehicleInAir: _activeVehicle ? _activeVehicle.flying || _activeVehicle.landing : false
property bool _vtolInFWDFlight: _activeVehicle ? _activeVehicle.vtolInFwdFlight : false
property bool _armed: _activeVehicle ? _activeVehicle.armed : false
property real _margins: ScreenTools.defaultFontPixelWidth
property real _spacing: ScreenTools.defaultFontPixelWidth / 2
QGCLabel {
id: mainStatusLabel
text: mainStatusText()
font.pointSize: ScreenTools.largeFontPointSize
anchors.verticalCenter: parent.verticalCenter
id: mainStatusLabel
text: mainStatusText()
font.pointSize: _vehicleInAir ? ScreenTools.defaultFontPointSize : ScreenTools.largeFontPointSize
property string _commLostText: qsTr("Communication Lost")
property string _readyToFlyText: qsTr("Ready To Fly")
......@@ -117,13 +81,156 @@ Item {
return mainStatusLabel._disconnectedText
}
}
MouseArea {
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
height: _root.height
enabled: _activeVehicle
onClicked: mainWindow.showIndicatorPopup(mainStatusLabel, sensorStatusInfoComponent)
}
}
Item {
width: ScreenTools.defaultFontPixelWidth
height: 1
}
QGCColoredImage {
id: flightModeIcon
width: height
height: ScreenTools.defaultFontPixelHeight * 0.75
fillMode: Image.PreserveAspectFit
mipmap: true
color: qgcPal.text
source: "/qmlimages/FlightModesComponentIcon.png"
visible: _activeVehicle
}
Item {
Layout.preferredWidth: ScreenTools.defaultFontPixelWidth * (_vehicleInAir ? ScreenTools.largeFontPointRatio : 1) / 3
height: 1
visible: flightModeMenu.visible
}
FlightModeMenu {
id: flightModeMenu
Layout.preferredHeight: _root.height
verticalAlignment: Text.AlignVCenter
font.pointSize: _vehicleInAir ? ScreenTools.largeFontPointSize : ScreenTools.defaultFontPointSize
mouseAreaLeftMargin: -(flightModeMenu.x - flightModeIcon.x)
visible: _activeVehicle
}
Item {
Layout.preferredWidth: ScreenTools.defaultFontPixelWidth * ScreenTools.largeFontPointRatio
height: 1
visible: vtolModeLabel.visible
}
MouseArea {
anchors.fill: parent
enabled: _activeVehicle
onClicked: {
mainWindow.showPopUp(_root, mainStatusInfo)
QGCLabel {
id: vtolModeLabel
Layout.preferredHeight: _root.height
verticalAlignment: Text.AlignVCenter
text: _vtolInFWDFlight ? qsTr("FW(vtol)") : qsTr("MR(vtol)")
font.pointSize: ScreenTools.largeFontPointSize
visible: _activeVehicle ? _activeVehicle.vtol && _vehicleInAir : false
QGCMouseArea {
anchors.fill: parent
onClicked: mainWindow.showIndicatorPopup(vtolModeLabel, vtolTransitionComponent)
}
}
Component {
id: sensorStatusInfoComponent
Rectangle {
width: mainLayout.width + (_margins * 2)
height: mainLayout.height + (_margins * 2)
radius: ScreenTools.defaultFontPixelHeight * 0.5
color: qgcPal.window
border.color: qgcPal.text
ColumnLayout {
id: mainLayout
anchors.margins: _margins
anchors.top: parent.top
anchors.left: parent.left
spacing: _spacing
QGCLabel {
Layout.alignment: Qt.AlignHCenter
text: qsTr("Sensor Status")
}
GridLayout {
rowSpacing: _spacing
columnSpacing: _spacing
rows: _activeVehicle.sysStatusSensorInfo.sensorNames.length
flow: GridLayout.TopToBottom
Repeater {
model: _activeVehicle.sysStatusSensorInfo.sensorNames
QGCLabel {
text: modelData
}
}
Repeater {
model: _activeVehicle.sysStatusSensorInfo.sensorStatus
QGCLabel {
text: modelData
}
}
}
QGCButton {
Layout.alignment: Qt.AlignHCenter
text: _armed ? qsTr("Disarm") : qsTr("Arm")
onClicked: {
if (_armed) {
mainWindow.disarmVehicleRequest()
} else {
mainWindow.armVehicleRequest()
}
mainWindow.hideIndicatorPopup()
}
}
}
}
}
Component {
id: vtolTransitionComponent
Rectangle {
width: mainLayout.width + (_margins * 2)
height: mainLayout.height + (_margins * 2)
radius: ScreenTools.defaultFontPixelHeight * 0.5
color: qgcPal.window
border.color: qgcPal.text
QGCButton {
id: mainLayout
anchors.margins: _margins
anchors.top: parent.top
anchors.left: parent.left
text: _vtolInFWDFlight ? qsTr("Transition to Multi-Rotor") : qsTr("Transition to Fixed Wing")
onClicked: {
if (_vtolInFWDFlight) {
mainWindow.vtolTransitionToMRFlightRequest()
} else {
mainWindow.vtolTransitionToFwdFlightRequest()
}
mainWindow.hideIndicatorPopup()
}
}
}
}
}
......@@ -87,19 +87,18 @@ Rectangle {
spacing: ScreenTools.defaultFontPixelWidth / 2
QGCToolBarButton {
id: currentButton
Layout.fillHeight: true
onClicked: viewSelectDrawer.visible = true
id: currentButton
Layout.preferredHeight: viewButtonRow.height
onClicked: viewSelectDrawer.visible = true
}
MainStatusIndicator {
Layout.fillHeight: true
visible: currentToolbar === flyViewToolbar
Layout.preferredHeight: viewButtonRow.height
visible: currentToolbar === flyViewToolbar
}
QGCButton {
id: disconnectButton
Layout.alignment: Qt.AlignVCenter
text: qsTr("Disconnect")
onClicked: _activeVehicle.disconnectInactiveVehicle()
visible: _activeVehicle && _communicationLost && currentToolbar === flyViewToolbar
......
......@@ -95,7 +95,7 @@ Item {
MouseArea {
anchors.fill: parent
onClicked: {
mainWindow.showPopUp(_root, rcRSSIInfo)
mainWindow.showIndicatorPopup(_root, rcRSSIInfo)
}
}
}
......@@ -61,7 +61,7 @@ Item {
onClicked: {
if(activeVehicle)
activeVehicle.stopGuidedModeROI()
mainWindow.hidePopUp()
mainWindow.hideIndicatorPopup()
}
}
}
......@@ -83,7 +83,7 @@ Item {
MouseArea {
anchors.fill: parent
onClicked: {
mainWindow.showPopUp(_root, roiInfo)
mainWindow.showIndicatorPopup(_root, roiInfo)
}
}
}
......@@ -86,7 +86,7 @@ Item {
MouseArea {
anchors.fill: parent
onClicked: {
mainWindow.showPopUp(_root, telemRSSIInfo)
mainWindow.showIndicatorPopup(_root, telemRSSIInfo)
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment