QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
MissionCommandUIInfo.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QString>
4#include <QtCore/QVariant>
5
6#include "QGCMAVLink.h"
7
10#ifdef QGC_UNITTEST_BUILD
11class MissionCommandTreeTest;
12#endif
13
37
38class MissionCmdParamInfo : public QObject {
39
40 Q_OBJECT
41
42public:
43 MissionCmdParamInfo(QObject* parent = nullptr);
44
45 MissionCmdParamInfo(const MissionCmdParamInfo& other, QObject* parent = nullptr);
47
48 Q_PROPERTY(int decimalPlaces READ decimalPlaces CONSTANT)
49 Q_PROPERTY(double defaultValue READ defaultValue CONSTANT)
50 Q_PROPERTY(QStringList enumStrings READ enumStrings CONSTANT)
51 Q_PROPERTY(QVariantList enumValues READ enumValues CONSTANT)
52 Q_PROPERTY(QString label READ label CONSTANT)
53 Q_PROPERTY(int param READ param CONSTANT)
54 Q_PROPERTY(QString units READ units CONSTANT)
55 Q_PROPERTY(bool nanUnchanged READ nanUnchanged CONSTANT)
56 Q_PROPERTY(double min READ min CONSTANT)
57 Q_PROPERTY(double max READ max CONSTANT)
58 Q_PROPERTY(double userMin READ userMin CONSTANT)
59 Q_PROPERTY(double userMax READ userMax CONSTANT)
60 Q_PROPERTY(bool advanced READ advanced CONSTANT)
61
62 int decimalPlaces (void) const { return _decimalPlaces; }
63 double defaultValue (void) const { return _defaultValue; }
64 QStringList enumStrings (void) const { return _enumStrings; }
65 QVariantList enumValues (void) const { return _enumValues; }
66 QString label (void) const { return _label; }
67 int param (void) const { return _param; }
68 QString units (void) const { return _units; }
69 bool nanUnchanged (void) const { return _nanUnchanged; }
70 double min (void) const { return _min; }
71 double max (void) const { return _max; }
72 double userMin (void) const { return _userMin; }
73 double userMax (void) const { return _userMax; }
74 bool advanced (void) const { return _advanced; }
75
76private:
77 int _decimalPlaces;
78 double _defaultValue;
79 QStringList _enumStrings;
80 QVariantList _enumValues;
81 QString _label;
82 int _param;
83 QString _units;
84 bool _nanUnchanged;
85 bool _advanced;
86 double _min;
87 double _max;
88 double _userMin;
89 double _userMax;
90
91 friend class MissionCommandTree;
93};
94
119class MissionCommandUIInfo : public QObject {
120 Q_OBJECT
121
122public:
123 MissionCommandUIInfo(QObject* parent = nullptr);
124
125 MissionCommandUIInfo(const MissionCommandUIInfo& other, QObject* parent = nullptr);
127
128 Q_PROPERTY(QString category READ category CONSTANT)
129 Q_PROPERTY(QString description READ description CONSTANT)
130 Q_PROPERTY(bool friendlyEdit READ friendlyEdit CONSTANT)
131 Q_PROPERTY(QString friendlyName READ friendlyName CONSTANT)
132 Q_PROPERTY(QString rawName READ rawName CONSTANT)
133 Q_PROPERTY(bool isStandaloneCoordinate READ isStandaloneCoordinate CONSTANT)
134 Q_PROPERTY(bool specifiesCoordinate READ specifiesCoordinate CONSTANT)
135 Q_PROPERTY(bool specifiesAltitudeOnly READ specifiesAltitudeOnly CONSTANT)
136 Q_PROPERTY(bool isLandCommand READ isLandCommand CONSTANT)
137 Q_PROPERTY(bool isTakeoffCommand READ isTakeoffCommand CONSTANT)
138 Q_PROPERTY(bool isLoiterCommand READ isLoiterCommand CONSTANT)
139 Q_PROPERTY(int command READ intCommand CONSTANT)
140
141 MAV_CMD command(void) const { return _command; }
142 int intCommand(void) const { return (int)_command; }
143
144 QString category (void) const;
145 QString description (void) const;
146 bool friendlyEdit (void) const;
147 QString friendlyName (void) const;
148 QString rawName (void) const;
149 bool isStandaloneCoordinate (void) const;
150 bool specifiesCoordinate (void) const;
151 bool specifiesAltitudeOnly (void) const;
152 bool isLandCommand (void) const;
153 bool isTakeoffCommand (void) const;
154 bool isLoiterCommand (void) const;
155
160 bool loadJsonInfo(const QJsonObject& jsonObject, bool requireFullObject, QString& errorString);
161
166 const MissionCmdParamInfo* getParamInfo(int index, bool& showUI) const;
167
168private:
169 QString _loadErrorString(const QString& errorString) const;
170
172 bool _infoAvailable(const QString& key) const { return _infoMap.contains(key); }
173
175 const QVariant _infoValue(const QString& key) const { return _infoMap[key]; }
176
178 void _setInfoValue(const QString& key, const QVariant& value) { _infoMap[key] = value; }
179
182 void _overrideInfo(MissionCommandUIInfo* uiInfo);
183
184 MAV_CMD _command;
185 QMap<QString, QVariant> _infoMap;
186 QMap<int, MissionCmdParamInfo*> _paramInfoMap;
187 QList<int> _paramRemoveList;
188
189 static constexpr const char* _categoryJsonKey = "category";
190 static constexpr const char* _decimalPlacesJsonKey = "decimalPlaces";
191 static constexpr const char* _defaultJsonKey = "default";
192 static constexpr const char* _descriptionJsonKey = "description";
193 static constexpr const char* _enumStringsJsonKey = "enumStrings";
194 static constexpr const char* _enumValuesJsonKey = "enumValues";
195 static constexpr const char* _nanUnchangedJsonKey = "nanUnchanged";
196 static constexpr const char* _advancedJsonKey = "advanced";
197 static constexpr const char* _friendlyEditJsonKey = "friendlyEdit";
198 static constexpr const char* _friendlyNameJsonKey = "friendlyName";
199 static constexpr const char* _idJsonKey = "id";
200 static constexpr const char* _labelJsonKey = "label";
201 static constexpr const char* _mavCmdInfoJsonKey = "mavCmdInfo";
202 static constexpr const char* _maxJsonKey = "max";
203 static constexpr const char* _minJsonKey = "min";
204 static constexpr const char* _userMaxJsonKey = "userMax";
205 static constexpr const char* _userMinJsonKey = "userMin";
206 static constexpr const char* _param1JsonKey = "param1";
207 static constexpr const char* _param2JsonKey = "param2";
208 static constexpr const char* _param3JsonKey = "param3";
209 static constexpr const char* _param4JsonKey = "param4";
210 static constexpr const char* _param5JsonKey = "param5";
211 static constexpr const char* _param6JsonKey = "param6";
212 static constexpr const char* _param7JsonKey = "param7";
213 static constexpr const char* _paramJsonKeyFormat = "param%1";
214 static constexpr const char* _paramRemoveJsonKey = "paramRemove";
215 static constexpr const char* _rawNameJsonKey = "rawName";
216 static constexpr const char* _standaloneCoordinateJsonKey = "standaloneCoordinate";
217 static constexpr const char* _specifiesCoordinateJsonKey = "specifiesCoordinate";
218 static constexpr const char* _specifiesAltitudeOnlyJsonKey = "specifiesAltitudeOnly";
219 static constexpr const char* _isLandCommandJsonKey = "isLandCommand";
220 static constexpr const char* _isTakeoffCommandJsonKey = "isTakeoffCommand";
221 static constexpr const char* _isLoiterCommandJsonKey = "isLoiterCommand";
222 static constexpr const char* _unitsJsonKey = "units";
223 static constexpr const char* _commentJsonKey = "comment";
224 static constexpr const char* _advancedCategory = "Advanced";
225
226 friend class MissionCommandTree;
227#ifdef QGC_UNITTEST_BUILD
228 friend class MissionCommandTreeTest;
229#endif
230};
QString errorString
UI Information associated with a mission command (MAV_CMD) parameter.
bool advanced(void) const
int decimalPlaces(void) const
const MissionCmdParamInfo & operator=(const MissionCmdParamInfo &other)
QString label(void) const
QString units(void) const
QVariantList enumValues(void) const
QStringList enumStrings(void) const
double userMin(void) const
double defaultValue(void) const
double max(void) const
double userMax(void) const
bool nanUnchanged(void) const
double min(void) const
Manages a hierarchy of MissionCommandUIInfo.
UI Information associated with a mission command (MAV_CMD)
bool loadJsonInfo(const QJsonObject &jsonObject, bool requireFullObject, QString &errorString)
bool isLoiterCommand(void) const
MAV_CMD command(void) const
QString category(void) const
bool isTakeoffCommand(void) const
QString description(void) const
QString friendlyName(void) const
bool specifiesCoordinate(void) const
const MissionCmdParamInfo * getParamInfo(int index, bool &showUI) const
bool isStandaloneCoordinate(void) const
QString rawName(void) const
const MissionCommandUIInfo & operator=(const MissionCommandUIInfo &other)
bool specifiesAltitudeOnly(void) const
bool friendlyEdit(void) const