Browse Source

Add support for valueTypeElapsedTimeInSeconds

QGC4.4
DonLakeFlyer 8 years ago
parent
commit
ab397c9993
  1. 12
      src/FactSystem/Fact.cc
  2. 17
      src/FactSystem/FactMetaData.cc
  3. 3
      src/FactSystem/FactMetaData.h
  4. 1
      src/FirmwarePlugin/APM/APMParameterMetaData.cc
  5. 1
      src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc

12
src/FactSystem/Fact.cc

@ -270,6 +270,18 @@ QString Fact::_variantToString(const QVariant& variant, int decimalPlaces) const @@ -270,6 +270,18 @@ QString Fact::_variantToString(const QVariant& variant, int decimalPlaces) const
}
}
break;
case FactMetaData::valueTypeElapsedTimeInSeconds:
{
double dValue = variant.toDouble();
if (qIsNaN(dValue)) {
valueString = QStringLiteral("--:--:--");
} else {
QTime time(0, 0, 0, 0);
time = time.addSecs(dValue);
valueString = time.toString(QStringLiteral("hh:mm:ss"));
}
}
break;
default:
valueString = variant.toString();
break;

17
src/FactSystem/FactMetaData.cc

@ -210,6 +210,8 @@ QVariant FactMetaData::_minForType(void) const @@ -210,6 +210,8 @@ QVariant FactMetaData::_minForType(void) const
return QVariant();
case valueTypeBool:
return QVariant(0);
case valueTypeElapsedTimeInSeconds:
return QVariant(0.0);
}
// Make windows compiler happy, even switch is full cased
@ -233,6 +235,7 @@ QVariant FactMetaData::_maxForType(void) const @@ -233,6 +235,7 @@ QVariant FactMetaData::_maxForType(void) const
return QVariant(std::numeric_limits<int>::max());
case valueTypeFloat:
return QVariant(std::numeric_limits<float>::max());
case valueTypeElapsedTimeInSeconds:
case valueTypeDouble:
return QVariant(std::numeric_limits<double>::max());
case valueTypeString:
@ -262,7 +265,6 @@ bool FactMetaData::convertAndValidateRaw(const QVariant& rawValue, bool convertO @@ -262,7 +265,6 @@ bool FactMetaData::convertAndValidateRaw(const QVariant& rawValue, bool convertO
}
}
break;
case FactMetaData::valueTypeUint8:
case FactMetaData::valueTypeUint16:
case FactMetaData::valueTypeUint32:
@ -273,7 +275,6 @@ bool FactMetaData::convertAndValidateRaw(const QVariant& rawValue, bool convertO @@ -273,7 +275,6 @@ bool FactMetaData::convertAndValidateRaw(const QVariant& rawValue, bool convertO
}
}
break;
case FactMetaData::valueTypeFloat:
typedValue = QVariant(rawValue.toFloat(&convertOk));
if (!convertOnly && convertOk) {
@ -282,7 +283,7 @@ bool FactMetaData::convertAndValidateRaw(const QVariant& rawValue, bool convertO @@ -282,7 +283,7 @@ bool FactMetaData::convertAndValidateRaw(const QVariant& rawValue, bool convertO
}
}
break;
case FactMetaData::valueTypeElapsedTimeInSeconds:
case FactMetaData::valueTypeDouble:
typedValue = QVariant(rawValue.toDouble(&convertOk));
if (!convertOnly && convertOk) {
@ -325,7 +326,6 @@ bool FactMetaData::convertAndValidateCooked(const QVariant& cookedValue, bool co @@ -325,7 +326,6 @@ bool FactMetaData::convertAndValidateCooked(const QVariant& cookedValue, bool co
}
}
break;
case FactMetaData::valueTypeUint8:
case FactMetaData::valueTypeUint16:
case FactMetaData::valueTypeUint32:
@ -336,7 +336,6 @@ bool FactMetaData::convertAndValidateCooked(const QVariant& cookedValue, bool co @@ -336,7 +336,6 @@ bool FactMetaData::convertAndValidateCooked(const QVariant& cookedValue, bool co
}
}
break;
case FactMetaData::valueTypeFloat:
typedValue = QVariant(cookedValue.toFloat(&convertOk));
if (!convertOnly && convertOk) {
@ -345,7 +344,7 @@ bool FactMetaData::convertAndValidateCooked(const QVariant& cookedValue, bool co @@ -345,7 +344,7 @@ bool FactMetaData::convertAndValidateCooked(const QVariant& cookedValue, bool co
}
}
break;
case FactMetaData::valueTypeElapsedTimeInSeconds:
case FactMetaData::valueTypeDouble:
typedValue = QVariant(cookedValue.toDouble(&convertOk));
if (!convertOnly && convertOk) {
@ -604,7 +603,8 @@ FactMetaData::ValueType_t FactMetaData::stringToType(const QString& typeString, @@ -604,7 +603,8 @@ FactMetaData::ValueType_t FactMetaData::stringToType(const QString& typeString,
<< QStringLiteral("Float")
<< QStringLiteral("Double")
<< QStringLiteral("String")
<< QStringLiteral("Bool");
<< QStringLiteral("Bool")
<< QStringLiteral("ElapsedSeconds");
knownTypes << valueTypeUint8
<< valueTypeInt8
@ -615,7 +615,8 @@ FactMetaData::ValueType_t FactMetaData::stringToType(const QString& typeString, @@ -615,7 +615,8 @@ FactMetaData::ValueType_t FactMetaData::stringToType(const QString& typeString,
<< valueTypeFloat
<< valueTypeDouble
<< valueTypeString
<< valueTypeBool;
<< valueTypeBool
<< valueTypeElapsedTimeInSeconds;
for (int i=0; i<knownTypeStrings.count(); i++) {
if (knownTypeStrings[i].compare(typeString, Qt::CaseInsensitive) == 0) {

3
src/FactSystem/FactMetaData.h

@ -39,7 +39,8 @@ public: @@ -39,7 +39,8 @@ public:
valueTypeFloat,
valueTypeDouble,
valueTypeString,
valueTypeBool
valueTypeBool,
valueTypeElapsedTimeInSeconds, // Internally stored as double, valueString displays as HH:MM:SS
} ValueType_t;
typedef QVariant (*Translator)(const QVariant& from);

1
src/FirmwarePlugin/APM/APMParameterMetaData.cc

@ -52,6 +52,7 @@ QVariant APMParameterMetaData::_stringToTypedVariant(const QString& string, @@ -52,6 +52,7 @@ QVariant APMParameterMetaData::_stringToTypedVariant(const QString& string,
case FactMetaData::valueTypeFloat:
convertTo = QMetaType::Float;
break;
case FactMetaData::valueTypeElapsedTimeInSeconds:
case FactMetaData::valueTypeDouble:
convertTo = QVariant::Double;
break;

1
src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc

@ -52,6 +52,7 @@ QVariant PX4ParameterMetaData::_stringToTypedVariant(const QString& string, Fact @@ -52,6 +52,7 @@ QVariant PX4ParameterMetaData::_stringToTypedVariant(const QString& string, Fact
case FactMetaData::valueTypeFloat:
convertTo = QMetaType::Float;
break;
case FactMetaData::valueTypeElapsedTimeInSeconds:
case FactMetaData::valueTypeDouble:
convertTo = QVariant::Double;
break;

Loading…
Cancel
Save