Commit a8fa3ebc authored by Don Gagne's avatar Don Gagne

Merge pull request #2964 from DonLakeFlyer/ParamSave

Save params with 18 digit precision
parents 657c11d9 d73f8642
......@@ -249,7 +249,7 @@ QVariantList Fact::bitmaskValues(void) const
}
}
QString Fact::_variantToString(const QVariant& variant) const
QString Fact::_variantToString(const QVariant& variant, int decimalPlaces) const
{
QString valueString;
......@@ -260,7 +260,7 @@ QString Fact::_variantToString(const QVariant& variant) const
if (qIsNaN(fValue)) {
valueString = QStringLiteral("--.--");
} else {
valueString = QString("%1").arg(fValue, 0, 'f', decimalPlaces());
valueString = QString("%1").arg(fValue, 0, 'f', decimalPlaces);
}
}
break;
......@@ -270,7 +270,7 @@ QString Fact::_variantToString(const QVariant& variant) const
if (qIsNaN(dValue)) {
valueString = QStringLiteral("--.--");
} else {
valueString = QString("%1").arg(dValue, 0, 'f', decimalPlaces());
valueString = QString("%1").arg(dValue, 0, 'f', decimalPlaces);
}
}
break;
......@@ -282,14 +282,20 @@ QString Fact::_variantToString(const QVariant& variant) const
return valueString;
}
QString Fact::rawValueStringFullPrecision(void) const
{
return _variantToString(rawValue(), 18);
}
QString Fact::rawValueString(void) const
{
return _variantToString(rawValue());
return _variantToString(rawValue(), decimalPlaces());
}
QString Fact::cookedValueString(void) const
{
return _variantToString(cookedValue());
return _variantToString(cookedValue(), decimalPlaces());
}
QVariant Fact::rawDefaultValue(void) const
......@@ -320,7 +326,7 @@ QVariant Fact::cookedDefaultValue(void) const
QString Fact::cookedDefaultValueString(void) const
{
return _variantToString(cookedDefaultValue());
return _variantToString(cookedDefaultValue(), decimalPlaces());
}
FactMetaData::ValueType_t Fact::type(void) const
......@@ -390,7 +396,7 @@ QVariant Fact::cookedMin(void) const
QString Fact::cookedMinString(void) const
{
return _variantToString(cookedMin());
return _variantToString(cookedMin(), decimalPlaces());
}
QVariant Fact::rawMax(void) const
......@@ -415,7 +421,7 @@ QVariant Fact::cookedMax(void) const
QString Fact::cookedMaxString(void) const
{
return _variantToString(cookedMax());
return _variantToString(cookedMax(), decimalPlaces());
}
bool Fact::minIsDefaultForType(void) const
......
......@@ -116,6 +116,9 @@ public:
QString enumOrValueString (void); // This is not const, since an unknown value can modify the enum lists
double increment (void) const;
/// Returns the values as a string with full 18 digit precision if float/double.
QString rawValueStringFullPrecision(void) const;
void setRawValue (const QVariant& value);
void setCookedValue (const QVariant& value);
void setEnumIndex (int index);
......@@ -165,7 +168,7 @@ signals:
void _containerRawValueChanged(const QVariant& value);
protected:
QString _variantToString(const QVariant& variant) const;
QString _variantToString(const QVariant& variant, int decimalPlaces) const;
void _sendValueChangedSignal(QVariant value);
QString _name;
......
......@@ -735,9 +735,11 @@ void ParameterLoader::writeParametersToStream(QTextStream &stream)
foreach (int componentId, _mapParameterName2Variant.keys()) {
foreach (const QString &paramName, _mapParameterName2Variant[componentId].keys()) {
Fact* fact = _mapParameterName2Variant[componentId][paramName].value<Fact*>();
Q_ASSERT(fact);
stream << _vehicle->id() << "\t" << componentId << "\t" << paramName << "\t" << fact->rawValueString() << "\t" << QString("%1").arg(_factTypeToMavType(fact->type())) << "\n";
if (fact) {
stream << _vehicle->id() << "\t" << componentId << "\t" << paramName << "\t" << fact->rawValueStringFullPrecision() << "\t" << QString("%1").arg(_factTypeToMavType(fact->type())) << "\n";
} else {
qWarning() << "Internal error: missing fact";
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment