From 95fdac9e591edcfde6ed3f41912b9b36064d5990 Mon Sep 17 00:00:00 2001 From: Valentin Platzgummer Date: Sat, 5 Oct 2019 15:51:21 +0200 Subject: [PATCH] plan data class edited --- src/MissionManager/MissionController.cc | 8 ++++---- src/MissionManager/MissionController.h | 4 +++- src/Wima/WimaController.h | 2 ++ src/Wima/WimaPlanData.cc | 11 +++++++++++ src/Wima/WimaPlanData.h | 5 +++++ src/Wima/WimaPlaner.cc | 10 ++++++++++ src/WimaView/WimaView.qml | 2 +- 7 files changed, 36 insertions(+), 6 deletions(-) diff --git a/src/MissionManager/MissionController.cc b/src/MissionManager/MissionController.cc index 613019bc6..98177a396 100644 --- a/src/MissionManager/MissionController.cc +++ b/src/MissionManager/MissionController.cc @@ -259,7 +259,7 @@ void MissionController::sendToVehicle(void) /// Converts from visual items to MissionItems /// @param missionItemParent QObject parent for newly allocated MissionItems, _surveyMissionItemName (tr("Survey")) /// @return true: Mission end action was added to end of list -bool MissionController::_convertToMissionItems(QmlObjectListModel* visualMissionItems, QList& rgMissionItems, QObject* missionItemParent) +bool MissionController::convertToMissionItems(QmlObjectListModel* visualMissionItems, QList& rgMissionItems, QObject* missionItemParent) { if (visualMissionItems->count() == 0) { return false; @@ -294,7 +294,7 @@ void MissionController::convertToKMLDocument(QDomDocument& document) QObject* deleteParent = new QObject(); QList rgMissionItems; - _convertToMissionItems(_visualItems, rgMissionItems, deleteParent); + convertToMissionItems(_visualItems, rgMissionItems, deleteParent); if (rgMissionItems.count() == 0) { return; } @@ -336,7 +336,7 @@ void MissionController::sendItemsToVehicle(Vehicle* vehicle, QmlObjectListModel* if (vehicle) { QList rgMissionItems; - _convertToMissionItems(visualMissionItems, rgMissionItems, vehicle); + convertToMissionItems(visualMissionItems, rgMissionItems, vehicle); // PlanManager takes control of MissionItems so no need to delete vehicle->missionManager()->writeMissionItems(rgMissionItems); @@ -1043,7 +1043,7 @@ void MissionController::save(QJsonObject& json) if (settingsItem) { QList rgMissionItems; - if (_convertToMissionItems(_visualItems, rgMissionItems, this /* missionItemParent */)) { + if (convertToMissionItems(_visualItems, rgMissionItems, this /* missionItemParent */)) { QJsonObject saveObject; MissionItem* missionItem = rgMissionItems[rgMissionItems.count() - 1]; missionItem->save(saveObject); diff --git a/src/MissionManager/MissionController.h b/src/MissionManager/MissionController.h index a86c8a865..6a0f4eb7f 100644 --- a/src/MissionManager/MissionController.h +++ b/src/MissionManager/MissionController.h @@ -143,6 +143,9 @@ public: /// Sends the mission items to the specified vehicle static void sendItemsToVehicle(Vehicle* vehicle, QmlObjectListModel* visualMissionItems); + static bool convertToMissionItems(QmlObjectListModel* visualMissionItems, QList& rgMissionItems, QObject* missionItemParent); + + bool loadJsonFile(QFile& file, QString& errorString); bool loadTextFile(QFile& file, QString& errorString); @@ -269,7 +272,6 @@ private: bool _loadTextMissionFile(QTextStream& stream, QmlObjectListModel* visualItems, QString& errorString); int _nextSequenceNumber(void); void _scanForAdditionalSettings(QmlObjectListModel* visualItems, Vehicle* vehicle); - static bool _convertToMissionItems(QmlObjectListModel* visualMissionItems, QList& rgMissionItems, QObject* missionItemParent); void _setPlannedHomePositionFromFirstCoordinate(const QGeoCoordinate& clickCoordinate); void _resetMissionFlightStatus(void); void _addHoverTime(double hoverTime, double hoverDistance, int waypointIndex); diff --git a/src/Wima/WimaController.h b/src/Wima/WimaController.h index 38b4e0aec..0d056f8b1 100644 --- a/src/Wima/WimaController.h +++ b/src/Wima/WimaController.h @@ -40,6 +40,7 @@ public: Q_PROPERTY(QStringList saveNameFilters READ saveNameFilters CONSTANT) Q_PROPERTY(QString fileExtension READ fileExtension CONSTANT) Q_PROPERTY(WimaDataContainer* dataContainer READ dataContainer WRITE setDataContainer NOTIFY dataContainerChanged) + Q_PROPERTY(QmlObjectListModel* missionItems READ missionItems NOTIFY missionItemsChanged) // Property accessors @@ -103,5 +104,6 @@ private: WimaServiceAreaData _serviceArea; // area for supplying WimaCorridorData _corridor; // corridor connecting opArea and serArea bool _localPlanDataValid; + QmlObjectListModel _missionItems; }; diff --git a/src/Wima/WimaPlanData.cc b/src/Wima/WimaPlanData.cc index 5e254214c..69ffd06c2 100644 --- a/src/Wima/WimaPlanData.cc +++ b/src/Wima/WimaPlanData.cc @@ -95,6 +95,11 @@ void WimaPlanData::append(const WimaMeasurementAreaData &areaData) } } +void WimaPlanData::append(const QList &missionItems) +{ + _missionItems.append(missionItems); +} + /*! * \fn void WimaPlanData::append(const WimaServiceAreaData &areaData) * @@ -103,6 +108,7 @@ void WimaPlanData::append(const WimaMeasurementAreaData &areaData) void WimaPlanData::clear() { _areaList.clear(); + _missionItems.clear(); } QList WimaPlanData::areaList() const @@ -110,6 +116,11 @@ QList WimaPlanData::areaList() const return _areaList; } +QList WimaPlanData::missionItems() const +{ + return _missionItems; +} + /*! * \class WimaPlanData * \brief Class storing data generated by the \c WimaPlaner class. diff --git a/src/Wima/WimaPlanData.h b/src/Wima/WimaPlanData.h index d59fea368..c283797e6 100644 --- a/src/Wima/WimaPlanData.h +++ b/src/Wima/WimaPlanData.h @@ -7,6 +7,7 @@ #include "WimaCorridorData.h" #include "WimaMeasurementAreaData.h" #include "WimaJoinedAreaData.h" +#include "MissionItem.h" class WimaPlanData : QObject { @@ -21,9 +22,11 @@ public: void append(const WimaServiceAreaData &areaData); void append(const WimaCorridorData &areaData); void append(const WimaMeasurementAreaData &areaData); + void append(const QList &missionItems); void clear(); QList areaList() const; + QList missionItems() const; @@ -36,4 +39,6 @@ private: WimaCorridorData _corridor; WimaMeasurementAreaData _measurementArea; QList _areaList; + + QList _missionItems; }; diff --git a/src/Wima/WimaPlaner.cc b/src/Wima/WimaPlaner.cc index 3edce2c7e..6ff0434e1 100644 --- a/src/Wima/WimaPlaner.cc +++ b/src/Wima/WimaPlaner.cc @@ -672,11 +672,21 @@ void WimaPlaner::setInteractive() WimaPlanData WimaPlaner::toPlanData() { WimaPlanData planData; + + // store areas planData.append(WimaMeasurementAreaData(_measurementArea)); planData.append(WimaServiceAreaData(_serviceArea)); planData.append(WimaCorridorData(_corridor)); planData.append(WimaJoinedAreaData(_joinedArea)); + // convert mission items to mavlink commands + QList rgMissionItems; + MissionController::convertToMissionItems(_missionController->visualItems(), rgMissionItems, this); + QList rgMissionItemsConst; + for (auto missionItem : rgMissionItems) + rgMissionItemsConst.append(missionItem); + // store mavlink commands + planData.append(rgMissionItemsConst); return planData; } diff --git a/src/WimaView/WimaView.qml b/src/WimaView/WimaView.qml index 39c0b751e..d2046ec7c 100644 --- a/src/WimaView/WimaView.qml +++ b/src/WimaView/WimaView.qml @@ -1289,7 +1289,7 @@ QGCView { QGCButton { text: qsTr("Upload") Layout.fillWidth: true - enabled: /*!masterController.offline &&*/ !masterController.syncInProgress && _visualItems.count > 1 + enabled: !masterController.offline && !masterController.syncInProgress && _visualItems.count > 1 visible: !QGroundControl.corePlugin.options.disableVehicleConnection onClicked: { dropPanel.hide() -- 2.22.0