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 <QtCore/QMap>
4
6#include "VisualMissionItem.h"
8#include "FlightPathSegment.h"
9
10class FactMetaData;
14
16{
17 Q_OBJECT
18
19public:
21
23
24 Q_PROPERTY(QString patternName READ patternName NOTIFY patternNameChanged)
25 Q_PROPERTY(double complexDistance READ complexDistance NOTIFY complexDistanceChanged)
26 Q_PROPERTY(bool presetsSupported READ presetsSupported CONSTANT)
27 Q_PROPERTY(QStringList presetNames READ presetNames NOTIFY presetNamesChanged)
28 Q_PROPERTY(bool isIncomplete READ isIncomplete NOTIFY isIncompleteChanged)
29 Q_PROPERTY(double minAMSLAltitude READ minAMSLAltitude NOTIFY minAMSLAltitudeChanged)
30 Q_PROPERTY(double maxAMSLAltitude READ maxAMSLAltitude NOTIFY maxAMSLAltitudeChanged)
31 Q_PROPERTY(bool isSingleItem READ isSingleItem CONSTANT)
34
36
37 virtual QString patternName(void) const = 0;
38
40 virtual bool terrainCollision(void) const { return _cTerrainCollisionSegments != 0; }
41
43 virtual double minAMSLAltitude(void) const = 0;
44
46 virtual double maxAMSLAltitude(void) const = 0;
47
50 virtual double complexDistance(void) const = 0;
51
57 virtual bool load(const QJsonObject& complexObject, int sequenceNumber, QString& errorString) = 0;
58
60 virtual bool isSingleItem(void) const { return false; }
61
64 Q_INVOKABLE virtual void loadPreset(const QString& name);
65
68 Q_INVOKABLE virtual void savePreset(const QString& name);
69
70 Q_INVOKABLE void deletePreset(const QString& name);
71
72
77 virtual double greatestDistanceTo(const QGeoCoordinate &other) const = 0;
78
81 virtual QStringList presetNames(void);
82
85 virtual QString presetsSettingsGroup(void) { return QString(); }
86
87 virtual void addKMLVisuals(KMLPlanDomDocument& domDocument);
88
94 virtual void applyPreviousAltitudeFrame(QGroundControlQmlGlobal::AltitudeFrame prevAltFrame, double prevAltitude)
95 { Q_UNUSED(prevAltFrame); Q_UNUSED(prevAltitude); }
96
97 bool presetsSupported (void) { return !presetsSettingsGroup().isEmpty(); }
98 bool isIncomplete (void) const { return _isIncomplete; }
99
101 static constexpr const char* jsonComplexItemTypeKey = "complexItemType";
102
103signals:
113
114protected slots:
116
117protected:
118 void _savePresetJson (const QString& name, QJsonObject& presetObject);
119 QJsonObject _loadPresetJson (const QString& name);
120 void _appendFlightPathSegment(FlightPathSegment::SegmentType segmentType, const QGeoCoordinate& coord1, double coord1AMSLAlt, const QGeoCoordinate& coord2, double coord2AMSLAlt);
121
122 bool _isIncomplete = true;
124 QmlObjectListModel _flightPathSegments; // Contains FlightPathSegment items
125
126 QMap<QString, FactMetaData*> _metaDataMap;
127
128 static constexpr const char* _presetSettingsKey = "_presets";
129};
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
Q_INVOKABLE 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 applyPreviousAltitudeFrame(QGroundControlQmlGlobal::AltitudeFrame prevAltFrame, double prevAltitude)
virtual Q_INVOKABLE void loadPreset(const QString &name)
QmlObjectListModel * flightPathSegments(void)
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 Q_INVOKABLE 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
Holds the meta data associated with a Fact.
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)