mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-28 20:25:34 +08:00
refs #247 Using CVariant in physical quantities.
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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>();
|
||||||
|
|||||||
Reference in New Issue
Block a user