|
|
@ -349,7 +349,7 @@ int MissionController::_nextSequenceNumber(void) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int MissionController::insertSimpleMissionItem(QGeoCoordinate coordinate, int visualItemIndex) |
|
|
|
VisualMissionItem* MissionController::insertSimpleMissionItem(QGeoCoordinate coordinate, int visualItemIndex, bool makeCurrentItem) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int sequenceNumber = _nextSequenceNumber(); |
|
|
|
int sequenceNumber = _nextSequenceNumber(); |
|
|
|
SimpleMissionItem * newItem = new SimpleMissionItem(_controllerVehicle, _flyView, this); |
|
|
|
SimpleMissionItem * newItem = new SimpleMissionItem(_controllerVehicle, _flyView, this); |
|
|
@ -373,15 +373,23 @@ int MissionController::insertSimpleMissionItem(QGeoCoordinate coordinate, int vi |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
newItem->setMissionFlightStatus(_missionFlightStatus); |
|
|
|
newItem->setMissionFlightStatus(_missionFlightStatus); |
|
|
|
|
|
|
|
if (visualItemIndex == -1) { |
|
|
|
|
|
|
|
_visualItems->append(newItem); |
|
|
|
|
|
|
|
} else { |
|
|
|
_visualItems->insert(visualItemIndex, newItem); |
|
|
|
_visualItems->insert(visualItemIndex, newItem); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// We send the click coordinate through here to be able to set the planned home position from the user click location if needed
|
|
|
|
// 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); |
|
|
|
_recalcAllWithClickCoordinate(coordinate); |
|
|
|
|
|
|
|
|
|
|
|
return newItem->sequenceNumber(); |
|
|
|
if (makeCurrentItem) { |
|
|
|
|
|
|
|
setCurrentPlanViewIndex(newItem->sequenceNumber(), true); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return newItem; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int MissionController::insertROIMissionItem(QGeoCoordinate coordinate, int visualItemIndex) |
|
|
|
VisualMissionItem* MissionController::insertROIMissionItem(QGeoCoordinate coordinate, int visualItemIndex, bool makeCurrentItem) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int sequenceNumber = _nextSequenceNumber(); |
|
|
|
int sequenceNumber = _nextSequenceNumber(); |
|
|
|
SimpleMissionItem * newItem = new SimpleMissionItem(_controllerVehicle, _flyView, this); |
|
|
|
SimpleMissionItem * newItem = new SimpleMissionItem(_controllerVehicle, _flyView, this); |
|
|
@ -399,16 +407,24 @@ int MissionController::insertROIMissionItem(QGeoCoordinate coordinate, int visua |
|
|
|
newItem->altitude()->setRawValue(prevAltitude); |
|
|
|
newItem->altitude()->setRawValue(prevAltitude); |
|
|
|
newItem->setAltitudeMode(static_cast<QGroundControlQmlGlobal::AltitudeMode>(prevAltitudeMode)); |
|
|
|
newItem->setAltitudeMode(static_cast<QGroundControlQmlGlobal::AltitudeMode>(prevAltitudeMode)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (visualItemIndex == -1) { |
|
|
|
|
|
|
|
_visualItems->append(newItem); |
|
|
|
|
|
|
|
} else { |
|
|
|
_visualItems->insert(visualItemIndex, newItem); |
|
|
|
_visualItems->insert(visualItemIndex, newItem); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
_recalcAll(); |
|
|
|
_recalcAll(); |
|
|
|
|
|
|
|
|
|
|
|
return newItem->sequenceNumber(); |
|
|
|
if (makeCurrentItem) { |
|
|
|
|
|
|
|
setCurrentPlanViewIndex(newItem->sequenceNumber(), true); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return newItem; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int MissionController::insertComplexMissionItem(QString itemName, QGeoCoordinate mapCenterCoordinate, int visualItemIndex) |
|
|
|
VisualMissionItem* MissionController::insertComplexMissionItem(QString itemName, QGeoCoordinate mapCenterCoordinate, int visualItemIndex, bool makeCurrentItem) |
|
|
|
{ |
|
|
|
{ |
|
|
|
ComplexMissionItem* newItem; |
|
|
|
ComplexMissionItem* newItem = nullptr; |
|
|
|
|
|
|
|
|
|
|
|
// If the ComplexMissionItem is inserted first, add a TakeOff SimpleMissionItem
|
|
|
|
// If the ComplexMissionItem is inserted first, add a TakeOff SimpleMissionItem
|
|
|
|
if (_visualItems->count() == 1 && (_controllerVehicle->fixedWing() || _controllerVehicle->vtol() || _controllerVehicle->multiRotor())) { |
|
|
|
if (_visualItems->count() == 1 && (_controllerVehicle->fixedWing() || _controllerVehicle->vtol() || _controllerVehicle->multiRotor())) { |
|
|
@ -428,15 +444,17 @@ int MissionController::insertComplexMissionItem(QString itemName, QGeoCoordinate |
|
|
|
newItem = new CorridorScanComplexItem(_controllerVehicle, _flyView, QString() /* kmlFile */, _visualItems /* parent */); |
|
|
|
newItem = new CorridorScanComplexItem(_controllerVehicle, _flyView, QString() /* kmlFile */, _visualItems /* parent */); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
qWarning() << "Internal error: Unknown complex item:" << itemName; |
|
|
|
qWarning() << "Internal error: Unknown complex item:" << itemName; |
|
|
|
return sequenceNumber; |
|
|
|
return nullptr; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return _insertComplexMissionItemWorker(newItem, visualItemIndex); |
|
|
|
_insertComplexMissionItemWorker(newItem, visualItemIndex, makeCurrentItem); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return newItem; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int MissionController::insertComplexMissionItemFromKMLOrSHP(QString itemName, QString file, int visualItemIndex) |
|
|
|
VisualMissionItem* MissionController::insertComplexMissionItemFromKMLOrSHP(QString itemName, QString file, int visualItemIndex, bool makeCurrentItem) |
|
|
|
{ |
|
|
|
{ |
|
|
|
ComplexMissionItem* newItem; |
|
|
|
ComplexMissionItem* newItem = nullptr; |
|
|
|
|
|
|
|
|
|
|
|
if (itemName == patternSurveyName) { |
|
|
|
if (itemName == patternSurveyName) { |
|
|
|
newItem = new SurveyComplexItem(_controllerVehicle, _flyView, file, _visualItems); |
|
|
|
newItem = new SurveyComplexItem(_controllerVehicle, _flyView, file, _visualItems); |
|
|
@ -446,13 +464,15 @@ int MissionController::insertComplexMissionItemFromKMLOrSHP(QString itemName, QS |
|
|
|
newItem = new CorridorScanComplexItem(_controllerVehicle, _flyView, file, _visualItems); |
|
|
|
newItem = new CorridorScanComplexItem(_controllerVehicle, _flyView, file, _visualItems); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
qWarning() << "Internal error: Unknown complex item:" << itemName; |
|
|
|
qWarning() << "Internal error: Unknown complex item:" << itemName; |
|
|
|
return _nextSequenceNumber(); |
|
|
|
return nullptr; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return _insertComplexMissionItemWorker(newItem, visualItemIndex); |
|
|
|
_insertComplexMissionItemWorker(newItem, visualItemIndex, makeCurrentItem); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return newItem; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int MissionController::_insertComplexMissionItemWorker(ComplexMissionItem* complexItem, int visualItemIndex) |
|
|
|
void MissionController::_insertComplexMissionItemWorker(ComplexMissionItem* complexItem, int visualItemIndex, bool makeCurrentItem) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int sequenceNumber = _nextSequenceNumber(); |
|
|
|
int sequenceNumber = _nextSequenceNumber(); |
|
|
|
bool surveyStyleItem = qobject_cast<SurveyComplexItem*>(complexItem) || |
|
|
|
bool surveyStyleItem = qobject_cast<SurveyComplexItem*>(complexItem) || |
|
|
@ -500,7 +520,9 @@ int MissionController::_insertComplexMissionItemWorker(ComplexMissionItem* compl |
|
|
|
} |
|
|
|
} |
|
|
|
_recalcAll(); |
|
|
|
_recalcAll(); |
|
|
|
|
|
|
|
|
|
|
|
return complexItem->sequenceNumber(); |
|
|
|
if (makeCurrentItem) { |
|
|
|
|
|
|
|
setCurrentPlanViewIndex(complexItem->sequenceNumber(), true); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void MissionController::removeMissionItem(int index) |
|
|
|
void MissionController::removeMissionItem(int index) |
|
|
|