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