From b71d3eb145d2d6efa160ae07383e1ec04ea47b2e Mon Sep 17 00:00:00 2001 From: Erik Verbruggen <erik.verbruggen@nokia.com> Date: Wed, 31 Mar 2010 14:18:57 +0200 Subject: [PATCH] Added defaultProperty attribute reading and storing. --- src/libs/qmljs/qmljsinterpreter.cpp | 16 +++++++++++++++- src/libs/qmljs/qmljsinterpreter.h | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp index 47c69c3a922..dea04577a90 100644 --- a/src/libs/qmljs/qmljsinterpreter.cpp +++ b/src/libs/qmljs/qmljsinterpreter.cpp @@ -199,6 +199,7 @@ class FakeMetaObject { QList<FakeMetaEnum> m_enums; QList<FakeMetaProperty> m_props; QList<FakeMetaMethod> m_methods; + QString m_defaultPropertyName; public: FakeMetaObject(const QString &name, const QString &package, int majorVersion, int minorVersion) @@ -250,6 +251,12 @@ public: { return m_major; } int minorVersion() const { return m_minor; } + + QString defaultPropertyName() const + { return m_defaultPropertyName; } + + void setDefaultPropertyName(const QString defaultPropertyName) + { m_defaultPropertyName = defaultPropertyName; } }; } // end of Interpreter namespace @@ -364,7 +371,7 @@ private: const QLatin1String tag("type"); Q_ASSERT(_xml.isStartElement() && _xml.name() == tag); - QString name; + QString name, defaultPropertyName; int major = -1, minor = -1; QString extends; foreach (const QXmlStreamAttribute &attr, _xml.attributes()) { @@ -398,6 +405,8 @@ private: return; } } + } else if (attr.name() == QLatin1String("defaultProperty")) { + defaultPropertyName = attr.value().toString(); } else if (attr.name() == QLatin1String("extends")) { if (! attr.value().isEmpty()) extends = attr.value().toString(); @@ -412,6 +421,8 @@ private: major, minor); if (! extends.isEmpty()) metaObject->setSuperclassName(extends); + if (! defaultPropertyName.isEmpty()) + metaObject->setDefaultPropertyName(defaultPropertyName); while (_xml.readNextStartElement()) { if (_xml.name() == QLatin1String("property")) @@ -830,6 +841,9 @@ int QmlObjectValue::majorVersion() const int QmlObjectValue::minorVersion() const { return _metaObject->minorVersion(); } +QString QmlObjectValue::defaultPropertyName() const +{ return _metaObject->defaultPropertyName(); } + bool QmlObjectValue::isDerivedFrom(const FakeMetaObject *base) const { for (const FakeMetaObject *iter = _metaObject; iter; iter = iter->superClass()) { diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h index 83bcce2be8e..76b779a7735 100644 --- a/src/libs/qmljs/qmljsinterpreter.h +++ b/src/libs/qmljs/qmljsinterpreter.h @@ -417,6 +417,7 @@ public: QString packageName() const; int majorVersion() const; int minorVersion() const; + QString defaultPropertyName() const; protected: const Value *findOrCreateSignature(int index, const FakeMetaMethod &method, QString *methodName) const; -- GitLab