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(int 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 Q_PROPERTY(bool hasAPMSupport READ hasAPMSupport CONSTANT)
103
104
105 //-------------------------------------------------------------------------
106 // Elevation Provider
107 Q_PROPERTY(QString elevationProviderName READ elevationProviderName CONSTANT)
108 Q_PROPERTY(QString elevationProviderNotice READ elevationProviderNotice CONSTANT)
109
110 Q_INVOKABLE void saveGlobalSetting (const QString& key, const QString& value);
111 Q_INVOKABLE QString loadGlobalSetting (const QString& key, const QString& defaultValue);
112 Q_INVOKABLE void saveBoolGlobalSetting (const QString& key, bool value);
113 Q_INVOKABLE bool loadBoolGlobalSetting (const QString& key, bool defaultValue);
114
115
116
117 Q_INVOKABLE void startPX4MockLink (bool sendStatusText, bool enableCamera, bool enableGimbal);
118 Q_INVOKABLE void startGenericMockLink (bool sendStatusText, bool enableCamera, bool enableGimbal);
119 Q_INVOKABLE void startAPMArduCopterMockLink (bool sendStatusText, bool enableCamera, bool enableGimbal);
120 Q_INVOKABLE void startAPMArduPlaneMockLink (bool sendStatusText, bool enableCamera, bool enableGimbal);
121 Q_INVOKABLE void startAPMArduSubMockLink (bool sendStatusText, bool enableCamera, bool enableGimbal);
122 Q_INVOKABLE void startAPMArduRoverMockLink (bool sendStatusText, bool enableCamera, bool enableGimbal);
123 Q_INVOKABLE void stopOneMockLink (void);
124
126
127 Q_INVOKABLE QString altitudeFrameExtraUnits(AltitudeFrame altFrame);
128 Q_INVOKABLE QString altitudeFrameShortDescription(AltitudeFrame altFrame);
129
140 Q_INVOKABLE void showMessageDialog(
141 QObject* owner,
142 const QString& title,
143 const QString& text,
144 int buttons = kDefaultMessageDialogButtons,
147
148 // Test audio output
149 Q_INVOKABLE void testAudioOutput();
150
152 Q_INVOKABLE static void copyToClipboard(const QString& text);
153
154 // Property accessors
155
156 static QString appName();
157 LinkManager* linkManager () { return _linkManager; }
158 MultiVehicleManager* multiVehicleManager () { return _multiVehicleManager; }
159 QGCMapEngineManager* mapEngineManager () { return _mapEngineManager; }
160 QGCPositionManager* qgcPositionManger () { return _qgcPositionManager; }
161 MissionCommandTree* missionCommandTree () { return _missionCommandTree; }
162 MAVLinkSigningKeys* mavlinkSigningKeys () { return _mavlinkSigningKeys; }
163 VideoManager* videoManager () { return _videoManager; }
164 QGCCorePlugin* corePlugin () { return _corePlugin; }
165 SettingsManager* settingsManager () { return _settingsManager; }
166#ifndef QGC_NO_SERIAL_LINK
167 FactGroup* gpsRtkFactGroup () { return _gpsRtkFactGroup; }
168#endif
169 ADSBVehicleManager* adsbVehicleManager () { return _adsbVehicleManager; }
170 NTRIPManager* ntripManager () { return _ntripManager; }
171 QmlUnitsConversion* unitsConversion () { return &_unitsConversion; }
172 static QGeoCoordinate flightMapPosition () { return _coord; }
173 static double flightMapZoom () { return _zoom; }
174
175 qreal zOrderTopMost () { return 1000; }
176 qreal zOrderWidgets () { return 100; }
177 qreal zOrderMapItems () { return 50; }
179 qreal zOrderVehicles () { return 49; }
180 qreal zOrderTrajectoryLines () { return 48; }
181 qreal zOrderWaypointLines () { return 47; }
182
183#if defined(QGC_NO_ARDUPILOT_DIALECT)
184 bool hasAPMSupport () { return false; }
185#else
186 bool hasAPMSupport () { return true; }
187#endif
188
189 QString elevationProviderName ();
190 QString elevationProviderNotice ();
191
192 bool singleFirmwareSupport ();
193 bool singleVehicleSupport ();
194 bool px4ProFirmwareSupported ();
195 bool apmFirmwareSupported ();
196
197 void setFlightMapPosition (QGeoCoordinate& coordinate);
198 void setFlightMapZoom (double zoom);
199
200 QString parameterFileExtension (void) const;
201 QString telemetryFileExtension (void) const;
202
203 static QString qgcVersion();
204 static QString qgcAppDate() { return QGC_APP_DATE; }
205#ifdef QGC_DAILY_BUILD
206 static bool qgcDailyBuild() { return true; }
207#else
208 static bool qgcDailyBuild() { return false; }
209#endif
210
211signals:
212 void isMultiplexingEnabledChanged (bool enabled);
214 void flightMapPositionChanged (QGeoCoordinate flightMapPosition);
215 void flightMapZoomChanged (double flightMapZoom);
217
218private:
219 QGCMapEngineManager* _mapEngineManager = nullptr;
220 ADSBVehicleManager* _adsbVehicleManager = nullptr;
221 NTRIPManager* _ntripManager = nullptr;
222 QGCPositionManager* _qgcPositionManager = nullptr;
223 MissionCommandTree* _missionCommandTree = nullptr;
224 MAVLinkSigningKeys* _mavlinkSigningKeys = nullptr;
225 VideoManager* _videoManager = nullptr;
226 LinkManager* _linkManager = nullptr;
227 MultiVehicleManager* _multiVehicleManager = nullptr;
228 SettingsManager* _settingsManager = nullptr;
229 QGCCorePlugin* _corePlugin = nullptr;
230 QGCPalette* _globalPalette = nullptr;
231#ifndef QGC_NO_SERIAL_LINK
232 FactGroup* _gpsRtkFactGroup = nullptr;
233#endif
234
235 double _flightMapInitialZoom = 17.0;
236 QmlUnitsConversion _unitsConversion;
237
238 QStringList _altitudeFrameEnumString;
239
240 static QGeoCoordinate _coord;
241 static double _zoom;
242 QTimer _flightMapPositionSettledTimer;
243
244 static constexpr const char* kQmlGlobalKeyName = "QGCQml";
245
246 static constexpr const char* _flightMapPositionSettingsGroup = "FlightMapPosition";
247 static constexpr const char* _flightMapPositionLatitudeSettingsKey = "Latitude";
248 static constexpr const char* _flightMapPositionLongitudeSettingsKey = "Longitude";
249 static constexpr const char* _flightMapZoomSettingsKey = "FlightMapZoom";
250};
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.