mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-18 03:15:34 +08:00
refs #212, fixed parsing for PQs
* trimmed strings * renamed to parseToVariant methods avos ambiguity with template method
This commit is contained in:
@@ -90,14 +90,17 @@ namespace BlackMisc
|
||||
qDBusRegisterMetaType<CPqString>();
|
||||
}
|
||||
|
||||
QVariant CPqString::parse(const QString &value)
|
||||
/*
|
||||
* Parse
|
||||
*/
|
||||
QVariant CPqString::parseToVariant(const QString &value)
|
||||
{
|
||||
QVariant v;
|
||||
if (value.isEmpty()) return v;
|
||||
QRegExp rx("^([-+]?[0-9]*\\.?[0-9]+)\\s*(\\D*)$");
|
||||
if (rx.indexIn(value) < 0) return v;
|
||||
QString number = rx.cap(1);
|
||||
QString unit = rx.cap(2);
|
||||
QString number = rx.cap(1).trimmed();
|
||||
QString unit = rx.cap(2).trimmed();
|
||||
if (unit.isEmpty() || number.isEmpty()) return v;
|
||||
bool success;
|
||||
double numberD = number.toDouble(&success);
|
||||
|
||||
@@ -74,15 +74,16 @@ namespace BlackMisc
|
||||
//! \brief Register metadata
|
||||
static void registerMetadata();
|
||||
|
||||
//! \brief parse a string value like "100m", "10.3Mhz"
|
||||
static QVariant parse(const QString &value);
|
||||
//! Parse a string value like "100m", "10.3Mhz"
|
||||
static QVariant parseToVariant(const QString &value);
|
||||
|
||||
//! \brief parse into concrete type
|
||||
template <class PQ> static const PQ parse(const QString &symbol)
|
||||
//! Parse into concrete type
|
||||
template <class PQ> static PQ parse(const QString &value)
|
||||
{
|
||||
PQ invalid;
|
||||
if (symbol.isEmpty()) return invalid;
|
||||
QVariant qv = CPqString::parse(symbol);
|
||||
invalid.setNull();
|
||||
if (value.isEmpty()) return invalid;
|
||||
QVariant qv = CPqString::parseToVariant(value);
|
||||
if (!qv.isNull() && qv.canConvert<PQ>())
|
||||
{
|
||||
return qv.value<PQ>();
|
||||
|
||||
Reference in New Issue
Block a user