From adcc3d0a2d1633c82ab8d025372c4d26da3bc198 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Wed, 26 Apr 2017 10:43:07 -0700 Subject: [PATCH] Fix incorrect display of continue/resume mission --- src/FlightDisplay/GuidedActionsController.qml | 7 +++++-- src/MissionManager/MissionController.cc | 14 ++++++++++++++ src/MissionManager/MissionController.h | 6 ++++-- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/FlightDisplay/GuidedActionsController.qml b/src/FlightDisplay/GuidedActionsController.qml index e19ff8930..64c1e1fb5 100644 --- a/src/FlightDisplay/GuidedActionsController.qml +++ b/src/FlightDisplay/GuidedActionsController.qml @@ -87,8 +87,8 @@ Item { property bool showTakeoff: _activeVehicle && _activeVehicle.guidedModeSupported && !_vehicleFlying && !_activeVehicle.fixedWing property bool showLand: _activeVehicle && _activeVehicle.guidedModeSupported && _vehicleArmed && !_activeVehicle.fixedWing && !_vehicleInLandMode property bool showStartMission: _activeVehicle && _missionAvailable && !_missionActive && !_vehicleFlying - property bool showContinueMission: _activeVehicle && _missionAvailable && !_missionActive && _vehicleFlying - property bool showResumeMission: _activeVehicle && !_vehicleFlying && _missionAvailable && _resumeMissionIndex > 0 + property bool showContinueMission: _activeVehicle && _missionAvailable && !_missionActive && _vehicleFlying && (_currentMissionIndex < missionController.visualItems.count - 1) + property bool showResumeMission: _activeVehicle && !_vehicleFlying && _missionAvailable && _resumeMissionIndex > 0 && (_resumeMissionIndex < missionController.visualItems.count - 2) property bool showPause: _activeVehicle && _vehicleArmed && _activeVehicle.pauseVehicleSupported && _vehicleFlying && !_vehiclePaused property bool showChangeAlt: (_activeVehicle && _vehicleFlying) && _activeVehicle.guidedModeSupported && _vehicleArmed && !_missionActive property bool showOrbit: !_hideOrbit && _activeVehicle && _vehicleFlying && _activeVehicle.orbitModeSupported && _vehicleArmed && !_missionActive @@ -105,11 +105,14 @@ Item { property bool _vehicleInMissionMode: false property bool _vehicleInRTLMode: false property bool _vehicleInLandMode: false + property int _currentMissionIndex: missionController.currentMissionIndex property int _resumeMissionIndex: missionController.resumeMissionIndex property bool _hideEmergenyStop: !QGroundControl.corePlugin.options.guidedBarShowEmergencyStop property bool _hideOrbit: !QGroundControl.corePlugin.options.guidedBarShowOrbit property var _actionData + on_CurrentMissionIndexChanged: console.log("_currentMissionIndex", _currentMissionIndex) + on_FlightModeChanged: { _vehiclePaused = _flightMode === _activeVehicle.pauseFlightMode _vehicleInRTLMode = _flightMode === _activeVehicle.rtlFlightMode diff --git a/src/MissionManager/MissionController.cc b/src/MissionManager/MissionController.cc index a8bf78486..158c7b902 100644 --- a/src/MissionManager/MissionController.cc +++ b/src/MissionManager/MissionController.cc @@ -1528,6 +1528,19 @@ int MissionController::resumeMissionIndex(void) const return resumeIndex; } +int MissionController::currentMissionIndex(void) const +{ + if (_editMode) { + return -1; + } else { + int currentIndex = _missionManager->currentIndex(); + if (!_controllerVehicle->firmwarePlugin()->sendHomePositionToVehicle()) { + currentIndex++; + } + return currentIndex; + } +} + void MissionController::_currentMissionIndexChanged(int sequenceNumber) { if (!_editMode) { @@ -1539,6 +1552,7 @@ void MissionController::_currentMissionIndexChanged(int sequenceNumber) VisualMissionItem* item = qobject_cast(_visualItems->get(i)); item->setIsCurrentItem(item->sequenceNumber() == sequenceNumber); } + emit currentMissionIndexChanged(currentMissionIndex()); } } diff --git a/src/MissionManager/MissionController.h b/src/MissionManager/MissionController.h index 2721663bc..b784ace61 100644 --- a/src/MissionManager/MissionController.h +++ b/src/MissionManager/MissionController.h @@ -70,7 +70,8 @@ public: Q_PROPERTY(double progressPct READ progressPct NOTIFY progressPctChanged) - Q_PROPERTY(int resumeMissionIndex READ resumeMissionIndex NOTIFY resumeMissionIndexChanged) + Q_PROPERTY(int currentMissionIndex READ currentMissionIndex NOTIFY currentMissionIndexChanged) + Q_PROPERTY(int resumeMissionIndex READ resumeMissionIndex NOTIFY resumeMissionIndexChanged) ///< Returns the item index two which a mission should be resumed. -1 indicates resume mission not available. Q_PROPERTY(double missionDistance READ missionDistance NOTIFY missionDistanceChanged) Q_PROPERTY(double missionTime READ missionTime NOTIFY missionTimeChanged) @@ -134,7 +135,7 @@ public: QGeoCoordinate plannedHomePosition (void) const; double progressPct (void) const { return _progressPct; } - /// Returns the item index two which a mission should be resumed. -1 indicates resume mission not available. + int currentMissionIndex(void) const; int resumeMissionIndex(void) const; double missionDistance (void) const { return _missionFlightStatus.totalDistance; } @@ -166,6 +167,7 @@ signals: void batteriesRequiredChanged(int batteriesRequired); void plannedHomePositionChanged(QGeoCoordinate plannedHomePosition); void progressPctChanged(double progressPct); + void currentMissionIndexChanged(int currentMissionIndex); private slots: void _newMissionItemsAvailableFromVehicle(bool removeAllRequested); -- 2.22.0