diff --git a/src/FlightDisplay/FlightDisplayView.qml b/src/FlightDisplay/FlightDisplayView.qml index cc54bc7e661c1ad2d724b31f4eff236bc5bd3364..19c027e4e37a22106b88923403cad1bb52af6947 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 } } } diff --git a/src/FlightDisplay/FlightDisplayViewWidgets.qml b/src/FlightDisplay/FlightDisplayViewWidgets.qml index 13b7d54db63604217045809733e7c50a82fc6a47..305d41943b36b352778a102e4d848f708a28d76b 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