QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
ComplexMissionItem.h
Go to the documentation of this file.
1#pragma once
2
3#include "VisualMissionItem.h"
5#include "FlightPathSegment.h"
6
10
12{
13 Q_OBJECT
14
15public:
17
19
20 Q_PROPERTY(QString patternName READ patternName NOTIFY patternNameChanged)
21 Q_PROPERTY(double complexDistance READ complexDistance NOTIFY complexDistanceChanged)
22 Q_PROPERTY(bool presetsSupported READ presetsSupported CONSTANT)
23 Q_PROPERTY(QStringList presetNames READ presetNames NOTIFY presetNamesChanged)
24 Q_PROPERTY(bool isIncomplete READ isIncomplete NOTIFY isIncompleteChanged)
25 Q_PROPERTY(double minAMSLAltitude READ minAMSLAltitude NOTIFY minAMSLAltitudeChanged)
26 Q_PROPERTY(double maxAMSLAltitude READ maxAMSLAltitude NOTIFY maxAMSLAltitudeChanged)
27 Q_PROPERTY(bool isSingleItem READ isSingleItem CONSTANT)
28 Q_PROPERTY(QmlObjectListModel* flightPathSegments READ flightPathSegments CONSTANT)
30
31 QmlObjectListModel* flightPathSegments (void) { return &_flightPathSegments; }
32
33 virtual QString patternName(void) const = 0;
34
36 virtual bool terrainCollision(void) const { return _cTerrainCollisionSegments != 0; }
37
39 virtual double minAMSLAltitude(void) const = 0;
40
42 virtual double maxAMSLAltitude(void) const = 0;
43
46 virtual double complexDistance(void) const = 0;
47
53 virtual bool load(const QJsonObject& complexObject, int sequenceNumber, QString& errorString) = 0;
54
56 virtual bool isSingleItem(void) const { return false; }
57
60 Q_INVOKABLE virtual void loadPreset(const QString& name);
61
64 Q_INVOKABLE virtual void savePreset(const QString& name);
65
66 Q_INVOKABLE void deletePreset(const QString& name);
67
68
73 virtual double greatestDistanceTo(const QGeoCoordinate &other) const = 0;
74
77 virtual QStringList presetNames(void);
78
81 virtual QString presetsSettingsGroup(void) { return QString(); }
82
83 virtual void addKMLVisuals(KMLPlanDomDocument& domDocument);
84
85 bool presetsSupported (void) { return !presetsSettingsGroup().isEmpty(); }
86 bool isIncomplete (void) const { return _isIncomplete; }
87
89 static constexpr const char* jsonComplexItemTypeKey = "complexItemType";
90
91signals:
92 void patternNameChanged (void);
96 void presetNamesChanged (void);
101
102protected slots:
104
105protected:
106 void _savePresetJson (const QString& name, QJsonObject& presetObject);
107 QJsonObject _loadPresetJson (const QString& name);
108 void _appendFlightPathSegment(FlightPathSegment::SegmentType segmentType, const QGeoCoordinate& coord1, double coord1AMSLAlt, const QGeoCoordinate& coord2, double coord2AMSLAlt);
109
110 bool _isIncomplete = true;
112 QmlObjectListModel _flightPathSegments; // Contains FlightPathSegment items
113
114 QMap<QString, FactMetaData*> _metaDataMap;
115
116 static constexpr const char* _presetSettingsKey = "_presets";
117};
QString errorString
void _savePresetJson(const QString &name, QJsonObject &presetObject)
void isIncompleteChanged(void)
virtual bool isSingleItem(void) const
void presetNamesChanged(void)
void boundingCubeChanged(void)
static constexpr const char * jsonComplexItemTypeKey
This mission item attribute specifies the type of the complex item.
virtual double minAMSLAltitude(void) const =0
void deletePreset(const QString &name)
QJsonObject _loadPresetJson(const QString &name)
void _appendFlightPathSegment(FlightPathSegment::SegmentType segmentType, const QGeoCoordinate &coord1, double coord1AMSLAlt, const QGeoCoordinate &coord2, double coord2AMSLAlt)
QmlObjectListModel _flightPathSegments
void greatestDistanceToChanged(void)
bool isIncomplete(void) const
virtual void loadPreset(const QString &name)
virtual double greatestDistanceTo(const QGeoCoordinate &other) const =0
virtual QString presetsSettingsGroup(void)
virtual double complexDistance(void) const =0
void maxAMSLAltitudeChanged(void)
const ComplexMissionItem & operator=(const ComplexMissionItem &other)
QMap< QString, FactMetaData * > _metaDataMap
virtual QStringList presetNames(void)
virtual bool terrainCollision(void) const
virtual double maxAMSLAltitude(void) const =0
virtual bool load(const QJsonObject &complexObject, int sequenceNumber, QString &errorString)=0
void patternNameChanged(void)
void minAMSLAltitudeChanged(void)
virtual void savePreset(const QString &name)
void complexDistanceChanged(void)
virtual QString patternName(void) const =0
void terrainCollisionChanged(bool terrainCollision)
virtual void addKMLVisuals(KMLPlanDomDocument &domDocument)
virtual void _segmentTerrainCollisionChanged(bool terrainCollision)
static constexpr const char * _presetSettingsKey
Used to convert a Plan to a KML document.
Master controller for mission, fence, rally.
virtual int sequenceNumber(void) const =0
bool flyView(void) const
PlanMasterController * masterController(void)
bool homePosition READ homePosition CONSTANT(QGeoCoordinate coordinate READ coordinate WRITE setCoordinate NOTIFY coordinateChanged) 1(double amslEntryAlt READ amslEntryAlt NOTIFY amslEntryAltChanged) 1(double terrainAltitude READ terrainAltitude NOTIFY terrainAltitudeChanged) 1(QGeoCoordinate entryCoordinate READ entryCoordinate NOTIFY entryCoordinateChanged) 1(QGeoCoordinate exitCoordinate READ exitCoordinate NOTIFY exitCoordinateChanged) 1(double amslExitAlt READ amslExitAlt NOTIFY amslExitAltChanged) 1(bool exitCoordinateSameAsEntry READ exitCoordinateSameAsEntry NOTIFY exitCoordinateSameAsEntryChanged) 1(QString commandDescription READ commandDescription NOTIFY commandDescriptionChanged) 1(QString commandName READ commandName NOTIFY commandNameChanged) 1(QString abbreviation READ abbreviation NOTIFY abbreviationChanged) 1(bool dirty READ dirty WRITE setDirty NOTIFY dirtyChanged) 1(bool isCurrentItem READ isCurrentItem WRITE setIsCurrentItem NOTIFY isCurrentItemChanged) 1(bool hasCurrentChildItem READ hasCurrentChildItem WRITE setHasCurrentChildItem NOTIFY hasCurrentChildItemChanged) 1(int sequenceNumber READ sequenceNumber WRITE setSequenceNumber NOTIFY sequenceNumberChanged) 1(int lastSequenceNumber READ lastSequenceNumber NOTIFY lastSequenceNumberChanged) 1(bool specifiesCoordinate READ specifiesCoordinate NOTIFY specifiesCoordinateChanged) 1(bool isStandaloneCoordinate READ isStandaloneCoordinate NOTIFY isStandaloneCoordinateChanged) 1(bool specifiesAltitudeOnly READ specifiesAltitudeOnly NOTIFY specifiesAltitudeOnlyChanged) 1(bool isSimpleItem READ isSimpleItem NOTIFY isSimpleItemChanged) 1(bool isTakeoffItem READ isTakeoffItem NOTIFY isTakeoffItemChanged) 1(bool isLandCommand READ isLandCommand NOTIFY isLandCommandChanged) 1(bool isSurveyItem READ isSurveyItem) 1(QString editorQml MEMBER _editorQml CONSTANT) 1(QString mapVisualQML READ mapVisualQML CONSTANT) 1(double specifiedFlightSpeed READ specifiedFlightSpeed NOTIFY specifiedFlightSpeedChanged) 1(double specifiedGimbalYaw READ specifiedGimbalYaw NOTIFY specifiedGimbalYawChanged) 1(double specifiedGimbalPitch READ specifiedGimbalPitch NOTIFY specifiedGimbalPitchChanged) 1(double specifiedVehicleYaw READ specifiedVehicleYaw NOTIFY specifiedVehicleYawChanged) 1(double missionGimbalYaw READ missionGimbalYaw NOTIFY missionGimbalYawChanged) 1(double missionVehicleYaw READ missionVehicleYaw NOTIFY missionVehicleYawChanged) 1(bool flyView READ flyView CONSTANT) 1(bool wizardMode READ wizardMode WRITE setWizardMode NOTIFY wizardModeChanged) 1(int previousVTOLMode MEMBER _previousVTOLMode NOTIFY previousVTOLModeChanged) 1(PlanMasterController *masterController READ masterController CONSTANT) 1(ReadyForSaveState readyForSaveState READ readyForSaveState NOTIFY readyForSaveStateChanged) 1(VisualMissionItem *parentItem READ parentItem WRITE setParentItem NOTIFY parentItemChanged) 1(QmlObjectListModel *childItems READ childItems CONSTANT) 1(QGCGeoBoundingCube *boundingCube READ boundingCube NOTIFY boundingCubeChanged) 1(double altDifference READ altDifference WRITE setAltDifference NOTIFY altDifferenceChanged) 1(double altPercent READ altPercent WRITE setAltPercent NOTIFY altPercentChanged) 1(double terrainPercent READ terrainPercent WRITE setTerrainPercent NOTIFY terrainPercentChanged) 1(bool terrainCollision READ terrainCollision WRITE setTerrainCollision NOTIFY terrainCollisionChanged) 1(double azimuth READ azimuth WRITE setAzimuth NOTIFY azimuthChanged) 1(double distance READ distance WRITE setDistance NOTIFY distanceChanged) 1(double distanceFromStart READ distanceFromStart WRITE setDistanceFromStart NOTIFY distanceFromStartChanged) bool homePosition(void) const
< true: This item is being used as a home position indicator