diff options
author | Renato Araujo Oliveira Filho <renato.filho@canonical.com> | 2012-09-12 14:47:26 -0300 |
---|---|---|
committer | Renato Araujo Oliveira Filho <renato.filho@canonical.com> | 2012-09-12 14:47:26 -0300 |
commit | a3aa532c698c5eab037b17870275d8e27e77a498 (patch) | |
tree | 01e918b9adc2557a0e67f05221e2c36f4e65ee29 /src/common/converter.cpp | |
parent | 638bcc947afe2b941d934fc3f87513f0c8565f7f (diff) | |
download | qmenumodel-a3aa532c698c5eab037b17870275d8e27e77a498.tar.gz qmenumodel-a3aa532c698c5eab037b17870275d8e27e77a498.tar.bz2 qmenumodel-a3aa532c698c5eab037b17870275d8e27e77a498.zip |
Added QML documentation.
Diffstat (limited to 'src/common/converter.cpp')
-rw-r--r-- | src/common/converter.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/common/converter.cpp b/src/common/converter.cpp new file mode 100644 index 0000000..a8ccb0f --- /dev/null +++ b/src/common/converter.cpp @@ -0,0 +1,61 @@ +#include "converter.h" + +#include <QDebug> + +/*! \internal */ +QVariant Converter::parseGVariant(GVariant *value) +{ + QVariant result; + if (value == NULL) { + return result; + } + + const GVariantType *type = g_variant_get_type(value); + if (g_variant_type_equal(type, G_VARIANT_TYPE_BOOLEAN)) { + result.setValue((bool)g_variant_get_boolean(value)); + } else if (g_variant_type_equal(type, G_VARIANT_TYPE_BYTE)) { + result.setValue(g_variant_get_byte(value)); + } else if (g_variant_type_equal(type, G_VARIANT_TYPE_INT16)) { + result.setValue(g_variant_get_int16(value)); + } else if (g_variant_type_equal(type, G_VARIANT_TYPE_UINT16)) { + result.setValue(g_variant_get_uint16(value)); + } else if (g_variant_type_equal(type, G_VARIANT_TYPE_INT32)) { + result.setValue(g_variant_get_int32(value)); + } else if (g_variant_type_equal(type, G_VARIANT_TYPE_UINT32)) { + result.setValue(g_variant_get_uint32(value)); + } else if (g_variant_type_equal(type, G_VARIANT_TYPE_INT64)) { + result.setValue(g_variant_get_int64(value)); + } else if (g_variant_type_equal(type, G_VARIANT_TYPE_UINT64)) { + result.setValue(g_variant_get_uint64(value)); + } else if (g_variant_type_equal(type, G_VARIANT_TYPE_DOUBLE)) { + result.setValue(g_variant_get_double(value)); + } else if (g_variant_type_equal(type, G_VARIANT_TYPE_STRING)) { + gsize size = 0; + const gchar *v = g_variant_get_string(value, &size); + result.setValue(QString::fromLatin1(v, size)); + } else { + qWarning() << "Unsupported GVariant value"; + } + + /* TODO: implement convertions to others types + * G_VARIANT_TYPE_HANDLE + * G_VARIANT_TYPE_OBJECT_PATH + * G_VARIANT_TYPE_SIGNATURE + * G_VARIANT_TYPE_VARIANT + * G_VARIANT_TYPE_ANY + * G_VARIANT_TYPE_BASIC + * G_VARIANT_TYPE_MAYBE + * G_VARIANT_TYPE_ARRAY + * G_VARIANT_TYPE_TUPLE + * G_VARIANT_TYPE_UNIT + * G_VARIANT_TYPE_DICT_ENTRY + * G_VARIANT_TYPE_DICTIONARY + * G_VARIANT_TYPE_STRING_ARRAY + * G_VARIANT_TYPE_BYTESTRING + * G_VARIANT_TYPE_OBJECT_PATH_ARRAY + * G_VARIANT_TYPE_BYTESTRING_ARRAY + * G_VARIANT_TYPE_VARDICT + */ + + return result; +} |