diff --git a/share/qtcreator/qml-type-descriptions/qtquick.qmltypes b/share/qtcreator/qml-type-descriptions/qtquick.qmltypes index a3aad1d5e91..ec729dec9ae 100644 --- a/share/qtcreator/qml-type-descriptions/qtquick.qmltypes +++ b/share/qtcreator/qml-type-descriptions/qtquick.qmltypes @@ -249,6 +249,7 @@ Module { "Qt/Component 4.7", "QtQuick/Component 1.0" ] + attachedType: "QDeclarativeComponentAttached" Enum { name: "Status" values: { @@ -271,6 +272,12 @@ Module { } Method { name: "errorString"; type: "string" } } + Component { + name: "QDeclarativeComponentAttached" + prototype: "QObject" + Signal { name: "completed" } + Signal { name: "destruction" } + } Component { name: "QDeclarativeConnections" prototype: "QObject" @@ -677,6 +684,7 @@ Module { "QtQuick/GridView 1.0", "QtQuick/GridView 1.1" ] + attachedType: "QDeclarativeGridViewAttached" Enum { name: "HighlightRangeMode" values: { @@ -766,6 +774,18 @@ Module { Method { name: "positionViewAtBeginning" } Method { name: "positionViewAtEnd" } } + Component { + name: "QDeclarativeGridViewAttached" + prototype: "QObject" + Property { name: "view"; type: "QDeclarativeGridView"; isReadonly: true; isPointer: true } + Property { name: "isCurrentItem"; type: "bool"; isReadonly: true } + Property { name: "delayRemove"; type: "bool" } + Signal { name: "currentItemChanged" } + Signal { name: "delayRemoveChanged" } + Signal { name: "add" } + Signal { name: "remove" } + Signal { name: "viewChanged" } + } Component { name: "QDeclarativeImage" defaultProperty: "data" @@ -967,6 +987,7 @@ Module { "Qt/KeyNavigation 4.7", "QtQuick/KeyNavigation 1.0" ] + attachedType: "QDeclarativeKeyNavigationAttached" Enum { name: "Priority" values: { @@ -996,6 +1017,7 @@ Module { "Qt/Keys 4.7", "QtQuick/Keys 1.0" ] + attachedType: "QDeclarativeKeysAttached" Enum { name: "Priority" values: { @@ -1248,6 +1270,7 @@ Module { "QtQuick/ListView 1.0", "QtQuick/ListView 1.1" ] + attachedType: "QDeclarativeListViewAttached" Enum { name: "HighlightRangeMode" values: { @@ -1343,6 +1366,24 @@ Module { Method { name: "positionViewAtBeginning" } Method { name: "positionViewAtEnd" } } + Component { + name: "QDeclarativeListViewAttached" + prototype: "QObject" + Property { name: "view"; type: "QDeclarativeListView"; isReadonly: true; isPointer: true } + Property { name: "isCurrentItem"; type: "bool"; isReadonly: true } + Property { name: "previousSection"; type: "string"; isReadonly: true } + Property { name: "nextSection"; type: "string"; isReadonly: true } + Property { name: "section"; type: "string"; isReadonly: true } + Property { name: "delayRemove"; type: "bool" } + Signal { name: "currentItemChanged" } + Signal { name: "sectionChanged" } + Signal { name: "prevSectionChanged" } + Signal { name: "nextSectionChanged" } + Signal { name: "delayRemoveChanged" } + Signal { name: "add" } + Signal { name: "remove" } + Signal { name: "viewChanged" } + } Component { name: "QDeclarativeLoader" defaultProperty: "data" @@ -1443,8 +1484,14 @@ Module { "Qt/Package 4.7", "QtQuick/Package 1.0" ] + attachedType: "QDeclarativePackageAttached" Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } } + Component { + name: "QDeclarativePackageAttached" + prototype: "QObject" + Property { name: "name"; type: "string" } + } Component { name: "QDeclarativePaintedItem" defaultProperty: "data" @@ -1585,6 +1632,7 @@ Module { "Qt/PathView 4.7", "QtQuick/PathView 1.0" ] + attachedType: "QDeclarativePathViewAttached" Enum { name: "HighlightRangeMode" values: { @@ -1637,6 +1685,15 @@ Module { Method { name: "incrementCurrentIndex" } Method { name: "decrementCurrentIndex" } } + Component { + name: "QDeclarativePathViewAttached" + prototype: "QObject" + Property { name: "view"; type: "QDeclarativePathView"; isReadonly: true; isPointer: true } + Property { name: "isCurrentItem"; type: "bool"; isReadonly: true } + Property { name: "onPath"; type: "bool"; isReadonly: true } + Signal { name: "currentItemChanged" } + Signal { name: "pathChanged" } + } Component { name: "QDeclarativePauseAnimation" prototype: "QDeclarativeAbstractAnimation" @@ -2623,9 +2680,16 @@ Module { "Qt/VisualItemModel 4.7", "QtQuick/VisualItemModel 1.0" ] + attachedType: "QDeclarativeVisualItemModelAttached" Property { name: "children"; type: "QDeclarativeItem"; isList: true; isReadonly: true } Signal { name: "childrenChanged" } } + Component { + name: "QDeclarativeVisualItemModelAttached" + prototype: "QObject" + Property { name: "index"; type: "int"; isReadonly: true } + Signal { name: "indexChanged" } + } Component { name: "QDeclarativeVisualModel" prototype: "QObject" diff --git a/share/qtcreator/qml/qmldump/main.cpp b/share/qtcreator/qml/qmldump/main.cpp index 9b2348cf3a0..94d729beafb 100644 --- a/share/qtcreator/qml/qmldump/main.cpp +++ b/share/qtcreator/qml/qmldump/main.cpp @@ -67,6 +67,8 @@ void collectReachableMetaObjects(QObject *object, QSet *met void collectReachableMetaObjects(const QDeclarativeType *ty, QSet *metas) { collectReachableMetaObjects(ty->metaObject(), metas); + if (ty->attachedPropertiesType()) + collectReachableMetaObjects(ty->attachedPropertiesType(), metas); } /* We want to add the MetaObject for 'Qt' to the list, this is a @@ -219,6 +221,11 @@ public: qSort(exports); qml->writeArrayBinding(QLatin1String("exports"), exports); + + if (const QMetaObject *attachedType = (*qmlTypes.begin())->attachedPropertiesType()) { + qml->writeScriptBinding(QLatin1String("attachedType"), enquote( + convertToId(attachedType->className()))); + } } for (int index = meta->enumeratorOffset(); index < meta->enumeratorCount(); ++index) diff --git a/src/libs/languageutils/fakemetaobject.cpp b/src/libs/languageutils/fakemetaobject.cpp index a1ff503b42d..7fd6dd2d4ce 100644 --- a/src/libs/languageutils/fakemetaobject.cpp +++ b/src/libs/languageutils/fakemetaobject.cpp @@ -187,6 +187,13 @@ FakeMetaMethod FakeMetaObject::method(int index) const QString FakeMetaObject::defaultPropertyName() const { return m_defaultPropertyName; } - -void FakeMetaObject::setDefaultPropertyName(const QString defaultPropertyName) +void FakeMetaObject::setDefaultPropertyName(const QString &defaultPropertyName) { m_defaultPropertyName = defaultPropertyName; } + +QString FakeMetaObject::attachedTypeName() const +{ return m_attachedTypeName; } +void FakeMetaObject::setAttachedTypeName(const QString &name) +{ m_attachedTypeName = name; } + +bool FakeMetaObject::Export::isValid() const +{ return !type.isEmpty(); } diff --git a/src/libs/languageutils/fakemetaobject.h b/src/libs/languageutils/fakemetaobject.h index 4449a1e27e6..f7c324683e2 100644 --- a/src/libs/languageutils/fakemetaobject.h +++ b/src/libs/languageutils/fakemetaobject.h @@ -148,6 +148,7 @@ private: QHash m_propNameToIdx; QList m_methods; QString m_defaultPropertyName; + QString m_attachedTypeName; public: FakeMetaObject(); @@ -181,7 +182,10 @@ public: FakeMetaMethod method(int index) const; QString defaultPropertyName() const; - void setDefaultPropertyName(const QString defaultPropertyName); + void setDefaultPropertyName(const QString &defaultPropertyName); + + QString attachedTypeName() const; + void setAttachedTypeName(const QString &name); }; } // namespace LanguageUtils diff --git a/src/libs/qmljs/qmljstypedescriptionreader.cpp b/src/libs/qmljs/qmljstypedescriptionreader.cpp index a1c92d6d9f8..40c10116791 100644 --- a/src/libs/qmljs/qmljstypedescriptionreader.cpp +++ b/src/libs/qmljs/qmljstypedescriptionreader.cpp @@ -158,8 +158,10 @@ void TypeDescriptionReader::readComponent(UiObjectDefinition *ast) fmo->setDefaultPropertyName(readStringBinding(script)); } else if (name == "exports") { readExports(script, fmo); + } else if (name == "attachedType") { + fmo->setAttachedTypeName(readStringBinding(script)); } else { - addError(script->firstSourceLocation(), "Expected only name, prototype, defaultProperty and exports script bindings"); + addError(script->firstSourceLocation(), "Expected only name, prototype, defaultProperty, attachedType and exports script bindings"); return; } } else {