Base: Units: return std::string

This commit is contained in:
Ladislav Michl
2024-07-12 20:51:54 +02:00
committed by Yorik van Havre
parent 6b6e1fbd26
commit 0907c7bfda
24 changed files with 181 additions and 174 deletions

View File

@@ -22,12 +22,14 @@
#include "PreCompiled.h"
#ifdef __GNUC__
#include <unistd.h>
#endif
#include <iostream>
#include <iomanip>
#include <locale>
#include <memory>
#include <CXX/WrapPython.h>
#include <memory>
#include <fmt/format.h>
#include <QString>
#include "Exception.h"
@@ -139,23 +141,33 @@ void UnitsApi::setSchema(UnitSystem system)
// Quantity (e.g. mi=1.8km rather then 1.6km).
}
QString UnitsApi::toString(const Base::Quantity& quantity, const QuantityFormat& format)
std::string UnitsApi::toString(const Base::Quantity& quantity, const QuantityFormat& format)
{
QString value = QString::fromLatin1("'%1 %2'")
.arg(quantity.getValue(), 0, format.toFormat(), format.precision)
.arg(quantity.getUnit().getString());
return value;
return fmt::format("'{} {}'", toNumber(quantity, format), quantity.getUnit().getString());
}
QString UnitsApi::toNumber(const Base::Quantity& quantity, const QuantityFormat& format)
std::string UnitsApi::toNumber(const Base::Quantity& quantity, const QuantityFormat& format)
{
return toNumber(quantity.getValue(), format);
}
QString UnitsApi::toNumber(double value, const QuantityFormat& format)
std::string UnitsApi::toNumber(double value, const QuantityFormat& format)
{
QString number = QString::fromLatin1("%1").arg(value, 0, format.toFormat(), format.precision);
return number;
std::stringstream ss;
switch (format.format) {
case QuantityFormat::Fixed:
ss << std::fixed;
break;
case QuantityFormat::Scientific:
ss << std::scientific;
break;
default:
break;
}
ss << std::setprecision(format.precision) << value;
return ss.str();
}
// return true if the current user schema uses multiple units for length (ex. Ft/In)