QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
InstrumentValueData.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QObject>
4#include <QtQmlIntegration/QtQmlIntegration>
5
6#include "Fact.h"
7#include "FactValueGrid.h"
8
9class Vehicle;
11
12class InstrumentValueData : public QObject
13{
14 Q_OBJECT
15 QML_ELEMENT
16 QML_UNCREATABLE("")
17public:
24 Q_ENUMS(RangeType)
25
26 explicit InstrumentValueData(FactValueGrid* factValueGrid, QObject* parent);
27
28 Q_PROPERTY(FactValueGrid* factValueGrid MEMBER _factValueGrid CONSTANT)
29 Q_PROPERTY(QStringList factGroupNames READ factGroupNames NOTIFY factGroupNamesChanged)
30 Q_PROPERTY(QStringList factValueNames READ factValueNames NOTIFY factValueNamesChanged)
31 Q_PROPERTY(QString factGroupName READ factGroupName NOTIFY factGroupNameChanged)
32 Q_PROPERTY(QString factName READ factName NOTIFY factNameChanged)
33 Q_PROPERTY(Fact* fact READ fact NOTIFY factChanged)
34 Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
35 Q_PROPERTY(QString icon READ icon WRITE setIcon NOTIFY iconChanged)
36 Q_PROPERTY(bool showUnits READ showUnits WRITE setShowUnits NOTIFY showUnitsChanged)
37 Q_PROPERTY(QStringList rangeTypeNames MEMBER _rangeTypeNames CONSTANT)
38 Q_PROPERTY(RangeType rangeType READ rangeType WRITE setRangeType NOTIFY rangeTypeChanged)
39 Q_PROPERTY(QVariantList rangeValues READ rangeValues WRITE setRangeValues NOTIFY rangeValuesChanged)
40 Q_PROPERTY(QVariantList rangeColors READ rangeColors WRITE setRangeColors NOTIFY rangeColorsChanged)
41 Q_PROPERTY(QVariantList rangeIcons READ rangeIcons WRITE setRangeIcons NOTIFY rangeIconsChanged)
42 Q_PROPERTY(QVariantList rangeOpacities READ rangeOpacities WRITE setRangeOpacities NOTIFY rangeOpacitiesChanged)
43 Q_PROPERTY(QColor currentColor MEMBER _currentColor NOTIFY currentColorChanged)
44 Q_PROPERTY(double currentOpacity MEMBER _currentOpacity NOTIFY currentOpacityChanged)
45 Q_PROPERTY(QString currentIcon MEMBER _currentIcon NOTIFY currentIconChanged)
46
47 Q_INVOKABLE void setFact (const QString& factGroupName, const QString& factName);
48 Q_INVOKABLE void clearFact (void);
49 Q_INVOKABLE bool isValidColor (const QColor& color) { return color.isValid(); }
50 Q_INVOKABLE QColor invalidColor (void) { return QColor(); }
51 Q_INVOKABLE void addRangeValue (void);
52 Q_INVOKABLE void removeRangeValue(int index);
53
54 QStringList factGroupNames (void) const;
55 QStringList factValueNames (void) const;
56 QString factGroupName (void) const { return _factGroupName; }
57 QString factName (void) const { return _factName; }
58 Fact* fact (void) const { return _fact; }
59 QString text (void) const { return _text; }
60 bool showUnits (void) const { return _showUnits; }
61 QString icon (void) const { return _icon; }
62 RangeType rangeType (void) const { return _rangeType; }
63 QVariantList rangeValues (void) const { return _rangeValues; }
64 QVariantList rangeColors (void) const { return _rangeColors; }
65 QVariantList rangeIcons (void) const { return _rangeIcons; }
66 QVariantList rangeOpacities (void) const { return _rangeOpacities; }
67 void setText (const QString& text);
68 void setShowUnits (bool showUnits);
69 void setIcon (const QString& icon);
71 void setRangeValues (const QVariantList& rangeValues);
72 void setRangeColors (const QVariantList& rangeColors);
73 void setRangeIcons (const QVariantList& rangeIcons);
74 void setRangeOpacities (const QVariantList& rangeOpacities);
75
76 static constexpr const char* vehicleFactGroupName = "Vehicle";
77
78signals:
80 void factNameChanged (const QString& factName);
81 void factGroupNameChanged (const QString& factGroup);
82 void textChanged (QString text);
84 void iconChanged (const QString& icon);
88 void rangeValuesChanged (const QVariantList& rangeValues);
89 void rangeColorsChanged (const QVariantList& rangeColors);
90 void rangeIconsChanged (const QVariantList& rangeIcons);
91 void rangeOpacitiesChanged (const QVariantList& rangeOpacities);
92 void currentColorChanged (const QColor& currentColor);
93 void currentOpacityChanged (double currentOpacity);
94 void currentIconChanged (const QString& currentIcon);
95
96private slots:
97 void _resetRangeInfo (void);
98 void _updateRanges (void);
99 void _lookForMissingFact (void);
100
101private:
102 int _currentRangeIndex (const QVariant& value);
103 void _updateColor (void);
104 void _updateIcon (void);
105 void _updateOpacity (void);
106 void _setFactWorker (void);
107
108 FactValueGrid* _factValueGrid = nullptr;
109 Vehicle* _vehicle = nullptr;
110 QmlObjectListModel* _rowModel = nullptr;
111 Fact* _fact = nullptr;
112 QString _factName;
113 QString _factGroupName;
114 QString _text;
115 bool _showUnits = true;
116 QString _icon;
117 QColor _currentColor;
118 double _currentOpacity = 1.0;
119 QString _currentIcon;
120
121 // Ranges allow you to specifiy semantics to apply when a value is within a certain range.
122 // The limits for each section of the range are specified in _rangeValues. With the first
123 // element indicating a range from that value to -infinity and the last element indicating
124 // a range from the value to +infinity.
125 //
126 // The semantics to apply are defined by the _rangeType value. With the semantic lists having
127 // a specific value for each section of the range. There should be _rangeValues.count() + 2
128 // semantic values in the apppropriate list.
129 RangeType _rangeType = NoRangeInfo;
130 QVariantList _rangeValues;
131 QVariantList _rangeColors;
132 QVariantList _rangeIcons;
133 QVariantList _rangeOpacities;
134
135 // These are user facing string for the various enums.
136 static const QStringList _rangeTypeNames;
137
138};
139
140QML_DECLARE_TYPE(InstrumentValueData)
141
A Fact is used to hold a single value within the system.
Definition Fact.h:19
static constexpr const char * vehicleFactGroupName
void currentIconChanged(const QString &currentIcon)
void setRangeOpacities(const QVariantList &rangeOpacities)
void rangeOpacitiesChanged(const QVariantList &rangeOpacities)
QStringList factGroupNames(void) const
QStringList factValueNames(void) const
FactValueGrid *factValueGrid MEMBER _factValueGrid const QString & factName
QString text(void) const
void showUnitsChanged(bool showUnits)
void factGroupNameChanged(const QString &factGroup)
QVariantList rangeOpacities(void) const
void rangeTypeChanged(RangeType rangeType)
Fact * fact(void) const
void factChanged(Fact *fact)
void setText(const QString &text)
QVariantList rangeColors(void) const
void setRangeType(RangeType rangeType)
bool isValidColor(const QColor &color)
void currentColorChanged(const QColor &currentColor)
QVariantList rangeValues(void) const
void setIcon(const QString &icon)
RangeType rangeType(void) const
void removeRangeValue(int index)
void factValueNamesChanged(void)
void textChanged(QString text)
void factGroupNamesChanged(void)
bool showUnits(void) const
void rangeIconsChanged(const QVariantList &rangeIcons)
void rangeValuesChanged(const QVariantList &rangeValues)
FactValueGrid *factValueGrid MEMBER _factValueGrid CONSTANT(QStringList factGroupNames READ factGroupNames NOTIFY factGroupNamesChanged) 1(QStringList factValueNames READ factValueNames NOTIFY factValueNamesChanged) 1(QString factGroupName READ factGroupName NOTIFY factGroupNameChanged) 1(QString factName READ factName NOTIFY factNameChanged) 1(Fact *fact READ fact NOTIFY factChanged) 1(QString text READ text WRITE setText NOTIFY textChanged) 1(QString icon READ icon WRITE setIcon NOTIFY iconChanged) 1(bool showUnits READ showUnits WRITE setShowUnits NOTIFY showUnitsChanged) 1(QStringList rangeTypeNames MEMBER _rangeTypeNames CONSTANT) 1(RangeType rangeType READ rangeType WRITE setRangeType NOTIFY rangeTypeChanged) 1(QVariantList rangeValues READ rangeValues WRITE setRangeValues NOTIFY rangeValuesChanged) 1(QVariantList rangeColors READ rangeColors WRITE setRangeColors NOTIFY rangeColorsChanged) 1(QVariantList rangeIcons READ rangeIcons WRITE setRangeIcons NOTIFY rangeIconsChanged) 1(QVariantList rangeOpacities READ rangeOpacities WRITE setRangeOpacities NOTIFY rangeOpacitiesChanged) 1(QColor currentColor MEMBER _currentColor NOTIFY currentColorChanged) 1(double currentOpacity MEMBER _currentOpacity NOTIFY currentOpacityChanged) 1(QString currentIcon MEMBER _currentIcon NOTIFY currentIconChanged) 1 void setFact(const QString &factGroupName
< If !isEmpty icon will be show instead of label
void rangeColorsChanged(const QVariantList &rangeColors)
QString factGroupName(void) const
void setRangeColors(const QVariantList &rangeColors)
void factNameChanged(const QString &factName)
void setRangeIcons(const QVariantList &rangeIcons)
void setShowUnits(bool showUnits)
void setRangeValues(const QVariantList &rangeValues)
QString icon(void) const
QVariantList rangeIcons(void) const
void iconChanged(const QString &icon)
void currentOpacityChanged(double currentOpacity)
QString factName(void) const
Q_DECLARE_METATYPE(satellite_info_s)