QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
QGroundControlQmlGlobal.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QPointF>
4#include <QtCore/QTimer>
5#include <QtPositioning/QGeoCoordinate>
6#include <QtQml/QJSValue>
7#include <QtQmlIntegration/QtQmlIntegration>
8
10#include "qgc_version.h"
11
13class FactGroup;
14class LinkManager;
18class QGCCorePlugin;
20class NTRIPManager;
21class QGCPalette;
23class SettingsManager;
24class VideoManager;
26
27Q_MOC_INCLUDE("ADSBVehicleManager.h")
40
42{
46
47public:
48 static constexpr int kDefaultMessageDialogButtons = 0x00000400; // Dialog.Ok (Qt 6 StandardButton::Ok)
49
50 explicit QGroundControlQmlGlobal(QObject *parent = nullptr);
52
54 AltitudeFrameMixed, // Used by global altitude frame for mission planning
55 AltitudeFrameRelative, // MAV_FRAME_GLOBAL_RELATIVE_ALT
56 AltitudeFrameAbsolute, // MAV_FRAME_GLOBAL
57 AltitudeFrameCalcAboveTerrain, // Absolute altitude above terrain calculated from terrain data
58 AltitudeFrameTerrain, // MAV_FRAME_GLOBAL_TERRAIN_ALT
59 AltitudeFrameNone, // Being used as distance value unrelated to ground (for example distance to structure)
60 };
61 Q_ENUM(AltitudeFrame)
62
63 Q_PROPERTY(QString appName READ appName CONSTANT)
64 Q_PROPERTY(LinkManager* linkManager READ linkManager CONSTANT)
65 Q_PROPERTY(MultiVehicleManager* multiVehicleManager READ multiVehicleManager CONSTANT)
66 Q_PROPERTY(QGCMapEngineManager* mapEngineManager READ mapEngineManager CONSTANT)
67 Q_PROPERTY(QGCPositionManager* qgcPositionManger READ qgcPositionManger CONSTANT)
68 Q_PROPERTY(VideoManager* videoManager READ videoManager CONSTANT)
69 Q_PROPERTY(SettingsManager* settingsManager READ settingsManager CONSTANT)
70 Q_PROPERTY(ADSBVehicleManager* adsbVehicleManager READ adsbVehicleManager CONSTANT)
71 Q_PROPERTY(NTRIPManager* ntripManager READ ntripManager CONSTANT)
72 Q_PROPERTY(QGCCorePlugin* corePlugin READ corePlugin CONSTANT)
73 Q_PROPERTY(MissionCommandTree* missionCommandTree READ missionCommandTree CONSTANT)
74 Q_PROPERTY(MAVLinkSigningKeys* mavlinkSigningKeys READ mavlinkSigningKeys CONSTANT)
75#ifndef QGC_NO_SERIAL_LINK
76 Q_PROPERTY(FactGroup* gpsRtk READ gpsRtkFactGroup CONSTANT)
77#endif
79 Q_PROPERTY(QmlUnitsConversion* unitsConversion READ unitsConversion CONSTANT)
80 Q_PROPERTY(bool singleFirmwareSupport READ singleFirmwareSupport CONSTANT)
81 Q_PROPERTY(bool singleVehicleSupport READ singleVehicleSupport CONSTANT)
82 Q_PROPERTY(bool px4ProFirmwareSupported READ px4ProFirmwareSupported CONSTANT)
83 Q_PROPERTY(bool apmFirmwareSupported READ apmFirmwareSupported CONSTANT)
84 Q_PROPERTY(QGeoCoordinate flightMapPosition READ flightMapPosition WRITE setFlightMapPosition NOTIFY flightMapPositionChanged)
85 Q_PROPERTY(double flightMapZoom READ flightMapZoom WRITE setFlightMapZoom NOTIFY flightMapZoomChanged)
86 Q_PROPERTY(double flightMapInitialZoom MEMBER _flightMapInitialZoom CONSTANT)
87
88 Q_PROPERTY(QString parameterFileExtension READ parameterFileExtension CONSTANT)
89 Q_PROPERTY(QString telemetryFileExtension READ telemetryFileExtension CONSTANT)
90
91 Q_PROPERTY(QString qgcVersion READ qgcVersion CONSTANT)
92 Q_PROPERTY(QString qgcAppDate READ qgcAppDate CONSTANT)
93 Q_PROPERTY(bool qgcDailyBuild READ qgcDailyBuild CONSTANT)
94
95 Q_PROPERTY(qreal zOrderTopMost READ zOrderTopMost CONSTANT)
96 Q_PROPERTY(qreal zOrderWidgets READ zOrderWidgets CONSTANT)
97 Q_PROPERTY(qreal zOrderMapItems READ zOrderMapItems CONSTANT)
98 Q_PROPERTY(qreal zOrderVehicles READ zOrderVehicles CONSTANT)
99 Q_PROPERTY(qreal zOrderWaypointIndicators READ zOrderWaypointIndicators CONSTANT)
100 Q_PROPERTY(qreal zOrderTrajectoryLines READ zOrderTrajectoryLines CONSTANT)
101 Q_PROPERTY(qreal zOrderWaypointLines READ zOrderWaypointLines CONSTANT)
102
103
104 //-------------------------------------------------------------------------
105 // Elevation Provider
106 Q_PROPERTY(QString elevationProviderName READ elevationProviderName CONSTANT)
107 Q_PROPERTY(QString elevationProviderNotice READ elevationProviderNotice CONSTANT)
108
109 Q_INVOKABLE void saveGlobalSetting (const QString& key, const QString& value);
110 Q_INVOKABLE QString loadGlobalSetting (const QString& key, const QString& defaultValue);
111 Q_INVOKABLE void saveBoolGlobalSetting (const QString& key, bool value);
112 Q_INVOKABLE bool loadBoolGlobalSetting (const QString& key, bool defaultValue);
113
114
115
116 Q_INVOKABLE void startPX4MockLink (bool sendStatusText, bool enableCamera, bool enableGimbal, bool enableProximity = false, int videoStreamType = 0);
117 Q_INVOKABLE void startGenericMockLink (bool sendStatusText, bool enableCamera, bool enableGimbal, bool enableProximity = false, int videoStreamType = 0);
118 Q_INVOKABLE void startAPMArduCopterMockLink (bool sendStatusText, bool enableCamera, bool enableGimbal, bool enableProximity = false, bool apmStartFreshParams = false, int videoStreamType = 0);
119 Q_INVOKABLE void startAPMArduPlaneMockLink (bool sendStatusText, bool enableCamera, bool enableGimbal, bool enableProximity = false, bool apmStartFreshParams = false, int videoStreamType = 0);
120 Q_INVOKABLE void startAPMArduSubMockLink (bool sendStatusText, bool enableCamera, bool enableGimbal, bool enableProximity = false, bool apmStartFreshParams = false, int videoStreamType = 0);
121 Q_INVOKABLE void startAPMArduRoverMockLink (bool sendStatusText, bool enableCamera, bool enableGimbal, bool enableProximity = false, bool apmStartFreshParams = false, int videoStreamType = 0);
122 Q_INVOKABLE void stopOneMockLink (void);
123
125
126 Q_INVOKABLE QString altitudeFrameExtraUnits(AltitudeFrame altFrame);
127 Q_INVOKABLE QString altitudeFrameShortDescription(AltitudeFrame altFrame);
128
139 Q_INVOKABLE void showMessageDialog(
140 QObject* owner,
141 const QString& title,
142 const QString& text,
143 int buttons = kDefaultMessageDialogButtons,
146
147 // Test audio output
148 Q_INVOKABLE void testAudioOutput();
149
151 Q_INVOKABLE static void copyToClipboard(const QString& text);
152
153 // Property accessors
154
155 static QString appName();
156 LinkManager* linkManager () { return _linkManager; }
157 MultiVehicleManager* multiVehicleManager () { return _multiVehicleManager; }
158 QGCMapEngineManager* mapEngineManager () { return _mapEngineManager; }
159 QGCPositionManager* qgcPositionManger () { return _qgcPositionManager; }
160 MissionCommandTree* missionCommandTree () { return _missionCommandTree; }
161 MAVLinkSigningKeys* mavlinkSigningKeys () { return _mavlinkSigningKeys; }
162 VideoManager* videoManager () { return _videoManager; }
163 QGCCorePlugin* corePlugin () { return _corePlugin; }
164 SettingsManager* settingsManager () { return _settingsManager; }
165#ifndef QGC_NO_SERIAL_LINK
166 FactGroup* gpsRtkFactGroup () { return _gpsRtkFactGroup; }
167#endif
168 ADSBVehicleManager* adsbVehicleManager () { return _adsbVehicleManager; }
169 NTRIPManager* ntripManager () { return _ntripManager; }
170 QmlUnitsConversion* unitsConversion () { return &_unitsConversion; }
171 static QGeoCoordinate flightMapPosition () { return _coord; }
172 static double flightMapZoom () { return _zoom; }
173
174 qreal zOrderTopMost () { return 1000; }
175 qreal zOrderWidgets () { return 100; }
176 qreal zOrderMapItems () { return 50; }
178 qreal zOrderVehicles () { return 49; }
179 qreal zOrderTrajectoryLines () { return 48; }
180 qreal zOrderWaypointLines () { return 47; }
181
182 QString elevationProviderName ();
183 QString elevationProviderNotice ();
184
185 bool singleFirmwareSupport ();
186 bool singleVehicleSupport ();
187 bool px4ProFirmwareSupported ();
188 bool apmFirmwareSupported ();
189
190 void setFlightMapPosition (QGeoCoordinate& coordinate);
191 void setFlightMapZoom (double zoom);
192
193 QString parameterFileExtension (void) const;
194 QString telemetryFileExtension (void) const;
195
196 static QString qgcVersion();
197 static QString qgcAppDate() { return QGC_APP_DATE; }
198#ifdef QGC_DAILY_BUILD
199 static bool qgcDailyBuild() { return true; }
200#else
201 static bool qgcDailyBuild() { return false; }
202#endif
203
204signals:
205 void isMultiplexingEnabledChanged (bool enabled);
207 void flightMapPositionChanged (QGeoCoordinate flightMapPosition);
208 void flightMapZoomChanged (double flightMapZoom);
210
211private:
212 QGCMapEngineManager* _mapEngineManager = nullptr;
213 ADSBVehicleManager* _adsbVehicleManager = nullptr;
214 NTRIPManager* _ntripManager = nullptr;
215 QGCPositionManager* _qgcPositionManager = nullptr;
216 MissionCommandTree* _missionCommandTree = nullptr;
217 MAVLinkSigningKeys* _mavlinkSigningKeys = nullptr;
218 VideoManager* _videoManager = nullptr;
219 LinkManager* _linkManager = nullptr;
220 MultiVehicleManager* _multiVehicleManager = nullptr;
221 SettingsManager* _settingsManager = nullptr;
222 QGCCorePlugin* _corePlugin = nullptr;
223 QGCPalette* _globalPalette = nullptr;
224#ifndef QGC_NO_SERIAL_LINK
225 FactGroup* _gpsRtkFactGroup = nullptr;
226#endif
227
228 double _flightMapInitialZoom = 17.0;
229 QmlUnitsConversion _unitsConversion;
230
231 QStringList _altitudeFrameEnumString;
232
233 static QGeoCoordinate _coord;
234 static double _zoom;
235 QTimer _flightMapPositionSettledTimer;
236
237 static constexpr const char* kQmlGlobalKeyName = "QGCQml";
238
239 static constexpr const char* _flightMapPositionSettingsGroup = "FlightMapPosition";
240 static constexpr const char* _flightMapPositionLatitudeSettingsKey = "Latitude";
241 static constexpr const char* _flightMapPositionLongitudeSettingsKey = "Longitude";
242 static constexpr const char* _flightMapZoomSettingsKey = "FlightMapZoom";
243};
Used to group Facts together into an object hierarachy.
Definition FactGroup.h:16
Manage communication links The Link Manager organizes the physical Links. It can manage arbitrary lin...
Definition LinkManager.h:32
Bag of named MAVLink signing keys; correct key per vehicle is auto-detected from incoming signed pack...
Manages a hierarchy of MissionCommandUIInfo.
QModelIndex index(int row, int column=0, const QModelIndex &parent=QModelIndex()) const override
QModelIndex parent(const QModelIndex &child) const override
Extension mechanism for generic, non-firmware-specific customization of QGC.
QGCPalette is used in QML ui to expose color properties for the QGC palette.
Definition QGCPalette.h:83
MAVLinkSigningKeys * mavlinkSigningKeys()
void showMessageDialogRequested(QObject *owner, QString title, QString text, int buttons, QJSValue acceptFunction, QJSValue closeFunction)
MissionCommandTree * missionCommandTree()
ADSBVehicleManager * adsbVehicleManager()
void flightMapPositionChanged(QGeoCoordinate flightMapPosition)
SettingsManager * settingsManager()
void mavlinkSystemIDChanged(int id)
static QGeoCoordinate flightMapPosition()
QmlUnitsConversion * unitsConversion()
QGCMapEngineManager * mapEngineManager()
void isMultiplexingEnabledChanged(bool enabled)
void flightMapZoomChanged(double flightMapZoom)
MultiVehicleManager * multiVehicleManager()
QGCPositionManager * qgcPositionManger()
T value(int index) const
Provides access to all app settings.