Commit 9c8042e6 authored by Don Gagne's avatar Don Gagne

parent 8ba7fa09
...@@ -371,7 +371,8 @@ int MissionController::insertSimpleMissionItem(QGeoCoordinate coordinate, int i) ...@@ -371,7 +371,8 @@ int MissionController::insertSimpleMissionItem(QGeoCoordinate coordinate, int i)
newItem->setMissionFlightStatus(_missionFlightStatus); newItem->setMissionFlightStatus(_missionFlightStatus);
_visualItems->insert(i, newItem); _visualItems->insert(i, newItem);
_recalcAll(); // We send the click coordinate through here to be able to set the planned home position from the user click location if needed
_recalcAllWithClickCoordinate(coordinate);
return newItem->sequenceNumber(); return newItem->sequenceNumber();
} }
...@@ -1517,8 +1518,10 @@ void MissionController::_recalcChildItems(void) ...@@ -1517,8 +1518,10 @@ void MissionController::_recalcChildItems(void)
} }
} }
void MissionController::_setPlannedHomePositionFromFirstCoordinate(void) void MissionController::_setPlannedHomePositionFromFirstCoordinate(const QGeoCoordinate& clickCoordinate)
{ {
QGeoCoordinate firstCoordinate;
if (_settingsItem->coordinate().isValid()) { if (_settingsItem->coordinate().isValid()) {
return; return;
} }
...@@ -1528,24 +1531,40 @@ void MissionController::_setPlannedHomePositionFromFirstCoordinate(void) ...@@ -1528,24 +1531,40 @@ void MissionController::_setPlannedHomePositionFromFirstCoordinate(void)
VisualMissionItem* item = _visualItems->value<VisualMissionItem*>(i); VisualMissionItem* item = _visualItems->value<VisualMissionItem*>(i);
if (item->specifiesCoordinate()) { if (item->specifiesCoordinate()) {
QGeoCoordinate plannedHomeCoord = item->coordinate().atDistanceAndAzimuth(30, 0); firstCoordinate = item->coordinate();
plannedHomeCoord.setAltitude(0); break;
_settingsItem->setCoordinate(plannedHomeCoord);
} }
} }
}
// No item specifying a coordinate was found, in this case it we have a clickCoordinate use that
if (!firstCoordinate.isValid()) {
firstCoordinate = clickCoordinate;
}
void MissionController::_recalcAll(void) if (firstCoordinate.isValid()) {
QGeoCoordinate plannedHomeCoord = firstCoordinate.atDistanceAndAzimuth(30, 0);
plannedHomeCoord.setAltitude(0);
_settingsItem->setCoordinate(plannedHomeCoord);
}
}
/// @param clickCoordinate The location of the user click when inserting a new item
void MissionController::_recalcAllWithClickCoordinate(QGeoCoordinate& clickCoordinate)
{ {
if (!_flyView) { if (!_flyView) {
_setPlannedHomePositionFromFirstCoordinate(); _setPlannedHomePositionFromFirstCoordinate(clickCoordinate);
} }
_recalcSequence(); _recalcSequence();
_recalcChildItems(); _recalcChildItems();
_recalcWaypointLines(); _recalcWaypointLines();
} }
void MissionController::_recalcAll(void)
{
QGeoCoordinate emptyCoord;
_recalcAllWithClickCoordinate(emptyCoord);
}
/// Initializes a new set of mission items /// Initializes a new set of mission items
void MissionController::_initAllVisualItems(void) void MissionController::_initAllVisualItems(void)
{ {
......
...@@ -225,12 +225,13 @@ private slots: ...@@ -225,12 +225,13 @@ private slots:
void _visualItemsDirtyChanged(bool dirty); void _visualItemsDirtyChanged(bool dirty);
void _managerSendComplete(bool error); void _managerSendComplete(bool error);
void _managerRemoveAllComplete(bool error); void _managerRemoveAllComplete(bool error);
void _recalcAll(void);
private: private:
void _init(void); void _init(void);
void _recalcSequence(void); void _recalcSequence(void);
void _recalcChildItems(void); void _recalcChildItems(void);
void _recalcAll(void); void _recalcAllWithClickCoordinate(QGeoCoordinate& clickCoordinate);
void _initAllVisualItems(void); void _initAllVisualItems(void);
void _deinitAllVisualItems(void); void _deinitAllVisualItems(void);
void _initVisualItem(VisualMissionItem* item); void _initVisualItem(VisualMissionItem* item);
...@@ -249,7 +250,7 @@ private: ...@@ -249,7 +250,7 @@ private:
int _nextSequenceNumber(void); int _nextSequenceNumber(void);
void _scanForAdditionalSettings(QmlObjectListModel* visualItems, Vehicle* vehicle); void _scanForAdditionalSettings(QmlObjectListModel* visualItems, Vehicle* vehicle);
static bool _convertToMissionItems(QmlObjectListModel* visualMissionItems, QList<MissionItem*>& rgMissionItems, QObject* missionItemParent); static bool _convertToMissionItems(QmlObjectListModel* visualMissionItems, QList<MissionItem*>& rgMissionItems, QObject* missionItemParent);
void _setPlannedHomePositionFromFirstCoordinate(void); void _setPlannedHomePositionFromFirstCoordinate(const QGeoCoordinate& clickCoordinate);
void _resetMissionFlightStatus(void); void _resetMissionFlightStatus(void);
void _addHoverTime(double hoverTime, double hoverDistance, int waypointIndex); void _addHoverTime(double hoverTime, double hoverDistance, int waypointIndex);
void _addCruiseTime(double cruiseTime, double cruiseDistance, int wayPointIndex); void _addCruiseTime(double cruiseTime, double cruiseDistance, int wayPointIndex);
......
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