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