QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
QGCCorePlugin.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QLoggingCategory>
4#include <QtCore/QObject>
5#include <QtCore/QVariantList>
6#include <QtQmlIntegration/QtQmlIntegration>
7
8#include "QGCPalette.h"
9
10class FactMetaData;
11class LinkInterface;
13class QFile;
14class QGCOptions;
15class QGeoPositionInfoSource;
17class QQmlApplicationEngine;
18class QQuickItem;
19class Vehicle;
20class VideoReceiver;
21class VideoSink;
22class FactValueGrid;
23typedef struct __mavlink_message mavlink_message_t;
24
25Q_DECLARE_LOGGING_CATEGORY(QGCCorePluginLog)
26
27class QGCCorePlugin : public QObject
28{
29 Q_OBJECT
30 QML_UNCREATABLE("")
31 Q_MOC_INCLUDE("QGCOptions.h")
32 Q_MOC_INCLUDE("QmlObjectListModel.h")
33 Q_PROPERTY(bool showAdvancedUI READ showAdvancedUI WRITE _setShowAdvancedUI NOTIFY showAdvancedUIChanged)
34 Q_PROPERTY(bool showTouchAreas READ showTouchAreas WRITE _setShowTouchAreas NOTIFY showTouchAreasChanged)
35 Q_PROPERTY(int defaultSettings READ defaultSettings CONSTANT)
36 Q_PROPERTY(int offlineVehicleFirstRunPromptId MEMBER kOfflineVehicleFirstRunPromptId CONSTANT)
37 Q_PROPERTY(int unitsFirstRunPromptId MEMBER kUnitsFirstRunPromptId CONSTANT)
38 Q_PROPERTY(const QGCOptions *options READ options CONSTANT)
39 Q_PROPERTY(const QmlObjectListModel *customMapItems READ customMapItems CONSTANT)
40 Q_PROPERTY(QString brandImageIndoor READ brandImageIndoor CONSTANT)
41 Q_PROPERTY(QString brandImageOutdoor READ brandImageOutdoor CONSTANT)
42 Q_PROPERTY(QString showAdvancedUIMessage READ showAdvancedUIMessage CONSTANT)
43 Q_PROPERTY(QVariantList analyzePages READ analyzePages CONSTANT)
44 Q_PROPERTY(QVariantList toolBarIndicators READ toolBarIndicators CONSTANT)
45
46public:
47 explicit QGCCorePlugin(QObject *parent = nullptr);
48 virtual ~QGCCorePlugin();
49
50 static QGCCorePlugin *instance();
51
52 virtual void init() { }
53 virtual void cleanup() { }
54
57 virtual const QVariantList &analyzePages();
58
61 virtual int defaultSettings() { return 0; }
62
65 virtual QGCOptions *options();
66
70 virtual bool overrideSettingsGroupVisibility(const QString &name) { Q_UNUSED(name); return true; }
71
77 virtual void adjustSettingMetaData(const QString &settingsGroup, FactMetaData &metaData, bool &visible);
78
80 virtual QString brandImageIndoor() const { return QString(); }
81
83 virtual QString brandImageOutdoor() const { return QString(); }
84
86 virtual QString showAdvancedUIMessage() const;
87
89 virtual QGeoPositionInfoSource *createPositionSource(QObject *parent) { Q_UNUSED(parent); return nullptr; }
90
92 virtual void paletteOverride(const QString &colorName, QGCPalette::PaletteColorInfo_t &colorInfo) { Q_UNUSED(colorName); Q_UNUSED(colorInfo); };
93
94 virtual void factValueGridCreateDefaultSettings(FactValueGrid* factValueGrid);
95
98 virtual QQmlApplicationEngine *createQmlApplicationEngine(QObject *parent);
99
101 virtual void createRootWindow(QQmlApplicationEngine *qmlEngine);
102
104 virtual VideoReceiver *createVideoReceiver(QObject *parent);
106 virtual void *createVideoSink(QQuickItem *widget, QObject *parent);
108 virtual void releaseVideoSink(void *sink);
109
112 virtual bool mavlinkMessage(Vehicle *vehicle, LinkInterface *link, const mavlink_message_t &message) { Q_UNUSED(vehicle); Q_UNUSED(link); Q_UNUSED(message); return true; }
113
115 virtual const QmlObjectListModel *customMapItems();
116
118 virtual void preSaveToJson(PlanMasterController *pController, QJsonObject &json) { Q_UNUSED(pController); Q_UNUSED(json); }
120 virtual void postSaveToJson(PlanMasterController *pController, QJsonObject &json) { Q_UNUSED(pController); Q_UNUSED(json); }
121
123 virtual void preSaveToMissionJson(PlanMasterController *pController, QJsonObject &missionJson) { Q_UNUSED(pController); Q_UNUSED(missionJson); }
125 virtual void postSaveToMissionJson(PlanMasterController *pController, QJsonObject &missionJson) { Q_UNUSED(pController); Q_UNUSED(missionJson); }
126
128 virtual void preLoadFromJson(PlanMasterController *pController, QJsonObject &json) { Q_UNUSED(pController); Q_UNUSED(json); }
130 virtual void postLoadFromJson(PlanMasterController *pController, QJsonObject &json) { Q_UNUSED(pController); Q_UNUSED(json); }
131
138#ifdef QGC_CUSTOM_BUILD
139 virtual QString stableVersionCheckFileUrl() const { return QString(); }
140#else
141 virtual QString stableVersionCheckFileUrl() const { return QStringLiteral("https://s3-us-west-2.amazonaws.com/qgroundcontrol/latest/QGC.version.txt"); }
142#endif
143
146 virtual QString stableDownloadLocation() const { return QStringLiteral("qgroundcontrol.com"); }
147
151 virtual QStringList complexMissionItemNames(Vehicle *vehicle, const QStringList &complexMissionItemNames) { Q_UNUSED(vehicle); return complexMissionItemNames; }
152
156 virtual QList<int> firstRunPromptStdIds() { return QList<int>({ kUnitsFirstRunPromptId, kOfflineVehicleFirstRunPromptId }); }
157
161 virtual QList<int> firstRunPromptCustomIds() { return QList<int>(); }
162
164 Q_INVOKABLE virtual QString firstRunPromptResource(int id) const;
165
168 virtual const QVariantList &toolBarIndicators();
169
171 virtual bool getOfflineCameraDefinitionFile(const QString &cameraName, QFile &file) { Q_UNUSED(cameraName); Q_UNUSED(file); return false; }
172
173 struct JoystickAction {
174 QString name;
175 bool canRepeat = false;
176 };
177 virtual QList<JoystickAction> joystickActions() { return {}; }
178
180 Q_INVOKABLE QVariantList firstRunPromptsToShow();
181
182 bool showTouchAreas() const { return _showTouchAreas; }
183 bool showAdvancedUI() const { return _showAdvancedUI; }
184
185 // Standard first run prompt ids
186 static constexpr int kUnitsFirstRunPromptId = 1;
187 static constexpr int kOfflineVehicleFirstRunPromptId = 2;
188
189 // Custom builds can start there first run prompt ids from here
190 static constexpr int kFirstRunPromptIdsFirstCustomId = 10000;
191
192signals:
193 void showTouchAreasChanged(bool showTouchAreas);
194 void showAdvancedUIChanged(bool showAdvancedUI);
195
196protected:
197 bool _showTouchAreas = false;
198 bool _showAdvancedUI = true;
199
200private:
201 void _setShowTouchAreas(bool show);
202 void _setShowAdvancedUI(bool show);
203
204 QGCOptions *_defaultOptions = nullptr;
205 QmlObjectListModel *_emptyCustomMapItems = nullptr;
206};
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
struct __mavlink_message mavlink_message_t
The link interface defines the interface for all links used to communicate with the ground station ap...
Master controller for mission, fence, rally.
void showTouchAreasChanged(bool showTouchAreas)
void showAdvancedUIChanged(bool showAdvancedUI)
QColor PaletteColorInfo_t[cMaxTheme][cMaxColorGroup]
Definition QGCPalette.h:101