aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kamm <christian.d.kamm@nokia.com>2011-02-10 14:46:03 +0100
committerChristian Kamm <christian.d.kamm@nokia.com>2011-02-10 17:04:22 +0100
commit13f9135827b43a1ffd8bcbf3699641a3fedbd7dd (patch)
tree4cb942710114ac55f7b44d9b782f12620637e7fe
parent047ed35579a7d0bf9e6a33b06c5281d8189cde4b (diff)
qmldump: Dump attached types and read them in Creator.
-rw-r--r--share/qtcreator/qml-type-descriptions/qtquick.qmltypes64
-rw-r--r--share/qtcreator/qml/qmldump/main.cpp7
-rw-r--r--src/libs/languageutils/fakemetaobject.cpp11
-rw-r--r--src/libs/languageutils/fakemetaobject.h6
-rw-r--r--src/libs/qmljs/qmljstypedescriptionreader.cpp4
5 files changed, 88 insertions, 4 deletions
diff --git a/share/qtcreator/qml-type-descriptions/qtquick.qmltypes b/share/qtcreator/qml-type-descriptions/qtquick.qmltypes
index a3aad1d5e9..ec729dec9a 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: {
@@ -272,6 +273,12 @@ Module {
Method { name: "errorString"; type: "string" }
}
Component {
+ name: "QDeclarativeComponentAttached"
+ prototype: "QObject"
+ Signal { name: "completed" }
+ Signal { name: "destruction" }
+ }
+ Component {
name: "QDeclarativeConnections"
prototype: "QObject"
exports: [
@@ -677,6 +684,7 @@ Module {
"QtQuick/GridView 1.0",
"QtQuick/GridView 1.1"
]
+ attachedType: "QDeclarativeGridViewAttached"
Enum {
name: "HighlightRangeMode"
values: {
@@ -767,6 +775,18 @@ Module {
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"
prototype: "QDeclarativeImageBase"
@@ -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: {
@@ -1344,6 +1367,24 @@ Module {
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"
prototype: "QDeclarativeImplicitSizeItem"
@@ -1443,9 +1484,15 @@ 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"
prototype: "QDeclarativeItem"
@@ -1585,6 +1632,7 @@ Module {
"Qt/PathView 4.7",
"QtQuick/PathView 1.0"
]
+ attachedType: "QDeclarativePathViewAttached"
Enum {
name: "HighlightRangeMode"
values: {
@@ -1638,6 +1686,15 @@ Module {
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"
exports: [
@@ -2623,10 +2680,17 @@ 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"
Property { name: "count"; type: "int"; isReadonly: true }
diff --git a/share/qtcreator/qml/qmldump/main.cpp b/share/qtcreator/qml/qmldump/main.cpp
index 9b2348cf3a..94d729beaf 100644
--- a/share/qtcreator/qml/qmldump/main.cpp
+++ b/share/qtcreator/qml/qmldump/main.cpp
@@ -67,6 +67,8 @@ void collectReachableMetaObjects(QObject *object, QSet<const QMetaObject *> *met
void collectReachableMetaObjects(const QDeclarativeType *ty, QSet<const QMetaObject *> *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 a1ff503b42..7fd6dd2d4c 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 4449a1e27e..f7c324683e 100644
--- a/src/libs/languageutils/fakemetaobject.h
+++ b/src/libs/languageutils/fakemetaobject.h
@@ -148,6 +148,7 @@ private:
QHash<QString, int> m_propNameToIdx;
QList<FakeMetaMethod> 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 a1c92d6d9f..40c1011679 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 {