/** * @file Common/util.cpp * @brief Global utility functions for eVaf * @author Enar Vaikene * * Copyright (c) 2011 Enar Vaikene * * This file is part of the eVaf C++ cross-platform application development framework. * * This file can be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * the following information to ensure the GNU General Public License version * 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * Alternatively, this file may be used in accordance with the Commercial License * Agreement provided with the Software. */ #include "util.h" //------------------------------------------------------------------- QVariant eVaf::Common::toVariant(QString const & value, QVariant const & defaultValue) { // If the default value is not valid, return the string value without conversions if (!defaultValue.isValid()) return QVariant(value); // Convert to the expected type switch (defaultValue.type()) { case QVariant::UInt: { bool ok; uint v = value.toUInt(&ok, 0); if (ok) return QVariant(v); else return defaultValue; break; } case QVariant::Int: { bool ok; int v = value.toInt(&ok, 0); if (ok) return QVariant(v); else return defaultValue; break; } case QVariant::Double: { bool ok; double v = value.toDouble(&ok); if (ok) return QVariant(v); else return defaultValue; 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); break; } case QVariant::Char: { if (value.size() > 0) return QVariant(value.at(0)); else return defaultValue; break; } default: return QVariant(value); } }