From 399c44a133b8a2a409e30c271be74c93c42d992b Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 10 Apr 2006 10:49:36 +0000 Subject: Merge from Subversion: * qt/qt-dbus.qdocconf: Update Trolltech's webpage link to something that exists (r526315) * qt/qdbusinternalfilters.cpp: Correctly detect non-scriptable slots/signals (r526316) * qt/qdbusinternalfilters.cpp: Fix the setProperty call and also return an unknown-method error if the parameters don't match for org.freedesktop.DBus.Properties. (r526842) * qt/examples/dbus.cpp: Allow passing of QVariants (r526843) * qt/qdbusintegrator.cpp: Restore the proper order of delivery: don't make method returns be delivered on priority (r528150) --- qt/examples/dbus.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'qt/examples') diff --git a/qt/examples/dbus.cpp b/qt/examples/dbus.cpp index e011381b..00172c62 100644 --- a/qt/examples/dbus.cpp +++ b/qt/examples/dbus.cpp @@ -213,11 +213,13 @@ void placeCall(const QString &service, const QString &path, const QString &inter QVariantList params; for (int i = 0; argc && i < types.count(); ++i) { int id = QVariant::nameToType(types.at(i)); - if (id == QVariant::UserType || id == QVariant::Map) { + if ((id == QVariant::UserType || id == QVariant::Map) && types.at(i) != "QVariant") { fprintf(stderr, "Sorry, can't pass arg of type %s yet\n", types.at(i).constData()); exit(1); } + if (id == QVariant::UserType) + id = QMetaType::type(types.at(i)); Q_ASSERT(id); @@ -227,7 +229,13 @@ void placeCall(const QString &service, const QString &path, const QString &inter else p = QString::fromLocal8Bit(argv[0]); - p.convert( QVariant::Type(id) ); + if (id < QVariant::UserType) + // avoid calling it for QVariant + p.convert( QVariant::Type(id) ); + else if (types.at(i) == "QVariant") { + QVariant tmp(id, p.constData()); + p = tmp; + } params += p; --argc; ++argv; -- cgit