From c37748989142ae4f9ee1e1cab4cbcff605302970 Mon Sep 17 00:00:00 2001 From: Renato Araujo Oliveira Filho Date: Thu, 22 Nov 2012 17:39:25 -0300 Subject: Implemented support to tuple conversions. --- libqmenumodel/src/converter.cpp | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'libqmenumodel/src') diff --git a/libqmenumodel/src/converter.cpp b/libqmenumodel/src/converter.cpp index 75733ce..5f5b4d2 100644 --- a/libqmenumodel/src/converter.cpp +++ b/libqmenumodel/src/converter.cpp @@ -51,8 +51,21 @@ QVariant Converter::toQVariant(GVariant *value) } result.setValue(qmap); + } else if (g_variant_type_is_tuple(type)) { + gsize size = g_variant_n_children(value); + QVariantList vlist; + + for(gsize i=0; i < size; i++) { + GVariant *v = g_variant_get_child_value(value, i); + if (v) { + vlist << toQVariant(v); + } + g_variant_unref(v); + } + + result.setValue(vlist); } else { - qWarning() << "Unsupported GVariant value"; + qWarning() << "Unsupported GVariant value" << (char*) type; } /* TODO: implement convertions to others types @@ -64,7 +77,6 @@ QVariant Converter::toQVariant(GVariant *value) * 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 @@ -72,7 +84,6 @@ QVariant Converter::toQVariant(GVariant *value) * G_VARIANT_TYPE_BYTESTRING * G_VARIANT_TYPE_OBJECT_PATH_ARRAY * G_VARIANT_TYPE_BYTESTRING_ARRAY - * G_VARIANT_TYPE_VARDICT */ return result; @@ -137,6 +148,17 @@ GVariant* Converter::toGVariant(const QVariant &value) g_variant_builder_unref(b); break; } + case QVariant::List: + { + QVariantList lst = value.toList(); + GVariant **vars = g_new(GVariant*, lst.size()); + for(int i=0; i < lst.size(); i++) { + vars[i] = toGVariant(lst[i]); + } + result = g_variant_new_tuple(vars, lst.size()); + g_free(vars); + break; + } default: result = ::toGVariant(value.typeName(), value); } -- cgit v1.2.3 From 193ddd3e44624a624cff1ecbe6c7a7e7a27decae Mon Sep 17 00:00:00 2001 From: Renato Araujo Oliveira Filho Date: Thu, 22 Nov 2012 17:48:25 -0300 Subject: Only unref variant if its is valid. --- libqmenumodel/src/converter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libqmenumodel/src') diff --git a/libqmenumodel/src/converter.cpp b/libqmenumodel/src/converter.cpp index 5f5b4d2..39379c7 100644 --- a/libqmenumodel/src/converter.cpp +++ b/libqmenumodel/src/converter.cpp @@ -59,8 +59,8 @@ QVariant Converter::toQVariant(GVariant *value) GVariant *v = g_variant_get_child_value(value, i); if (v) { vlist << toQVariant(v); + g_variant_unref(v); } - g_variant_unref(v); } result.setValue(vlist); -- cgit v1.2.3 From 2b54bfb285ab5b2571808bfc9233da4847b27017 Mon Sep 17 00:00:00 2001 From: Renato Araujo Oliveira Filho Date: Fri, 23 Nov 2012 08:50:51 -0300 Subject: Fixed code style. --- libqmenumodel/src/converter.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libqmenumodel/src') diff --git a/libqmenumodel/src/converter.cpp b/libqmenumodel/src/converter.cpp index 39379c7..6c2411c 100644 --- a/libqmenumodel/src/converter.cpp +++ b/libqmenumodel/src/converter.cpp @@ -55,7 +55,7 @@ QVariant Converter::toQVariant(GVariant *value) gsize size = g_variant_n_children(value); QVariantList vlist; - for(gsize i=0; i < size; i++) { + for (gsize i=0; i < size; i++) { GVariant *v = g_variant_get_child_value(value, i); if (v) { vlist << toQVariant(v); @@ -152,7 +152,7 @@ GVariant* Converter::toGVariant(const QVariant &value) { QVariantList lst = value.toList(); GVariant **vars = g_new(GVariant*, lst.size()); - for(int i=0; i < lst.size(); i++) { + for (int i=0; i < lst.size(); i++) { vars[i] = toGVariant(lst[i]); } result = g_variant_new_tuple(vars, lst.size()); -- cgit v1.2.3