From e13234e04ba213b55b1abaae4d1154bd2ac68a58 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Wed, 21 Mar 2018 09:38:05 -0700 Subject: [PATCH] Fix load/save bugs --- src/MissionManager/CorridorScanComplexItem.cc | 1 - src/MissionManager/CorridorScanComplexItem.h | 3 +- .../TransectStyleComplexItem.cc | 54 ++++++++++++------- src/MissionManager/TransectStyleComplexItem.h | 2 +- src/PlanView/CorridorScanEditor.qml | 2 +- 5 files changed, 37 insertions(+), 25 deletions(-) diff --git a/src/MissionManager/CorridorScanComplexItem.cc b/src/MissionManager/CorridorScanComplexItem.cc index de4a1da45..f5bdd9044 100644 --- a/src/MissionManager/CorridorScanComplexItem.cc +++ b/src/MissionManager/CorridorScanComplexItem.cc @@ -29,7 +29,6 @@ const char* CorridorScanComplexItem::jsonComplexItemTypeValue = "CorridorScan"; CorridorScanComplexItem::CorridorScanComplexItem(Vehicle* vehicle, QObject* parent) : TransectStyleComplexItem (vehicle, settingsGroup, parent) - , _ignoreRecalc (false) , _entryPoint (0) , _metaDataMap (FactMetaData::createMapFromJsonFile(QStringLiteral(":/json/CorridorScan.SettingsGroup.json"), this)) , _corridorWidthFact (settingsGroup, _metaDataMap[corridorWidthName]) diff --git a/src/MissionManager/CorridorScanComplexItem.h b/src/MissionManager/CorridorScanComplexItem.h index 7e45a13bb..a91236ccd 100644 --- a/src/MissionManager/CorridorScanComplexItem.h +++ b/src/MissionManager/CorridorScanComplexItem.h @@ -69,8 +69,7 @@ private: QGCMapPolyline _corridorPolyline; QList> _transectSegments; ///< Internal transect segments including grid exit, turnaround and internal camera points - bool _ignoreRecalc; - int _entryPoint; + int _entryPoint; QMap _metaDataMap; SettingsFact _corridorWidthFact; diff --git a/src/MissionManager/TransectStyleComplexItem.cc b/src/MissionManager/TransectStyleComplexItem.cc index 966408cfb..6f2602686 100644 --- a/src/MissionManager/TransectStyleComplexItem.cc +++ b/src/MissionManager/TransectStyleComplexItem.cc @@ -32,7 +32,7 @@ const char* TransectStyleComplexItem::terrainAdjustMaxDescentRateName = "Ter const char* TransectStyleComplexItem::_jsonTransectStyleComplexItemKey = "TransectStyleComplexItem"; const char* TransectStyleComplexItem::_jsonCameraCalcKey = "CameraCalc"; -const char* TransectStyleComplexItem::_jsonTransectPointsKey = "TransectPoints"; +const char* TransectStyleComplexItem::_jsonVisualTransectPointsKey = "VisualTransectPoints"; const char* TransectStyleComplexItem::_jsonItemsKey = "Items"; const char* TransectStyleComplexItem::_jsonFollowTerrainKey = "FollowTerrain"; @@ -150,7 +150,7 @@ void TransectStyleComplexItem::_save(QJsonObject& complexObject) // Save transects polyline JsonHelper::saveGeoCoordinateArray(_visualTransectPoints, false /* writeAltitude */, transectPointsJson); - innerObject[_jsonTransectPointsKey] = transectPointsJson; + innerObject[_jsonVisualTransectPointsKey] = transectPointsJson; // Save the interal mission items QJsonArray missionItemsJsonArray; @@ -205,7 +205,7 @@ bool TransectStyleComplexItem::_load(const QJsonObject& complexObject, QString& { hoverAndCaptureName, QJsonValue::Bool, true }, { refly90DegreesName, QJsonValue::Bool, true }, { _jsonCameraCalcKey, QJsonValue::Object, true }, - { _jsonTransectPointsKey, QJsonValue::Array, true }, + { _jsonVisualTransectPointsKey, QJsonValue::Array, true }, { _jsonItemsKey, QJsonValue::Array, true }, { _jsonFollowTerrainKey, QJsonValue::Bool, true }, }; @@ -213,13 +213,12 @@ bool TransectStyleComplexItem::_load(const QJsonObject& complexObject, QString& return false; } -#if 0 - // FIXME - // Load transect points - if (!JsonHelper::loadGeoCoordinateArray(innerObject[_jsonTransectPointsKey], false /* altitudeRequired */, _transectPoints, errorString)) { + // Load visual transect points + if (!JsonHelper::loadGeoCoordinateArray(innerObject[_jsonVisualTransectPointsKey], false /* altitudeRequired */, _visualTransectPoints, errorString)) { return false; } -#endif + _coordinate = _visualTransectPoints.count() ? _visualTransectPoints.first().value() : QGeoCoordinate(); + _exitCoordinate = _visualTransectPoints.count() ? _visualTransectPoints.last().value() : QGeoCoordinate(); // Load generated mission items _loadedMissionItemsParent = new QObject(this); @@ -339,6 +338,10 @@ bool TransectStyleComplexItem::hoverAndCaptureAllowed(void) const void TransectStyleComplexItem::_rebuildTransects(void) { + if (_ignoreRecalc) { + return; + } + _rebuildTransectsPhase1(); _queryTransectsPathHeightInfo(); @@ -352,6 +355,11 @@ void TransectStyleComplexItem::_rebuildTransects(void) } emit visualTransectPointsChanged(); + _coordinate = _visualTransectPoints.count() ? _visualTransectPoints.first().value() : QGeoCoordinate(); + _exitCoordinate = _visualTransectPoints.count() ? _visualTransectPoints.last().value() : QGeoCoordinate(); + emit coordinateChanged(_coordinate); + emit exitCoordinateChanged(_exitCoordinate); + _rebuildTransectsPhase2(); emit lastSequenceNumberChanged(lastSequenceNumber()); @@ -654,20 +662,26 @@ void TransectStyleComplexItem::setFollowTerrain(bool followTerrain) int TransectStyleComplexItem::lastSequenceNumber(void) const { - int itemCount = 0; + if (_loadedMissionItems.count()) { + // We have stored mission items, just use those + return _sequenceNumber + _loadedMissionItems.count() - 1; + } else { + // We have to determine from transects + int itemCount = 0; - foreach (const QList& rgCoordInfo, _transects) { - itemCount += rgCoordInfo.count(); - } + foreach (const QList& rgCoordInfo, _transects) { + itemCount += rgCoordInfo.count(); + } - if (_cameraTriggerInTurnAroundFact.rawValue().toBool()) { - // Only one camera start and on camera stop - itemCount += 2; - } else { - // Each transect will have a camera start and stop in it - itemCount += _transects.count() * 2; - } + if (_cameraTriggerInTurnAroundFact.rawValue().toBool()) { + // Only one camera start and on camera stop + itemCount += 2; + } else { + // Each transect will have a camera start and stop in it + itemCount += _transects.count() * 2; + } - return _sequenceNumber + itemCount - 1; + return _sequenceNumber + itemCount - 1; + } } diff --git a/src/MissionManager/TransectStyleComplexItem.h b/src/MissionManager/TransectStyleComplexItem.h index e616e5951..2eb73ae3e 100644 --- a/src/MissionManager/TransectStyleComplexItem.h +++ b/src/MissionManager/TransectStyleComplexItem.h @@ -192,7 +192,7 @@ protected: static const char* _jsonCameraCalcKey; static const char* _jsonTransectStyleComplexItemKey; - static const char* _jsonTransectPointsKey; + static const char* _jsonVisualTransectPointsKey; static const char* _jsonItemsKey; static const char* _jsonFollowTerrainKey; diff --git a/src/PlanView/CorridorScanEditor.qml b/src/PlanView/CorridorScanEditor.qml index bf3bb139b..754086544 100644 --- a/src/PlanView/CorridorScanEditor.qml +++ b/src/PlanView/CorridorScanEditor.qml @@ -134,7 +134,7 @@ Rectangle { SectionHeader { id: terrainHeader text: qsTr("Terrain") - checked: false + checked: missionItem.followTerrain } ColumnLayout { -- 2.22.0