summaryrefslogtreecommitdiffstats
path: root/tools/qdbus/qdbusviewer/qdbusviewer.cpp
diff options
context:
space:
mode:
authorKimmo Kotajärvi <kimmo.kotajarvi@nomovok.com>2010-03-11 12:44:21 (GMT)
committerHarald Fernengel <harald.fernengel@nokia.com>2010-03-11 12:44:21 (GMT)
commit54c7d51c54e4387a070f5f565d01693d078a6d13 (patch)
tree45121891b15989306c1baec3925e73d66da0922e /tools/qdbus/qdbusviewer/qdbusviewer.cpp
parent18b31adab8ea288edc84c190dcad2c8552d1e206 (diff)
downloadQt-54c7d51c54e4387a070f5f565d01693d078a6d13.zip
Qt-54c7d51c54e4387a070f5f565d01693d078a6d13.tar.gz
Qt-54c7d51c54e4387a070f5f565d01693d078a6d13.tar.bz2
Changed Qdbusviewer to match D-Bus type signature in addition to method name when finding a method.
Merge-request: 435 Reviewed-by: Harald Fernengel <harald.fernengel@nokia.com>
Diffstat (limited to 'tools/qdbus/qdbusviewer/qdbusviewer.cpp')
-rw-r--r--tools/qdbus/qdbusviewer/qdbusviewer.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/tools/qdbus/qdbusviewer/qdbusviewer.cpp b/tools/qdbus/qdbusviewer/qdbusviewer.cpp
index e9695dc..337fdbc 100644
--- a/tools/qdbus/qdbusviewer/qdbusviewer.cpp
+++ b/tools/qdbus/qdbusviewer/qdbusviewer.cpp
@@ -207,6 +207,17 @@ void QDBusViewer::setProperty(const BusSignature &sig)
}
+static QString getDbusSignature(const QMetaMethod& method)
+{
+ // create a D-Bus type signature from QMetaMethod's parameters
+ QString sig;
+ for (int i = 0; i < method.parameterTypes().count(); ++i) {
+ QVariant::Type type = QVariant::nameToType(method.parameterTypes().at(i));
+ sig.append(QString::fromLatin1(QDBusMetaType::typeToSignature(type)));
+ }
+ return sig;
+}
+
void QDBusViewer::callMethod(const BusSignature &sig)
{
QDBusInterface iface(sig.mService, sig.mPath, sig.mInterface, c);
@@ -217,7 +228,8 @@ void QDBusViewer::callMethod(const BusSignature &sig)
for (int i = 0; i < mo->methodCount(); ++i) {
const QString signature = QString::fromLatin1(mo->method(i).signature());
if (signature.startsWith(sig.mName) && signature.at(sig.mName.length()) == QLatin1Char('('))
- method = mo->method(i);
+ if (getDbusSignature(mo->method(i)) == sig.mTypeSig)
+ method = mo->method(i);
}
if (!method.signature()) {
QMessageBox::warning(this, tr("Unable to find method"),
@@ -277,6 +289,7 @@ void QDBusViewer::showContextMenu(const QPoint &point)
sig.mPath = model->dBusPath(item);
sig.mInterface = model->dBusInterface(item);
sig.mName = model->dBusMethodName(item);
+ sig.mTypeSig = model->dBusTypeSignature(item);
QMenu menu;
menu.addAction(refreshAction);