QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
Viewer3DManager.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QLoggingCategory>
4#include <QtCore/QObject>
5#include <QtCore/QVariant>
6#include <QtPositioning/QGeoCoordinate>
7#include <QtQmlIntegration/QtQmlIntegration>
8
9Q_DECLARE_LOGGING_CATEGORY(Viewer3DManagerLog)
10
11class Vehicle;
13
14class Viewer3DManager : public QObject
15{
16 Q_OBJECT
17 QML_NAMED_ELEMENT(QGCViewer3DManager)
18 QML_SINGLETON
19 Q_MOC_INCLUDE("Viewer3DMapProvider.h")
20
21 Q_PROPERTY(Viewer3DMapProvider *mapProvider READ mapProvider CONSTANT)
22 Q_PROPERTY(QGeoCoordinate gpsRef READ gpsRef NOTIFY gpsRefChanged)
23 Q_PROPERTY(DisplayMode displayMode READ displayMode NOTIFY displayModeChanged)
24
25public:
26 enum DisplayMode {
27 Map,
28 View3D,
29 };
30 Q_ENUM(DisplayMode)
31
32 explicit Viewer3DManager(QObject *parent = nullptr);
33
34 Viewer3DMapProvider *mapProvider() const { return _mapProvider; }
35 QGeoCoordinate gpsRef() const { return _gpsRef; }
36 DisplayMode displayMode() const { return _displayMode; }
37
38 Q_INVOKABLE void setDisplayMode(DisplayMode mode);
39
40signals:
43
44private:
45 enum class GpsRefSource {
46 None,
47 Map,
48 Vehicle,
49 };
50
51 void _onGpsRefChanged(const QGeoCoordinate &newGpsRef, bool isRefSet);
52 void _onActiveVehicleChanged(Vehicle *vehicle);
53 void _onActiveVehicleCoordinateChanged(const QGeoCoordinate &newCoordinate);
54 void _onEnabledChanged(const QVariant &value);
55
56 Viewer3DMapProvider *_mapProvider = nullptr;
57 Vehicle *_activeVehicle = nullptr;
58
59 QGeoCoordinate _gpsRef;
60 GpsRefSource _gpsRefSource = GpsRefSource::None;
61 DisplayMode _displayMode = DisplayMode::Map;
62};
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
void gpsRefChanged()
void displayModeChanged()