From 03580b9cdc9c1b7cc3f85160226d5ac88609926f Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 26 Apr 2014 15:15:18 +0200 Subject: [PATCH] refs #212, fixed parsing for PQs * trimmed strings * renamed to parseToVariant methods avos ambiguity with template method --- src/blackmisc/pqstring.cpp | 9 ++++++--- src/blackmisc/pqstring.h | 13 +++++++------ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/blackmisc/pqstring.cpp b/src/blackmisc/pqstring.cpp index b8b59133f..fbd1236ea 100644 --- a/src/blackmisc/pqstring.cpp +++ b/src/blackmisc/pqstring.cpp @@ -90,14 +90,17 @@ namespace BlackMisc qDBusRegisterMetaType(); } - 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); diff --git a/src/blackmisc/pqstring.h b/src/blackmisc/pqstring.h index 715692e4b..fa08de636 100644 --- a/src/blackmisc/pqstring.h +++ b/src/blackmisc/pqstring.h @@ -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 static const PQ parse(const QString &symbol) + //! Parse into concrete type + template 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()) { return qv.value();