--- /dev/null
+/**
+ * @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);
+ }
+}