~ps-jenkins/dee-qt/latestsnapshot-3.2+13.10.20130726-0ubuntu1

« back to all changes in this revision

Viewing changes to deelistmodel.cpp

  • Committer: Tarmac
  • Author(s): Pawel Stolowski
  • Date: 2013-06-24 09:01:51 UTC
  • mfrom: (74.1.3 handle-asv)
  • Revision ID: tarmac-20130624090151-tr637a2yrzlzl99c
Handle arrays of dict entries (a{sv}) in the GVariant -> QVariant conversion method.

Approved by Michal Hruby, PS Jenkins bot.

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
static QVariant
29
29
QVariantFromGVariant(GVariant *value)
30
30
{
 
31
    /* We need to special-case a{sv} here as G_VARIANT_CLASS_ARRAY handles simple arrays;
 
32
       we need to create QVariantHash, not a list */
 
33
    if (g_variant_is_of_type(value, G_VARIANT_TYPE_VARDICT)) {
 
34
        const gsize nChildren = g_variant_n_children(value);
 
35
        QVariantHash hash;
 
36
        for (gsize i = 0; i < nChildren; ++i)
 
37
        {
 
38
            GVariant* dict_entry = g_variant_get_child_value(value, i);
 
39
 
 
40
            gchar* dict_key;
 
41
            GVariant *dict_var;
 
42
            g_variant_get(dict_entry, "{&sv}", &dict_key, &dict_var);
 
43
            hash.insert(QString::fromUtf8(dict_key), QVariantFromGVariant(dict_var));
 
44
            g_variant_unref(dict_var);
 
45
            g_variant_unref(dict_entry);
 
46
        }
 
47
        return hash;
 
48
    }
 
49
 
31
50
    switch (g_variant_classify(value)) {
32
51
        case G_VARIANT_CLASS_BOOLEAN:
33
52
            return QVariant((bool) g_variant_get_boolean(value));