tools/qdbus/qdbusviewer/qdbusmodel.cpp
changeset 30 5dc02b23752f
parent 18 2f34d5167611
--- a/tools/qdbus/qdbusviewer/qdbusmodel.cpp	Wed Jun 23 19:07:03 2010 +0300
+++ b/tools/qdbus/qdbusviewer/qdbusmodel.cpp	Tue Jul 06 15:10:48 2010 +0300
@@ -75,6 +75,7 @@
     bool isPrefetched;
     QString name;
     QString caption;
+    QString typeSignature;
 };
 
 QDomDocument QDBusModel::introspect(const QString &path)
@@ -118,6 +119,13 @@
             item = new QDBusItem(QDBusModel::MethodItem,
                     child.attribute(QLatin1String("name")), parent);
             item->caption = QLatin1String("Method: ") + item->name;
+            //get "type" from <arg> where "direction" is "in"
+            QDomElement n = child.firstChildElement();
+            while (!n.isNull()) {
+                if (n.attribute(QLatin1String("direction")) == QLatin1String("in"))
+                    item->typeSignature += n.attribute(QLatin1String("type"));
+                n = n.nextSiblingElement();
+            }
         } else if (child.tagName() == QLatin1String("signal")) {
             item = new QDBusItem(QDBusModel::SignalItem,
                     child.attribute(QLatin1String("name")), parent);
@@ -298,6 +306,12 @@
     return item ? item->name : QString();
 }
 
+QString QDBusModel::dBusTypeSignature(const QModelIndex &index) const
+{
+    QDBusItem *item = static_cast<QDBusItem *>(index.internalPointer());
+    return item ? item->typeSignature : QString();
+}
+
 QModelIndex QDBusModel::findObject(const QDBusObjectPath &objectPath)
 {
     QStringList path = objectPath.path().split(QLatin1Char('/'), QString::SkipEmptyParts);