QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
CorridorScanComplexItem.h
Go to the documentation of this file.
1#pragma once
2
4#include "SettingsFact.h"
5#include "QGCMapPolyline.h"
6
8{
9 Q_OBJECT
10
11public:
14 CorridorScanComplexItem(PlanMasterController* masterController, bool flyView, const QString& kmlOrShpFile);
15
16 Q_PROPERTY(QGCMapPolyline* corridorPolyline READ corridorPolyline CONSTANT)
17 Q_PROPERTY(Fact* corridorWidth READ corridorWidth CONSTANT)
18
19 // Note1: These values are persisted to plan files so they cannot be changed with breaking plan file back compat
20 // Note2: rotateEntryPoint expects these values in this order
22 EntryPointDefaultOrder = 0, // Standard transect generation order
23 EntryPointStartSameEndOppositeSide = 1, // Start at same end, opposite side of center
24 EntryPointStartOppositeEndSameSide = 2, // Start at opposite end, same side
25 EntryPointStartOppositeEndOppositeSide = 3, // Start at opposite end, opposite side
26 };
27 Q_ENUM(EntryPointLocation)
28
29 Fact* corridorWidth (void) { return &_corridorWidthFact; }
30 QGCMapPolyline* corridorPolyline(void) { return &_corridorPolyline; }
31
32 Q_INVOKABLE void rotateEntryPoint(void);
33
34 // Overrides from TransectStyleComplexItem
35 QString patternName (void) const final { return tr(canonicalName); }
36 void save (QJsonArray& planItems) final;
37 bool specifiesCoordinate (void) const final;
38 double timeBetweenShots (void) final;
39
40 // Overrides from ComplexMissionItem
41 bool load (const QJsonObject& complexObject, int sequenceNumber, QString& errorString) final;
42 QString mapVisualQML (void) const final { return QStringLiteral("CorridorScanMapVisual.qml"); }
43 QString presetsSettingsGroup(void) { return settingsGroup; }
44 void savePreset (const QString& name);
45 void loadPreset (const QString& name);
46
47 // Overrides from VisualMissionionItem
48 QString commandDescription (void) const final { return tr("Corridor Scan"); }
49 QString commandName (void) const final { return tr("Corridor Scan"); }
50 QString abbreviation (void) const final { return tr("C"); }
51 void setCoordinate (const QGeoCoordinate& coordinate) final;
52 ReadyForSaveState readyForSaveState (void) const final;
53 double additionalTimeDelay (void) const final { return 0; }
54
55 static constexpr const char* canonicalName = QT_TR_NOOP("Corridor Scan");
56
57 static constexpr const char* settingsGroup = "CorridorScan";
58 static constexpr const char* corridorWidthName = "CorridorWidth";
59
60 static constexpr const char* jsonComplexItemTypeValue = "CorridorScan";
61
62private slots:
63 void _polylineDirtyChanged (bool dirty);
64 void _rebuildCorridorPolygon (void);
65 void _updateWizardMode (void);
66
67 // Overrides from TransectStyleComplexItem
68 void _rebuildTransectsPhase1 (void) final;
69 void _recalcCameraShots (void) final;
70
71private:
72 double _calcTransectSpacing (void) const;
73 int _calcTransectCount (void) const;
74 void _saveCommon (QJsonObject& complexObject);
75 bool _loadWorker (const QJsonObject& complexObject, int sequenceNumber, QString& errorString, bool forPresets);
76
77 QGCMapPolyline _corridorPolyline;
78 QList<QList<QGeoCoordinate>> _transectSegments;
79
80 EntryPointLocation _entryPointLocation;
81
82 QMap<QString, FactMetaData*> _metaDataMap;
83 SettingsFact _corridorWidthFact;
84
85 static constexpr const char* _jsonEntryPointKey = "EntryPoint";
86};
QString errorString
bool load(const QJsonObject &complexObject, int sequenceNumber, QString &errorString) final
double additionalTimeDelay(void) const final
void savePreset(const QString &name)
void setCoordinate(const QGeoCoordinate &coordinate) final
void save(QJsonArray &planItems) final
QGCMapPolyline * corridorPolyline(void)
static constexpr const char * corridorWidthName
bool specifiesCoordinate(void) const final
static constexpr const char * canonicalName
void loadPreset(const QString &name)
Q_INVOKABLE void rotateEntryPoint(void)
QString abbreviation(void) const final
QString mapVisualQML(void) const final
QString patternName(void) const final
QString commandName(void) const final
static constexpr const char * jsonComplexItemTypeValue
QString commandDescription(void) const final
ReadyForSaveState readyForSaveState(void) const final
static constexpr const char * settingsGroup
A Fact is used to hold a single value within the system.
Definition Fact.h:17
Master controller for mission, fence, rally.
A SettingsFact is Fact which holds a QSettings value.
QGeoCoordinate coordinate(void) const final
int sequenceNumber(void) const final
bool flyView(void) const
PlanMasterController * masterController(void)