qmlplugindump: Fix QObject dump.
authorChristian Kamm <christian.d.kamm@nokia.com>
Mon, 21 Nov 2011 09:34:40 +0000 (10:34 +0100)
committerQt by Nokia <qt-info@nokia.com>
Tue, 22 Nov 2011 11:16:13 +0000 (12:16 +0100)
* Hide deleteLater and the destroyed signal.
* Add destroy and toString functions.

Task-number: QTCREATORBUG-4903
Change-Id: Icbae3e1c82605baa84ac9cc8f38cd747e4dcf687
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
tools/qmlplugindump/main.cpp

index 4dd3fe9..d52469a 100644 (file)
@@ -374,8 +374,36 @@ public:
             implicitSignals.insert(QString("%1Changed").arg(QString::fromUtf8(property.name())));
         }
 
-        for (int index = meta->methodOffset(); index < meta->methodCount(); ++index)
-            dump(meta->method(index), implicitSignals);
+        if (meta == &QObject::staticMetaObject) {
+            // for QObject, hide deleteLater() and onDestroyed
+            for (int index = meta->methodOffset(); index < meta->methodCount(); ++index) {
+                QMetaMethod method = meta->method(index);
+                const char *signature(method.signature());
+                if (signature == QLatin1String("destroyed(QObject*)")
+                        || signature == QLatin1String("destroyed()")
+                        || signature == QLatin1String("deleteLater()"))
+                    continue;
+                dump(method, implicitSignals);
+            }
+
+            // and add toString(), destroy() and destroy(int)
+            qml->writeStartObject(QLatin1String("Method"));
+            qml->writeScriptBinding(QLatin1String("name"), enquote(QLatin1String("toString")));
+            qml->writeEndObject();
+            qml->writeStartObject(QLatin1String("Method"));
+            qml->writeScriptBinding(QLatin1String("name"), enquote(QLatin1String("destroy")));
+            qml->writeEndObject();
+            qml->writeStartObject(QLatin1String("Method"));
+            qml->writeScriptBinding(QLatin1String("name"), enquote(QLatin1String("destroy")));
+            qml->writeStartObject(QLatin1String("Parameter"));
+            qml->writeScriptBinding(QLatin1String("name"), enquote(QLatin1String("delay")));
+            qml->writeScriptBinding(QLatin1String("type"), enquote(QLatin1String("int")));
+            qml->writeEndObject();
+            qml->writeEndObject();
+        } else {
+            for (int index = meta->methodOffset(); index < meta->methodCount(); ++index)
+                dump(meta->method(index), implicitSignals);
+        }
 
         qml->writeEndObject();
     }