Commit 95fdac9e authored by Valentin Platzgummer's avatar Valentin Platzgummer

plan data class edited

parent bf22cf56
...@@ -259,7 +259,7 @@ void MissionController::sendToVehicle(void) ...@@ -259,7 +259,7 @@ void MissionController::sendToVehicle(void)
/// Converts from visual items to MissionItems /// Converts from visual items to MissionItems
/// @param missionItemParent QObject parent for newly allocated MissionItems, _surveyMissionItemName (tr("Survey")) /// @param missionItemParent QObject parent for newly allocated MissionItems, _surveyMissionItemName (tr("Survey"))
/// @return true: Mission end action was added to end of list /// @return true: Mission end action was added to end of list
bool MissionController::_convertToMissionItems(QmlObjectListModel* visualMissionItems, QList<MissionItem*>& rgMissionItems, QObject* missionItemParent) bool MissionController::convertToMissionItems(QmlObjectListModel* visualMissionItems, QList<MissionItem*>& rgMissionItems, QObject* missionItemParent)
{ {
if (visualMissionItems->count() == 0) { if (visualMissionItems->count() == 0) {
return false; return false;
...@@ -294,7 +294,7 @@ void MissionController::convertToKMLDocument(QDomDocument& document) ...@@ -294,7 +294,7 @@ void MissionController::convertToKMLDocument(QDomDocument& document)
QObject* deleteParent = new QObject(); QObject* deleteParent = new QObject();
QList<MissionItem*> rgMissionItems; QList<MissionItem*> rgMissionItems;
_convertToMissionItems(_visualItems, rgMissionItems, deleteParent); convertToMissionItems(_visualItems, rgMissionItems, deleteParent);
if (rgMissionItems.count() == 0) { if (rgMissionItems.count() == 0) {
return; return;
} }
...@@ -336,7 +336,7 @@ void MissionController::sendItemsToVehicle(Vehicle* vehicle, QmlObjectListModel* ...@@ -336,7 +336,7 @@ void MissionController::sendItemsToVehicle(Vehicle* vehicle, QmlObjectListModel*
if (vehicle) { if (vehicle) {
QList<MissionItem*> rgMissionItems; QList<MissionItem*> rgMissionItems;
_convertToMissionItems(visualMissionItems, rgMissionItems, vehicle); convertToMissionItems(visualMissionItems, rgMissionItems, vehicle);
// PlanManager takes control of MissionItems so no need to delete // PlanManager takes control of MissionItems so no need to delete
vehicle->missionManager()->writeMissionItems(rgMissionItems); vehicle->missionManager()->writeMissionItems(rgMissionItems);
...@@ -1043,7 +1043,7 @@ void MissionController::save(QJsonObject& json) ...@@ -1043,7 +1043,7 @@ void MissionController::save(QJsonObject& json)
if (settingsItem) { if (settingsItem) {
QList<MissionItem*> rgMissionItems; QList<MissionItem*> rgMissionItems;
if (_convertToMissionItems(_visualItems, rgMissionItems, this /* missionItemParent */)) { if (convertToMissionItems(_visualItems, rgMissionItems, this /* missionItemParent */)) {
QJsonObject saveObject; QJsonObject saveObject;
MissionItem* missionItem = rgMissionItems[rgMissionItems.count() - 1]; MissionItem* missionItem = rgMissionItems[rgMissionItems.count() - 1];
missionItem->save(saveObject); missionItem->save(saveObject);
......
...@@ -143,6 +143,9 @@ public: ...@@ -143,6 +143,9 @@ public:
/// Sends the mission items to the specified vehicle /// Sends the mission items to the specified vehicle
static void sendItemsToVehicle(Vehicle* vehicle, QmlObjectListModel* visualMissionItems); static void sendItemsToVehicle(Vehicle* vehicle, QmlObjectListModel* visualMissionItems);
static bool convertToMissionItems(QmlObjectListModel* visualMissionItems, QList<MissionItem*>& rgMissionItems, QObject* missionItemParent);
bool loadJsonFile(QFile& file, QString& errorString); bool loadJsonFile(QFile& file, QString& errorString);
bool loadTextFile(QFile& file, QString& errorString); bool loadTextFile(QFile& file, QString& errorString);
...@@ -269,7 +272,6 @@ private: ...@@ -269,7 +272,6 @@ private:
bool _loadTextMissionFile(QTextStream& stream, QmlObjectListModel* visualItems, QString& errorString); bool _loadTextMissionFile(QTextStream& stream, QmlObjectListModel* visualItems, QString& errorString);
int _nextSequenceNumber(void); int _nextSequenceNumber(void);
void _scanForAdditionalSettings(QmlObjectListModel* visualItems, Vehicle* vehicle); void _scanForAdditionalSettings(QmlObjectListModel* visualItems, Vehicle* vehicle);
static bool _convertToMissionItems(QmlObjectListModel* visualMissionItems, QList<MissionItem*>& rgMissionItems, QObject* missionItemParent);
void _setPlannedHomePositionFromFirstCoordinate(const QGeoCoordinate& clickCoordinate); void _setPlannedHomePositionFromFirstCoordinate(const QGeoCoordinate& clickCoordinate);
void _resetMissionFlightStatus(void); void _resetMissionFlightStatus(void);
void _addHoverTime(double hoverTime, double hoverDistance, int waypointIndex); void _addHoverTime(double hoverTime, double hoverDistance, int waypointIndex);
......
...@@ -40,6 +40,7 @@ public: ...@@ -40,6 +40,7 @@ public:
Q_PROPERTY(QStringList saveNameFilters READ saveNameFilters CONSTANT) Q_PROPERTY(QStringList saveNameFilters READ saveNameFilters CONSTANT)
Q_PROPERTY(QString fileExtension READ fileExtension CONSTANT) Q_PROPERTY(QString fileExtension READ fileExtension CONSTANT)
Q_PROPERTY(WimaDataContainer* dataContainer READ dataContainer WRITE setDataContainer NOTIFY dataContainerChanged) Q_PROPERTY(WimaDataContainer* dataContainer READ dataContainer WRITE setDataContainer NOTIFY dataContainerChanged)
Q_PROPERTY(QmlObjectListModel* missionItems READ missionItems NOTIFY missionItemsChanged)
// Property accessors // Property accessors
...@@ -103,5 +104,6 @@ private: ...@@ -103,5 +104,6 @@ private:
WimaServiceAreaData _serviceArea; // area for supplying WimaServiceAreaData _serviceArea; // area for supplying
WimaCorridorData _corridor; // corridor connecting opArea and serArea WimaCorridorData _corridor; // corridor connecting opArea and serArea
bool _localPlanDataValid; bool _localPlanDataValid;
QmlObjectListModel _missionItems;
}; };
...@@ -95,6 +95,11 @@ void WimaPlanData::append(const WimaMeasurementAreaData &areaData) ...@@ -95,6 +95,11 @@ void WimaPlanData::append(const WimaMeasurementAreaData &areaData)
} }
} }
void WimaPlanData::append(const QList<const MissionItem *> &missionItems)
{
_missionItems.append(missionItems);
}
/*! /*!
* \fn void WimaPlanData::append(const WimaServiceAreaData &areaData) * \fn void WimaPlanData::append(const WimaServiceAreaData &areaData)
* *
...@@ -103,6 +108,7 @@ void WimaPlanData::append(const WimaMeasurementAreaData &areaData) ...@@ -103,6 +108,7 @@ void WimaPlanData::append(const WimaMeasurementAreaData &areaData)
void WimaPlanData::clear() void WimaPlanData::clear()
{ {
_areaList.clear(); _areaList.clear();
_missionItems.clear();
} }
QList<const WimaAreaData *> WimaPlanData::areaList() const QList<const WimaAreaData *> WimaPlanData::areaList() const
...@@ -110,6 +116,11 @@ QList<const WimaAreaData *> WimaPlanData::areaList() const ...@@ -110,6 +116,11 @@ QList<const WimaAreaData *> WimaPlanData::areaList() const
return _areaList; return _areaList;
} }
QList<const MissionItem *> WimaPlanData::missionItems() const
{
return _missionItems;
}
/*! /*!
* \class WimaPlanData * \class WimaPlanData
* \brief Class storing data generated by the \c WimaPlaner class. * \brief Class storing data generated by the \c WimaPlaner class.
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "WimaCorridorData.h" #include "WimaCorridorData.h"
#include "WimaMeasurementAreaData.h" #include "WimaMeasurementAreaData.h"
#include "WimaJoinedAreaData.h" #include "WimaJoinedAreaData.h"
#include "MissionItem.h"
class WimaPlanData : QObject class WimaPlanData : QObject
{ {
...@@ -21,9 +22,11 @@ public: ...@@ -21,9 +22,11 @@ public:
void append(const WimaServiceAreaData &areaData); void append(const WimaServiceAreaData &areaData);
void append(const WimaCorridorData &areaData); void append(const WimaCorridorData &areaData);
void append(const WimaMeasurementAreaData &areaData); void append(const WimaMeasurementAreaData &areaData);
void append(const QList<const MissionItem*> &missionItems);
void clear(); void clear();
QList<const WimaAreaData *> areaList() const; QList<const WimaAreaData *> areaList() const;
QList<const MissionItem *> missionItems() const;
...@@ -36,4 +39,6 @@ private: ...@@ -36,4 +39,6 @@ private:
WimaCorridorData _corridor; WimaCorridorData _corridor;
WimaMeasurementAreaData _measurementArea; WimaMeasurementAreaData _measurementArea;
QList<const WimaAreaData*> _areaList; QList<const WimaAreaData*> _areaList;
QList<const MissionItem*> _missionItems;
}; };
...@@ -672,11 +672,21 @@ void WimaPlaner::setInteractive() ...@@ -672,11 +672,21 @@ void WimaPlaner::setInteractive()
WimaPlanData WimaPlaner::toPlanData() WimaPlanData WimaPlaner::toPlanData()
{ {
WimaPlanData planData; WimaPlanData planData;
// store areas
planData.append(WimaMeasurementAreaData(_measurementArea)); planData.append(WimaMeasurementAreaData(_measurementArea));
planData.append(WimaServiceAreaData(_serviceArea)); planData.append(WimaServiceAreaData(_serviceArea));
planData.append(WimaCorridorData(_corridor)); planData.append(WimaCorridorData(_corridor));
planData.append(WimaJoinedAreaData(_joinedArea)); planData.append(WimaJoinedAreaData(_joinedArea));
// convert mission items to mavlink commands
QList<MissionItem*> rgMissionItems;
MissionController::convertToMissionItems(_missionController->visualItems(), rgMissionItems, this);
QList<const MissionItem*> rgMissionItemsConst;
for (auto missionItem : rgMissionItems)
rgMissionItemsConst.append(missionItem);
// store mavlink commands
planData.append(rgMissionItemsConst);
return planData; return planData;
} }
......
...@@ -1289,7 +1289,7 @@ QGCView { ...@@ -1289,7 +1289,7 @@ QGCView {
QGCButton { QGCButton {
text: qsTr("Upload") text: qsTr("Upload")
Layout.fillWidth: true Layout.fillWidth: true
enabled: /*!masterController.offline &&*/ !masterController.syncInProgress && _visualItems.count > 1 enabled: !masterController.offline && !masterController.syncInProgress && _visualItems.count > 1
visible: !QGroundControl.corePlugin.options.disableVehicleConnection visible: !QGroundControl.corePlugin.options.disableVehicleConnection
onClicked: { onClicked: {
dropPanel.hide() dropPanel.hide()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment