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 <QtCore/QVariantMap>
6#include <QtPositioning/QGeoCoordinate>
7#include <QtQml/QJSValue>
8#include <QtQmlIntegration/QtQmlIntegration>
9
10#include "QmlUnitsConversion.h"
11
13class GPSManager;
14class LinkManager;
18class PositionManager;
19class QGCCorePlugin;
21class QGCPalette;
22class SettingsManager;
23class VideoManager;
25
26Q_MOC_INCLUDE("ADSBVehicleManager.h")
38
40{
44
45public:
46 static constexpr int kDefaultMessageDialogButtons = 0x00000400; // Dialog.Ok (Qt 6 StandardButton::Ok)
47
48 explicit QGroundControlQmlGlobal(QObject *parent = nullptr);
50
52 AltitudeFrameMixed, // Used by global altitude frame for mission planning
53 AltitudeFrameRelative, // MAV_FRAME_GLOBAL_RELATIVE_ALT
54 AltitudeFrameAbsolute, // MAV_FRAME_GLOBAL
55 AltitudeFrameCalcAboveTerrain, // Absolute altitude above terrain calculated from terrain data
56 AltitudeFrameTerrain, // MAV_FRAME_GLOBAL_TERRAIN_ALT
57 AltitudeFrameNone, // Being used as distance value unrelated to ground (for example distance to structure)
58 };
59 Q_ENUM(AltitudeFrame)
60
61 Q_PROPERTY(QString appName READ appName CONSTANT)
62 Q_PROPERTY(LinkManager* linkManager READ linkManager CONSTANT)
63 Q_PROPERTY(QObject* serialPortManager READ serialPortManager CONSTANT)
64 Q_PROPERTY(MultiVehicleManager* multiVehicleManager READ multiVehicleManager CONSTANT)
65 Q_PROPERTY(QGCMapEngineManager* mapEngineManager READ mapEngineManager CONSTANT)
66 Q_PROPERTY(PositionManager* positionManager READ positionManager CONSTANT)
67 Q_PROPERTY(VideoManager* videoManager READ videoManager CONSTANT)
68 Q_PROPERTY(SettingsManager* settingsManager READ settingsManager CONSTANT)
69 Q_PROPERTY(ADSBVehicleManager* adsbVehicleManager READ adsbVehicleManager CONSTANT)
70 Q_PROPERTY(QGCCorePlugin* corePlugin READ corePlugin CONSTANT)
71 Q_PROPERTY(MissionCommandTree* missionCommandTree READ missionCommandTree CONSTANT)
72 Q_PROPERTY(MAVLinkSigningKeys* mavlinkSigningKeys READ mavlinkSigningKeys CONSTANT)
73 Q_PROPERTY(GPSManager* gpsManager READ gpsManager CONSTANT)
74 Q_PROPERTY(QGCPalette* globalPalette MEMBER _globalPalette CONSTANT)
75 Q_PROPERTY(QmlUnitsConversion* unitsConversion READ unitsConversion CONSTANT)
76 Q_PROPERTY(bool singleFirmwareSupport READ singleFirmwareSupport CONSTANT)
77 Q_PROPERTY(bool singleVehicleSupport READ singleVehicleSupport CONSTANT)
78 Q_PROPERTY(bool px4ProFirmwareSupported READ px4ProFirmwareSupported CONSTANT)
79 Q_PROPERTY(bool apmFirmwareSupported READ apmFirmwareSupported CONSTANT)
80 Q_PROPERTY(QGeoCoordinate flightMapPosition READ flightMapPosition WRITE setFlightMapPosition NOTIFY flightMapPositionChanged)
81 Q_PROPERTY(double flightMapZoom READ flightMapZoom WRITE setFlightMapZoom NOTIFY flightMapZoomChanged)
82 Q_PROPERTY(double flightMapInitialZoom MEMBER _flightMapInitialZoom CONSTANT)
83
84 Q_PROPERTY(QString parameterFileExtension READ parameterFileExtension CONSTANT)
85 Q_PROPERTY(QString telemetryFileExtension READ telemetryFileExtension CONSTANT)
86
87 Q_PROPERTY(QString qgcVersion READ qgcVersion CONSTANT)
88 Q_PROPERTY(QString qgcAppDate READ qgcAppDate CONSTANT)
89 Q_PROPERTY(bool qgcDailyBuild READ qgcDailyBuild CONSTANT)
90 Q_PROPERTY(QString newStableVersion READ newStableVersion NOTIFY newStableVersionChanged)
91
92 Q_PROPERTY(qreal zOrderTopMost READ zOrderTopMost CONSTANT)
93 Q_PROPERTY(qreal zOrderWidgets READ zOrderWidgets CONSTANT)
94 Q_PROPERTY(qreal zOrderMapItems READ zOrderMapItems CONSTANT)
95 Q_PROPERTY(qreal zOrderVehicles READ zOrderVehicles CONSTANT)
96 Q_PROPERTY(qreal zOrderWaypointIndicators READ zOrderWaypointIndicators CONSTANT)
97 Q_PROPERTY(qreal zOrderTrajectoryLines READ zOrderTrajectoryLines CONSTANT)
98 Q_PROPERTY(qreal zOrderWaypointLines READ zOrderWaypointLines CONSTANT)
99
100
101 //-------------------------------------------------------------------------
102 // Elevation Provider
103 Q_PROPERTY(QString elevationProviderName READ elevationProviderName CONSTANT)
104 Q_PROPERTY(QString elevationProviderNotice READ elevationProviderNotice CONSTANT)
105
106 Q_INVOKABLE void saveGlobalSetting (const QString& key, const QString& value);
107 Q_INVOKABLE QString loadGlobalSetting (const QString& key, const QString& defaultValue);
108 Q_INVOKABLE void saveBoolGlobalSetting (const QString& key, bool value);
109 Q_INVOKABLE bool loadBoolGlobalSetting (const QString& key, bool defaultValue);
110
112 Q_INVOKABLE void startMockLink(const QVariantMap& properties);
113 Q_INVOKABLE void stopOneMockLink (void);
114
116
118 Q_INVOKABLE static QString bigSizeToString(quint64 size);
119
120 Q_INVOKABLE QString altitudeFrameExtraUnits(AltitudeFrame altFrame);
121 Q_INVOKABLE QString altitudeFrameShortDescription(AltitudeFrame altFrame);
122
133 Q_INVOKABLE void showMessageDialog(
134 QObject* owner,
135 const QString& title,
136 const QString& text,
137 int buttons = kDefaultMessageDialogButtons,
140
141 // Test audio output
142 Q_INVOKABLE void testAudioOutput();
143
145 Q_INVOKABLE static void copyToClipboard(const QString& text);
146
147 // Property accessors
148
149 static QString appName();
150 QObject* serialPortManager() const;
151
152 LinkManager* linkManager() { return _linkManager; }
153
154 MultiVehicleManager* multiVehicleManager() { return _multiVehicleManager; }
155
156 QGCMapEngineManager* mapEngineManager() { return _mapEngineManager; }
157
158 PositionManager* positionManager() const;
159
160 MissionCommandTree* missionCommandTree() { return _missionCommandTree; }
161
162 MAVLinkSigningKeys* mavlinkSigningKeys() { return _mavlinkSigningKeys; }
163
164 VideoManager* videoManager() { return _videoManager; }
165
166 QGCCorePlugin* corePlugin() { return _corePlugin; }
167
168 SettingsManager* settingsManager() { return _settingsManager; }
169
170 GPSManager* gpsManager() const;
171
172 ADSBVehicleManager* adsbVehicleManager() { return _adsbVehicleManager; }
173
174 QmlUnitsConversion* unitsConversion() { return &_unitsConversion; }
175
176 static QGeoCoordinate flightMapPosition() { return _coord; }
177
178 static double flightMapZoom() { return _zoom; }
179
180#ifdef QGC_UNITTEST_BUILD
181 static void setFlightMapViewForTest(const QGeoCoordinate& position, double zoom)
182 {
183 _coord = position;
184 _zoom = zoom;
185 }
186#endif
187
188 qreal zOrderTopMost () { return 1000; }
189 qreal zOrderWidgets () { return 100; }
190 qreal zOrderMapItems () { return 50; }
192 qreal zOrderVehicles () { return 49; }
193 qreal zOrderTrajectoryLines () { return 48; }
194 qreal zOrderWaypointLines () { return 47; }
195
196 QString elevationProviderName ();
197 QString elevationProviderNotice ();
198
199 bool singleFirmwareSupport ();
200 bool singleVehicleSupport ();
201 bool px4ProFirmwareSupported ();
202 bool apmFirmwareSupported ();
203
204 void setFlightMapPosition (QGeoCoordinate& coordinate);
205 void setFlightMapZoom (double zoom);
206
207 QString parameterFileExtension (void) const;
208 QString telemetryFileExtension (void) const;
209
210 static QString qgcVersion();
211 static QString qgcAppDate();
212 static QString newStableVersion();
213#ifdef QGC_DAILY_BUILD
214 static bool qgcDailyBuild() { return true; }
215#else
216 static bool qgcDailyBuild() { return false; }
217#endif
218
219signals:
220 void isMultiplexingEnabledChanged (bool enabled);
222 void flightMapPositionChanged (QGeoCoordinate flightMapPosition);
223 void flightMapZoomChanged (double flightMapZoom);
226
227private:
228 QGCMapEngineManager* _mapEngineManager = nullptr;
229 ADSBVehicleManager* _adsbVehicleManager = nullptr;
230 MissionCommandTree* _missionCommandTree = nullptr;
231 MAVLinkSigningKeys* _mavlinkSigningKeys = nullptr;
232 VideoManager* _videoManager = nullptr;
233 LinkManager* _linkManager = nullptr;
234 MultiVehicleManager* _multiVehicleManager = nullptr;
235 SettingsManager* _settingsManager = nullptr;
236 QGCCorePlugin* _corePlugin = nullptr;
237 QGCPalette* _globalPalette = nullptr;
238
239 double _flightMapInitialZoom = 17.0;
240 QmlUnitsConversion _unitsConversion;
241
242 QStringList _altitudeFrameEnumString;
243
244 static QGeoCoordinate _coord;
245 static double _zoom;
246 QTimer _flightMapPositionSettledTimer;
247
248 static constexpr const char* kQmlGlobalKeyName = "QGCQml";
249
250 static constexpr const char* _flightMapPositionSettingsGroup = "FlightMapPosition";
251 static constexpr const char* _flightMapPositionLatitudeSettingsKey = "Latitude";
252 static constexpr const char* _flightMapPositionLongitudeSettingsKey = "Longitude";
253 static constexpr const char* _flightMapZoomSettingsKey = "FlightMapZoom";
254};
Manage communication links The Link Manager organizes the physical Links. It can manage arbitrary lin...
Definition LinkManager.h:30
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()
T value(int index) const
Provides access to all app settings.
static GParamSpec * properties[PROP_LAST]