From 32d6a193150b17fbbde109348ad5a8107bba5529 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Enar=20V=C3=A4ikene?= Date: Thu, 6 Oct 2011 14:02:01 +0300 Subject: [PATCH] Better handling of boolean types. Added support for ASCII codes for character types. --- src/libs/Common/util.cpp | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/src/libs/Common/util.cpp b/src/libs/Common/util.cpp index ccabdab..eeedb61 100644 --- a/src/libs/Common/util.cpp +++ b/src/libs/Common/util.cpp @@ -19,6 +19,7 @@ #include "util.h" +#include //------------------------------------------------------------------- @@ -58,21 +59,38 @@ QVariant eVaf::Common::toVariant(QString const & value, QVariant const & default break; } case QVariant::Bool: { - bool ok; - uint v = value.toUInt(&ok, 0); if (eVaf::Common::isTrue(value)) return QVariant(true); else if (eVaf::Common::isFalse(value)) return QVariant(false); - else - return QVariant(v); + else { + bool ok; + uint v = value.toUInt(&ok, 0); + if (ok) + return QVariant(v); + else + return defaultValue; + } break; } case QVariant::Char: { - if (value.size() > 0) - return QVariant(value.at(0)); - else - return defaultValue; + if (value.size() > 0) { + if (value.startsWith("\\0x")) { + bool ok; + char c = value.mid(1).toUInt(&ok, 16); + if (ok) + return QVariant(c); + } + else if (value.startsWith("\\0")) { + bool ok; + char c = value.mid(1).toUInt(&ok, 8); + if (ok) + return QVariant(c); + } + else + return QVariant(value.at(0)); + } + return defaultValue; break; } default: -- 2.45.0