QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
MissionSettingsItem.h
Go to the documentation of this file.
1#pragma once
2
4#include "Fact.h"
5#include "CameraSection.h"
6#include "SpeedSection.h"
7
9class MissionItem;
10class Vehicle;
11
13{
14 Q_OBJECT
15
16public:
18
20 Q_PROPERTY(QObject* cameraSection READ cameraSection CONSTANT)
21 Q_PROPERTY(QObject* speedSection READ speedSection CONSTANT)
22
23 Fact* plannedHomePositionAltitude (void) { return &_plannedHomePositionAltitudeFact; }
24 CameraSection* cameraSection (void) { return &_cameraSection; }
25 SpeedSection* speedSection (void) { return &_speedSection; }
26
28 bool scanForMissionSettings(QmlObjectListModel* visualItems, int scanIndex);
29
35 bool addMissionEndAction(QList<MissionItem*>& items, int seqNum, QObject* missionItemParent);
36
37 // Overrides from ComplexMissionItem
38 QString patternName (void) const final { return QString(); }
39 double complexDistance (void) const final;
40 int lastSequenceNumber (void) const final;
41 bool load (const QJsonObject& complexObject, int sequenceNumber, QString& errorString) final;
42 double greatestDistanceTo (const QGeoCoordinate &other) const final;
43 QString mapVisualQML (void) const final { return QStringLiteral("HomePositionMapVisual.qml"); }
44 bool isSingleItem (void) const final { return true; }
45 bool terrainCollision (void) const final { return false; }
46
47 // Overrides from VisualMissionItem
48 bool dirty (void) const final { return _dirty; }
49 bool isSimpleItem (void) const final { return false; }
50 bool isStandaloneCoordinate (void) const final { return false; }
51 bool specifiesCoordinate (void) const final;
52 bool specifiesAltitudeOnly (void) const final { return false; }
53 QString commandDescription (void) const final { return tr("Initial Camera Settings"); }
54 QString commandName (void) const final { return tr("Initial Camera Settings"); }
55 QString abbreviation (void) const final;
56 QGeoCoordinate coordinate (void) const final { return _plannedHomePositionCoordinate; } // Includes altitude
57 QGeoCoordinate entryCoordinate (void) const final { return coordinate(); }
58 QGeoCoordinate exitCoordinate (void) const final { return coordinate(); }
59 int sequenceNumber (void) const final { return _sequenceNumber; }
60 double specifiedGimbalYaw (void) final;
61 double specifiedGimbalPitch (void) final;
62 void appendMissionItems (QList<MissionItem*>& items, QObject* missionItemParent) final;
63 void applyNewAltitude (double /*newAltitude*/) final { /* no action */ }
64 double specifiedFlightSpeed (void) final;
65 double additionalTimeDelay (void) const final { return 0; }
66 bool exitCoordinateSameAsEntry (void) const final { return true; }
67 void setDirty (bool dirty) final;
68 void setCoordinate (const QGeoCoordinate& coordinate) final; // Should only be called if the end user is moving
69 void setSequenceNumber (int sequenceNumber) final;
70 void save (QJsonArray& missionItems) final;
71 double editableAlt (void) const final { return _plannedHomePositionAltitudeFact.rawValue().toDouble(); }
72 double amslEntryAlt (void) const final { return _plannedHomePositionCoordinate.altitude(); }
73 double amslExitAlt (void) const final { return amslEntryAlt(); }
74 double minAMSLAltitude (void) const final { return amslEntryAlt(); }
75 double maxAMSLAltitude (void) const final { return amslEntryAlt(); }
76
77signals:
78 void specifyMissionFlightSpeedChanged (bool specifyMissionFlightSpeed);
79
80private slots:
81 void _setDirtyAndUpdateLastSequenceNumber (void);
82 void _setDirty (void);
83 void _sectionDirtyChanged (bool dirty);
84 void _updateAltitudeInCoordinate (QVariant value);
85 void _setHomeAltFromTerrain (double terrainAltitude);
86 void _updateFlyViewHomePosition (const QGeoCoordinate& homePosition);
87
88private:
89 Vehicle* _managerVehicle = nullptr;
90 QGeoCoordinate _plannedHomePositionCoordinate; // Does not include altitude
91 Fact _plannedHomePositionAltitudeFact;
92 int _sequenceNumber = 0;
93 CameraSection _cameraSection;
94 SpeedSection _speedSection;
95
96 static QMap<QString, FactMetaData*> _metaDataMap;
97
98 static constexpr const char* _plannedHomePositionAltitudeName = "PlannedHomePositionAltitude";
99};
QString errorString
A Fact is used to hold a single value within the system.
Definition Fact.h:17
QVariant rawValue() const
Value after translation.
Definition Fact.h:85
bool terrainCollision(void) const final
bool scanForMissionSettings(QmlObjectListModel *visualItems, int scanIndex)
Scans the loaded items for settings items.
double minAMSLAltitude(void) const final
bool load(const QJsonObject &complexObject, int sequenceNumber, QString &errorString) final
QString commandDescription(void) const final
QString mapVisualQML(void) const final
void setDirty(bool dirty) final
bool isSimpleItem(void) const final
QGeoCoordinate exitCoordinate(void) const final
void setSequenceNumber(int sequenceNumber) final
QGeoCoordinate coordinate(void) const final
QString abbreviation(void) const final
double specifiedFlightSpeed(void) final
void setCoordinate(const QGeoCoordinate &coordinate) final
double specifiedGimbalYaw(void) final
QString patternName(void) const final
bool exitCoordinateSameAsEntry(void) const final
double maxAMSLAltitude(void) const final
QGeoCoordinate entryCoordinate(void) const final
bool isSingleItem(void) const final
void appendMissionItems(QList< MissionItem * > &items, QObject *missionItemParent) final
void specifyMissionFlightSpeedChanged(bool specifyMissionFlightSpeed)
Fact * plannedHomePositionAltitude(void)
bool dirty(void) const final
void save(QJsonArray &missionItems) final
double editableAlt(void) const final
double additionalTimeDelay(void) const final
bool addMissionEndAction(QList< MissionItem * > &items, int seqNum, QObject *missionItemParent)
double amslEntryAlt(void) const final
int sequenceNumber(void) const final
bool isStandaloneCoordinate(void) const final
void applyNewAltitude(double) final
Adjust the altitude of the item if appropriate to the new altitude.
double specifiedGimbalPitch(void) final
int lastSequenceNumber(void) const final
QString commandName(void) const final
CameraSection * cameraSection(void)
double greatestDistanceTo(const QGeoCoordinate &other) const final
double complexDistance(void) const final
double amslExitAlt(void) const final
bool specifiesAltitudeOnly(void) const final
bool specifiesCoordinate(void) const final
SpeedSection * speedSection(void)
Master controller for mission, fence, rally.
bool flyView(void) const
bool homePosition(void) const
< Flight path cumalative horizontal distance from home point to this item
PlanMasterController * masterController(void)
double terrainAltitude(void) const