21 if (variant.canConvert<QDBusArgument>()) {
22 const QDBusArgument argument = variant.value<QDBusArgument>();
23 switch (argument.currentType()) {
24 case QDBusArgument::BasicType:
26 case QDBusArgument::VariantType:
27 return dbusToVariant(argument.asVariant().value<QDBusVariant>().variant());
28 case QDBusArgument::ArrayType: {
30 argument.beginArray();
31 while (!argument.atEnd()) {
32 const QVariant value = argument.asVariant();
38 case QDBusArgument::StructureType: {
39 QVariantList structure;
40 argument.beginStructure();
41 while (!argument.atEnd()) {
42 const QVariant value = argument.asVariant();
45 argument.endStructure();
48 case QDBusArgument::MapType: {
51 while (!argument.atEnd()) {
52 argument.beginMapEntry();
53 const QVariant key = argument.asVariant();
54 const QVariant value = argument.asVariant();
55 argument.endMapEntry();
62 qCWarning(KWIN_SCRIPTING) <<
"Couldn't unwrap QDBusArgument of type" << argument.currentType();
65 }
else if (variant.canConvert<QDBusObjectPath>()) {
66 return variant.value<QDBusObjectPath>().path();
67 }
else if (variant.canConvert<QDBusSignature>()) {
68 return variant.value<QDBusSignature>().signature();
69 }
else if (variant.canConvert<QDBusVariant>()) {
70 return dbusToVariant(variant.value<QDBusVariant>().variant());