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/QLoggingCategory>
4#include <QtCore/QString>
5#include <QtCore/QVariant>
6
7#include "QGCMAVLink.h"
8
9Q_DECLARE_LOGGING_CATEGORY(MissionCommandsLog)
10
13#ifdef QGC_UNITTEST_BUILD
14class MissionCommandTreeTest;
15#endif
16
40
41class MissionCmdParamInfo : public QObject {
42
43 Q_OBJECT
44
45public:
46 MissionCmdParamInfo(QObject* parent = nullptr);
47
48 MissionCmdParamInfo(const MissionCmdParamInfo& other, QObject* parent = nullptr);
50
51 Q_PROPERTY(int decimalPlaces READ decimalPlaces CONSTANT)
52 Q_PROPERTY(double defaultValue READ defaultValue CONSTANT)
53 Q_PROPERTY(QStringList enumStrings READ enumStrings CONSTANT)
54 Q_PROPERTY(QVariantList enumValues READ enumValues CONSTANT)
55 Q_PROPERTY(QString label READ label CONSTANT)
56 Q_PROPERTY(int param READ param CONSTANT)
57 Q_PROPERTY(QString units READ units CONSTANT)
58 Q_PROPERTY(bool nanUnchanged READ nanUnchanged CONSTANT)
59 Q_PROPERTY(double min READ min CONSTANT)
60 Q_PROPERTY(double max READ max CONSTANT)
61 Q_PROPERTY(double userMin READ userMin CONSTANT)
62 Q_PROPERTY(double userMax READ userMax CONSTANT)
63 Q_PROPERTY(bool advanced READ advanced CONSTANT)
64
65 int decimalPlaces (void) const { return _decimalPlaces; }
66 double defaultValue (void) const { return _defaultValue; }
67 QStringList enumStrings (void) const { return _enumStrings; }
68 QVariantList enumValues (void) const { return _enumValues; }
69 QString label (void) const { return _label; }
70 int param (void) const { return _param; }
71 QString units (void) const { return _units; }
72 bool nanUnchanged (void) const { return _nanUnchanged; }
73 double min (void) const { return _min; }
74 double max (void) const { return _max; }
75 double userMin (void) const { return _userMin; }
76 double userMax (void) const { return _userMax; }
77 bool advanced (void) const { return _advanced; }
78
79private:
80 int _decimalPlaces;
81 double _defaultValue;
82 QStringList _enumStrings;
83 QVariantList _enumValues;
84 QString _label;
85 int _param;
86 QString _units;
87 bool _nanUnchanged;
88 bool _advanced;
89 double _min;
90 double _max;
91 double _userMin;
92 double _userMax;
93
94 friend class MissionCommandTree;
96};
97
122class MissionCommandUIInfo : public QObject {
123 Q_OBJECT
124
125public:
126 MissionCommandUIInfo(QObject* parent = nullptr);
127
128 MissionCommandUIInfo(const MissionCommandUIInfo& other, QObject* parent = nullptr);
130
131 Q_PROPERTY(QString category READ category CONSTANT)
132 Q_PROPERTY(QString description READ description CONSTANT)
133 Q_PROPERTY(bool friendlyEdit READ friendlyEdit CONSTANT)
134 Q_PROPERTY(QString friendlyName READ friendlyName CONSTANT)
135 Q_PROPERTY(QString rawName READ rawName CONSTANT)
139 Q_PROPERTY(bool isLandCommand READ isLandCommand CONSTANT)
140 Q_PROPERTY(bool isTakeoffCommand READ isTakeoffCommand CONSTANT)
141 Q_PROPERTY(bool isLoiterCommand READ isLoiterCommand CONSTANT)
142 Q_PROPERTY(int command READ intCommand CONSTANT)
143
144 MAV_CMD command(void) const { return _command; }
145 int intCommand(void) const { return (int)_command; }
146
147 QString category (void) const;
148 QString description (void) const;
149 bool friendlyEdit (void) const;
150 QString friendlyName (void) const;
151 QString rawName (void) const;
152 bool isStandaloneCoordinate (void) const;
153 bool specifiesCoordinate (void) const;
154 bool specifiesAltitudeOnly (void) const;
155 bool isLandCommand (void) const;
156 bool isTakeoffCommand (void) const;
157 bool isLoiterCommand (void) const;
158
163 bool loadJsonInfo(const QJsonObject& jsonObject, bool requireFullObject, QString& errorString);
164
169 const MissionCmdParamInfo* getParamInfo(int index, bool& showUI) const;
170
171private:
172 QString _loadErrorString(const QString& errorString) const;
173
175 bool _infoAvailable(const QString& key) const { return _infoMap.contains(key); }
176
178 const QVariant _infoValue(const QString& key) const { return _infoMap[key]; }
179
181 void _setInfoValue(const QString& key, const QVariant& value) { _infoMap[key] = value; }
182
185 void _overrideInfo(MissionCommandUIInfo* uiInfo);
186
187 MAV_CMD _command;
188 QMap<QString, QVariant> _infoMap;
189 QMap<int, MissionCmdParamInfo*> _paramInfoMap;
190 QList<int> _paramRemoveList;
191
192 static constexpr const char* _categoryJsonKey = "category";
193 static constexpr const char* _decimalPlacesJsonKey = "decimalPlaces";
194 static constexpr const char* _defaultJsonKey = "default";
195 static constexpr const char* _descriptionJsonKey = "description";
196 static constexpr const char* _enumStringsJsonKey = "enumStrings";
197 static constexpr const char* _enumValuesJsonKey = "enumValues";
198 static constexpr const char* _nanUnchangedJsonKey = "nanUnchanged";
199 static constexpr const char* _advancedJsonKey = "advanced";
200 static constexpr const char* _friendlyEditJsonKey = "friendlyEdit";
201 static constexpr const char* _friendlyNameJsonKey = "friendlyName";
202 static constexpr const char* _idJsonKey = "id";
203 static constexpr const char* _labelJsonKey = "label";
204 static constexpr const char* _mavCmdInfoJsonKey = "mavCmdInfo";
205 static constexpr const char* _maxJsonKey = "max";
206 static constexpr const char* _minJsonKey = "min";
207 static constexpr const char* _userMaxJsonKey = "userMax";
208 static constexpr const char* _userMinJsonKey = "userMin";
209 static constexpr const char* _param1JsonKey = "param1";
210 static constexpr const char* _param2JsonKey = "param2";
211 static constexpr const char* _param3JsonKey = "param3";
212 static constexpr const char* _param4JsonKey = "param4";
213 static constexpr const char* _param5JsonKey = "param5";
214 static constexpr const char* _param6JsonKey = "param6";
215 static constexpr const char* _param7JsonKey = "param7";
216 static constexpr const char* _paramJsonKeyFormat = "param%1";
217 static constexpr const char* _paramRemoveJsonKey = "paramRemove";
218 static constexpr const char* _rawNameJsonKey = "rawName";
219 static constexpr const char* _standaloneCoordinateJsonKey = "standaloneCoordinate";
220 static constexpr const char* _specifiesCoordinateJsonKey = "specifiesCoordinate";
221 static constexpr const char* _specifiesAltitudeOnlyJsonKey = "specifiesAltitudeOnly";
222 static constexpr const char* _isLandCommandJsonKey = "isLandCommand";
223 static constexpr const char* _isTakeoffCommandJsonKey = "isTakeoffCommand";
224 static constexpr const char* _isLoiterCommandJsonKey = "isLoiterCommand";
225 static constexpr const char* _unitsJsonKey = "units";
226 static constexpr const char* _commentJsonKey = "comment";
227 static constexpr const char* _advancedCategory = "Advanced";
228
229 friend class MissionCommandTree;
230#ifdef QGC_UNITTEST_BUILD
231 friend class MissionCommandTreeTest;
232#endif
233};
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
QString errorString
bool advanced(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
int decimalPlaces READ decimalPlaces CONSTANT(double defaultValue READ defaultValue CONSTANT) 1(QStringList enumStrings READ enumStrings CONSTANT) 1(QVariantList enumValues READ enumValues CONSTANT) 1(QString label READ label CONSTANT) 1(int param READ param CONSTANT) 1(QString units READ units CONSTANT) 1(bool nanUnchanged READ nanUnchanged CONSTANT) 1(double min READ min CONSTANT) 1(double max READ max CONSTANT) 1(double userMin READ userMin CONSTANT) 1(double userMax READ userMax CONSTANT) 1(bool advanced READ advanced CONSTANT) int decimalPlaces(void) const
double max(void) const
double userMax(void) const
bool nanUnchanged(void) const
double min(void) const
bool loadJsonInfo(const QJsonObject &jsonObject, bool requireFullObject, QString &errorString)
bool isLoiterCommand(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
QString category READ category CONSTANT(QString description READ description CONSTANT) 1(bool friendlyEdit READ friendlyEdit CONSTANT) 1(QString friendlyName READ friendlyName CONSTANT) 1(QString rawName READ rawName CONSTANT) 1(bool isStandaloneCoordinate READ isStandaloneCoordinate CONSTANT) 1(bool specifiesCoordinate READ specifiesCoordinate CONSTANT) 1(bool specifiesAltitudeOnly READ specifiesAltitudeOnly CONSTANT) 1(bool isLandCommand READ isLandCommand CONSTANT) 1(bool isTakeoffCommand READ isTakeoffCommand CONSTANT) 1(bool isLoiterCommand READ isLoiterCommand CONSTANT) 1(int command READ intCommand CONSTANT) MAV_CMD command(void) const
bool isStandaloneCoordinate(void) const
QString rawName(void) const
const MissionCommandUIInfo & operator=(const MissionCommandUIInfo &other)
bool specifiesAltitudeOnly(void) const
bool friendlyEdit(void) const