diff options
author | Alan Alpert <aalpert@rim.com> | 2012-12-05 19:09:54 (GMT) |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-02-19 16:45:43 (GMT) |
commit | 0632711ebfa8e2167628f5f4ef4168363eb77eba (patch) | |
tree | 75606c32d7d69bda6dabc84e13e6a86716435cc7 /tests | |
parent | 18c47c438cde545a69e15484ef5161e5f5b48c62 (diff) | |
download | Qt-0632711ebfa8e2167628f5f4ef4168363eb77eba.zip Qt-0632711ebfa8e2167628f5f4ef4168363eb77eba.tar.gz Qt-0632711ebfa8e2167628f5f4ef4168363eb77eba.tar.bz2 |
Add a method that allows registration of files to types
There is currently no way in C++ to duplicate the functionality of a qmldir
file in mapping QML files to versioned types in a module. This functionality
would be useful both in cases where a separate qmldir file would be overkill,
and for cases where the type mapping should be generated dynamically.
Since public API is frozen for 4.8, this is being added as private API
for those who need some measure of compatibility with qtquick1 in Qt5.
Change-Id: I28d7898122c5556fcd7cf3476795bcf4bb288ea6
Manual cherry pick of qtquick1/9995a2910d8a5f0317fe3adeb54f838b99ab31a8
Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'tests')
3 files changed, 23 insertions, 0 deletions
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/MyComponentType.qml b/tests/auto/declarative/qdeclarativelanguage/data/MyComponentType.qml new file mode 100644 index 0000000..9ba0d61 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/MyComponentType.qml @@ -0,0 +1,5 @@ +import QtQuick 1.0 + +Item { + property int test: 11 +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/qmlComponentType.qml b/tests/auto/declarative/qdeclarativelanguage/data/qmlComponentType.qml new file mode 100644 index 0000000..a7c2ec4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/qmlComponentType.qml @@ -0,0 +1,4 @@ +import QtQuick 1.0 +import Test 1.0 + +RegisteredComponentType {} diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp index 14c7d82..dc965fd 100644 --- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp +++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp @@ -41,6 +41,7 @@ #include <qtest.h> #include <QtDeclarative/qdeclarativeengine.h> #include <QtDeclarative/qdeclarativecomponent.h> +#include <QtDeclarative/qdeclarativeprivate.h> #include <QtCore/qfile.h> #include <QtCore/qdebug.h> #include <QtCore/qfileinfo.h> @@ -103,6 +104,7 @@ private slots: void assignLiteralToVariant(); void customParserTypes(); void rootAsQmlComponent(); + void qmlComponentType(); void inlineQmlComponents(); void idProperty(); void autoNotifyConnection(); @@ -642,6 +644,16 @@ void tst_qdeclarativelanguage::rootAsQmlComponent() QCOMPARE(object->getChildren()->count(), 2); } +// Tests that types can be specified from a QML only component +void tst_qdeclarativelanguage::qmlComponentType() +{ + QDeclarativeComponent component(&engine, TEST_FILE("qmlComponentType.qml")); + VERIFY_ERRORS(0); + QObject *object = qobject_cast<QObject *>(component.create()); + QVERIFY(object != 0); + QCOMPARE(object->property("test"), QVariant(11)); +} + // Tests that components can be specified inline void tst_qdeclarativelanguage::inlineQmlComponents() { @@ -1977,6 +1989,8 @@ void tst_qdeclarativelanguage::revisionOverloads() void tst_qdeclarativelanguage::initTestCase() { registerTypes(); + // Registered here because it uses TEST_FILE + QDeclarativePrivate::qmlRegisterType(TEST_FILE("MyComponentType.qml"), "Test", 1, 0, "RegisteredComponentType"); // Registering the TestType class in other modules should have no adverse effects qmlRegisterType<TestType>("org.qtproject.TestPre", 1, 0, "Test"); |