Reply
Thread Tools
Posts: 11 | Thanked: 0 times | Joined on Nov 2011
#1
wtf?

Description:
Code:
<method name="get_cookies_by_attributes">
      <arg name="words" type="a{ss}" direction="in"/>
      <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="Q_Map_String_String"/>
      <arg name="res" type="au" direction="out"/>
      <annotation name="com.trolltech.QtDBus.QtTypeName.Out1" value="Q_List_uint"/>
</method>
It's work:
Code:
$ dbus-send --system --type=method_call --print-reply --dest=com.nokia.time /com/nokia/time com.nokia.time.get_cookies_by_attributes dict:string:string:
It's not work:
Code:
QMap<QString,QString> args;
QDBusInterface iface("com.nokia.time", "/com/nokia/time", "com.nokia.time", QDBusConnection::systemBus());
QDBusMessage reply=iface.call("get_cookies_by_attributes", args);
Error:
Code:
error: no matching function for call to 'QDBusInterface::call(const char [26], QMap<QString, QString>&)'
wtf?
 
pH5's Avatar
Posts: 138 | Thanked: 375 times | Joined on Aug 2009 @ Berlin
#2
Try using a QVariantMap (QMap<QString,QVariant>) filled with strings.
QBusInterface::call() expects a QVariant there, but QVariant has no QVariant(QMap<QString,QString>) constructor.
 
Posts: 11 | Thanked: 0 times | Joined on Nov 2011
#3
Code:
QDBusMessage(type=Error, service="", error name="org.freedesktop.DBus.Error.UnknownMethod", error message="No such method 'get_cookies_by_attributes' in interface 'com.nokia.time' at object path '/com/nokia/time' (signature 'a{sv}')", signature="", contents=([]) )
 
pH5's Avatar
Posts: 138 | Thanked: 375 times | Joined on Aug 2009 @ Berlin
#4
Hm, right. QDBusArgument's operator<< can take any QMap, so this should create the correct a{ss} signature:
Code:
QMap<QString,QString> map;
QDBusArgument args; args << map;
QDBusInterface iface("com.nokia.time", "/com/nokia/time", "com.nokia.time", QDBusConnection::systemBus());
QDBusMessage reply=iface.call("get_cookies_by_attributes", args);
 
Posts: 11 | Thanked: 0 times | Joined on Nov 2011
#5
All the same (
Code:
error: no matching function for call to 'QDBusInterface::call(const char [26], QDBusArgument&)'
 
pH5's Avatar
Posts: 138 | Thanked: 375 times | Joined on Aug 2009 @ Berlin
#6
Sorry, use args.asVariant() in the QDBusInterface::call().
 
Posts: 11 | Thanked: 0 times | Joined on Nov 2011
#7
pH5, thx for the help.

This code has nonerror compilation:
Code:
QMap<QString,QString> map; map.insert("","");
    QDBusArgument args; args << map;
    QDBusInterface iface("com.nokia.time", "/com/nokia/time", "com.nokia.time", QDBusConnection::systemBus());
    QDBusMessage reply=iface.call("get_cookies_by_attributes", args.asVariant());
And runtime not set arguments:
Code:
QDBusArgument: read from a write-only object
QDBusMessage(type=Error, service="", error name="org.freedesktop.DBus.Error.UnknownMethod", error message="No such method 'get_cookies_by_attributes' in interface 'com.nokia.time' at object path '/com/nokia/time' (signature '')", signature="", contents=([]) )
?
 
Reply


 
Forum Jump


All times are GMT. The time now is 00:14.