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();