From 31160466244d17d4e439a76a5b57c3eec6ac6068 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Fri, 8 Nov 2019 13:54:23 -0800 Subject: [PATCH 1/7] Hide pre-arm message when vehicle arms --- src/FlightDisplay/FlightDisplayViewWidgets.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/FlightDisplay/FlightDisplayViewWidgets.qml b/src/FlightDisplay/FlightDisplayViewWidgets.qml index 13b7d54..305d419 100644 --- a/src/FlightDisplay/FlightDisplayViewWidgets.qml +++ b/src/FlightDisplay/FlightDisplayViewWidgets.qml @@ -134,7 +134,7 @@ Item { spacing: ScreenTools.defaultFontPixelHeight property bool noGPSLockVisible: activeVehicle && !activeVehicle.coordinate.isValid && mainIsMap - property bool prearmErrorVisible: activeVehicle && activeVehicle.prearmError + property bool prearmErrorVisible: activeVehicle && !activeVehicle.armed && activeVehicle.prearmError QGCLabel { anchors.horizontalCenter: parent.horizontalCenter From bec15660c011bd3cc80a613817a4ff9dc2dab2dd Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Fri, 8 Nov 2019 13:54:50 -0800 Subject: [PATCH 2/7] Rework Mission Complete dialog for correct Resume Mission on ArduPilkot --- src/FlightDisplay/FlightDisplayView.qml | 117 ++++++++++++++------------------ 1 file changed, 51 insertions(+), 66 deletions(-) diff --git a/src/FlightDisplay/FlightDisplayView.qml b/src/FlightDisplay/FlightDisplayView.qml index cc54bc7..19c027e 100644 --- a/src/FlightDisplay/FlightDisplayView.qml +++ b/src/FlightDisplay/FlightDisplayView.qml @@ -144,33 +144,31 @@ Item { } } - // The following code is used to track vehicle states such that we prompt to remove mission from vehicle when mission completes - - property bool vehicleArmed: activeVehicle ? activeVehicle.armed : true // true here prevents pop up from showing during shutdown - property bool vehicleWasArmed: false - property bool vehicleInMissionFlightMode: activeVehicle ? (activeVehicle.flightMode === activeVehicle.missionFlightMode) : false - property bool promptForMissionRemove: false + // The following code is used to track vehicle states for showing the mission complete dialog + property bool vehicleArmed: activeVehicle ? activeVehicle.armed : true // true here prevents pop up from showing during shutdown + property bool vehicleWasArmed: false + property bool vehicleInMissionFlightMode: activeVehicle ? (activeVehicle.flightMode === activeVehicle.missionFlightMode) : false + property bool vehicleWasInMissionFlightMode: false + property bool showMissionCompleteDialog: vehicleWasArmed && vehicleWasInMissionFlightMode && + (_missionController.containsItems || _geoFenceController.containsItems || _rallyPointController.containsItems || + (activeVehicle ? activeVehicle.cameraTriggerPoints.count !== 0 : false)) onVehicleArmedChanged: { if (vehicleArmed) { - if (!promptForMissionRemove) { - promptForMissionRemove = vehicleInMissionFlightMode - vehicleWasArmed = true - } + vehicleWasArmed = true + vehicleWasInMissionFlightMode = vehicleInMissionFlightMode } else { - if (promptForMissionRemove && (_missionController.containsItems || _geoFenceController.containsItems || _rallyPointController.containsItems)) { - // ArduPilot has a strange bug which prevents mission clear from working at certain times, so we can't show this dialog - if (!activeVehicle.apmFirmware) { - mainWindow.showComponentDialog(missionCompleteDialogComponent, qsTr("Flight Plan complete"), mainWindow.showDialogDefaultWidth, StandardButton.Close) - } + if (showMissionCompleteDialog) { + mainWindow.showComponentDialog(missionCompleteDialogComponent, qsTr("Flight Plan complete"), mainWindow.showDialogDefaultWidth, StandardButton.Close) } - promptForMissionRemove = false + vehicleWasArmed = false + vehicleWasInMissionFlightMode = false } } onVehicleInMissionFlightModeChanged: { - if (!promptForMissionRemove && vehicleArmed) { - promptForMissionRemove = true + if (vehicleInMissionFlightMode && vehicleArmed) { + vehicleWasInMissionFlightMode = true } } @@ -193,46 +191,47 @@ Item { anchors.margins: _margins anchors.left: parent.left anchors.right: parent.right + spacing: ScreenTools.defaultFontPixelHeight - ColumnLayout { - Layout.fillWidth: true - spacing: ScreenTools.defaultFontPixelHeight - visible: !activeVehicle.connectionLost || !_guidedController.showResumeMission + QGCLabel { + Layout.fillWidth: true + text: qsTr("%1 Images Taken").arg(activeVehicle.cameraTriggerPoints.count) + horizontalAlignment: Text.AlignHCenter + visible: activeVehicle.cameraTriggerPoints.count !== 0 + } - QGCLabel { - Layout.fillWidth: true - text: qsTr("%1 Images Taken").arg(activeVehicle.cameraTriggerPoints.count) - horizontalAlignment: Text.AlignHCenter - visible: activeVehicle.cameraTriggerPoints.count !== 0 + QGCButton { + Layout.fillWidth: true + text: qsTr("Remove plan from vehicle") + visible: !activeVehicle.connectionLost// && !activeVehicle.apmFirmware // ArduPilot has a bug somewhere with mission clear + onClicked: { + _planController.removeAllFromVehicle() + hideDialog() } + } - QGCButton { - Layout.fillWidth: true - text: qsTr("Remove plan from vehicle") - onClicked: { - _planController.removeAllFromVehicle() - hideDialog() - } - } + QGCButton { + Layout.fillWidth: true + Layout.alignment: Qt.AlignHCenter + text: qsTr("Leave plan on vehicle") + onClicked: hideDialog() + } - QGCButton { - Layout.fillWidth: true - Layout.alignment: Qt.AlignHCenter - text: qsTr("Leave plan on vehicle") - onClicked: hideDialog() - } + Rectangle { + Layout.fillWidth: true + color: qgcPal.text + height: 1 + } - Rectangle { - Layout.fillWidth: true - color: qgcPal.text - height: 1 - } + ColumnLayout { + Layout.fillWidth: true + spacing: ScreenTools.defaultFontPixelHeight + visible: !activeVehicle.connectionLost && _guidedController.showResumeMission QGCButton { Layout.fillWidth: true Layout.alignment: Qt.AlignHCenter text: qsTr("Resume Mission From Waypoint %1").arg(_guidedController._resumeMissionIndex) - visible: _guidedController.showResumeMission onClicked: { guidedController.executeAction(_guidedController.actionResumeMission, null, null) @@ -244,29 +243,15 @@ Item { Layout.fillWidth: true wrapMode: Text.WordWrap text: qsTr("Resume Mission will rebuild the current mission from the last flown waypoint and upload it to the vehicle for the next flight.") - visible: _guidedController.showResumeMission - } - - QGCLabel { - Layout.fillWidth: true - wrapMode: Text.WordWrap - color: qgcPal.warningText - text: qsTr("If you are changing batteries for Resume Mission do not disconnect from the vehicle when communication is lost.") - visible: _guidedController.showResumeMission } } - ColumnLayout { + QGCLabel { Layout.fillWidth: true - spacing: ScreenTools.defaultFontPixelHeight - visible: activeVehicle.connectionLost && _guidedController.showResumeMission - - QGCLabel { - Layout.fillWidth: true - wrapMode: Text.WordWrap - color: qgcPal.warningText - text: qsTr("If you are changing batteries for Resume Mission do not disconnect from the vehicle.") - } + wrapMode: Text.WordWrap + color: qgcPal.warningText + text: qsTr("If you are changing batteries for Resume Mission do not disconnect from the vehicle.") + visible: _guidedController.showResumeMission } } } From 028bcadbac0edcc40c5f9866911154be8b5d4d7d Mon Sep 17 00:00:00 2001 From: Gus Grubba Date: Fri, 8 Nov 2019 16:58:16 -0500 Subject: [PATCH 3/7] Fix inverted close policy logic. --- src/ui/MainRootWindow.qml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/ui/MainRootWindow.qml b/src/ui/MainRootWindow.qml index e37fc83..8111f22 100644 --- a/src/ui/MainRootWindow.qml +++ b/src/ui/MainRootWindow.qml @@ -153,6 +153,9 @@ ApplicationWindow { mainWindowDialog.dialogButtons = buttons mainWindowDialog.open() if(buttons & StandardButton.Cancel || buttons & StandardButton.Close || buttons & StandardButton.Discard || buttons & StandardButton.Abort || buttons & StandardButton.Ignore) { + mainWindowDialog.closePolicy = Popup.NoAutoClose; + mainWindowDialog.interactive = false; + } else { mainWindowDialog.closePolicy = Popup.CloseOnEscape | Popup.CloseOnPressOutside; mainWindowDialog.interactive = true; } From 2af2cd318f58dc2a10725b3828068d70d6753186 Mon Sep 17 00:00:00 2001 From: PX4BuildBot Date: Sat, 9 Nov 2019 06:11:46 +0000 Subject: [PATCH 4/7] Update PX4 Firmware metadata Sat Nov 9 06:11:46 UTC 2019 --- src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml b/src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml index 71c47d8..482a4d7 100644 --- a/src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml +++ b/src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml @@ -982,6 +982,13 @@ Set -1 to disable the check 2 0.5 + + Timeout value for disarming when kill switch is engaged + 0.0 + 30.0 + s + 0.1 + Battery failsafe mode Action the system takes at critical battery. See also BAT_CRIT_THR and BAT_EMERGEN_THR for definition of battery states. From b0aae4a6c048ebc5580d6fe35563015d8fb8f6df Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Sat, 9 Nov 2019 04:41:27 -0800 Subject: [PATCH 5/7] Better incomplete data visuals --- src/PlanView/MissionItemEditor.qml | 52 +++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/src/PlanView/MissionItemEditor.qml b/src/PlanView/MissionItemEditor.qml index 8b8a577..5a1ec49 100644 --- a/src/PlanView/MissionItemEditor.qml +++ b/src/PlanView/MissionItemEditor.qml @@ -14,11 +14,13 @@ import QGroundControl.Palette 1.0 /// Mission item edit control Rectangle { - id: _root - height: editorLoader.visible ? (editorLoader.y + editorLoader.height + (_margin * 2)) : (commandPicker.y + commandPicker.height + _margin / 2) - color: _currentItem ? qgcPal.missionItemEditor : qgcPal.windowShade - radius: _radius - opacity: _currentItem ? 1.0 : 0.7 + id: _root + height: editorLoader.visible ? (editorLoader.y + editorLoader.height + (_margin * 2)) : (commandPicker.y + commandPicker.height + _margin / 2) + color: _currentItem ? qgcPal.missionItemEditor : qgcPal.windowShade + radius: _radius + opacity: _currentItem ? 1.0 : 0.7 + border.width: _readyForSave ? 0 : 1 + border.color: qgcPal.warningText property var map ///< Map control property var masterController @@ -38,6 +40,7 @@ Rectangle { property bool _noMissionItemsAdded: ListView.view.model.count === 1 property real _sectionSpacer: ScreenTools.defaultFontPixelWidth / 2 // spacing between section headings property bool _singleComplexItem: _missionController.complexMissionItemNames.length === 1 + property bool _readyForSave: missionItem.readyForSaveState === VisualMissionItem.ReadyForSave readonly property real _editFieldWidth: Math.min(width - _margin * 2, ScreenTools.defaultFontPixelWidth * 12) readonly property real _margin: ScreenTools.defaultFontPixelWidth / 2 @@ -73,27 +76,43 @@ Rectangle { } Rectangle { - anchors.verticalCenter: commandPicker.verticalCenter + id: notReadyForSaveIndicator + anchors.verticalCenter: notReadyForSaveLabel.visible ? notReadyForSaveLabel.verticalCenter : commandPicker.verticalCenter anchors.leftMargin: _margin anchors.left: parent.left width: readyForSaveLabel.contentHeight height: width border.width: 1 - border.color: "red" + border.color: qgcPal.warningText color: "white" radius: width / 2 - visible: missionItem.readyForSaveState !== VisualMissionItem.ReadyForSave + visible: !_readyForSave QGCLabel { id: readyForSaveLabel anchors.centerIn: parent //: Indicator in Plan view to show mission item is not ready for save/send text: qsTr("?") - color: "red" + color: qgcPal.warningText font.pointSize: ScreenTools.smallFontPointSize } } + QGCLabel { + id: notReadyForSaveLabel + anchors.margins: _margin + anchors.left: notReadyForSaveIndicator.right + anchors.right: parent.right + anchors.top: commandPicker.bottom + visible: _currentItem && !_readyForSave + text: missionItem.readyForSaveState === VisualMissionItem.NotReadyForSaveTerrain ? + qsTr("Incomplete: Waiting on terrain data.") : + qsTr("Incomplete: Item not fully specified.") + wrapMode: Text.WordWrap + horizontalAlignment: Text.AlignHCenter + color: qgcPal.warningText + } + QGCColoredImage { id: hamburger anchors.rightMargin: ScreenTools.defaultFontPixelWidth @@ -197,18 +216,10 @@ Rectangle { QGCButton { id: commandPicker - anchors.topMargin: _margin / 2 + anchors.topMargin: _margin anchors.rightMargin: ScreenTools.defaultFontPixelWidth - anchors.leftMargin: _margin anchors.left: parent.left - - /* - Trying no sequence numbers in ui - anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 2 - anchors.left: label.right - */ - anchors.top: parent.top visible: !commandLabel.visible text: missionItem.commandName @@ -237,10 +248,9 @@ Rectangle { Loader { id: editorLoader - anchors.leftMargin: _margin - anchors.topMargin: _margin + anchors.margins: _margin anchors.left: parent.left - anchors.top: commandPicker.bottom + anchors.top: _readyForSave ? commandPicker.bottom : notReadyForSaveLabel.bottom source: missionItem.editorQml visible: _currentItem From 290450ef5e39fbf818d38c18fbc77a931085f616 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Sat, 9 Nov 2019 04:41:47 -0800 Subject: [PATCH 6/7] New centered PlanEditToolbar --- src/MissionManager/QGCMapPolygonVisuals.qml | 9 +++++---- src/MissionManager/QGCMapPolylineVisuals.qml | 9 +++++---- src/PlanView/PlanEditToolbar.qml | 17 +++++++++-------- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/MissionManager/QGCMapPolygonVisuals.qml b/src/MissionManager/QGCMapPolygonVisuals.qml index 7c51c04..c00fb1b 100644 --- a/src/MissionManager/QGCMapPolygonVisuals.qml +++ b/src/MissionManager/QGCMapPolygonVisuals.qml @@ -516,10 +516,11 @@ Item { id: toolbarComponent PlanEditToolbar { - x: mapControl.centerViewport.left - y: mapControl.centerViewport.top - width: mapControl.centerViewport.width - z: QGroundControl.zOrderMapItems + 2 + anchors.horizontalCenter: mapControl.left + anchors.horizontalCenterOffset: mapControl.centerViewport.left + (mapControl.centerViewport.width / 2) + y: mapControl.centerViewport.top + z: QGroundControl.zOrderMapItems + 2 + availableWidth: mapControl.centerViewport.width QGCButton { _horizontalPadding: 0 diff --git a/src/MissionManager/QGCMapPolylineVisuals.qml b/src/MissionManager/QGCMapPolylineVisuals.qml index fbd9a81..ab88a61 100644 --- a/src/MissionManager/QGCMapPolylineVisuals.qml +++ b/src/MissionManager/QGCMapPolylineVisuals.qml @@ -314,10 +314,11 @@ Item { id: toolbarComponent PlanEditToolbar { - x: mapControl.centerViewport.left - y: mapControl.centerViewport.top - width: mapControl.centerViewport.width - z: QGroundControl.zOrderMapItems + 2 + anchors.horizontalCenter: mapControl.left + anchors.horizontalCenterOffset: mapControl.centerViewport.left + (mapControl.centerViewport.width / 2) + y: mapControl.centerViewport.top + z: QGroundControl.zOrderMapItems + 2 + availableWidth: mapControl.centerViewport.width QGCButton { _horizontalPadding: 0 diff --git a/src/PlanView/PlanEditToolbar.qml b/src/PlanView/PlanEditToolbar.qml index 7822e41..9601945 100644 --- a/src/PlanView/PlanEditToolbar.qml +++ b/src/PlanView/PlanEditToolbar.qml @@ -14,14 +14,18 @@ import QtQuick.Layouts 1.2 import QGroundControl 1.0 import QGroundControl.ScreenTools 1.0 import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 /// Toolbar used for things like Polygon editing tools Item { + width: Math.min(toolsRowLayout.width + (_margins * 2), availableWidth) height: toolsFlickable.y + toolsFlickable.height + _margins z: QGroundControl.zOrderMapItems + 2 - property real _radius: ScreenTools.defaultFontPixelWidth / 2 - property real _margins: ScreenTools.defaultFontPixelWidth / 2 + property real availableWidth + + property real _radius: ScreenTools.defaultFontPixelWidth / 2 + property real _margins: ScreenTools.defaultFontPixelWidth / 2 Component.onCompleted: { // Move the child controls from consumer into the layout control @@ -39,8 +43,7 @@ Item { Rectangle { anchors.fill: parent radius: _radius - color: "white" - opacity: 0.75 + color: qgcPal.globalTheme === QGCPalette.Light ? QGroundControl.corePlugin.options.toolbarBackgroundLight : QGroundControl.corePlugin.options.toolbarBackgroundDark } QGCFlickable { @@ -64,10 +67,8 @@ Item { id: instructionComponent QGCLabel { - id: instructionLabel - color: "black" - text: _instructionText - Layout.fillWidth: true + id: instructionLabel + text: _instructionText } } } From afcc3fb6fb32e497789ed55631c277164181d7cb Mon Sep 17 00:00:00 2001 From: PX4 BuildBot Date: Sun, 10 Nov 2019 06:54:19 +0000 Subject: [PATCH 7/7] Update mavlink v2.0 submodule Sun Nov 10 06:54:19 UTC 2019 --- libs/mavlink/include/mavlink/v2.0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/mavlink/include/mavlink/v2.0 b/libs/mavlink/include/mavlink/v2.0 index cd003f2..6a16078 160000 --- a/libs/mavlink/include/mavlink/v2.0 +++ b/libs/mavlink/include/mavlink/v2.0 @@ -1 +1 @@ -Subproject commit cd003f27415dcb7abd94867fd5c44cda2fc3bdf5 +Subproject commit 6a160785b46f14c31ec014517324f25d606066ce