diff --git a/src/dbus/qdbusargument.h b/src/dbus/qdbusargument.h index b4e46eb1c6..85469fbc3d 100644 --- a/src/dbus/qdbusargument.h +++ b/src/dbus/qdbusargument.h @@ -261,6 +261,35 @@ inline const QDBusArgument &operator>>(const QDBusArgument &arg, Container &l return arg; } +// QList specializations +template +inline QDBusArgument &operator<<(QDBusArgument &arg, const QList &list) +{ + int id = qMetaTypeId(); + arg.beginArray(id); + typename QList::ConstIterator it = list.constBegin(); + typename QList::ConstIterator end = list.constEnd(); + for ( ; it != end; ++it) + arg << *it; + arg.endArray(); + return arg; +} + +template +inline const QDBusArgument &operator>>(const QDBusArgument &arg, QList &list) +{ + arg.beginArray(); + list.clear(); + while (!arg.atEnd()) { + T item; + arg >> item; + list.push_back(item); + } + arg.endArray(); + + return arg; +} + inline QDBusArgument &operator<<(QDBusArgument &arg, const QVariantList &list) { int id = qMetaTypeId(); @@ -273,6 +302,7 @@ inline QDBusArgument &operator<<(QDBusArgument &arg, const QVariantList &list) return arg; } +// QMap specializations template inline QDBusArgument &operator<<(QDBusArgument &arg, const QMap &map) { @@ -321,6 +351,7 @@ inline QDBusArgument &operator<<(QDBusArgument &arg, const QVariantMap &map) return arg; } +// QHash specializations template inline QDBusArgument &operator<<(QDBusArgument &arg, const QHash &map) {