diff --git a/src/MissionManager/MissionController.cc b/src/MissionManager/MissionController.cc index 490416d624e23f8a39b56c99ee6961203f7bf8b6..f8645323f138422b3e5448041a4ee127fcdc2ab3 100644 --- a/src/MissionManager/MissionController.cc +++ b/src/MissionManager/MissionController.cc @@ -1228,6 +1228,7 @@ void MissionController::_initAllVisualItems(void) } connect(_settingsItem, &MissionSettingsItem::coordinateChanged, this, &MissionController::_recalcAll); + connect(_settingsItem, &MissionSettingsItem::coordinateChanged, this, &MissionController::plannedHomePositionChanged); for (int i=0; i<_visualItems->count(); i++) { VisualMissionItem* item = qobject_cast(_visualItems->get(i)); @@ -1241,12 +1242,16 @@ void MissionController::_initAllVisualItems(void) emit visualItemsChanged(); emit containsItemsChanged(containsItems()); + emit plannedHomePositionChanged(plannedHomePosition()); _visualItems->setDirty(false); } void MissionController::_deinitAllVisualItems(void) { + disconnect(_settingsItem, &MissionSettingsItem::coordinateChanged, this, &MissionController::_recalcAll); + disconnect(_settingsItem, &MissionSettingsItem::coordinateChanged, this, &MissionController::plannedHomePositionChanged); + for (int i=0; i<_visualItems->count(); i++) { _deinitVisualItem(qobject_cast(_visualItems->get(i))); } @@ -1583,3 +1588,12 @@ void MissionController::resumeMission(int resumeIndex) } _activeVehicle->missionManager()->generateResumeMission(resumeIndex); } + +QGeoCoordinate MissionController::plannedHomePosition(void) const +{ + if (_settingsItem) { + return _settingsItem->coordinate(); + } else { + return QGeoCoordinate(); + } +} diff --git a/src/MissionManager/MissionController.h b/src/MissionManager/MissionController.h index 85efdcf3fc50edf8f25dff7eb3250cbb0a691e01..62c24cca6f6886102e5b98874c07456d0daa7412 100644 --- a/src/MissionManager/MissionController.h +++ b/src/MissionManager/MissionController.h @@ -62,6 +62,7 @@ public: Q_PROPERTY(QmlObjectListModel* visualItems READ visualItems NOTIFY visualItemsChanged) Q_PROPERTY(QmlObjectListModel* waypointLines READ waypointLines NOTIFY waypointLinesChanged) Q_PROPERTY(QStringList complexMissionItemNames READ complexMissionItemNames NOTIFY complexMissionItemNamesChanged) + Q_PROPERTY(QGeoCoordinate plannedHomePosition READ plannedHomePosition NOTIFY plannedHomePositionChanged) Q_PROPERTY(int resumeMissionItem READ resumeMissionItem NOTIFY resumeMissionItemChanged) @@ -123,6 +124,7 @@ public: QmlObjectListModel* visualItems (void) { return _visualItems; } QmlObjectListModel* waypointLines (void) { return &_waypointLines; } QStringList complexMissionItemNames (void) const; + QGeoCoordinate plannedHomePosition (void) const; /// Returns the item index two which a mission should be resumed. -1 indicates resume mission not available. int resumeMissionItem(void) const; @@ -154,6 +156,7 @@ signals: void resumeMissionReady(void); void batteryChangePointChanged(int batteryChangePoint); void batteriesRequiredChanged(int batteriesRequired); + void plannedHomePositionChanged(QGeoCoordinate plannedHomePosition); private slots: void _newMissionItemsAvailableFromVehicle(bool removeAllRequested);