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/QLoggingCategory>
4#include <QtCore/QPointF>
5#include <QtCore/QTimer>
6#include <QtPositioning/QGeoCoordinate>
7#include <QtQml/QJSValue>
8#include <QtQmlIntegration/QtQmlIntegration>
9
10#include "QmlUnitsConversion.h"
11#include "qgc_version.h"
12
13Q_DECLARE_LOGGING_CATEGORY(GuidedActionsControllerLog)
14
16class FactGroup;
17class LinkManager;
20class QGCCorePlugin;
22class QGCPalette;
24class SettingsManager;
25class VideoManager;
27
28Q_MOC_INCLUDE("ADSBVehicleManager.h")
39
41{
44 QML_SINGLETON
45
46public:
47 static constexpr int kDefaultMessageDialogButtons = 0x00000400; // Dialog.Ok (Qt 6 StandardButton::Ok)
48
49 explicit QGroundControlQmlGlobal(QObject *parent = nullptr);
51
52 enum AltMode {
53 AltitudeModeMixed, // Used by global altitude mode for mission planning
54 AltitudeModeRelative, // MAV_FRAME_GLOBAL_RELATIVE_ALT
55 AltitudeModeAbsolute, // MAV_FRAME_GLOBAL
56 AltitudeModeCalcAboveTerrain, // Absolute altitude above terrain calculated from terrain data
57 AltitudeModeTerrainFrame, // MAV_FRAME_GLOBAL_TERRAIN_ALT
58 AltitudeModeNone, // Being used as distance value unrelated to ground (for example distance to structure)
59 };
60 Q_ENUM(AltMode)
61
62 Q_PROPERTY(QString appName READ appName CONSTANT)
63 Q_PROPERTY(LinkManager* linkManager READ linkManager CONSTANT)
64 Q_PROPERTY(MultiVehicleManager* multiVehicleManager READ multiVehicleManager CONSTANT)
65 Q_PROPERTY(QGCMapEngineManager* mapEngineManager READ mapEngineManager CONSTANT)
66 Q_PROPERTY(QGCPositionManager* qgcPositionManger READ qgcPositionManger 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#ifndef QGC_NO_SERIAL_LINK
73 Q_PROPERTY(FactGroup* gpsRtk READ gpsRtkFactGroup CONSTANT)
74#endif
75 Q_PROPERTY(QGCPalette* globalPalette MEMBER _globalPalette CONSTANT)
76 Q_PROPERTY(QmlUnitsConversion* unitsConversion READ unitsConversion CONSTANT)
77 Q_PROPERTY(bool singleFirmwareSupport READ singleFirmwareSupport CONSTANT)
78 Q_PROPERTY(bool singleVehicleSupport READ singleVehicleSupport CONSTANT)
79 Q_PROPERTY(bool px4ProFirmwareSupported READ px4ProFirmwareSupported CONSTANT)
80 Q_PROPERTY(int apmFirmwareSupported READ apmFirmwareSupported CONSTANT)
81 Q_PROPERTY(QGeoCoordinate flightMapPosition READ flightMapPosition WRITE setFlightMapPosition NOTIFY flightMapPositionChanged)
82 Q_PROPERTY(double flightMapZoom READ flightMapZoom WRITE setFlightMapZoom NOTIFY flightMapZoomChanged)
83 Q_PROPERTY(double flightMapInitialZoom MEMBER _flightMapInitialZoom CONSTANT)
84
85 Q_PROPERTY(QString parameterFileExtension READ parameterFileExtension CONSTANT)
86 Q_PROPERTY(QString telemetryFileExtension READ telemetryFileExtension CONSTANT)
87
88 Q_PROPERTY(QString qgcVersion READ qgcVersion CONSTANT)
89 Q_PROPERTY(QString qgcAppDate READ qgcAppDate CONSTANT)
90 Q_PROPERTY(bool qgcDailyBuild READ qgcDailyBuild CONSTANT)
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 Q_PROPERTY(bool hasAPMSupport READ hasAPMSupport CONSTANT)
100 Q_PROPERTY(bool hasMAVLinkInspector READ hasMAVLinkInspector CONSTANT)
101
102
103 //-------------------------------------------------------------------------
104 // Elevation Provider
105 Q_PROPERTY(QString elevationProviderName READ elevationProviderName CONSTANT)
106 Q_PROPERTY(QString elevationProviderNotice READ elevationProviderNotice CONSTANT)
107
109 Q_INVOKABLE QString loadGlobalSetting (const QString& key, const QString& defaultValue);
110 Q_INVOKABLE void saveBoolGlobalSetting (const QString& key, bool value);
111 Q_INVOKABLE bool loadBoolGlobalSetting (const QString& key, bool defaultValue);
112
113 Q_INVOKABLE static void deleteAllSettingsNextBoot();
114 Q_INVOKABLE static void clearDeleteAllSettingsNextBoot();
115
116 Q_INVOKABLE void startPX4MockLink (bool sendStatusText, bool enableCamera, bool enableGimbal);
117 Q_INVOKABLE void startGenericMockLink (bool sendStatusText, bool enableCamera, bool enableGimbal);
118 Q_INVOKABLE void startAPMArduCopterMockLink (bool sendStatusText, bool enableCamera, bool enableGimbal);
119 Q_INVOKABLE void startAPMArduPlaneMockLink (bool sendStatusText, bool enableCamera, bool enableGimbal);
120 Q_INVOKABLE void startAPMArduSubMockLink (bool sendStatusText, bool enableCamera, bool enableGimbal);
121 Q_INVOKABLE void startAPMArduRoverMockLink (bool sendStatusText, bool enableCamera, bool enableGimbal);
122 Q_INVOKABLE void stopOneMockLink (void);
123
125 Q_INVOKABLE static QmlObjectListModel *treeLoggingCategoriesModel();
126
128 Q_INVOKABLE static QmlObjectListModel *flatLoggingCategoriesModel();
129
131 Q_INVOKABLE static void setCategoryLoggingOn(const QString &category, bool enable);
132
134 Q_INVOKABLE static bool categoryLoggingOn(const QString &category);
135
136 Q_INVOKABLE static void disableAllLoggingCategories();
137
139
140 Q_INVOKABLE QString altitudeModeExtraUnits(AltMode altMode);
141 Q_INVOKABLE QString altitudeModeShortDescription(AltMode altMode);
142
153 Q_INVOKABLE void showMessageDialog(
154 QObject* owner,
155 const QString& title,
156 const QString& text,
157 int buttons = kDefaultMessageDialogButtons,
160
161 // Property accessors
162
163 static QString appName();
164 LinkManager* linkManager () { return _linkManager; }
165 MultiVehicleManager* multiVehicleManager () { return _multiVehicleManager; }
166 QGCMapEngineManager* mapEngineManager () { return _mapEngineManager; }
167 QGCPositionManager* qgcPositionManger () { return _qgcPositionManager; }
168 MissionCommandTree* missionCommandTree () { return _missionCommandTree; }
169 VideoManager* videoManager () { return _videoManager; }
170 QGCCorePlugin* corePlugin () { return _corePlugin; }
171 SettingsManager* settingsManager () { return _settingsManager; }
172#ifndef QGC_NO_SERIAL_LINK
173 FactGroup* gpsRtkFactGroup () { return _gpsRtkFactGroup; }
174#endif
175 ADSBVehicleManager* adsbVehicleManager () { return _adsbVehicleManager; }
176 QmlUnitsConversion* unitsConversion () { return &_unitsConversion; }
177 static QGeoCoordinate flightMapPosition () { return _coord; }
178 static double flightMapZoom () { return _zoom; }
179
180 qreal zOrderTopMost () { return 1000; }
181 qreal zOrderWidgets () { return 100; }
182 qreal zOrderMapItems () { return 50; }
184 qreal zOrderVehicles () { return 49; }
185 qreal zOrderTrajectoryLines () { return 48; }
186 qreal zOrderWaypointLines () { return 47; }
187
188#if defined(QGC_NO_ARDUPILOT_DIALECT)
189 bool hasAPMSupport () { return false; }
190#else
191 bool hasAPMSupport () { return true; }
192#endif
193
194#if defined(QGC_DISABLE_MAVLINK_INSPECTOR)
195 bool hasMAVLinkInspector () { return false; }
196#else
197 bool hasMAVLinkInspector () { return true; }
198#endif
199
200 QString elevationProviderName ();
201 QString elevationProviderNotice ();
202
203 bool singleFirmwareSupport ();
204 bool singleVehicleSupport ();
205 bool px4ProFirmwareSupported ();
206 bool apmFirmwareSupported ();
207
208 void setFlightMapPosition (QGeoCoordinate& coordinate);
209 void setFlightMapZoom (double zoom);
210
211 QString parameterFileExtension (void) const;
212 QString telemetryFileExtension (void) const;
213
214 static QString qgcVersion();
215 static QString qgcAppDate() { return QGC_APP_DATE; }
216#ifdef QGC_DAILY_BUILD
217 static bool qgcDailyBuild() { return true; }
218#else
219 static bool qgcDailyBuild() { return false; }
220#endif
221
222signals:
223 void isMultiplexingEnabledChanged (bool enabled);
225 void flightMapPositionChanged (QGeoCoordinate flightMapPosition);
226 void flightMapZoomChanged (double flightMapZoom);
228
229private:
230 QGCMapEngineManager* _mapEngineManager = nullptr;
231 ADSBVehicleManager* _adsbVehicleManager = nullptr;
232 QGCPositionManager* _qgcPositionManager = nullptr;
233 MissionCommandTree* _missionCommandTree = nullptr;
234 VideoManager* _videoManager = nullptr;
235 LinkManager* _linkManager = nullptr;
236 MultiVehicleManager* _multiVehicleManager = nullptr;
237 SettingsManager* _settingsManager = nullptr;
238 QGCCorePlugin* _corePlugin = nullptr;
239 QGCPalette* _globalPalette = nullptr;
240#ifndef QGC_NO_SERIAL_LINK
241 FactGroup* _gpsRtkFactGroup = nullptr;
242#endif
243
244 double _flightMapInitialZoom = 17.0;
245 QmlUnitsConversion _unitsConversion;
246
247 QStringList _altitudeModeEnumString;
248
249 static QGeoCoordinate _coord;
250 static double _zoom;
251 QTimer _flightMapPositionSettledTimer;
252
253 static constexpr const char* kQmlGlobalKeyName = "QGCQml";
254
255 static constexpr const char* _flightMapPositionSettingsGroup = "FlightMapPosition";
256 static constexpr const char* _flightMapPositionLatitudeSettingsKey = "Latitude";
257 static constexpr const char* _flightMapPositionLongitudeSettingsKey = "Longitude";
258 static constexpr const char* _flightMapZoomSettingsKey = "FlightMapZoom";
259};
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
Used to group Facts together into an object hierarachy.
Definition FactGroup.h:19
Manage communication links The Link Manager organizes the physical Links. It can manage arbitrary lin...
Definition LinkManager.h:35
QModelIndex index(int row, int column=0, const QModelIndex &parent=QModelIndex()) const override
QModelIndex parent(const QModelIndex &child) const override
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.