From 74f2823a2784c3ee8b5fd4ba995d128ae6e507aa Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Wed, 13 Nov 2019 11:27:27 -0800 Subject: [PATCH] Fix handling of _addMissionSettings --- src/MissionManager/MissionController.cc | 89 ++++++++++++------------- src/MissionManager/MissionController.h | 3 +- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/src/MissionManager/MissionController.cc b/src/MissionManager/MissionController.cc index 9b37059ea..9cfd481b8 100644 --- a/src/MissionManager/MissionController.cc +++ b/src/MissionManager/MissionController.cc @@ -140,7 +140,7 @@ void MissionController::_init(void) { // We start with an empty mission _visualItems = new QmlObjectListModel(this); - _addMissionSettings(_visualItems, false /* addToCenter */); + _addMissionSettings(_visualItems); _initAllVisualItems(); } @@ -169,19 +169,17 @@ void MissionController::_newMissionItemsAvailableFromVehicle(bool removeAllReque _missionItemCount = newMissionItems.count(); emit missionItemCountChanged(_missionItemCount); - int i = 0; - if (_controllerVehicle->firmwarePlugin()->sendHomePositionToVehicle() && newMissionItems.count() != 0) { + _addMissionSettings(newControllerMissionItems); + + int i=0; + if (_controllerVehicle->firmwarePlugin()->sendHomePositionToVehicle() && newMissionItems.count() != 0 && !_flyView) { // First item is fake home position - _addMissionSettings(newControllerMissionItems, false /* addToCenter */); MissionItem* fakeHomeItem = newMissionItems[0]; if (fakeHomeItem->coordinate().latitude() != 0 || fakeHomeItem->coordinate().longitude() != 0) { _settingsItem->setInitialHomePosition(fakeHomeItem->coordinate()); } i = 1; } - if (!_controllerVehicle->firmwarePlugin()->sendHomePositionToVehicle() || _visualItems->count() == 0) { - _addMissionSettings(_visualItems, !_flyView && _visualItems->count() > 0 /* addToCenter */); - } for (; i < newMissionItems.count(); i++) { const MissionItem* missionItem = newMissionItems[i]; @@ -610,7 +608,7 @@ void MissionController::removeAll(void) _visualItems->deleteLater(); _settingsItem = nullptr; _visualItems = new QmlObjectListModel(this); - _addMissionSettings(_visualItems, false /* addToCenter */); + _addMissionSettings(_visualItems); _initAllVisualItems(); setDirty(true); _resetMissionFlightStatus(); @@ -658,7 +656,7 @@ bool MissionController::_loadJsonMissionFileV1(const QJsonObject& json, QmlObjec int nextSequenceNumber = 1; // Start with 1 since home is in 0 QJsonArray itemArray(json[_jsonItemsKey].toArray()); - _addMissionSettings(visualItems, true /* addToCenter */); + _addMissionSettings(visualItems); if (json.contains(_jsonPlannedHomePositionKey)) { SimpleMissionItem* item = new SimpleMissionItem(_controllerVehicle, _flyView, visualItems); if (item->load(json[_jsonPlannedHomePositionKey].toObject(), 0, errorString)) { @@ -925,8 +923,7 @@ bool MissionController::_loadTextMissionFile(QTextStream& stream, QmlObjectListM } if (versionOk) { - // Start with planned home in center - _addMissionSettings(visualItems, true /* addToCenter */); + _addMissionSettings(visualItems); while (!stream.atEnd()) { SimpleMissionItem* item = new SimpleMissionItem(_controllerVehicle, _flyView, visualItems); @@ -978,7 +975,7 @@ void MissionController::_initLoadedVisualItems(QmlObjectListModel* loadedVisualI _visualItems = loadedVisualItems; if (_visualItems->count() == 0) { - _addMissionSettings(_visualItems, true /* addToCenter */); + _addMissionSettings(_visualItems); } MissionController::_scanForAdditionalSettings(_visualItems, _controllerVehicle); @@ -1902,48 +1899,50 @@ double MissionController::_normalizeLon(double lon) } /// Add the Mission Settings complex item to the front of the items -void MissionController::_addMissionSettings(QmlObjectListModel* visualItems, bool addToCenter) +void MissionController::_addMissionSettings(QmlObjectListModel* visualItems) { + qCDebug(MissionControllerLog) << "_addMissionSettings"; + _settingsItem = new MissionSettingsItem(_controllerVehicle, _flyView, visualItems); + visualItems->insert(0, _settingsItem); - qCDebug(MissionControllerLog) << "_addMissionSettings addToCenter" << addToCenter; + _settingsItem->setHomePositionFromVehicle(_managerVehicle); +} - visualItems->insert(0, _settingsItem); +void MissionController::_centerHomePositionOnMissionItems(QmlObjectListModel *visualItems) +{ + qCDebug(MissionControllerLog) << "_centerHomePositionOnMissionItems"; - if (addToCenter) { - if (visualItems->count() > 1) { - double north = 0.0; - double south = 0.0; - double east = 0.0; - double west = 0.0; - bool firstCoordSet = false; - - for (int i=1; icount(); i++) { - VisualMissionItem* item = qobject_cast(visualItems->get(i)); - if (item->specifiesCoordinate()) { - if (firstCoordSet) { - double lat = _normalizeLat(item->coordinate().latitude()); - double lon = _normalizeLon(item->coordinate().longitude()); - north = fmax(north, lat); - south = fmin(south, lat); - east = fmax(east, lon); - west = fmin(west, lon); - } else { - firstCoordSet = true; - north = _normalizeLat(item->coordinate().latitude()); - south = north; - east = _normalizeLon(item->coordinate().longitude()); - west = east; - } + if (visualItems->count() > 1) { + double north = 0.0; + double south = 0.0; + double east = 0.0; + double west = 0.0; + bool firstCoordSet = false; + + for (int i=1; icount(); i++) { + VisualMissionItem* item = qobject_cast(visualItems->get(i)); + if (item->specifiesCoordinate()) { + if (firstCoordSet) { + double lat = _normalizeLat(item->coordinate().latitude()); + double lon = _normalizeLon(item->coordinate().longitude()); + north = fmax(north, lat); + south = fmin(south, lat); + east = fmax(east, lon); + west = fmin(west, lon); + } else { + firstCoordSet = true; + north = _normalizeLat(item->coordinate().latitude()); + south = north; + east = _normalizeLon(item->coordinate().longitude()); + west = east; } } + } - if (firstCoordSet) { - _settingsItem->setInitialHomePositionFromUser(QGeoCoordinate((south + ((north - south) / 2)) - 90.0, (west + ((east - west) / 2)) - 180.0, 0.0)); - } + if (firstCoordSet) { + _settingsItem->setInitialHomePositionFromUser(QGeoCoordinate((south + ((north - south) / 2)) - 90.0, (west + ((east - west) / 2)) - 180.0, 0.0)); } - } else { - _settingsItem->setHomePositionFromVehicle(_managerVehicle); } } diff --git a/src/MissionManager/MissionController.h b/src/MissionManager/MissionController.h index df88cf046..d781d53e1 100644 --- a/src/MissionManager/MissionController.h +++ b/src/MissionManager/MissionController.h @@ -278,7 +278,8 @@ private: bool _findPreviousAltitude(int newIndex, double* prevAltitude, int* prevAltitudeMode); static double _normalizeLat(double lat); static double _normalizeLon(double lon); - void _addMissionSettings(QmlObjectListModel* visualItems, bool addToCenter); + void _addMissionSettings(QmlObjectListModel* visualItems); + void _centerHomePositionOnMissionItems(QmlObjectListModel* visualItems); bool _loadJsonMissionFile(const QByteArray& bytes, QmlObjectListModel* visualItems, QString& errorString); bool _loadJsonMissionFileV1(const QJsonObject& json, QmlObjectListModel* visualItems, QString& errorString); bool _loadJsonMissionFileV2(const QJsonObject& json, QmlObjectListModel* visualItems, QString& errorString); -- 2.22.0