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());