typedef QMap<QString, QVariant> KeyVarPair; typedef QList<KeyVarPair> KeyVarPairList; Q_DECLARE_METATYPE(KeyVarPair) Q_DECLARE_METATYPE(KeyVarPairList)
qDBusRegisterMetaType<KeyVarPair>(); qDBusRegisterMetaType<KeyVarPairList>();
bool MyClass::telepathySendDBusMessage(QString _receiver, QString _account, QString _content) { QString dbus_service = "org.freedesktop.Telepathy.ChannelDispatcher"; QString dbus_path = "/org/freedesktop/Telepathy/ChannelDispatcher"; QString dbus_interface = "org.freedesktop.Telepathy.ChannelDispatcher.Interface.Messages.DRAFT"; QDBusMessage m = QDBusMessage::createMethodCall( dbus_service, dbus_path, dbus_interface, "SendMessage"); QList<QVariant> args; // Path and targetID QDBusObjectPath path(_account); QString targetID = _receiver; args << qVariantFromValue(path); args << targetID; // Message Parts KeyVarPair message1; int type = 0; message1["message-type"] = qVariantFromValue(type); KeyVarPair message2; message2["content"] = qVariantFromValue(_content); message2["content-type"] = qVariantFromValue(QString("text/plain")); KeyVarPairList messageData; messageData << message1; messageData << message2; args << qVariantFromValue(messageData); // Flags uint flags = 0; args << flags; m.setArguments(args); QDBusMessage retVal = QDBusConnection::sessionBus().call(m); return true; }
myClassObj->telepathySendDBusMessage( "to.jabber.account@jabber.server.tld", "/org/freedesktop/Telepathy/Account/gabble/jabber/ACCOUNT_NAME", "It works!");