Hello,<br><br>I want use QDBus invoke some function of Telepathy-sofiasip, the code as below:<br><br>[CODE]<br><div id=":5x" class="ii gt">#include <QApplication><br>
#include <QFont><br>
#include <QPushButton><br>
#include <QtCore/QDebug><br>
#include <QtDBus><br>
<br>
const QString CONNECTION_MANAGER_SERVICE_NAME = "org.freedesktop.Telepathy.ConnectionManager.";<br>
const QString CONNECTION_MANAGER_PATH_NAME = "/org/freedesktop/Telepathy/ConnectionManager/";<br>
const QString CONNECTION_MANAGER_INTERFACE_NAME = "org.freedesktop.Telepathy.ConnectionManager";<br>
<br>
class ParameterDefinition<br>
{<br>
public:<br>
QString name;<br>
uint flags;<br>
QString signature;<br>
QDBusVariant defaultValue;<br>
};<br>
typedef QList<ParameterDefinition> ParameterDefinitionList;<br>Q_DECLARE_METATYPE(ParameterDefinition)<br>
Q_DECLARE_METATYPE(ParameterDefinitionList)<br>
<br>
void dbus_init()<br>
{<br>
qDebug() << "dbus init in";<br>
<br>
QDBusConnection bus = QDBusConnection::sessionBus();<br>
if( !bus.isConnected() )<br>
{<br>
qDebug() << "no connection";<br>
return;<br>
}<br>
<br>
QDBusInterface dbus_iface( CONNECTION_MANAGER_SERVICE_NAME + "sofiasip",<br>
CONNECTION_MANAGER_PATH_NAME + "sofiasip",<br>
CONNECTION_MANAGER_INTERFACE_NAME, bus);<br>
QDBusReply<QStringList> reply = dbus_iface.call( "ListProtocols" );<br>
qDebug() << "reply count = " << reply.value().count();<br>
foreach( QString name, reply.value() )<br>
{<br>
qDebug() << "protocols = " << name;<br>
QDBusReply<ParameterDefinitionList> parameters = dbus_iface.call( "GetParameters", "sip" );<br>
if( parameters.isValid() )<br>
qDebug() << "parameters is valid";<br>
else<br>
qDebug() << "parameters is invalid";<br>
qDebug() << "parameters count = " << parameters.value().count();<br>
foreach( ParameterDefinition para, parameters.value() )<br>
{<br>
qDebug() << "parameter = " << <a href="http://para.name/" target="_blank">para.name</a>;<br>
}<br>
}<br>
<br>
qDebug() << "dbus init out";<br>
}<br>
<br>
int main(int argc, char* argv[])<br>
{<br>
QApplication app(argc, argv);<br>
<br>
QPushButton quit("Quit");<br>
<br>
quit.resize(75, 30);<br>
quit.setFont(QFont("Times", 18, QFont::Bold));<br>
<br>
QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));<br>
<br>
quit.show();<br>
<br>
dbus_init();<br>
<br>
return app.exec();<br>
}<br>[/CODE]<br><br>print out as below:<br><br>tom@tom-desktop:~/Templates/qt_demo/qt4cb/debug$ ./qt4cb <br>
dbus init in <br>
reply count = 1 <br>
protocols = "sip" <br>
parameters is invalid <br>
parameters count = 0 <br>
dbus init out <br>
tom@tom-desktop:~/Templates/qt_demo/qt4cb/debug$ <br><br>why can't got valid return value when i invoke "GetParameters" of Telepathy-sofiasip ?<br><br>Br<br>Tom<br></div>