From 6485d28073d3b98e06f3cabdb19523d6754ee837 Mon Sep 17 00:00:00 2001 From: Valentin Platzgummer Date: Fri, 27 Nov 2020 17:12:59 +0100 Subject: [PATCH] flightpathSegments added to MeasurementComplexItem --- .../MeasurementComplexItem.cc | 48 +++++++++++++++++-- .../MeasurementComplexItem.h | 2 +- .../qml/ParameterEditor.qml | 10 +++- 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/src/MeasurementComplexItem/MeasurementComplexItem.cc b/src/MeasurementComplexItem/MeasurementComplexItem.cc index 4a09a2419..41262996d 100644 --- a/src/MeasurementComplexItem/MeasurementComplexItem.cc +++ b/src/MeasurementComplexItem/MeasurementComplexItem.cc @@ -20,8 +20,6 @@ #include #include -#define CLIPPER_SCALE 1000000 - QGC_LOGGING_CATEGORY(MeasurementComplexItemLog, "MeasurementComplexItemLog") template @@ -39,8 +37,7 @@ const QString MeasurementComplexItem::name(tr("Measurement")); MeasurementComplexItem::MeasurementComplexItem( PlanMasterController *masterController, bool flyView, const QString &kmlOrShpFile, QObject *parent) - : ComplexMissionItem(masterController, flyView, parent), - _masterController(masterController), _sequenceNumber(0), + : ComplexMissionItem(masterController, flyView, parent), _sequenceNumber(0), _followTerrain(false), _state(STATE::IDLE), _metaDataMap(FactMetaData::createMapFromJsonFile( QStringLiteral(":/json/MeasurementComplexItem.SettingsGroup.json"), @@ -86,9 +83,15 @@ MeasurementComplexItem::MeasurementComplexItem( } } }); + + // Connect readyForSave connect(this, &MeasurementComplexItem::idleChanged, this, &MeasurementComplexItem::readyForSaveStateChanged); + // Connect flightPathSegments + connect(this, &MeasurementComplexItem::routeChanged, this, + &MeasurementComplexItem::_updateFlightpathSegments); + // Connect complexDistance. connect(this, &MeasurementComplexItem::routeChanged, [this] { emit this->complexDistanceChanged(); }); @@ -385,6 +388,43 @@ bool MeasurementComplexItem::_idle(MeasurementComplexItem::STATE state) { return state == STATE::IDLE; } +void MeasurementComplexItem::_updateFlightpathSegments() { + if (_cTerrainCollisionSegments != 0) { + _cTerrainCollisionSegments = 0; + emit terrainCollisionChanged(false); + qCritical() << "add alt color here..."; + } + + _flightPathSegments.beginReset(); + _flightPathSegments.clearAndDeleteContents(); + + if (_route.size() > 2) { + bool ok = false; + double alt = _altitude.rawValue().toDouble(&ok) + + _masterController->missionController() + ->plannedHomePosition() + .altitude(); + if (ok) { + auto prev = _route.cbegin(); + for (auto next = _route.cbegin() + 1; next != _route.end(); ++next) { + auto v1 = prev->value(); + auto v2 = next->value(); + _appendFlightPathSegment(v1, alt, v2, alt); + prev = next; + } + } else { + qCCritical(MeasurementComplexItemLog) << "_altitude fact not ok."; + } + } + + _flightPathSegments.endReset(); + + if (_cTerrainCollisionSegments != 0) { + emit terrainCollisionChanged(true); + } + + _masterController->missionController()->recalcTerrainProfile(); +} void MeasurementComplexItem::_setAreaData( MeasurementComplexItem::PtrAreaData data) { if (_pCurrentData != data) { diff --git a/src/MeasurementComplexItem/MeasurementComplexItem.h b/src/MeasurementComplexItem/MeasurementComplexItem.h index 836ec2ded..adba43f7e 100644 --- a/src/MeasurementComplexItem/MeasurementComplexItem.h +++ b/src/MeasurementComplexItem/MeasurementComplexItem.h @@ -174,9 +174,9 @@ private: static bool _calculating(STATE state); static bool _editing(STATE state); static bool _idle(STATE state); + void _updateFlightpathSegments(); // Hirarcical stuff. - PlanMasterController *_masterController; int _sequenceNumber; bool _followTerrain; diff --git a/src/MeasurementComplexItem/qml/ParameterEditor.qml b/src/MeasurementComplexItem/qml/ParameterEditor.qml index be7897e08..bd06a848a 100644 --- a/src/MeasurementComplexItem/qml/ParameterEditor.qml +++ b/src/MeasurementComplexItem/qml/ParameterEditor.qml @@ -58,7 +58,15 @@ ColumnLayout { columns: 2 visible: generalHeader.checked - QGCLabel { text: qsTr("Altitude!!!") } + QGCLabel { + text: qsTr("Altitude") + Layout.fillWidth: true + } + FactTextField { + fact: missionItem.altitude + Layout.fillWidth: true + } + QGCLabel { text: qsTr("Relative Altitude!!!") } QGCLabel { -- 2.22.0