10const QStringList InstrumentValueData::_rangeTypeNames = {
11 QT_TRANSLATE_NOOP(
"InstrumentValue",
"None"),
12 QT_TRANSLATE_NOOP(
"InstrumentValue",
"Color"),
13 QT_TRANSLATE_NOOP(
"InstrumentValue",
"Opacity"),
14 QT_TRANSLATE_NOOP(
"InstrumentValue",
"Icon"),
19 , _factValueGrid(factValueGrid)
20 , _vehicle (factValueGrid->currentVehicle())
33 if (!_factGroupName.isEmpty() && !_factName.isEmpty()) {
38void InstrumentValueData::_lookForMissingFact(
void)
64void InstrumentValueData::_setFactWorker(
void)
75 factGroup = _vehicle->getFactGroup(_factGroupName);
78 QString nonEmptyFactName;
80 if (_factName.isEmpty()) {
83 nonEmptyFactName = _factName;
85 _fact = factGroup->getFact(nonEmptyFactName);
89 _factName = nonEmptyFactName;
100void InstrumentValueData::setFact(
const QString& factGroupName,
const QString& factName)
164void InstrumentValueData::_resetRangeInfo(
void)
166 _rangeValues.clear();
167 _rangeColors.clear();
168 _rangeOpacities.clear();
172 _rangeValues = { 0.0, 100.0 };
174 for (
int i=0; i<_rangeValues.count() + 1; i++) {
175 switch (_rangeType) {
179 _rangeColors.append(QColor(
"green"));
182 _rangeOpacities.append(1.0);
185 _rangeIcons.append(_factValueGrid->
iconNames()[0]);
198 _rangeValues.append(_rangeValues.last().toDouble() + 1);
200 switch (_rangeType) {
204 _rangeColors.append(QColor(
"green"));
207 _rangeOpacities.append(1.0);
210 _rangeIcons.append(_factValueGrid->
iconNames()[0]);
222 if (_rangeValues.count() < 2 || index <0 || index >= _rangeValues.count()) {
226 _rangeValues.removeAt(index);
228 switch (_rangeType) {
232 _rangeColors.removeAt(index + 1);
235 _rangeOpacities.removeAt(index + 1);
238 _rangeIcons.removeAt(index + 1);
248void InstrumentValueData::_updateRanges(
void)
255void InstrumentValueData::_updateColor(
void)
262 rangeIndex =_currentRangeIndex(_fact->rawValue().toDouble());
264 if (rangeIndex != -1) {
265 newColor = _rangeColors[rangeIndex].value<QColor>();
268 if (newColor != _currentColor) {
269 _currentColor = newColor;
274void InstrumentValueData::_updateOpacity(
void)
276 double newOpacity = 1.0;
281 rangeIndex =_currentRangeIndex(_fact->rawValue().toDouble());
283 if (rangeIndex != -1) {
284 newOpacity = _rangeOpacities[rangeIndex].toDouble();
288 _currentOpacity = newOpacity;
293void InstrumentValueData::_updateIcon(
void)
300 rangeIndex =_currentRangeIndex(_fact->rawValue().toDouble());
302 if (rangeIndex != -1) {
303 newIcon = _rangeIcons[rangeIndex].toString();
306 if (newIcon != _currentIcon) {
307 _currentIcon = newIcon;
312int InstrumentValueData::_currentRangeIndex(
const QVariant& value)
314 if (qIsNaN(value.toDouble())) {
317 for (
int i=0; i<_rangeValues.count(); i++) {
318 if (value.toDouble() <= _rangeValues[i].toDouble()) {
322 return _rangeValues.count();
327 QStringList groupNames = _vehicle->factGroupNames();
329 for (QString& name: groupNames) {
330 name[0] = name[0].toUpper();
339 QStringList valueNames;
343 factGroup = _vehicle;
345 factGroup = _vehicle->getFactGroup(_factGroupName);
349 valueNames = factGroup->factNames();
350 for (QString& name: valueNames) {
351 name[0] = name[0].toUpper();
Used to group Facts together into an object hierarachy.
void factGroupNamesChanged()
QStringList iconNames(void) const
void rawValueChanged(const QVariant &value)
static constexpr const char * vehicleFactGroupName
void currentIconChanged(const QString ¤tIcon)
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
void showUnitsChanged(bool showUnits)
void factGroupNameChanged(const QString &factGroup)
QVariantList rangeOpacities(void) const
void rangeTypeChanged(RangeType rangeType)
void factChanged(Fact *fact)
void setText(const QString &text)
QVariantList rangeColors(void) const
void setRangeType(RangeType rangeType)
void currentColorChanged(const QColor ¤tColor)
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)
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)
QVariantList rangeIcons(void) const
InstrumentValueData(FactValueGrid *factValueGrid, QObject *parent)
void iconChanged(const QString &icon)
void currentOpacityChanged(double currentOpacity)
bool fuzzyCompare(double value1, double value2)
Returns true if the two values are equal or close. Correctly handles 0 and NaN values.