refs #247 Using CVariant in physical quantities.

This commit is contained in:
Mathew Sutcliffe
2014-12-07 16:09:37 +00:00
parent 48f04a4750
commit 7db0587254
2 changed files with 14 additions and 14 deletions

View File

@@ -26,10 +26,10 @@ namespace BlackMisc
/* /*
* Parse * Parse
*/ */
QVariant CPqString::parseToVariant(const QString &value, SeparatorMode mode) CVariant CPqString::parseToVariant(const QString &value, SeparatorMode mode)
{ {
static QRegExp rx("([-+]?[0-9]*[\\.,]?[0-9]+)\\s*(\\D*)$"); static QRegExp rx("([-+]?[0-9]*[\\.,]?[0-9]+)\\s*(\\D*)$");
QVariant v; CVariant v;
// fine tuning of the string // fine tuning of the string
QString vs = value.trimmed().simplified(); QString vs = value.trimmed().simplified();
@@ -50,55 +50,55 @@ namespace BlackMisc
if (CMeasurementUnit::isValidUnitSymbol<CAccelerationUnit>(unit)) if (CMeasurementUnit::isValidUnitSymbol<CAccelerationUnit>(unit))
{ {
CAcceleration pq(numberD, CMeasurementUnit::unitFromSymbol<CAccelerationUnit>(unit, false)); CAcceleration pq(numberD, CMeasurementUnit::unitFromSymbol<CAccelerationUnit>(unit, false));
return pq.toQVariant(); return pq.toCVariant();
} }
if (CMeasurementUnit::isValidUnitSymbol<CAngleUnit>(unit)) if (CMeasurementUnit::isValidUnitSymbol<CAngleUnit>(unit))
{ {
CAngle pq(numberD, CMeasurementUnit::unitFromSymbol<CAngleUnit>(unit, false)); CAngle pq(numberD, CMeasurementUnit::unitFromSymbol<CAngleUnit>(unit, false));
return pq.toQVariant(); return pq.toCVariant();
} }
if (CMeasurementUnit::isValidUnitSymbol<CFrequencyUnit>(unit)) if (CMeasurementUnit::isValidUnitSymbol<CFrequencyUnit>(unit))
{ {
CFrequency pq(numberD, CMeasurementUnit::unitFromSymbol<CFrequencyUnit>(unit, false)); CFrequency pq(numberD, CMeasurementUnit::unitFromSymbol<CFrequencyUnit>(unit, false));
return pq.toQVariant(); return pq.toCVariant();
} }
if (CMeasurementUnit::isValidUnitSymbol<CLengthUnit>(unit)) if (CMeasurementUnit::isValidUnitSymbol<CLengthUnit>(unit))
{ {
CLength pq(numberD, CMeasurementUnit::unitFromSymbol<CLengthUnit>(unit, false)); CLength pq(numberD, CMeasurementUnit::unitFromSymbol<CLengthUnit>(unit, false));
return pq.toQVariant(); return pq.toCVariant();
} }
if (CMeasurementUnit::isValidUnitSymbol<CMassUnit>(unit)) if (CMeasurementUnit::isValidUnitSymbol<CMassUnit>(unit))
{ {
CMass pq(numberD, CMeasurementUnit::unitFromSymbol<CMassUnit>(unit, false)); CMass pq(numberD, CMeasurementUnit::unitFromSymbol<CMassUnit>(unit, false));
return pq.toQVariant(); return pq.toCVariant();
} }
if (CMeasurementUnit::isValidUnitSymbol<CPressureUnit>(unit)) if (CMeasurementUnit::isValidUnitSymbol<CPressureUnit>(unit))
{ {
CPressure pq(numberD, CMeasurementUnit::unitFromSymbol<CPressureUnit>(unit, false)); CPressure pq(numberD, CMeasurementUnit::unitFromSymbol<CPressureUnit>(unit, false));
return pq.toQVariant(); return pq.toCVariant();
} }
if (CMeasurementUnit::isValidUnitSymbol<CSpeedUnit>(unit)) if (CMeasurementUnit::isValidUnitSymbol<CSpeedUnit>(unit))
{ {
CSpeed pq(numberD, CMeasurementUnit::unitFromSymbol<CSpeedUnit>(unit, false)); CSpeed pq(numberD, CMeasurementUnit::unitFromSymbol<CSpeedUnit>(unit, false));
return pq.toQVariant(); return pq.toCVariant();
} }
if (CMeasurementUnit::isValidUnitSymbol<CTimeUnit>(unit)) if (CMeasurementUnit::isValidUnitSymbol<CTimeUnit>(unit))
{ {
CTime pq(numberD, CMeasurementUnit::unitFromSymbol<CTimeUnit>(unit, false)); CTime pq(numberD, CMeasurementUnit::unitFromSymbol<CTimeUnit>(unit, false));
return pq.toQVariant(); return pq.toCVariant();
} }
if (CMeasurementUnit::isValidUnitSymbol<CTemperatureUnit>(unit)) if (CMeasurementUnit::isValidUnitSymbol<CTemperatureUnit>(unit))
{ {
CTemperature pq(numberD, CMeasurementUnit::unitFromSymbol<CTemperatureUnit>(unit, false)); CTemperature pq(numberD, CMeasurementUnit::unitFromSymbol<CTemperatureUnit>(unit, false));
return pq.toQVariant(); return pq.toCVariant();
} }
return v; return v;
} }

View File

@@ -14,7 +14,7 @@
#include "blackmisc/valueobject.h" #include "blackmisc/valueobject.h"
#include "blackmisc/blackmiscfreefunctions.h" #include "blackmisc/blackmiscfreefunctions.h"
#include <QVariant> #include "blackmisc/variant.h"
namespace BlackMisc namespace BlackMisc
{ {
@@ -55,7 +55,7 @@ namespace BlackMisc
CPqString(const QString &value) : m_string(value) {} CPqString(const QString &value) : m_string(value) {}
//! Parse a string value like "100m", "10.3Mhz" //! Parse a string value like "100m", "10.3Mhz"
static QVariant parseToVariant(const QString &value, SeparatorMode mode = SeparatorsCLocale); static CVariant parseToVariant(const QString &value, SeparatorMode mode = SeparatorsCLocale);
//! Parse into concrete type //! Parse into concrete type
template <class PQ> static PQ parse(const QString &value, SeparatorMode mode = SeparatorsCLocale) template <class PQ> static PQ parse(const QString &value, SeparatorMode mode = SeparatorsCLocale)
@@ -63,7 +63,7 @@ namespace BlackMisc
PQ invalid; PQ invalid;
invalid.setNull(); invalid.setNull();
if (value.isEmpty()) return invalid; if (value.isEmpty()) return invalid;
QVariant qv = parseToVariant(value, mode); CVariant qv = parseToVariant(value, mode);
if (!qv.isNull() && qv.canConvert<PQ>()) if (!qv.isNull() && qv.canConvert<PQ>())
{ {
return qv.value<PQ>(); return qv.value<PQ>();