QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
VehicleComponent.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QObject>
4#include <QtCore/QStringList>
5#include <QtCore/QUrl>
6#include <QtCore/QVariant>
7#include <QtQmlIntegration/QtQmlIntegration>
8
9#include "AutoPilotPlugin.h"
10
11class Vehicle;
12class QQuickItem;
13class QQmlContext;
14
17
18class VehicleComponent : public QObject
19{
20 Q_OBJECT
21 QML_ELEMENT
22 QML_UNCREATABLE("")
23
24 Q_PROPERTY(QString name READ name CONSTANT)
25 Q_PROPERTY(QString description READ description CONSTANT)
26 Q_PROPERTY(bool requiresSetup READ requiresSetup CONSTANT)
27 Q_PROPERTY(bool setupComplete READ setupComplete STORED false NOTIFY setupCompleteChanged)
28 Q_PROPERTY(QString iconResource READ iconResource CONSTANT)
29 Q_PROPERTY(QUrl setupSource READ setupSource NOTIFY setupSourceChanged)
30 Q_PROPERTY(QUrl summaryQmlSource READ summaryQmlSource CONSTANT)
31 Q_PROPERTY(bool allowSetupWhileArmed READ allowSetupWhileArmed CONSTANT)
32 Q_PROPERTY(bool allowSetupWhileFlying READ allowSetupWhileFlying CONSTANT)
34 Q_PROPERTY(QStringList sectionIds READ sectionIds NOTIFY sectionIdsChanged)
35 Q_PROPERTY(QVariantMap sectionKeywords READ sectionKeywords NOTIFY sectionIdsChanged)
36 Q_PROPERTY(QString vehicleConfigJson READ vehicleConfigJson CONSTANT)
37 Q_PROPERTY(bool showFirstSectionOnRootClick READ showFirstSectionOnRootClick CONSTANT)
38
39public:
40 explicit VehicleComponent(Vehicle *vehicle, AutoPilotPlugin *autopilot, AutoPilotPlugin::KnownVehicleComponent KnownVehicleComponent, QObject *parent = nullptr);
41 virtual ~VehicleComponent();
42
43 virtual QString name() const = 0;
44 virtual QString description() const { return QString(); }
45 virtual QString iconResource() const = 0;
46 virtual bool requiresSetup() const = 0;
47 virtual bool setupComplete() const = 0;
48 virtual QUrl setupSource() const = 0;
49 virtual QUrl summaryQmlSource() const = 0;
50
52 virtual QString vehicleConfigJson() const { return QString(); }
53
57 virtual QStringList sectionIds() const;
58
61 Q_INVOKABLE virtual QString sectionDisplayName(const QString& sectionId) const { return sectionId; }
62
64 QVariantMap sectionKeywords() const;
65
67 virtual bool showFirstSectionOnRootClick() const { return false; }
68
70 Q_INVOKABLE virtual bool sectionSetupComplete(const QString &sectionId) const { Q_UNUSED(sectionId); return true; }
71
72 // @return true: Setup panel can be shown while vehicle is armed
73 virtual bool allowSetupWhileArmed() const { return false; }
74
75 // @return true: Setup panel can be shown while vehicle is flying (and armed)
76 virtual bool allowSetupWhileFlying() const { return false; }
77
78 virtual void addSummaryQmlComponent(QQmlContext* context, QQuickItem* parent);
79
82 virtual QStringList setupCompleteChangedTriggerList() const = 0;
83
86 virtual void setupTriggerSignals();
87
89
90signals:
94
95protected slots:
96 void _triggerUpdated(QVariant /*value*/) { emit setupCompleteChanged(); }
97
98protected:
99 Vehicle *_vehicle = nullptr;
102
103private:
105 void _ensureSectionsCached() const;
106
108 struct RepeatFilter {
109 QStringList sectionIds;
110 QStringList paramNames;
111 int disabledValue = 0;
112 QString disabledHeading;
113 };
114
115 mutable QStringList _expandedSectionIds;
116 mutable QVector<RepeatFilter> _repeatFilters;
117 mutable QMap<QString, QStringList> _sectionKeywords;
118 mutable bool _sectionsCached = false;
119};
The AutoPilotPlugin class is an abstract base class which represents the methods and objects which ar...
A vehicle component is an object which abstracts the physical portion of a vehicle into a set of conf...
virtual bool allowSetupWhileFlying() const
virtual bool requiresSetup() const =0
void setupCompleteChanged()
virtual ~VehicleComponent()
virtual QString vehicleConfigJson() const
Resource path to a VehicleConfig.json page definition, or empty if none.
virtual bool setupComplete() const =0
virtual Q_INVOKABLE QString sectionDisplayName(const QString &sectionId) const
virtual bool allowSetupWhileArmed() const
virtual QString iconResource() const =0
virtual bool showFirstSectionOnRootClick() const
When true, clicking the root component in the tree selects the first section instead of showing all.
virtual QString description() const
void _triggerUpdated(QVariant)
virtual QStringList sectionIds() const
virtual QStringList setupCompleteChangedTriggerList() const =0
virtual void setupTriggerSignals()
AutoPilotPlugin::KnownVehicleComponent KnownVehicleComponent() const
virtual QUrl summaryQmlSource() const =0
void setupSourceChanged()
virtual QUrl setupSource() const =0
QVariantMap sectionKeywords() const
Search keywords per section, keyed by section ID. Values are original-case translatable terms.
AutoPilotPlugin * _autopilot
AutoPilotPlugin::KnownVehicleComponent _KnownVehicleComponent
virtual QString name() const =0
virtual Q_INVOKABLE bool sectionSetupComplete(const QString &sectionId) const
Returns setup-complete status for a section ID. Default returns true (no per-section tracking).
virtual void addSummaryQmlComponent(QQmlContext *context, QQuickItem *parent)
void sectionIdsChanged()