From a6393f953eaf55ddc48b247cde2fae1bd9f09604 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Thu, 6 Oct 2011 12:12:34 +0200 Subject: qmlplugindump: Don't dump implicit signals. Every property automatically has a xyzChanged signal anyway. Change-Id: I470875a94792c0fc5a6378c8be1e0eddc24a1d5a Reviewed-on: http://codereview.qt-project.org/6144 Reviewed-by: Roberto Raggi --- tools/qmlplugindump/main.cpp | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'tools') diff --git a/tools/qmlplugindump/main.cpp b/tools/qmlplugindump/main.cpp index 6eadb39869..e7f183e798 100644 --- a/tools/qmlplugindump/main.cpp +++ b/tools/qmlplugindump/main.cpp @@ -306,11 +306,15 @@ public: for (int index = meta->enumeratorOffset(); index < meta->enumeratorCount(); ++index) dump(meta->enumerator(index)); - for (int index = meta->propertyOffset(); index < meta->propertyCount(); ++index) - dump(meta->property(index)); + QSet implicitSignals; + for (int index = meta->propertyOffset(); index < meta->propertyCount(); ++index) { + const QMetaProperty &property = meta->property(index); + dump(property); + implicitSignals.insert(QString("%1Changed").arg(QString::fromUtf8(property.name()))); + } for (int index = meta->methodOffset(); index < meta->methodCount(); ++index) - dump(meta->method(index)); + dump(meta->method(index), implicitSignals); qml->writeEndObject(); } @@ -378,7 +382,7 @@ private: qml->writeEndObject(); } - void dump(const QMetaMethod &meth) + void dump(const QMetaMethod &meth, const QSet &implicitSignals) { if (meth.methodType() == QMetaMethod::Signal) { if (meth.access() != QMetaMethod::Protected) @@ -393,6 +397,16 @@ private: return; // invalid signature } name = name.left(lparenIndex); + const QString typeName = convertToId(meth.typeName()); + + if (implicitSignals.contains(name) + && !meth.revision() + && meth.methodType() == QMetaMethod::Signal + && meth.parameterNames().isEmpty() + && typeName.isEmpty()) { + // don't mention implicit signals + return; + } if (meth.methodType() == QMetaMethod::Signal) qml->writeStartObject(QLatin1String("Signal")); @@ -406,7 +420,6 @@ private: qml->writeScriptBinding(QLatin1String("revision"), QString::number(revision)); #endif - const QString typeName = convertToId(meth.typeName()); if (! typeName.isEmpty()) qml->writeScriptBinding(QLatin1String("type"), enquote(typeName)); -- cgit v1.2.3