Add examples and tests for QtQuick1
authorDamian Jansen <damian.jansen@nokia.com>
Thu, 1 Sep 2011 00:46:27 +0000 (10:46 +1000)
committerQt by Nokia <qt-info@nokia.com>
Mon, 5 Sep 2011 01:09:14 +0000 (03:09 +0200)
A straight copy of what was available in Qt 4.7, modified
where necessary to use the QtQuick1 module, so as to still
compile and run in Qt5.

Change-Id: I9a95afb96e3f522fbd600eb6dbd3fdac9558b059
Reviewed-on: http://codereview.qt.nokia.com/4019
Reviewed-by: Bea Lam <bea.lam@nokia.com>
494 files changed:
examples/declarative/cppextensions/cppextensions.pro
examples/declarative/cppextensions/qwidgets/qwidgets.pro [deleted file]
examples/declarative/qtquick1.pro [new file with mode: 0644]
examples/declarative/qtquick1/README [new file with mode: 0644]
examples/declarative/qtquick1/animation/animation.qmlproject [moved from examples/declarative/cppextensions/qwidgets/qwidgets.qmlproject with 100% similarity]
examples/declarative/qtquick1/animation/basics/basics.qmlproject [moved from examples/declarative/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject with 100% similarity]
examples/declarative/qtquick1/animation/basics/color-animation.qml [new file with mode: 0644]
examples/declarative/qtquick1/animation/basics/images/face-smile.png [new file with mode: 0644]
examples/declarative/qtquick1/animation/basics/images/moon.png [new file with mode: 0644]
examples/declarative/qtquick1/animation/basics/images/shadow.png [new file with mode: 0644]
examples/declarative/qtquick1/animation/basics/images/star.png [new file with mode: 0644]
examples/declarative/qtquick1/animation/basics/images/sun.png [new file with mode: 0644]
examples/declarative/qtquick1/animation/basics/property-animation.qml [new file with mode: 0644]
examples/declarative/qtquick1/animation/behaviors/SideRect.qml [new file with mode: 0644]
examples/declarative/qtquick1/animation/behaviors/behavior-example.qml [new file with mode: 0644]
examples/declarative/qtquick1/animation/behaviors/behaviors.qmlproject [moved from examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject with 100% similarity]
examples/declarative/qtquick1/animation/behaviors/wigglytext.qml [new file with mode: 0644]
examples/declarative/qtquick1/animation/easing/content/QuitButton.qml [new file with mode: 0644]
examples/declarative/qtquick1/animation/easing/content/quit.png [new file with mode: 0644]
examples/declarative/qtquick1/animation/easing/easing.qml [new file with mode: 0644]
examples/declarative/qtquick1/animation/easing/easing.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/animation/states/qt-logo.png [new file with mode: 0644]
examples/declarative/qtquick1/animation/states/states.qml [new file with mode: 0644]
examples/declarative/qtquick1/animation/states/states.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/animation/states/transitions.qml [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/cppextensions.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/cppextensions.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/imageprovider/ImageProviderCore/qmldir [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider-example.qml [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qrc [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/view.qml [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/plugins/README [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/Clock.qml [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/center.png [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/clock.png [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/hour.png [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/minute.png [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/qmldir [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/plugins/plugin.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/plugins/plugins.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/plugins/plugins.qml [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/plugins/plugins.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.pro [moved from examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.pro with 79% similarity]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qml [moved from examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qml with 100% similarity]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qrc [moved from examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qrc with 100% similarity]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/main.cpp [moved from examples/declarative/cppextensions/qgraphicslayouts/layoutitem/main.cpp with 100% similarity]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.cpp [moved from examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.cpp with 100% similarity]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.h [moved from examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.h with 100% similarity]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.qrc [moved from examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.qrc with 100% similarity]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp [moved from examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp with 98% similarity]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.pro [moved from examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.pro with 100% similarity]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.qml [moved from examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.qml with 100% similarity]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.pro [moved from examples/declarative/cppextensions/qgraphicslayouts/qgraphicslayouts.pro with 100% similarity]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.cpp [moved from examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.cpp with 100% similarity]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.h [moved from examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.h with 100% similarity]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.qrc [moved from examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.qrc with 100% similarity]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp [moved from examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp with 98% similarity]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.pro [moved from examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.pro with 100% similarity]
examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.qml [moved from examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.qml with 100% similarity]
examples/declarative/qtquick1/cppextensions/qwidgets/QWidgets/qmldir [moved from examples/declarative/cppextensions/qwidgets/QWidgets/qmldir with 100% similarity]
examples/declarative/qtquick1/cppextensions/qwidgets/README [moved from examples/declarative/cppextensions/qwidgets/README with 100% similarity]
examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.cpp [moved from examples/declarative/cppextensions/qwidgets/qwidgets.cpp with 100% similarity]
examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qml [moved from examples/declarative/cppextensions/qwidgets/qwidgets.qml with 100% similarity]
examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.qrc [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/adding/example.qml [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/adding/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.qrc [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/attached/example.qml [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/attached/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.qrc [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/binding/example.qml [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/binding/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.qrc [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/example.qml [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.qrc [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/default/example.qml [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/default/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/extended/example.qml [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.qrc [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/extended/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/example.qml [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.qrc [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/methods/example.qml [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/methods/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.qrc [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/properties/example.qml [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/properties/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.qrc [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/signal/example.qml [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/signal/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.qrc [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/example.qml [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.cpp [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.h [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.pro [new file with mode: 0644]
examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.qrc [new file with mode: 0644]
examples/declarative/qtquick1/examples.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/i18n/i18n.qml [new file with mode: 0644]
examples/declarative/qtquick1/i18n/i18n.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/i18n/i18n/base.ts [new file with mode: 0644]
examples/declarative/qtquick1/i18n/i18n/qml_en_AU.ts [new file with mode: 0644]
examples/declarative/qtquick1/i18n/i18n/qml_fr.ts [new file with mode: 0644]
examples/declarative/qtquick1/imageelements/borderimage/borderimage.qml [new file with mode: 0644]
examples/declarative/qtquick1/imageelements/borderimage/borderimage.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/imageelements/borderimage/content/MyBorderImage.qml [new file with mode: 0644]
examples/declarative/qtquick1/imageelements/borderimage/content/ShadowRectangle.qml [new file with mode: 0644]
examples/declarative/qtquick1/imageelements/borderimage/content/bw.png [new file with mode: 0644]
examples/declarative/qtquick1/imageelements/borderimage/content/colors-round.sci [new file with mode: 0644]
examples/declarative/qtquick1/imageelements/borderimage/content/colors-stretch.sci [new file with mode: 0644]
examples/declarative/qtquick1/imageelements/borderimage/content/colors.png [new file with mode: 0644]
examples/declarative/qtquick1/imageelements/borderimage/content/shadow.png [new file with mode: 0644]
examples/declarative/qtquick1/imageelements/borderimage/shadows.qml [new file with mode: 0644]
examples/declarative/qtquick1/imageelements/image/ImageCell.qml [new file with mode: 0644]
examples/declarative/qtquick1/imageelements/image/image.qml [new file with mode: 0644]
examples/declarative/qtquick1/imageelements/image/image.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/imageelements/image/qt-logo.png [new file with mode: 0644]
examples/declarative/qtquick1/imageelements/imageelements.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/keyinteraction/focus/Core/ContextMenu.qml [new file with mode: 0644]
examples/declarative/qtquick1/keyinteraction/focus/Core/GridMenu.qml [new file with mode: 0644]
examples/declarative/qtquick1/keyinteraction/focus/Core/ListMenu.qml [new file with mode: 0644]
examples/declarative/qtquick1/keyinteraction/focus/Core/ListViewDelegate.qml [new file with mode: 0644]
examples/declarative/qtquick1/keyinteraction/focus/Core/images/arrow.png [new file with mode: 0644]
examples/declarative/qtquick1/keyinteraction/focus/Core/images/qt-logo.png [new file with mode: 0644]
examples/declarative/qtquick1/keyinteraction/focus/focus.qml [new file with mode: 0644]
examples/declarative/qtquick1/keyinteraction/focus/focus.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/keyinteraction/keyinteraction.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.pro [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.qrc [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/abstractitemmodel/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/abstractitemmodel/model.cpp [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/abstractitemmodel/model.h [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/abstractitemmodel/view.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/gridview/gridview-example.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/gridview/gridview.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/gridview/pics/AddressBook_48.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/gridview/pics/AudioPlayer_48.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/gridview/pics/Camera_48.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/gridview/pics/DateBook_48.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/gridview/pics/EMail_48.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/gridview/pics/TodoList_48.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/gridview/pics/VideoPlayer_48.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/content/PetsModel.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/content/PressAndHoldButton.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/content/RecipesModel.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/content/TextButton.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/content/pics/arrow-down.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/content/pics/arrow-up.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/content/pics/fruit-salad.jpg [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/content/pics/hamburger.jpg [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/content/pics/lemonade.jpg [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/content/pics/list-delete.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/content/pics/minus-sign.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/content/pics/moreDown.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/content/pics/moreUp.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/content/pics/pancakes.jpg [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/content/pics/plus-sign.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/content/pics/vegetable-soup.jpg [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/dynamiclist.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/expandingdelegates.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/highlight.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/highlightranges.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/listview.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/listview/sections.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/modelviews.pro [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/modelviews.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/objectlistmodel/dataobject.cpp [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/objectlistmodel/dataobject.h [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/objectlistmodel/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.pro [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qrc [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/objectlistmodel/view.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/package/Delegate.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/package/package.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/package/view.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/parallax/parallax.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/parallax/parallax.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/parallax/pics/background.jpg [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/parallax/pics/face-smile.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/parallax/pics/home-page.svg [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/parallax/pics/shadow.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/parallax/pics/yast-joystick.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/parallax/pics/yast-wol.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/parallax/qml/ParallaxView.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/parallax/qml/Smiley.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/pathview/pathview-example.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/pathview/pathview.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/pathview/pics/AddressBook_48.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/pathview/pics/AudioPlayer_48.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/pathview/pics/Camera_48.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/pathview/pics/DateBook_48.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/pathview/pics/EMail_48.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/pathview/pics/TodoList_48.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/pathview/pics/VideoPlayer_48.png [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/stringlistmodel/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.pro [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.qrc [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/stringlistmodel/view.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qml [new file with mode: 0644]
examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/positioners/Button.qml [new file with mode: 0644]
examples/declarative/qtquick1/positioners/add.png [new file with mode: 0644]
examples/declarative/qtquick1/positioners/del.png [new file with mode: 0644]
examples/declarative/qtquick1/positioners/positioners.qml [new file with mode: 0644]
examples/declarative/qtquick1/positioners/positioners.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/qtquick1.pro [new file with mode: 0644]
examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qml [new file with mode: 0644]
examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qml [new file with mode: 0644]
examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qml [new file with mode: 0644]
examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/screenorientation/Core/Bubble.qml [new file with mode: 0644]
examples/declarative/qtquick1/screenorientation/Core/Button.qml [new file with mode: 0644]
examples/declarative/qtquick1/screenorientation/Core/screenorientation.js [new file with mode: 0644]
examples/declarative/qtquick1/screenorientation/screenorientation.qml [new file with mode: 0644]
examples/declarative/qtquick1/screenorientation/screenorientation.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/sqllocalstorage/hello.qml [new file with mode: 0644]
examples/declarative/qtquick1/sqllocalstorage/sqllocalstorage.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/text/fonts/availableFonts.qml [new file with mode: 0644]
examples/declarative/qtquick1/text/fonts/banner.qml [new file with mode: 0644]
examples/declarative/qtquick1/text/fonts/fonts.qml [new file with mode: 0644]
examples/declarative/qtquick1/text/fonts/fonts.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/text/fonts/fonts/tarzeau_ocr_a.ttf [new file with mode: 0644]
examples/declarative/qtquick1/text/fonts/hello.qml [new file with mode: 0644]
examples/declarative/qtquick1/text/text.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/text/textselection/pics/endHandle.png [new file with mode: 0644]
examples/declarative/qtquick1/text/textselection/pics/endHandle.sci [new file with mode: 0644]
examples/declarative/qtquick1/text/textselection/pics/startHandle.png [new file with mode: 0644]
examples/declarative/qtquick1/text/textselection/pics/startHandle.sci [new file with mode: 0644]
examples/declarative/qtquick1/text/textselection/textselection.qml [new file with mode: 0644]
examples/declarative/qtquick1/text/textselection/textselection.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/threading/threadedlistmodel/dataloader.js [new file with mode: 0644]
examples/declarative/qtquick1/threading/threadedlistmodel/threadedlistmodel.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/threading/threadedlistmodel/timedisplay.qml [new file with mode: 0644]
examples/declarative/qtquick1/threading/threading.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/threading/workerscript/workerscript.js [new file with mode: 0644]
examples/declarative/qtquick1/threading/workerscript/workerscript.qml [new file with mode: 0644]
examples/declarative/qtquick1/threading/workerscript/workerscript.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/touchinteraction/gestures/experimental-gestures.qml [new file with mode: 0644]
examples/declarative/qtquick1/touchinteraction/gestures/gestures.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/touchinteraction/mousearea/mousearea-example.qml [new file with mode: 0644]
examples/declarative/qtquick1/touchinteraction/mousearea/mousearea.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/touchinteraction/pincharea/flickresize.qml [new file with mode: 0644]
examples/declarative/qtquick1/touchinteraction/pincharea/pincharea.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/touchinteraction/pincharea/qt-logo.jpg [new file with mode: 0644]
examples/declarative/qtquick1/touchinteraction/touchinteraction.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/toys/README [new file with mode: 0644]
examples/declarative/qtquick1/toys/clocks/clocks.qml [new file with mode: 0644]
examples/declarative/qtquick1/toys/clocks/clocks.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/toys/clocks/content/Clock.qml [new file with mode: 0644]
examples/declarative/qtquick1/toys/clocks/content/QuitButton.qml [new file with mode: 0644]
examples/declarative/qtquick1/toys/clocks/content/background.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/clocks/content/center.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/clocks/content/clock-night.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/clocks/content/clock.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/clocks/content/hour.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/clocks/content/minute.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/clocks/content/quit.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/clocks/content/second.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/corkboards/Day.qml [new file with mode: 0644]
examples/declarative/qtquick1/toys/corkboards/cork.jpg [new file with mode: 0644]
examples/declarative/qtquick1/toys/corkboards/corkboards.qml [new file with mode: 0644]
examples/declarative/qtquick1/toys/corkboards/corkboards.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/toys/corkboards/note-yellow.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/corkboards/tack.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qml [new file with mode: 0644]
examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/toys/dynamicscene/images/NOTE [new file with mode: 0644]
examples/declarative/qtquick1/toys/dynamicscene/images/face-smile.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/dynamicscene/images/moon.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/dynamicscene/images/rabbit_brown.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/dynamicscene/images/rabbit_bw.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/dynamicscene/images/star.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/dynamicscene/images/sun.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/dynamicscene/images/tree_s.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/dynamicscene/qml/Button.qml [new file with mode: 0644]
examples/declarative/qtquick1/toys/dynamicscene/qml/GenericSceneItem.qml [new file with mode: 0644]
examples/declarative/qtquick1/toys/dynamicscene/qml/PaletteItem.qml [new file with mode: 0644]
examples/declarative/qtquick1/toys/dynamicscene/qml/PerspectiveItem.qml [new file with mode: 0644]
examples/declarative/qtquick1/toys/dynamicscene/qml/Sun.qml [new file with mode: 0644]
examples/declarative/qtquick1/toys/dynamicscene/qml/itemCreation.js [new file with mode: 0644]
examples/declarative/qtquick1/toys/tic-tac-toe/content/Button.qml [new file with mode: 0644]
examples/declarative/qtquick1/toys/tic-tac-toe/content/TicTac.qml [new file with mode: 0644]
examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/board.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/o.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/x.png [new file with mode: 0644]
examples/declarative/qtquick1/toys/tic-tac-toe/content/tic-tac-toe.js [new file with mode: 0644]
examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qml [new file with mode: 0644]
examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/toys/toys.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/toys/tvtennis/tvtennis.qml [new file with mode: 0644]
examples/declarative/qtquick1/toys/tvtennis/tvtennis.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter1-basics/app.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter1-basics/chapter1-basics.pro [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter1-basics/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.cpp [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.h [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter2-methods/app.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter2-methods/chapter2-methods.pro [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter2-methods/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.cpp [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.h [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/app.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/chapter3-bindings.pro [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.cpp [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.h [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/app.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.cpp [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.h [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.cpp [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.h [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/app.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/chapter5-listproperties.pro [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/main.cpp [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.cpp [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.h [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.cpp [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.h [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/app.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chapter6-plugins.pro [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.cpp [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.h [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.cpp [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.h [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.cpp [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.h [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/qmldir [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/extending/extending.pro [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/helloworld/Cell.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/helloworld/tutorial1.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/helloworld/tutorial2.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/helloworld/tutorial3.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame1/Block.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame1/Button.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame1.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame2/Block.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame2/Button.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.js [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame2.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame3/Block.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame3/Button.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame3/Dialog.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.js [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame3.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame4/content/BoomBlock.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Button.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Dialog.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame4/content/samegame.js [new file with mode: 0755]
examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/README [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_data.xml [new file with mode: 0755]
examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_style.xsl [new file with mode: 0755]
examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/scores.php [new file with mode: 0755]
examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame.qml [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame4.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/shared/pics/background.jpg [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/shared/pics/blueStar.png [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/shared/pics/blueStone.png [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/shared/pics/greenStar.png [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/shared/pics/greenStone.png [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/shared/pics/redStar.png [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/shared/pics/redStone.png [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/shared/pics/star.png [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/samegame/shared/pics/yellowStone.png [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/tutorials.pro [new file with mode: 0644]
examples/declarative/qtquick1/tutorials/tutorials.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/README [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/dialcontrol/content/Dial.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/dialcontrol/content/QuitButton.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/dialcontrol/content/background.png [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/dialcontrol/content/needle.png [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/dialcontrol/content/needle_shadow.png [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/dialcontrol/content/overlay.png [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/dialcontrol/content/quit.png [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/flipable/content/5_heart.png [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/flipable/content/9_club.png [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/flipable/content/Card.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/flipable/content/back.png [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/flipable/flipable.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/flipable/flipable.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/progressbar/content/ProgressBar.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/progressbar/content/background.png [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/progressbar/main.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/progressbar/progressbar.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/scrollbar/ScrollBar.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/scrollbar/main.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/scrollbar/pics/niagara_falls.jpg [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/scrollbar/scrollbar.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/searchbox/SearchBox.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/searchbox/images/clear.png [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/searchbox/images/lineedit-bg-focus.png [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/searchbox/images/lineedit-bg.png [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/searchbox/main.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/searchbox/searchbox.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/slideswitch/content/Switch.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/slideswitch/content/background.svg [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/slideswitch/content/knob.svg [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/spinner/content/Spinner.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/spinner/content/spinner-bg.png [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/spinner/content/spinner-select.png [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/spinner/main.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/spinner/spinner.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/tabwidget/TabWidget.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/tabwidget/main.qml [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/tabwidget/tab.png [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/tabwidget/tabwidget.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/ui-components/ui-components.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/xml/xml.qmlproject [new file with mode: 0644]
examples/declarative/qtquick1/xml/xmlhttprequest/data.xml [new file with mode: 0644]
examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest-example.qml [new file with mode: 0644]
examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest.qmlproject [new file with mode: 0644]
tests/auto/declarative/examples/tst_examples.cpp
tests/auto/qtquick1/examples/data/dummytest.qml [new file with mode: 0644]
tests/auto/qtquick1/examples/data/webbrowser/webbrowser.qml [new file with mode: 0644]
tests/auto/qtquick1/examples/examples.pro [new file with mode: 0644]
tests/auto/qtquick1/examples/tst_examples.cpp [new file with mode: 0644]
tests/auto/qtquick1/qtquick1.pro

index 33762fe..cde19b5 100644 (file)
@@ -4,7 +4,5 @@ SUBDIRS += \
     imageprovider \
     plugins \
     networkaccessmanagerfactory \
-    qwidgets \
-    qgraphicslayouts \
     referenceexamples
 
diff --git a/examples/declarative/cppextensions/qwidgets/qwidgets.pro b/examples/declarative/cppextensions/qwidgets/qwidgets.pro
deleted file mode 100644 (file)
index d7e6f93..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-TEMPLATE = lib
-CONFIG += qt plugin
-QT += declarative
-
-DESTDIR = QWidgets
-TARGET = qmlqwidgetsplugin
-
-SOURCES += qwidgets.cpp
-
-sources.files += qwidgets.pro qwidgets.cpp qwidgets.qml
-sources.path += $$[QT_INSTALL_EXAMPLES]/qtdeclarative/declarative/plugins
-target.path += $$[QT_INSTALL_EXAMPLES]/qtdeclarative/declarative/plugins
-
-INSTALLS += sources target
-
-symbian:{
-    CONFIG += qt_example
-    TARGET.EPOCALLOWDLLDATA = 1
-
-    importFiles.files = QWidgets/qmlqwidgetsplugin.dll QWidgets/qmldir
-    importFiles.path = QWidgets
-
-    DEPLOYMENT += importFiles
-}
-maemo5: CONFIG += qt_example
diff --git a/examples/declarative/qtquick1.pro b/examples/declarative/qtquick1.pro
new file mode 100644 (file)
index 0000000..e441d85
--- /dev/null
@@ -0,0 +1,32 @@
+TEMPLATE = subdirs
+
+# These examples contain some C++ and need to be built
+SUBDIRS = \
+   cppextensions \
+   modelviews \
+   tutorials
+
+# OpenGL shader examples requires opengl and they contain some C++ and need to be built
+contains(QT_CONFIG, opengl): SUBDIRS += shadereffects
+
+# plugins uses a 'Time' class that conflicts with symbian e32std.h also defining a class of the same name
+symbian:SUBDIRS -= plugins
+
+# These examples contain no C++ and can simply be copied
+sources.files = \
+   animation \
+   cppextensions \
+   i18n \
+   imageelements \
+   keyinteraction \
+   positioners \
+   sqllocalstorage \
+   text \
+   threading \
+   touchinteraction \
+   toys \
+   ui-components \
+   xml
+
+sources.path = $$[QT_INSTALL_EXAMPLES]/declarative
+INSTALLS += sources
diff --git a/examples/declarative/qtquick1/README b/examples/declarative/qtquick1/README
new file mode 100644 (file)
index 0000000..578c245
--- /dev/null
@@ -0,0 +1,41 @@
+The Qt Declarative module provides the ability to specify and implement
+your user interface declaratively, using the Qt Meta-Object Language (QML). This
+language is very expressive and human readable, and can be used by
+designers to actually implement their UI vision. QML UIs can integrate
+with C++ code in many ways, including being loaded as a part of a C++ UI
+and loading data models from C++ and interacting with them.
+
+The example launcher provided with Qt can be used to explore each of the
+examples in this directory. But most can also be viewed directly with the
+QML viewer utility, without requiring compilation.
+
+Documentation for these examples can be found via the Tutorials and Examples
+link in the main Qt documentation.
+
+
+Finding the Qt Examples and Demos launcher
+==========================================
+
+On Windows:
+
+The launcher can be accessed via the Windows Start menu. Select the menu
+entry entitled "Qt Examples and Demos" entry in the submenu containing
+the Qt tools.
+
+On Mac OS X:
+
+For the binary distribution, the qtdemo executable is installed in the
+/Developer/Applications/Qt directory. For the source distribution, it is
+installed alongside the other Qt tools on the path specified when Qt is
+configured.
+
+On Unix/Linux:
+
+The qtdemo executable is installed alongside the other Qt tools on the path
+specified when Qt is configured.
+
+On all platforms:
+
+The source code for the launcher can be found in the demos/qtdemo directory
+in the Qt package. This example is built at the same time as the Qt libraries,
+tools, examples, and demonstrations.
diff --git a/examples/declarative/qtquick1/animation/basics/color-animation.qml b/examples/declarative/qtquick1/animation/basics/color-animation.qml
new file mode 100644 (file)
index 0000000..2609166
--- /dev/null
@@ -0,0 +1,110 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import Qt.labs.particles 1.0
+
+Item {
+    id: window
+    width: 640; height: 480
+
+    // Let's draw the sky...
+    Rectangle {
+        anchors { left: parent.left; top: parent.top; right: parent.right; bottom: parent.verticalCenter }
+        gradient: Gradient {
+            GradientStop {
+                position: 0.0
+                SequentialAnimation on color {
+                    loops: Animation.Infinite
+                    ColorAnimation { from: "DeepSkyBlue"; to: "#0E1533"; duration: 5000 }
+                    ColorAnimation { from: "#0E1533"; to: "DeepSkyBlue"; duration: 5000 }
+                }
+            }
+            GradientStop {
+                position: 1.0
+                SequentialAnimation on color {
+                    loops: Animation.Infinite
+                    ColorAnimation { from: "SkyBlue"; to: "#437284"; duration: 5000 }
+                    ColorAnimation { from: "#437284"; to: "SkyBlue"; duration: 5000 }
+                }
+            }
+        }
+    }
+
+    // the sun, moon, and stars
+    Item {
+        width: parent.width; height: 2 * parent.height
+        NumberAnimation on rotation { from: 0; to: 360; duration: 10000; loops: Animation.Infinite }
+        Image {
+            source: "images/sun.png"; y: 10; anchors.horizontalCenter: parent.horizontalCenter
+            rotation: -3 * parent.rotation
+        }
+        Image {
+            source: "images/moon.png"; y: parent.height - 74; anchors.horizontalCenter: parent.horizontalCenter
+            rotation: -parent.rotation
+        }
+        Particles {
+            x: 0; y: parent.height/2; width: parent.width; height: parent.height/2
+            source: "images/star.png"; angleDeviation: 360; velocity: 0
+            velocityDeviation: 0; count: parent.width / 10; fadeInDuration: 2800
+            SequentialAnimation on opacity {
+                loops: Animation.Infinite
+                NumberAnimation { from: 0; to: 1; duration: 5000 }
+                NumberAnimation { from: 1; to: 0; duration: 5000 }
+            }
+        }
+    }
+
+    // ...and the ground.
+    Rectangle {
+        anchors { left: parent.left; top: parent.verticalCenter; right: parent.right; bottom: parent.bottom }
+        gradient: Gradient {
+            GradientStop {
+                position: 0.0
+                SequentialAnimation on color {
+                    loops: Animation.Infinite
+                    ColorAnimation { from: "ForestGreen"; to: "#001600"; duration: 5000 }
+                    ColorAnimation { from: "#001600"; to: "ForestGreen"; duration: 5000 }
+                }
+            }
+            GradientStop { position: 1.0; color: "DarkGreen" }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/animation/basics/images/face-smile.png b/examples/declarative/qtquick1/animation/basics/images/face-smile.png
new file mode 100644 (file)
index 0000000..3d66d72
Binary files /dev/null and b/examples/declarative/qtquick1/animation/basics/images/face-smile.png differ
diff --git a/examples/declarative/qtquick1/animation/basics/images/moon.png b/examples/declarative/qtquick1/animation/basics/images/moon.png
new file mode 100644 (file)
index 0000000..9407b2b
Binary files /dev/null and b/examples/declarative/qtquick1/animation/basics/images/moon.png differ
diff --git a/examples/declarative/qtquick1/animation/basics/images/shadow.png b/examples/declarative/qtquick1/animation/basics/images/shadow.png
new file mode 100644 (file)
index 0000000..8270565
Binary files /dev/null and b/examples/declarative/qtquick1/animation/basics/images/shadow.png differ
diff --git a/examples/declarative/qtquick1/animation/basics/images/star.png b/examples/declarative/qtquick1/animation/basics/images/star.png
new file mode 100644 (file)
index 0000000..27ef924
Binary files /dev/null and b/examples/declarative/qtquick1/animation/basics/images/star.png differ
diff --git a/examples/declarative/qtquick1/animation/basics/images/sun.png b/examples/declarative/qtquick1/animation/basics/images/sun.png
new file mode 100644 (file)
index 0000000..7713ca5
Binary files /dev/null and b/examples/declarative/qtquick1/animation/basics/images/sun.png differ
diff --git a/examples/declarative/qtquick1/animation/basics/property-animation.qml b/examples/declarative/qtquick1/animation/basics/property-animation.qml
new file mode 100644 (file)
index 0000000..f678280
--- /dev/null
@@ -0,0 +1,105 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Item {
+    id: window
+    width: 320; height: 480
+
+    // Let's draw the sky...
+    Rectangle {
+        anchors { left: parent.left; top: parent.top; right: parent.right; bottom: parent.verticalCenter }
+        gradient: Gradient {
+            GradientStop { position: 0.0; color: "DeepSkyBlue" }
+            GradientStop { position: 1.0; color: "LightSkyBlue" }
+        }
+    }
+
+    // ...and the ground.
+    Rectangle {
+        anchors { left: parent.left; top: parent.verticalCenter; right: parent.right; bottom: parent.bottom }
+        gradient: Gradient {
+            GradientStop { position: 0.0; color: "ForestGreen" }
+            GradientStop { position: 1.0; color: "DarkGreen" }
+        }
+    }
+
+    // The shadow for the smiley face
+    Image {
+        anchors.horizontalCenter: parent.horizontalCenter
+        y: smiley.minHeight + 58
+        source: "images/shadow.png"
+
+        // The scale property depends on the y position of the smiley face.
+        scale: smiley.y * 0.5 / (smiley.minHeight - smiley.maxHeight)
+    }
+
+    Image {
+        id: smiley
+        property int maxHeight: window.height / 3
+        property int minHeight: 2 * window.height / 3
+
+        anchors.horizontalCenter: parent.horizontalCenter
+        y: minHeight
+        source: "images/face-smile.png"
+
+        // Animate the y property. Setting loops to Animation.Infinite makes the
+        // animation repeat indefinitely, otherwise it would only run once.
+        SequentialAnimation on y {
+            loops: Animation.Infinite
+
+            // Move from minHeight to maxHeight in 300ms, using the OutExpo easing function
+            NumberAnimation {
+                from: smiley.minHeight; to: smiley.maxHeight
+                easing.type: Easing.OutExpo; duration: 300
+            }
+
+            // Then move back to minHeight in 1 second, using the OutBounce easing function
+            NumberAnimation {
+                from: smiley.maxHeight; to: smiley.minHeight
+                easing.type: Easing.OutBounce; duration: 1000
+            }
+
+            // Then pause for 500ms
+            PauseAnimation { duration: 500 }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/animation/behaviors/SideRect.qml b/examples/declarative/qtquick1/animation/behaviors/SideRect.qml
new file mode 100644 (file)
index 0000000..d704a22
--- /dev/null
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: myRect
+
+    property string text
+
+    width: 75; height: 50
+    radius: 6
+    color: "#646464"
+    border.width: 4; border.color: "white"
+
+    MouseArea {
+        anchors.fill: parent
+        hoverEnabled: true
+        onEntered: {
+            focusRect.x = myRect.x
+            focusRect.y = myRect.y
+            focusRect.text = myRect.text
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/animation/behaviors/behavior-example.qml b/examples/declarative/qtquick1/animation/behaviors/behavior-example.qml
new file mode 100644 (file)
index 0000000..55c912a
--- /dev/null
@@ -0,0 +1,118 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    width: 600; height: 400
+    color: "#343434"
+
+    Rectangle {
+        anchors.centerIn: parent
+        width: 200; height: 200
+        radius: 30
+        color: "transparent"
+        border.width: 4; border.color: "white"
+
+
+        SideRect {
+            id: leftRect
+            anchors { verticalCenter: parent.verticalCenter; horizontalCenter: parent.left }
+            text: "Left"
+        }
+
+        SideRect {
+            id: rightRect
+            anchors { verticalCenter: parent.verticalCenter; horizontalCenter: parent.right }
+            text: "Right"
+        }
+
+        SideRect {
+            id: topRect
+            anchors { verticalCenter: parent.top; horizontalCenter: parent.horizontalCenter }
+            text: "Top"
+        }
+
+        SideRect {
+            id: bottomRect
+            anchors { verticalCenter: parent.bottom; horizontalCenter: parent.horizontalCenter }
+            text: "Bottom"
+        }
+
+
+        Rectangle {
+            id: focusRect
+
+            property string text
+
+            x: 62; y: 75; width: 75; height: 50
+            radius: 6
+            border.width: 4; border.color: "white"
+            color: "firebrick"
+
+            // Set an 'elastic' behavior on the focusRect's x property.
+            Behavior on x {
+                NumberAnimation { easing.type: Easing.OutElastic; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 }
+            }
+
+            // Set an 'elastic' behavior on the focusRect's y property.
+            Behavior on y {
+                NumberAnimation { easing.type: Easing.OutElastic; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 }
+            }
+
+            Text {
+                id: focusText
+                text: focusRect.text
+                anchors.centerIn: parent
+                color: "white"
+                font.pixelSize: 16; font.bold: true
+
+                // Set a behavior on the focusText's x property:
+                // Set the opacity to 0, set the new text value, then set the opacity back to 1.
+                Behavior on text {
+                    SequentialAnimation {
+                        NumberAnimation { target: focusText; property: "opacity"; to: 0; duration: 150 }
+                        NumberAnimation { target: focusText; property: "opacity"; to: 1; duration: 150 }
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/animation/behaviors/wigglytext.qml b/examples/declarative/qtquick1/animation/behaviors/wigglytext.qml
new file mode 100644 (file)
index 0000000..0a2d028
--- /dev/null
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: container
+
+    property string text: "Drag this text..."
+    property bool animated: true
+
+    width: 640; height: 480; color: "#474747"; focus: true
+
+    Keys.onPressed: {
+        if (event.key == Qt.Key_Delete || event.key == Qt.Key_Backspace)
+            container.remove()
+        else if (event.text != "") {
+            container.append(event.text)
+        }
+    }
+
+    function append(text) {
+        container.animated = false
+        var lastLetter = container.children[container.children.length - 1]
+        var newLetter = letterComponent.createObject(container)
+        newLetter.text = text
+        newLetter.follow = lastLetter
+        container.animated = true
+    }
+
+    function remove() {
+        if (container.children.length)
+            container.children[container.children.length - 1].destroy()
+    }
+
+    function doLayout() {
+        var follow = null
+        for (var i = 0; i < container.text.length; ++i) {
+            var newLetter = letterComponent.createObject(container)
+            newLetter.text = container.text[i]
+            newLetter.follow = follow
+            follow = newLetter
+        }
+    }
+
+    Component {
+        id: letterComponent
+        Text {
+            id: letter
+            property variant follow
+
+            x: follow ? follow.x + follow.width : container.width / 3
+            y: follow ? follow.y : container.height / 2
+
+            font.pixelSize: 40; font.bold: true
+            color: "#999999"; styleColor: "#222222"; style: Text.Raised
+
+            MouseArea {
+                anchors.fill: parent
+                drag.target: letter; drag.axis: Drag.XandYAxis
+                onPressed: letter.color = "#dddddd"
+                onReleased: letter.color = "#999999"
+            }
+
+            Behavior on x { enabled: container.animated; SpringAnimation { spring: 3; damping: 0.3; mass: 1.0 } }
+            Behavior on y { enabled: container.animated; SpringAnimation { spring: 3; damping: 0.3; mass: 1.0 } }
+        }
+    }
+
+    Component.onCompleted: doLayout()
+}
diff --git a/examples/declarative/qtquick1/animation/easing/content/QuitButton.qml b/examples/declarative/qtquick1/animation/easing/content/QuitButton.qml
new file mode 100644 (file)
index 0000000..39f8f77
--- /dev/null
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+Image {
+    source: "quit.png"
+    scale: quitMouse.pressed ? 0.8 : 1.0
+    smooth: quitMouse.pressed
+    MouseArea {
+        id: quitMouse
+        anchors.fill: parent
+        anchors.margins: -10
+        onClicked: Qt.quit()
+    }
+}
diff --git a/examples/declarative/qtquick1/animation/easing/content/quit.png b/examples/declarative/qtquick1/animation/easing/content/quit.png
new file mode 100644 (file)
index 0000000..b822057
Binary files /dev/null and b/examples/declarative/qtquick1/animation/easing/content/quit.png differ
diff --git a/examples/declarative/qtquick1/animation/easing/easing.qml b/examples/declarative/qtquick1/animation/easing/easing.qml
new file mode 100644 (file)
index 0000000..1092ee5
--- /dev/null
@@ -0,0 +1,159 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import "content"
+
+Rectangle {
+    id: window
+    width: 600; height: 460; color: "#232323"
+
+    ListModel {
+        id: easingTypes
+        ListElement { name: "Easing.Linear"; type: Easing.Linear; ballColor: "DarkRed" }
+        ListElement { name: "Easing.InQuad"; type: Easing.InQuad; ballColor: "IndianRed" }
+        ListElement { name: "Easing.OutQuad"; type: Easing.OutQuad; ballColor: "Salmon" }
+        ListElement { name: "Easing.InOutQuad"; type: Easing.InOutQuad; ballColor: "Tomato" }
+        ListElement { name: "Easing.OutInQuad"; type: Easing.OutInQuad; ballColor: "DarkOrange" }
+        ListElement { name: "Easing.InCubic"; type: Easing.InCubic; ballColor: "Gold" }
+        ListElement { name: "Easing.OutCubic"; type: Easing.OutCubic; ballColor: "Yellow" }
+        ListElement { name: "Easing.InOutCubic"; type: Easing.InOutCubic; ballColor: "PeachPuff" }
+        ListElement { name: "Easing.OutInCubic"; type: Easing.OutInCubic; ballColor: "Thistle" }
+        ListElement { name: "Easing.InQuart"; type: Easing.InQuart; ballColor: "Orchid" }
+        ListElement { name: "Easing.OutQuart"; type: Easing.OutQuart; ballColor: "Purple" }
+        ListElement { name: "Easing.InOutQuart"; type: Easing.InOutQuart; ballColor: "SlateBlue" }
+        ListElement { name: "Easing.OutInQuart"; type: Easing.OutInQuart; ballColor: "Chartreuse" }
+        ListElement { name: "Easing.InQuint"; type: Easing.InQuint; ballColor: "LimeGreen" }
+        ListElement { name: "Easing.OutQuint"; type: Easing.OutQuint; ballColor: "SeaGreen" }
+        ListElement { name: "Easing.InOutQuint"; type: Easing.InOutQuint; ballColor: "DarkGreen" }
+        ListElement { name: "Easing.OutInQuint"; type: Easing.OutInQuint; ballColor: "Olive" }
+        ListElement { name: "Easing.InSine"; type: Easing.InSine; ballColor: "DarkSeaGreen" }
+        ListElement { name: "Easing.OutSine"; type: Easing.OutSine; ballColor: "Teal" }
+        ListElement { name: "Easing.InOutSine"; type: Easing.InOutSine; ballColor: "Turquoise" }
+        ListElement { name: "Easing.OutInSine"; type: Easing.OutInSine; ballColor: "SteelBlue" }
+        ListElement { name: "Easing.InExpo"; type: Easing.InExpo; ballColor: "SkyBlue" }
+        ListElement { name: "Easing.OutExpo"; type: Easing.OutExpo; ballColor: "RoyalBlue" }
+        ListElement { name: "Easing.InOutExpo"; type: Easing.InOutExpo; ballColor: "MediumBlue" }
+        ListElement { name: "Easing.OutInExpo"; type: Easing.OutInExpo; ballColor: "MidnightBlue" }
+        ListElement { name: "Easing.InCirc"; type: Easing.InCirc; ballColor: "CornSilk" }
+        ListElement { name: "Easing.OutCirc"; type: Easing.OutCirc; ballColor: "Bisque" }
+        ListElement { name: "Easing.InOutCirc"; type: Easing.InOutCirc; ballColor: "RosyBrown" }
+        ListElement { name: "Easing.OutInCirc"; type: Easing.OutInCirc; ballColor: "SandyBrown" }
+        ListElement { name: "Easing.InElastic"; type: Easing.InElastic; ballColor: "DarkGoldenRod" }
+        ListElement { name: "Easing.OutElastic"; type: Easing.OutElastic; ballColor: "Chocolate" }
+        ListElement { name: "Easing.InOutElastic"; type: Easing.InOutElastic; ballColor: "SaddleBrown" }
+        ListElement { name: "Easing.OutInElastic"; type: Easing.OutInElastic; ballColor: "Brown" }
+        ListElement { name: "Easing.InBack"; type: Easing.InBack; ballColor: "Maroon" }
+        ListElement { name: "Easing.OutBack"; type: Easing.OutBack; ballColor: "LavenderBlush" }
+        ListElement { name: "Easing.InOutBack"; type: Easing.InOutBack; ballColor: "MistyRose" }
+        ListElement { name: "Easing.OutInBack"; type: Easing.OutInBack; ballColor: "Gainsboro" }
+        ListElement { name: "Easing.OutBounce"; type: Easing.OutBounce; ballColor: "Silver" }
+        ListElement { name: "Easing.InBounce"; type: Easing.InBounce; ballColor: "DimGray" }
+        ListElement { name: "Easing.InOutBounce"; type: Easing.InOutBounce; ballColor: "SlateGray" }
+        ListElement { name: "Easing.OutInBounce"; type: Easing.OutInBounce; ballColor: "DarkSlateGray" }
+    }
+
+    Component {
+        id: delegate
+
+        Item {
+            height: 56; width: window.width
+
+            Text { text: name; anchors.centerIn: parent; color: "White" }
+
+            Rectangle {
+                id: slot1; color: "#121212"; x: 30; height: 46; width: 46
+                border.color: "#343434"; border.width: 1; radius: 12
+                anchors.verticalCenter: parent.verticalCenter
+            }
+
+            Rectangle {
+                id: slot2; color: "#121212"; x: window.width - 76; height: 46; width: 46
+                border.color: "#343434"; border.width: 1; radius: 12
+                anchors.verticalCenter: parent.verticalCenter
+            }
+
+            Rectangle {
+                id: rect; x: 30; color: "#454545"
+                border.color: "White"; border.width: 2
+                height: 46; width: 46; radius: 12
+                anchors.verticalCenter: parent.verticalCenter
+
+                MouseArea {
+                    onClicked: if (rect.state == '') rect.state = "right"; else rect.state = ''
+                    anchors.fill: parent
+                    anchors.margins: -5 // Make MouseArea bigger than the rectangle, itself
+                }
+
+                states : State {
+                    name: "right"
+                    PropertyChanges { target: rect; x: window.width - 76; color: ballColor }
+                }
+
+                transitions: Transition {
+                    NumberAnimation { properties: "x"; easing.type: type; duration: 1000 }
+                    ColorAnimation { properties: "color"; easing.type: type; duration: 1000 }
+                }
+            }
+        }
+    }
+
+    Flickable {
+        anchors.fill: parent
+        contentHeight: layout.height+50
+        Rectangle {
+            id: titlePane
+            color: "#444444"
+            height: 35
+            anchors { top: parent.top; left: parent.left; right: parent.right }
+            QuitButton {
+                id: quitButton
+                anchors.verticalCenter: parent.verticalCenter
+                anchors.right: parent.right
+                anchors.rightMargin: 10
+            }
+        }
+        Column {
+            id: layout
+            anchors { top: titlePane.bottom; topMargin: 10; left: parent.left; right: parent.right }
+            Repeater { model: easingTypes; delegate: delegate }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/animation/easing/easing.qmlproject b/examples/declarative/qtquick1/animation/easing/easing.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/animation/states/qt-logo.png b/examples/declarative/qtquick1/animation/states/qt-logo.png
new file mode 100644 (file)
index 0000000..14ddf2a
Binary files /dev/null and b/examples/declarative/qtquick1/animation/states/qt-logo.png differ
diff --git a/examples/declarative/qtquick1/animation/states/states.qml b/examples/declarative/qtquick1/animation/states/states.qml
new file mode 100644 (file)
index 0000000..9af1e12
--- /dev/null
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: page
+    width: 640; height: 480
+    color: "#343434"
+
+    Image {
+        id: userIcon
+        x: topLeftRect.x; y: topLeftRect.y
+        source: "qt-logo.png"
+    }
+
+    Rectangle {
+        id: topLeftRect
+
+        anchors { left: parent.left; top: parent.top; leftMargin: 10; topMargin: 20 }
+        width: 46; height: 54
+        color: "Transparent"; border.color: "Gray"; radius: 6
+
+        // Clicking in here sets the state to the default state, returning the image to
+        // its initial position
+        MouseArea { anchors.fill: parent; onClicked: page.state = '' }
+    }
+
+    Rectangle {
+        id: middleRightRect
+
+        anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 20 }
+        width: 46; height: 54
+        color: "Transparent"; border.color: "Gray"; radius: 6
+
+        // Clicking in here sets the state to 'middleRight'
+        MouseArea { anchors.fill: parent; onClicked: page.state = 'middleRight' }
+    }
+
+    Rectangle {
+        id: bottomLeftRect
+
+        anchors { left: parent.left; bottom: parent.bottom; leftMargin: 10; bottomMargin: 20 }
+        width: 46; height: 54
+        color: "Transparent"; border.color: "Gray"; radius: 6
+
+        // Clicking in here sets the state to 'bottomLeft'
+        MouseArea { anchors.fill: parent; onClicked: page.state = 'bottomLeft' }
+    }
+
+    states: [
+        // In state 'middleRight', move the image to middleRightRect
+        State {
+            name: "middleRight"
+            PropertyChanges { target: userIcon; x: middleRightRect.x; y: middleRightRect.y }
+        },
+
+        // In state 'bottomLeft', move the image to bottomLeftRect
+        State {
+            name: "bottomLeft"
+            PropertyChanges { target: userIcon; x: bottomLeftRect.x; y: bottomLeftRect.y  }
+        }
+    ]
+}
diff --git a/examples/declarative/qtquick1/animation/states/states.qmlproject b/examples/declarative/qtquick1/animation/states/states.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/animation/states/transitions.qml b/examples/declarative/qtquick1/animation/states/transitions.qml
new file mode 100644 (file)
index 0000000..3051c85
--- /dev/null
@@ -0,0 +1,130 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+/*
+    This is exactly the same as states.qml, except that we have appended
+    a set of transitions to apply animations when the item changes
+    between each state.
+*/
+
+Rectangle {
+    id: page
+    width: 640; height: 480
+    color: "#343434"
+
+    Image {
+        id: userIcon
+        x: topLeftRect.x; y: topLeftRect.y
+        source: "qt-logo.png"
+    }
+
+    Rectangle {
+        id: topLeftRect
+
+        anchors { left: parent.left; top: parent.top; leftMargin: 10; topMargin: 20 }
+        width: 46; height: 54
+        color: "Transparent"; border.color: "Gray"; radius: 6
+
+        // Clicking in here sets the state to the default state, returning the image to
+        // its initial position
+        MouseArea { anchors.fill: parent; onClicked: page.state = '' }
+    }
+
+    Rectangle {
+        id: middleRightRect
+
+        anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 20 }
+        width: 46; height: 54
+        color: "Transparent"; border.color: "Gray"; radius: 6
+
+        // Clicking in here sets the state to 'middleRight'
+        MouseArea { anchors.fill: parent; onClicked: page.state = 'middleRight' }
+    }
+
+    Rectangle {
+        id: bottomLeftRect
+
+        anchors { left: parent.left; bottom: parent.bottom; leftMargin: 10; bottomMargin: 20 }
+        width: 46; height: 54
+        color: "Transparent"; border.color: "Gray"; radius: 6
+
+        // Clicking in here sets the state to 'bottomLeft'
+        MouseArea { anchors.fill: parent; onClicked: page.state = 'bottomLeft' }
+    }
+
+    states: [
+        // In state 'middleRight', move the image to middleRightRect
+        State {
+            name: "middleRight"
+            PropertyChanges { target: userIcon; x: middleRightRect.x; y: middleRightRect.y }
+        },
+
+        // In state 'bottomLeft', move the image to bottomLeftRect
+        State {
+            name: "bottomLeft"
+            PropertyChanges { target: userIcon; x: bottomLeftRect.x; y: bottomLeftRect.y  }
+        }
+    ]
+
+    // Transitions define how the properties change when the item moves between each state
+    transitions: [
+
+        // When transitioning to 'middleRight' move x,y over a duration of 1 second,
+        // with OutBounce easing function.
+        Transition {
+            from: "*"; to: "middleRight"
+            NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce; duration: 1000 }
+        },
+
+        // When transitioning to 'bottomLeft' move x,y over a duration of 2 seconds,
+        // with InOutQuad easing function.
+        Transition {
+            from: "*"; to: "bottomLeft"
+            NumberAnimation { properties: "x,y"; easing.type: Easing.InOutQuad; duration: 2000 }
+        },
+
+        // For any other state changes move x,y linearly over duration of 200ms.
+        Transition {
+            NumberAnimation { properties: "x,y"; duration: 200 }
+        }
+    ]
+}
diff --git a/examples/declarative/qtquick1/cppextensions/cppextensions.pro b/examples/declarative/qtquick1/cppextensions/cppextensions.pro
new file mode 100644 (file)
index 0000000..33762fe
--- /dev/null
@@ -0,0 +1,10 @@
+TEMPLATE = subdirs
+
+SUBDIRS += \
+    imageprovider \
+    plugins \
+    networkaccessmanagerfactory \
+    qwidgets \
+    qgraphicslayouts \
+    referenceexamples
+
diff --git a/examples/declarative/qtquick1/cppextensions/cppextensions.qmlproject b/examples/declarative/qtquick1/cppextensions/cppextensions.qmlproject
new file mode 100644 (file)
index 0000000..6b36284
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    importPaths: [ "plugins" ]
+}
diff --git a/examples/declarative/qtquick1/cppextensions/imageprovider/ImageProviderCore/qmldir b/examples/declarative/qtquick1/cppextensions/imageprovider/ImageProviderCore/qmldir
new file mode 100644 (file)
index 0000000..6be88bc
--- /dev/null
@@ -0,0 +1,2 @@
+plugin qmlimageproviderplugin
+
diff --git a/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider-example.qml b/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider-example.qml
new file mode 100644 (file)
index 0000000..e25b420
--- /dev/null
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import QtQuick 1.0
+import "ImageProviderCore" // import the plugin that registers the color image provider
+
+//![0]
+Column {
+    Image { source: "image://colors/yellow" }
+    Image { source: "image://colors/red" }
+}
+//![0]
+
diff --git a/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.cpp b/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.cpp
new file mode 100644 (file)
index 0000000..7f52aa1
--- /dev/null
@@ -0,0 +1,110 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <qdeclarativeextensionplugin.h>
+
+#include <qdeclarativeengine.h>
+#include <qdeclarative.h>
+#include <qdeclarativeitem.h>
+#include <qdeclarativeimageprovider.h>
+#include <QtQuick1/QDeclarativeView>
+#include <QImage>
+#include <QPainter>
+
+//![0]
+class ColorImageProvider : public QDeclarativeImageProvider
+{
+public:
+    ColorImageProvider()
+        : QDeclarativeImageProvider(QDeclarativeImageProvider::Pixmap)
+    {
+    }
+
+    QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize)
+    {
+        int width = 100;
+        int height = 50;
+
+        if (size)
+            *size = QSize(width, height);
+        QPixmap pixmap(requestedSize.width() > 0 ? requestedSize.width() : width,
+                       requestedSize.height() > 0 ? requestedSize.height() : height);
+        pixmap.fill(QColor(id).rgba());
+//![0]
+
+        // write the color name
+        QPainter painter(&pixmap);
+        QFont f = painter.font();
+        f.setPixelSize(20);
+        painter.setFont(f);
+        painter.setPen(Qt::black);
+        if (requestedSize.isValid())
+            painter.scale(requestedSize.width() / width, requestedSize.height() / height);
+        painter.drawText(QRectF(0, 0, width, height), Qt::AlignCenter, id);
+
+//![1]
+        return pixmap;
+    }
+};
+//![1]
+
+
+class ImageProviderExtensionPlugin : public QDeclarativeExtensionPlugin
+{
+    Q_OBJECT
+public:
+    void registerTypes(const char *uri)
+    {
+        Q_UNUSED(uri);
+    }
+
+    void initializeEngine(QDeclarativeEngine *engine, const char *uri)
+    {
+        Q_UNUSED(uri);
+        engine->addImageProvider("colors", new ColorImageProvider);
+    }
+
+};
+
+#include "imageprovider.moc"
+
+Q_EXPORT_PLUGIN(ImageProviderExtensionPlugin);
+
diff --git a/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.pro b/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.pro
new file mode 100644 (file)
index 0000000..6f317b4
--- /dev/null
@@ -0,0 +1,28 @@
+TEMPLATE = lib
+CONFIG += qt plugin
+QT += declarative qtquick1
+
+DESTDIR = ImageProviderCore
+TARGET  = qmlimageproviderplugin
+
+SOURCES += imageprovider.cpp
+
+sources.files = $$SOURCES imageprovider.qml imageprovider.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/imageprovider
+
+target.path = $$[QT_INSTALL_EXAMPLES]/declarative/imageprovider/ImageProviderCore
+
+ImageProviderCore_sources.files = \
+    ImageProviderCore/qmldir
+ImageProviderCore_sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/imageprovider/ImageProviderCore
+
+INSTALLS = sources ImageProviderCore_sources target
+
+symbian:{
+    include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
+    TARGET.EPOCALLOWDLLDATA = 1
+
+    importFiles.sources = ImageProviderCore/qmlimageproviderplugin.dll ImageProviderCore/qmldir
+    importFiles.path = ImageProviderCore
+    DEPLOYMENT = importFiles
+}
diff --git a/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.qmlproject b/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/main.cpp b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/main.cpp
new file mode 100644 (file)
index 0000000..1be3379
--- /dev/null
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QApplication>
+#include <QNetworkAccessManager>
+#include <QNetworkProxy>
+
+#include <QDeclarativeEngine>
+#include <QDeclarativeNetworkAccessManagerFactory>
+#include <QtQuick1/QDeclarativeView>
+
+
+/*
+   This example illustrates using a QDeclarativeNetworkAccessManagerFactory to
+   create a QNetworkAccessManager with a proxy.
+
+   Usage:
+     networkaccessmanagerfactory [-host <proxy> -port <port>] [file]
+*/
+
+static QString proxyHost;
+static int proxyPort = 0;
+
+class MyNetworkAccessManagerFactory : public QDeclarativeNetworkAccessManagerFactory
+{
+public:
+    virtual QNetworkAccessManager *create(QObject *parent);
+};
+
+QNetworkAccessManager *MyNetworkAccessManagerFactory::create(QObject *parent)
+{
+    QNetworkAccessManager *nam = new QNetworkAccessManager(parent);
+    if (!proxyHost.isEmpty()) {
+        qDebug() << "Created QNetworkAccessManager using proxy" << (proxyHost + ":" + QString::number(proxyPort));
+        QNetworkProxy proxy(QNetworkProxy::HttpCachingProxy, proxyHost, proxyPort);
+        nam->setProxy(proxy);
+    }
+
+    return nam;
+}
+
+int main(int argc, char ** argv)
+{
+    QUrl source("qrc:view.qml");
+
+    QApplication app(argc, argv);
+
+    for (int i = 1; i < argc; ++i) {
+        QString arg(argv[i]);
+        if (arg == "-host" && i < argc-1) {
+            proxyHost = argv[++i];
+        } else if (arg == "-port" && i < argc-1) {
+            arg = argv[++i];
+            proxyPort = arg.toInt();
+        } else if (arg[0] != '-') {
+            source = QUrl::fromLocalFile(arg);
+        } else {
+            qWarning() << "Usage: networkaccessmanagerfactory [-host <proxy> -port <port>] [file]";
+            exit(1);
+        }
+    }
+
+    QDeclarativeView view;
+    view.engine()->setNetworkAccessManagerFactory(new MyNetworkAccessManagerFactory);
+
+    view.setSource(source);
+    view.show();
+
+    return app.exec();
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.pro b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.pro
new file mode 100644 (file)
index 0000000..4eebdd2
--- /dev/null
@@ -0,0 +1,9 @@
+TEMPLATE = app
+TARGET = networkaccessmanagerfactory
+DEPENDPATH += .
+INCLUDEPATH += .
+QT += declarative network qtquick1
+
+# Input
+SOURCES += main.cpp
+RESOURCES += networkaccessmanagerfactory.qrc
diff --git a/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qmlproject b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qrc b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qrc
new file mode 100644 (file)
index 0000000..17e9301
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>view.qml</file>
+</qresource>
+</RCC>
diff --git a/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/view.qml b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/view.qml
new file mode 100644 (file)
index 0000000..e002ef6
--- /dev/null
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Image {
+    width: 100
+    height: 100
+    source: "http://qt.nokia.com/logo.png"
+}
diff --git a/examples/declarative/qtquick1/cppextensions/plugins/README b/examples/declarative/qtquick1/cppextensions/plugins/README
new file mode 100644 (file)
index 0000000..95e0eea
--- /dev/null
@@ -0,0 +1,9 @@
+This example shows a module "com.nokia.TimeExample" that is implemented
+by a C++ plugin (providing the "Time" type), and by QML files (providing the
+"Clock" type).
+
+To run:
+
+  make install
+  qmlviewer -I . plugins.qml
+
diff --git a/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/Clock.qml b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/Clock.qml
new file mode 100644 (file)
index 0000000..465f164
--- /dev/null
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: clock
+    width: 200; height: 200; color: "gray"
+
+    property alias city: cityLabel.text
+    property variant hours
+    property variant minutes
+    property variant shift : 0
+
+    Image { id: background; source: "clock.png" }
+
+    Image {
+        x: 92.5; y: 27
+        source: "hour.png"
+        smooth: true
+        transform: Rotation {
+            id: hourRotation
+            origin.x: 7.5; origin.y: 73;
+            angle: (clock.hours * 30) + (clock.minutes * 0.5)
+            Behavior on angle {
+                SpringAnimation{ spring: 2; damping: 0.2; modulus: 360 }
+            }
+        }
+    }
+
+    Image {
+        x: 93.5; y: 17
+        source: "minute.png"
+        smooth: true
+        transform: Rotation {
+            id: minuteRotation
+            origin.x: 6.5; origin.y: 83;
+            angle: clock.minutes * 6
+            Behavior on angle {
+                SpringAnimation{ spring: 2; damping: 0.2; modulus: 360 }
+            }
+        }
+    }
+
+    Image {
+        anchors.centerIn: background; source: "center.png"
+    }
+
+    Text {
+        id: cityLabel; font.bold: true; font.pixelSize: 14; y:200; color: "white"
+        anchors.horizontalCenter: parent.horizontalCenter
+    }
+}
diff --git a/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/center.png b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/center.png
new file mode 100644 (file)
index 0000000..7fbd802
Binary files /dev/null and b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/center.png differ
diff --git a/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/clock.png b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/clock.png
new file mode 100644 (file)
index 0000000..462edac
Binary files /dev/null and b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/clock.png differ
diff --git a/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/hour.png b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/hour.png
new file mode 100644 (file)
index 0000000..f8061a1
Binary files /dev/null and b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/hour.png differ
diff --git a/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/minute.png b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/minute.png
new file mode 100644 (file)
index 0000000..1297ec7
Binary files /dev/null and b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/minute.png differ
diff --git a/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/qmldir b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/qmldir
new file mode 100644 (file)
index 0000000..e1288cf
--- /dev/null
@@ -0,0 +1,2 @@
+Clock 1.0 Clock.qml
+plugin qmlqtimeexampleplugin
diff --git a/examples/declarative/qtquick1/cppextensions/plugins/plugin.cpp b/examples/declarative/qtquick1/cppextensions/plugins/plugin.cpp
new file mode 100644 (file)
index 0000000..056e093
--- /dev/null
@@ -0,0 +1,157 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtDeclarative/QDeclarativeExtensionPlugin>
+#include <QtDeclarative/qdeclarative.h>
+#include <qdebug.h>
+#include <qdatetime.h>
+#include <qbasictimer.h>
+#include <qapplication.h>
+
+// Implements a "TimeModel" class with hour and minute properties
+// that change on-the-minute yet efficiently sleep the rest
+// of the time.
+
+class MinuteTimer : public QObject
+{
+    Q_OBJECT
+public:
+    MinuteTimer(QObject *parent) : QObject(parent)
+    {
+    }
+
+    void start()
+    {
+        if (!timer.isActive()) {
+            time = QTime::currentTime();
+            timer.start(60000-time.second()*1000, this);
+        }
+    }
+
+    void stop()
+    {
+        timer.stop();
+    }
+
+    int hour() const { return time.hour(); }
+    int minute() const { return time.minute(); }
+
+signals:
+    void timeChanged();
+
+protected:
+    void timerEvent(QTimerEvent *)
+    {
+        QTime now = QTime::currentTime();
+        if (now.second() == 59 && now.minute() == time.minute() && now.hour() == time.hour()) {
+            // just missed time tick over, force it, wait extra 0.5 seconds
+            time.addSecs(60);
+            timer.start(60500, this);
+        } else {
+            time = now;
+            timer.start(60000-time.second()*1000, this);
+        }
+        emit timeChanged();
+    }
+
+private:
+    QTime time;
+    QBasicTimer timer;
+};
+
+//![0]
+class TimeModel : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(int hour READ hour NOTIFY timeChanged)
+    Q_PROPERTY(int minute READ minute NOTIFY timeChanged)
+//![0]
+
+public:
+    TimeModel(QObject *parent=0) : QObject(parent)
+    {
+        if (++instances == 1) {
+            if (!timer)
+                timer = new MinuteTimer(qApp);
+            connect(timer, SIGNAL(timeChanged()), this, SIGNAL(timeChanged()));
+            timer->start();
+        }
+    }
+
+    ~TimeModel()
+    {
+        if (--instances == 0) {
+            timer->stop();
+        }
+    }
+
+    int minute() const { return timer->minute(); }
+    int hour() const { return timer->hour(); }
+
+signals:
+    void timeChanged();
+
+private:
+    QTime t;
+    static MinuteTimer *timer;
+    static int instances;
+};
+
+int TimeModel::instances=0;
+MinuteTimer *TimeModel::timer=0;
+
+//![plugin]
+class QExampleQmlPlugin : public QDeclarativeExtensionPlugin
+{
+    Q_OBJECT
+public:
+    void registerTypes(const char *uri)
+    {
+        Q_ASSERT(uri == QLatin1String("com.nokia.TimeExample"));
+        qmlRegisterType<TimeModel>(uri, 1, 0, "Time");
+    }
+};
+//![plugin]
+
+#include "plugin.moc"
+
+//![export]
+Q_EXPORT_PLUGIN2(qmlqtimeexampleplugin, QExampleQmlPlugin);
+//![export]
diff --git a/examples/declarative/qtquick1/cppextensions/plugins/plugins.pro b/examples/declarative/qtquick1/cppextensions/plugins/plugins.pro
new file mode 100644 (file)
index 0000000..b7610a8
--- /dev/null
@@ -0,0 +1,29 @@
+TEMPLATE = lib
+CONFIG += qt plugin
+QT += declarative
+
+DESTDIR = com/nokia/TimeExample
+TARGET  = qmlqtimeexampleplugin
+
+SOURCES += plugin.cpp
+
+qdeclarativesources.files += \
+    com/nokia/TimeExample/qmldir \
+    com/nokia/TimeExample/center.png \
+    com/nokia/TimeExample/clock.png \
+    com/nokia/TimeExample/Clock.qml \
+    com/nokia/TimeExample/hour.png \
+    com/nokia/TimeExample/minute.png
+
+qdeclarativesources.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins/com/nokia/TimeExample
+
+sources.files += plugins.pro plugin.cpp plugins.qml README
+sources.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins
+target.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins/com/nokia/TimeExample
+
+INSTALLS += qdeclarativesources sources target
+
+symbian {
+    include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
+    TARGET.EPOCALLOWDLLDATA = 1
+}
diff --git a/examples/declarative/qtquick1/cppextensions/plugins/plugins.qml b/examples/declarative/qtquick1/cppextensions/plugins/plugins.qml
new file mode 100644 (file)
index 0000000..a61af15
--- /dev/null
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import com.nokia.TimeExample 1.0 // import types from the plugin
+
+Clock { // this class is defined in QML (com/nokia/TimeExample/Clock.qml)
+
+    Time { // this class is defined in C++ (plugin.cpp)
+        id: time
+    }
+
+    hours: time.hour
+    minutes: time.minute
+}
+//![0]
diff --git a/examples/declarative/qtquick1/cppextensions/plugins/plugins.qmlproject b/examples/declarative/qtquick1/cppextensions/plugins/plugins.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.pro b/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.pro
new file mode 100644 (file)
index 0000000..2e610f9
--- /dev/null
@@ -0,0 +1,24 @@
+TEMPLATE = lib
+CONFIG += qt plugin
+QT += declarative
+
+DESTDIR = QWidgets
+TARGET = qmlqwidgetsplugin
+
+SOURCES += qwidgets.cpp
+
+sources.files += qwidgets.pro qwidgets.cpp qwidgets.qml
+sources.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins
+target.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins
+
+INSTALLS += sources target
+
+symbian:{
+    include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
+    TARGET.EPOCALLOWDLLDATA = 1
+
+    importFiles.sources = QWidgets/qmlqwidgetsplugin.dll QWidgets/qmldir
+    importFiles.path = QWidgets
+
+    DEPLOYMENT = importFiles
+}
diff --git a/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qmlproject b/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.pro
new file mode 100644 (file)
index 0000000..b830a88
--- /dev/null
@@ -0,0 +1,15 @@
+TEMPLATE = app
+TARGET = adding
+DEPENDPATH += .
+INCLUDEPATH += .
+QT += declarative
+
+# Input
+SOURCES += main.cpp \
+           person.cpp
+HEADERS += person.h
+RESOURCES += adding.qrc
+target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/adding
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS adding.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/adding
+INSTALLS += target sources
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.qrc
new file mode 100644 (file)
index 0000000..e2fa01d
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>example.qml</file>
+</qresource>
+</RCC>
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/example.qml
new file mode 100644 (file)
index 0000000..65819b2
--- /dev/null
@@ -0,0 +1,48 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// ![0]
+import People 1.0
+
+Person {
+    name: "Bob Jones"
+    shoeSize: 12
+}
+// ![0]
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/main.cpp
new file mode 100644 (file)
index 0000000..3a32c65
--- /dev/null
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QCoreApplication>
+#include <QDeclarativeEngine>
+#include <QDeclarativeComponent>
+#include <QDebug>
+#include "person.h"
+
+int main(int argc, char ** argv)
+{
+    QCoreApplication app(argc, argv);
+//![0]
+    qmlRegisterType<Person>("People", 1,0, "Person");
+//![0]
+
+    QDeclarativeEngine engine;
+    QDeclarativeComponent component(&engine, QUrl("qrc:example.qml"));
+    Person *person = qobject_cast<Person *>(component.create());
+    if (person) {
+        qWarning() << "The person's name is" << person->name();
+        qWarning() << "They wear a" << person->shoeSize() << "sized shoe";
+    } else {
+        qWarning() << component.errors();
+    }
+
+    return 0;
+}
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.cpp
new file mode 100644 (file)
index 0000000..a6b47aa
--- /dev/null
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "person.h"
+
+// ![0]
+Person::Person(QObject *parent)
+: QObject(parent), m_shoeSize(0)
+{
+}
+
+QString Person::name() const
+{
+    return m_name;
+}
+
+void Person::setName(const QString &n)
+{
+    m_name = n;
+}
+
+int Person::shoeSize() const
+{
+    return m_shoeSize;
+}
+
+void Person::setShoeSize(int s)
+{
+    m_shoeSize = s;
+}
+
+// ![0]
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.h
new file mode 100644 (file)
index 0000000..b85c601
--- /dev/null
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PERSON_H
+#define PERSON_H
+
+#include <QObject>
+// ![0]
+class Person : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(QString name READ name WRITE setName)
+    Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize)
+public:
+    Person(QObject *parent = 0);
+
+    QString name() const;
+    void setName(const QString &);
+
+    int shoeSize() const;
+    void setShoeSize(int);
+
+private:
+    QString m_name;
+    int m_shoeSize;
+};
+// ![0]
+
+#endif // PERSON_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.pro
new file mode 100644 (file)
index 0000000..3843528
--- /dev/null
@@ -0,0 +1,17 @@
+TEMPLATE = app
+TARGET = attached
+DEPENDPATH += .
+INCLUDEPATH += .
+QT += declarative
+
+# Input
+SOURCES += main.cpp \
+           person.cpp \
+           birthdayparty.cpp
+HEADERS += person.h \
+           birthdayparty.h
+RESOURCES += attached.qrc
+target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/attached
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS attached.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/attached
+INSTALLS += target sources
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.qrc
new file mode 100644 (file)
index 0000000..e2fa01d
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>example.qml</file>
+</qresource>
+</RCC>
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.cpp
new file mode 100644 (file)
index 0000000..b1239c0
--- /dev/null
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "birthdayparty.h"
+
+BirthdayPartyAttached::BirthdayPartyAttached(QObject *object)
+: QObject(object)
+{
+}
+
+QDate BirthdayPartyAttached::rsvp() const
+{
+    return m_rsvp;
+}
+
+void BirthdayPartyAttached::setRsvp(const QDate &d)
+{
+    m_rsvp = d;
+}
+
+BirthdayParty::BirthdayParty(QObject *parent)
+: QObject(parent), m_host(0)
+{
+}
+
+Person *BirthdayParty::host() const
+{
+    return m_host;
+}
+
+void BirthdayParty::setHost(Person *c)
+{
+    m_host = c;
+}
+
+QDeclarativeListProperty<Person> BirthdayParty::guests()
+{
+    return QDeclarativeListProperty<Person>(this, m_guests);
+}
+
+int BirthdayParty::guestCount() const
+{
+    return m_guests.count();
+}
+
+Person *BirthdayParty::guest(int index) const
+{
+    return m_guests.at(index);
+}
+
+BirthdayPartyAttached *BirthdayParty::qmlAttachedProperties(QObject *object)
+{
+    return new BirthdayPartyAttached(object);
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.h
new file mode 100644 (file)
index 0000000..eaec771
--- /dev/null
@@ -0,0 +1,86 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef BIRTHDAYPARTY_H
+#define BIRTHDAYPARTY_H
+
+#include <QObject>
+#include <QDate>
+#include <qdeclarative.h>
+#include "person.h"
+
+class BirthdayPartyAttached : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(QDate rsvp READ rsvp WRITE setRsvp)
+public:
+    BirthdayPartyAttached(QObject *object);
+
+    QDate rsvp() const;
+    void setRsvp(const QDate &);
+
+private:
+    QDate m_rsvp;
+};
+
+class BirthdayParty : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(Person *host READ host WRITE setHost)
+    Q_PROPERTY(QDeclarativeListProperty<Person> guests READ guests)
+    Q_CLASSINFO("DefaultProperty", "guests")
+public:
+    BirthdayParty(QObject *parent = 0);
+
+    Person *host() const;
+    void setHost(Person *);
+
+    QDeclarativeListProperty<Person> guests();
+    int guestCount() const;
+    Person *guest(int) const;
+
+    static BirthdayPartyAttached *qmlAttachedProperties(QObject *);
+private:
+    Person *m_host;
+    QList<Person *> m_guests;
+};
+
+QML_DECLARE_TYPEINFO(BirthdayParty, QML_HAS_ATTACHED_PROPERTIES)
+
+#endif // BIRTHDAYPARTY_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/example.qml
new file mode 100644 (file)
index 0000000..600678c
--- /dev/null
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import People 1.0
+
+BirthdayParty {
+    host: Boy {
+        name: "Bob Jones"
+        shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 }
+    }
+
+    // ![1]
+    Boy {
+        name: "Leo Hodges"
+        shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 }
+
+        BirthdayParty.rsvp: "2009-07-06"
+    }
+    // ![1]
+    Boy {
+        name: "Jack Smith"
+        shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 }
+    }
+    Girl {
+        name: "Anne Brown"
+        shoe.size: 7
+        shoe.color: "red"
+        shoe.brand: "Marc Jacobs"
+        shoe.price: 699.99
+
+        BirthdayParty.rsvp: "2009-07-01"
+    }
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/main.cpp
new file mode 100644 (file)
index 0000000..228157c
--- /dev/null
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QCoreApplication>
+#include <QDeclarativeEngine>
+#include <QDeclarativeComponent>
+#include <QDebug>
+#include "birthdayparty.h"
+#include "person.h"
+
+int main(int argc, char ** argv)
+{
+    QCoreApplication app(argc, argv);
+
+    qmlRegisterType<BirthdayPartyAttached>();
+    qmlRegisterType<BirthdayParty>("People", 1,0, "BirthdayParty");
+    qmlRegisterType<ShoeDescription>();
+    qmlRegisterType<Person>();
+    qmlRegisterType<Boy>("People", 1,0, "Boy");
+    qmlRegisterType<Girl>("People", 1,0, "Girl");
+
+    QDeclarativeEngine engine;
+    QDeclarativeComponent component(&engine, QUrl("qrc:example.qml"));
+    BirthdayParty *party = qobject_cast<BirthdayParty *>(component.create());
+
+    if (party && party->host()) {
+        qWarning() << party->host()->name() << "is having a birthday!";
+
+        if (qobject_cast<Boy *>(party->host()))
+            qWarning() << "He is inviting:";
+        else
+            qWarning() << "She is inviting:";
+
+        for (int ii = 0; ii < party->guestCount(); ++ii) {
+            Person *guest = party->guest(ii);
+
+            QDate rsvpDate;
+            QObject *attached =
+                qmlAttachedPropertiesObject<BirthdayParty>(guest, false);
+            if (attached)
+                rsvpDate = attached->property("rsvp").toDate();
+
+            if (rsvpDate.isNull())
+                qWarning() << "   " << guest->name() << "RSVP date: Hasn't RSVP'd";
+            else
+                qWarning() << "   " << guest->name() << "RSVP date:" << qPrintable(rsvpDate.toString());
+        }
+
+    } else {
+        qWarning() << component.errors();
+    }
+
+    return 0;
+}
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.cpp
new file mode 100644 (file)
index 0000000..3be06bd
--- /dev/null
@@ -0,0 +1,118 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "person.h"
+
+ShoeDescription::ShoeDescription(QObject *parent)
+: QObject(parent), m_size(0), m_price(0)
+{
+}
+
+int ShoeDescription::size() const
+{
+    return m_size;
+}
+
+void ShoeDescription::setSize(int s)
+{
+    m_size = s;
+}
+
+QColor ShoeDescription::color() const
+{
+    return m_color;
+}
+
+void ShoeDescription::setColor(const QColor &c)
+{
+    m_color = c;
+}
+
+QString ShoeDescription::brand() const
+{
+    return m_brand;
+}
+
+void ShoeDescription::setBrand(const QString &b)
+{
+    m_brand = b;
+}
+
+qreal ShoeDescription::price() const
+{
+    return m_price;
+}
+
+void ShoeDescription::setPrice(qreal p)
+{
+    m_price = p;
+}
+
+Person::Person(QObject *parent)
+: QObject(parent)
+{
+}
+
+QString Person::name() const
+{
+    return m_name;
+}
+
+void Person::setName(const QString &n)
+{
+    m_name = n;
+}
+
+ShoeDescription *Person::shoe()
+{
+    return &m_shoe;
+}
+
+
+Boy::Boy(QObject * parent)
+: Person(parent)
+{
+}
+
+
+Girl::Girl(QObject * parent)
+: Person(parent)
+{
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.h
new file mode 100644 (file)
index 0000000..5db160f
--- /dev/null
@@ -0,0 +1,105 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PERSON_H
+#define PERSON_H
+
+#include <QObject>
+#include <QColor>
+
+class ShoeDescription : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(int size READ size WRITE setSize)
+    Q_PROPERTY(QColor color READ color WRITE setColor)
+    Q_PROPERTY(QString brand READ brand WRITE setBrand)
+    Q_PROPERTY(qreal price READ price WRITE setPrice)
+public:
+    ShoeDescription(QObject *parent = 0);
+
+    int size() const;
+    void setSize(int);
+
+    QColor color() const;
+    void setColor(const QColor &);
+
+    QString brand() const;
+    void setBrand(const QString &);
+
+    qreal price() const;
+    void setPrice(qreal);
+private:
+    int m_size;
+    QColor m_color;
+    QString m_brand;
+    qreal m_price;
+};
+
+class Person : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(QString name READ name WRITE setName)
+    Q_PROPERTY(ShoeDescription *shoe READ shoe)
+public:
+    Person(QObject *parent = 0);
+
+    QString name() const;
+    void setName(const QString &);
+
+    ShoeDescription *shoe();
+private:
+    QString m_name;
+    ShoeDescription m_shoe;
+};
+
+class Boy : public Person
+{
+    Q_OBJECT
+public:
+    Boy(QObject * parent = 0);
+};
+
+class Girl : public Person
+{
+    Q_OBJECT
+public:
+    Girl(QObject * parent = 0);
+};
+
+#endif // PERSON_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.pro
new file mode 100644 (file)
index 0000000..f1e38a9
--- /dev/null
@@ -0,0 +1,19 @@
+TEMPLATE = app
+TARGET = binding
+DEPENDPATH += .
+INCLUDEPATH += .
+QT += declarative
+
+# Input
+SOURCES += main.cpp \
+           person.cpp \
+           birthdayparty.cpp \
+           happybirthdaysong.cpp
+HEADERS += person.h \
+           birthdayparty.h \
+           happybirthdaysong.h
+RESOURCES += binding.qrc
+target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/binding
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS binding.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/binding
+INSTALLS += target sources
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.qrc
new file mode 100644 (file)
index 0000000..e2fa01d
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>example.qml</file>
+</qresource>
+</RCC>
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.cpp
new file mode 100644 (file)
index 0000000..3120f81
--- /dev/null
@@ -0,0 +1,113 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "birthdayparty.h"
+
+BirthdayPartyAttached::BirthdayPartyAttached(QObject *object)
+: QObject(object)
+{
+}
+
+QDate BirthdayPartyAttached::rsvp() const
+{
+    return m_rsvp;
+}
+
+void BirthdayPartyAttached::setRsvp(const QDate &d)
+{
+    if (d != m_rsvp) {
+        m_rsvp = d;
+        emit rsvpChanged();
+    }
+}
+
+
+BirthdayParty::BirthdayParty(QObject *parent)
+: QObject(parent), m_host(0)
+{
+}
+
+Person *BirthdayParty::host() const
+{
+    return m_host;
+}
+
+void BirthdayParty::setHost(Person *c)
+{
+    if (c == m_host) return;
+    m_host = c;
+    emit hostChanged();
+}
+
+QDeclarativeListProperty<Person> BirthdayParty::guests()
+{
+    return QDeclarativeListProperty<Person>(this, m_guests);
+}
+
+int BirthdayParty::guestCount() const
+{
+    return m_guests.count();
+}
+
+Person *BirthdayParty::guest(int index) const
+{
+    return m_guests.at(index);
+}
+
+void BirthdayParty::startParty()
+{
+    QTime time = QTime::currentTime();
+    emit partyStarted(time);
+}
+
+QString BirthdayParty::announcement() const
+{
+    return QString();
+}
+
+void BirthdayParty::setAnnouncement(const QString &speak)
+{
+    qWarning() << qPrintable(speak);
+}
+
+BirthdayPartyAttached *BirthdayParty::qmlAttachedProperties(QObject *object)
+{
+    return new BirthdayPartyAttached(object);
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.h
new file mode 100644 (file)
index 0000000..59249df
--- /dev/null
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef BIRTHDAYPARTY_H
+#define BIRTHDAYPARTY_H
+
+#include <QObject>
+#include <QDate>
+#include <QDebug>
+#include <qdeclarative.h>
+#include "person.h"
+
+class BirthdayPartyAttached : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(QDate rsvp READ rsvp WRITE setRsvp NOTIFY rsvpChanged)
+public:
+    BirthdayPartyAttached(QObject *object);
+
+    QDate rsvp() const;
+    void setRsvp(const QDate &);
+
+signals:
+    void rsvpChanged();
+
+private:
+    QDate m_rsvp;
+};
+
+class BirthdayParty : public QObject
+{
+    Q_OBJECT
+// ![0]
+    Q_PROPERTY(Person *host READ host WRITE setHost NOTIFY hostChanged)
+// ![0]
+    Q_PROPERTY(QDeclarativeListProperty<Person> guests READ guests)
+    Q_PROPERTY(QString announcement READ announcement WRITE setAnnouncement)
+    Q_CLASSINFO("DefaultProperty", "guests")
+public:
+    BirthdayParty(QObject *parent = 0);
+
+    Person *host() const;
+    void setHost(Person *);
+
+    QDeclarativeListProperty<Person> guests();
+    int guestCount() const;
+    Person *guest(int) const;
+
+    QString announcement() const;
+    void setAnnouncement(const QString &);
+
+    static BirthdayPartyAttached *qmlAttachedProperties(QObject *);
+
+    void startParty();
+signals:
+    void partyStarted(const QTime &time);
+    void hostChanged();
+
+private:
+    Person *m_host;
+    QList<Person *> m_guests;
+};
+
+QML_DECLARE_TYPEINFO(BirthdayParty, QML_HAS_ATTACHED_PROPERTIES)
+
+#endif // BIRTHDAYPARTY_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/example.qml
new file mode 100644 (file)
index 0000000..e2e7cb3
--- /dev/null
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import People 1.0
+
+// ![0]
+BirthdayParty {
+    id: theParty
+
+    HappyBirthdaySong on announcement { name: theParty.host.name }
+
+    host: Boy {
+        name: "Bob Jones"
+        shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 }
+    }
+// ![0]
+    onPartyStarted: console.log("This party started rockin' at " + time);
+
+
+    Boy {
+        name: "Leo Hodges"
+        BirthdayParty.rsvp: "2009-07-06"
+        shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 }
+    }
+    Boy {
+        name: "Jack Smith"
+        shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 }
+    }
+    Girl {
+        name: "Anne Brown"
+        BirthdayParty.rsvp: "2009-07-01"
+        shoe.size: 7
+        shoe.color: "red"
+        shoe.brand: "Marc Jacobs"
+        shoe.price: 699.99
+    }
+
+// ![1]
+}
+// ![1]
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.cpp
new file mode 100644 (file)
index 0000000..47bcf71
--- /dev/null
@@ -0,0 +1,85 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "happybirthdaysong.h"
+#include <QTimer>
+
+HappyBirthdaySong::HappyBirthdaySong(QObject *parent)
+: QObject(parent), m_line(-1)
+{
+    setName(QString());
+    QTimer *timer = new QTimer(this);
+    QObject::connect(timer, SIGNAL(timeout()), this, SLOT(advance()));
+    timer->start(1000);
+}
+
+void HappyBirthdaySong::setTarget(const QDeclarativeProperty &p)
+{
+    m_target = p;
+}
+
+QString HappyBirthdaySong::name() const
+{
+    return m_name;
+}
+
+void HappyBirthdaySong::setName(const QString &name)
+{
+    if (m_name == name)
+        return;
+
+    m_name = name;
+
+    m_lyrics.clear();
+    m_lyrics << "Happy birthday to you,";
+    m_lyrics << "Happy birthday to you,";
+    m_lyrics << "Happy birthday dear " + m_name + ",";
+    m_lyrics << "Happy birthday to you!";
+    m_lyrics << "";
+
+    emit nameChanged();
+}
+
+void HappyBirthdaySong::advance()
+{
+    m_line = (m_line + 1) % m_lyrics.count();
+
+    m_target.write(m_lyrics.at(m_line));
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.h
new file mode 100644 (file)
index 0000000..e288d75
--- /dev/null
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef HAPPYBIRTHDAYSONG_H
+#define HAPPYBIRTHDAYSONG_H
+
+#include <QDeclarativePropertyValueSource>
+#include <QDeclarativeProperty>
+
+#include <QStringList>
+
+class HappyBirthdaySong : public QObject, public QDeclarativePropertyValueSource
+{
+    Q_OBJECT
+    Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
+    Q_INTERFACES(QDeclarativePropertyValueSource)
+public:
+    HappyBirthdaySong(QObject *parent = 0);
+
+    virtual void setTarget(const QDeclarativeProperty &);
+
+    QString name() const;
+    void setName(const QString &);
+
+private slots:
+    void advance();
+
+signals:
+    void nameChanged();
+private:
+    int m_line;
+    QStringList m_lyrics;
+    QDeclarativeProperty m_target;
+    QString m_name;
+};
+
+#endif // HAPPYBIRTHDAYSONG_H
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/main.cpp
new file mode 100644 (file)
index 0000000..ac8d0ca
--- /dev/null
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QCoreApplication>
+#include <QDeclarativeEngine>
+#include <QDeclarativeComponent>
+#include <QDebug>
+#include "birthdayparty.h"
+#include "happybirthdaysong.h"
+#include "person.h"
+
+int main(int argc, char ** argv)
+{
+    QCoreApplication app(argc, argv);
+    qmlRegisterType<BirthdayPartyAttached>();
+    qmlRegisterType<BirthdayParty>("People", 1,0, "BirthdayParty");
+    qmlRegisterType<HappyBirthdaySong>("People", 1,0, "HappyBirthdaySong");
+    qmlRegisterType<ShoeDescription>();
+    qmlRegisterType<Person>();
+    qmlRegisterType<Boy>("People", 1,0, "Boy");
+    qmlRegisterType<Girl>("People", 1,0, "Girl");
+
+    QDeclarativeEngine engine;
+    QDeclarativeComponent component(&engine, QUrl("qrc:example.qml"));
+    BirthdayParty *party = qobject_cast<BirthdayParty *>(component.create());
+
+    if (party && party->host()) {
+        qWarning() << party->host()->name() << "is having a birthday!";
+
+        if (qobject_cast<Boy *>(party->host()))
+            qWarning() << "He is inviting:";
+        else
+            qWarning() << "She is inviting:";
+
+        for (int ii = 0; ii < party->guestCount(); ++ii) {
+            Person *guest = party->guest(ii);
+
+            QDate rsvpDate;
+            QObject *attached =
+                qmlAttachedPropertiesObject<BirthdayParty>(guest, false);
+            if (attached)
+                rsvpDate = attached->property("rsvp").toDate();
+
+            if (rsvpDate.isNull())
+                qWarning() << "   " << guest->name() << "RSVP date: Hasn't RSVP'd";
+            else
+                qWarning() << "   " << guest->name() << "RSVP date:" << qPrintable(rsvpDate.toString());
+        }
+
+        party->startParty();
+    } else {
+        qWarning() << component.errors();
+    }
+
+    return app.exec();
+}
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.cpp
new file mode 100644 (file)
index 0000000..28a5e6d
--- /dev/null
@@ -0,0 +1,138 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "person.h"
+
+ShoeDescription::ShoeDescription(QObject *parent)
+: QObject(parent), m_size(0), m_price(0)
+{
+}
+
+int ShoeDescription::size() const
+{
+    return m_size;
+}
+
+void ShoeDescription::setSize(int s)
+{
+    if (m_size == s)
+        return;
+
+    m_size = s;
+    emit shoeChanged();
+}
+
+QColor ShoeDescription::color() const
+{
+    return m_color;
+}
+
+void ShoeDescription::setColor(const QColor &c)
+{
+    if (m_color == c)
+        return;
+
+    m_color = c;
+    emit shoeChanged();
+}
+
+QString ShoeDescription::brand() const
+{
+    return m_brand;
+}
+
+void ShoeDescription::setBrand(const QString &b)
+{
+    if (m_brand == b)
+        return;
+
+    m_brand = b;
+    emit shoeChanged();
+}
+
+qreal ShoeDescription::price() const
+{
+    return m_price;
+}
+
+void ShoeDescription::setPrice(qreal p)
+{
+    if (m_price == p)
+        return;
+
+    m_price = p;
+    emit shoeChanged();
+}
+
+Person::Person(QObject *parent)
+: QObject(parent)
+{
+}
+
+QString Person::name() const
+{
+    return m_name;
+}
+
+void Person::setName(const QString &n)
+{
+    if (m_name == n)
+        return;
+
+    m_name = n;
+    emit nameChanged();
+}
+
+ShoeDescription *Person::shoe()
+{
+    return &m_shoe;
+}
+
+
+Boy::Boy(QObject * parent)
+: Person(parent)
+{
+}
+
+
+Girl::Girl(QObject * parent)
+: Person(parent)
+{
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.h
new file mode 100644 (file)
index 0000000..94d3eb4
--- /dev/null
@@ -0,0 +1,113 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PERSON_H
+#define PERSON_H
+
+#include <QObject>
+#include <QColor>
+
+class ShoeDescription : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(int size READ size WRITE setSize NOTIFY shoeChanged)
+    Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY shoeChanged)
+    Q_PROPERTY(QString brand READ brand WRITE setBrand NOTIFY shoeChanged)
+    Q_PROPERTY(qreal price READ price WRITE setPrice NOTIFY shoeChanged)
+public:
+    ShoeDescription(QObject *parent = 0);
+
+    int size() const;
+    void setSize(int);
+
+    QColor color() const;
+    void setColor(const QColor &);
+
+    QString brand() const;
+    void setBrand(const QString &);
+
+    qreal price() const;
+    void setPrice(qreal);
+signals:
+    void shoeChanged();
+
+private:
+    int m_size;
+    QColor m_color;
+    QString m_brand;
+    qreal m_price;
+};
+
+class Person : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
+// ![0]
+    Q_PROPERTY(ShoeDescription *shoe READ shoe CONSTANT)
+// ![0]
+public:
+    Person(QObject *parent = 0);
+
+    QString name() const;
+    void setName(const QString &);
+
+    ShoeDescription *shoe();
+signals:
+    void nameChanged();
+
+private:
+    QString m_name;
+    ShoeDescription m_shoe;
+};
+
+class Boy : public Person
+{
+    Q_OBJECT
+public:
+    Boy(QObject * parent = 0);
+};
+
+class Girl : public Person
+{
+    Q_OBJECT
+public:
+    Girl(QObject * parent = 0);
+};
+
+#endif // PERSON_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.cpp
new file mode 100644 (file)
index 0000000..cde8d41
--- /dev/null
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "birthdayparty.h"
+
+BirthdayParty::BirthdayParty(QObject *parent)
+: QObject(parent), m_host(0)
+{
+}
+
+Person *BirthdayParty::host() const
+{
+    return m_host;
+}
+
+void BirthdayParty::setHost(Person *c)
+{
+    m_host = c;
+}
+
+QDeclarativeListProperty<Person> BirthdayParty::guests()
+{
+    return QDeclarativeListProperty<Person>(this, m_guests);
+}
+
+int BirthdayParty::guestCount() const
+{
+    return m_guests.count();
+}
+
+Person *BirthdayParty::guest(int index) const
+{
+    return m_guests.at(index);
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.h
new file mode 100644 (file)
index 0000000..d1aaee8
--- /dev/null
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef BIRTHDAYPARTY_H
+#define BIRTHDAYPARTY_H
+
+#include <QObject>
+#include <QDeclarativeListProperty>
+#include "person.h"
+
+class BirthdayParty : public QObject
+{
+    Q_OBJECT
+// ![0]
+    Q_PROPERTY(Person *host READ host WRITE setHost)
+    Q_PROPERTY(QDeclarativeListProperty<Person> guests READ guests)
+// ![0]
+public:
+    BirthdayParty(QObject *parent = 0);
+
+    Person *host() const;
+    void setHost(Person *);
+
+    QDeclarativeListProperty<Person> guests();
+    int guestCount() const;
+    Person *guest(int) const;
+
+private:
+    Person *m_host;
+    QList<Person *> m_guests;
+};
+
+#endif // BIRTHDAYPARTY_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.pro
new file mode 100644 (file)
index 0000000..d85a308
--- /dev/null
@@ -0,0 +1,17 @@
+TEMPLATE = app
+TARGET = coercion
+DEPENDPATH += .
+INCLUDEPATH += .
+QT += declarative
+
+# Input
+SOURCES += main.cpp \
+           person.cpp \
+           birthdayparty.cpp
+HEADERS += person.h \
+           birthdayparty.h
+RESOURCES += coercion.qrc
+target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/coercion
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS coercion.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/coercion
+INSTALLS += target sources
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.qrc
new file mode 100644 (file)
index 0000000..e2fa01d
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>example.qml</file>
+</qresource>
+</RCC>
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/example.qml
new file mode 100644 (file)
index 0000000..c12b95f
--- /dev/null
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import People 1.0
+
+// ![0]
+BirthdayParty {
+    host: Boy {
+        name: "Bob Jones"
+        shoeSize: 12
+    }
+    guests: [
+        Boy { name: "Leo Hodges" },
+        Boy { name: "Jack Smith" },
+        Girl { name: "Anne Brown" }
+    ]
+}
+// ![0]
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/main.cpp
new file mode 100644 (file)
index 0000000..01b39a3
--- /dev/null
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QCoreApplication>
+#include <QDeclarativeEngine>
+#include <QDeclarativeComponent>
+#include <QDebug>
+#include "birthdayparty.h"
+#include "person.h"
+
+int main(int argc, char ** argv)
+{
+    QCoreApplication app(argc, argv);
+
+    qmlRegisterType<BirthdayParty>("People", 1,0, "BirthdayParty");
+// ![0]
+    qmlRegisterType<Person>();
+// ![0]
+    qmlRegisterType<Boy>("People", 1,0, "Boy");
+    qmlRegisterType<Girl>("People", 1,0, "Girl");
+
+    QDeclarativeEngine engine;
+    QDeclarativeComponent component(&engine, QUrl("qrc:example.qml"));
+    BirthdayParty *party = qobject_cast<BirthdayParty *>(component.create());
+
+    if (party && party->host()) {
+        qWarning() << party->host()->name() << "is having a birthday!";
+
+        if (qobject_cast<Boy *>(party->host()))
+            qWarning() << "He is inviting:";
+        else
+            qWarning() << "She is inviting:";
+
+        for (int ii = 0; ii < party->guestCount(); ++ii)
+            qWarning() << "   " << party->guest(ii)->name();
+    } else {
+        qWarning() << component.errors();
+    }
+
+    return 0;
+}
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.cpp
new file mode 100644 (file)
index 0000000..add92f0
--- /dev/null
@@ -0,0 +1,79 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "person.h"
+
+Person::Person(QObject *parent)
+: QObject(parent), m_shoeSize(0)
+{
+}
+
+QString Person::name() const
+{
+    return m_name;
+}
+
+void Person::setName(const QString &n)
+{
+    m_name = n;
+}
+
+int Person::shoeSize() const
+{
+    return m_shoeSize;
+}
+
+void Person::setShoeSize(int s)
+{
+    m_shoeSize = s;
+}
+
+// ![1]
+Boy::Boy(QObject * parent)
+: Person(parent)
+{
+}
+
+
+Girl::Girl(QObject * parent)
+: Person(parent)
+{
+}
+
+// ![1]
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.h
new file mode 100644 (file)
index 0000000..db314a3
--- /dev/null
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PERSON_H
+#define PERSON_H
+
+#include <QObject>
+
+class Person : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(QString name READ name WRITE setName)
+    Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize)
+public:
+    Person(QObject *parent = 0);
+
+    QString name() const;
+    void setName(const QString &);
+
+    int shoeSize() const;
+    void setShoeSize(int);
+private:
+    QString m_name;
+    int m_shoeSize;
+};
+
+
+// ![0]
+class Boy : public Person
+{
+    Q_OBJECT
+public:
+    Boy(QObject * parent = 0);
+};
+
+
+class Girl : public Person
+{
+    Q_OBJECT
+public:
+    Girl(QObject * parent = 0);
+};
+
+// ![0]
+
+#endif // PERSON_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.cpp
new file mode 100644 (file)
index 0000000..cde8d41
--- /dev/null
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "birthdayparty.h"
+
+BirthdayParty::BirthdayParty(QObject *parent)
+: QObject(parent), m_host(0)
+{
+}
+
+Person *BirthdayParty::host() const
+{
+    return m_host;
+}
+
+void BirthdayParty::setHost(Person *c)
+{
+    m_host = c;
+}
+
+QDeclarativeListProperty<Person> BirthdayParty::guests()
+{
+    return QDeclarativeListProperty<Person>(this, m_guests);
+}
+
+int BirthdayParty::guestCount() const
+{
+    return m_guests.count();
+}
+
+Person *BirthdayParty::guest(int index) const
+{
+    return m_guests.at(index);
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.h
new file mode 100644 (file)
index 0000000..2392ff0
--- /dev/null
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef BIRTHDAYPARTY_H
+#define BIRTHDAYPARTY_H
+
+#include <QObject>
+#include <QDeclarativeListProperty>
+#include "person.h"
+
+// ![0]
+class BirthdayParty : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(Person *host READ host WRITE setHost)
+    Q_PROPERTY(QDeclarativeListProperty<Person> guests READ guests)
+    Q_CLASSINFO("DefaultProperty", "guests")
+public:
+    BirthdayParty(QObject *parent = 0);
+
+    Person *host() const;
+    void setHost(Person *);
+
+    QDeclarativeListProperty<Person> guests();
+    int guestCount() const;
+    Person *guest(int) const;
+
+private:
+    Person *m_host;
+    QList<Person *> m_guests;
+};
+// ![0]
+
+#endif // BIRTHDAYPARTY_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.pro
new file mode 100644 (file)
index 0000000..d5519f4
--- /dev/null
@@ -0,0 +1,17 @@
+TEMPLATE = app
+TARGET = default
+DEPENDPATH += .
+INCLUDEPATH += .
+QT += declarative qtquick1
+
+# Input
+SOURCES += main.cpp \
+           person.cpp \
+           birthdayparty.cpp
+HEADERS += person.h \
+           birthdayparty.h
+RESOURCES += default.qrc
+target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/default
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS default.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/default
+INSTALLS += target sources
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.qrc
new file mode 100644 (file)
index 0000000..e2fa01d
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>example.qml</file>
+</qresource>
+</RCC>
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/example.qml
new file mode 100644 (file)
index 0000000..b5895ae
--- /dev/null
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import People 1.0
+
+// ![0]
+BirthdayParty {
+    host: Boy {
+        name: "Bob Jones"
+        shoeSize: 12
+    }
+
+    Boy { name: "Leo Hodges" }
+    Boy { name: "Jack Smith" }
+    Girl { name: "Anne Brown" }
+}
+// ![0]
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/main.cpp
new file mode 100644 (file)
index 0000000..4823291
--- /dev/null
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QCoreApplication>
+#include <QDeclarativeEngine>
+#include <QDeclarativeComponent>
+#include <QDebug>
+#include "birthdayparty.h"
+#include "person.h"
+
+int main(int argc, char ** argv)
+{
+    QCoreApplication app(argc, argv);
+
+    qmlRegisterType<BirthdayParty>("People", 1,0, "BirthdayParty");
+    qmlRegisterType<Person>();
+    qmlRegisterType<Boy>("People", 1,0, "Boy");
+    qmlRegisterType<Girl>("People", 1,0, "Girl");
+
+    QDeclarativeEngine engine;
+    QDeclarativeComponent component(&engine, QUrl("qrc:example.qml"));
+    BirthdayParty *party = qobject_cast<BirthdayParty *>(component.create());
+
+    if (party && party->host()) {
+        qWarning() << party->host()->name() << "is having a birthday!";
+
+        if (qobject_cast<Boy *>(party->host()))
+            qWarning() << "He is inviting:";
+        else
+            qWarning() << "She is inviting:";
+
+        for (int ii = 0; ii < party->guestCount(); ++ii)
+            qWarning() << "   " << party->guest(ii)->name();
+    } else {
+        qWarning() << component.errors();
+    }
+
+    return 0;
+}
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.cpp
new file mode 100644 (file)
index 0000000..2d1005d
--- /dev/null
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "person.h"
+
+Person::Person(QObject *parent)
+: QObject(parent), m_shoeSize(0)
+{
+}
+
+QString Person::name() const
+{
+    return m_name;
+}
+
+void Person::setName(const QString &n)
+{
+    m_name = n;
+}
+
+int Person::shoeSize() const
+{
+    return m_shoeSize;
+}
+
+void Person::setShoeSize(int s)
+{
+    m_shoeSize = s;
+}
+
+
+Boy::Boy(QObject * parent)
+: Person(parent)
+{
+}
+
+
+Girl::Girl(QObject * parent)
+: Person(parent)
+{
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.h
new file mode 100644 (file)
index 0000000..9006fca
--- /dev/null
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PERSON_H
+#define PERSON_H
+
+#include <QObject>
+
+class Person : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(QString name READ name WRITE setName)
+    Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize)
+public:
+    Person(QObject *parent = 0);
+
+    QString name() const;
+    void setName(const QString &);
+
+    int shoeSize() const;
+    void setShoeSize(int);
+private:
+    QString m_name;
+    int m_shoeSize;
+};
+
+class Boy : public Person
+{
+    Q_OBJECT
+public:
+    Boy(QObject * parent = 0);
+};
+
+class Girl : public Person
+{
+    Q_OBJECT
+public:
+    Girl(QObject * parent = 0);
+};
+
+#endif // PERSON_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/example.qml
new file mode 100644 (file)
index 0000000..21dad36
--- /dev/null
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import People 1.0
+
+// ![0]
+QLineEdit {
+    leftMargin: 20
+}
+// ![0]
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.pro
new file mode 100644 (file)
index 0000000..f3e4284
--- /dev/null
@@ -0,0 +1,15 @@
+TEMPLATE = app
+TARGET = extended
+DEPENDPATH += .
+INCLUDEPATH += .
+QT += declarative qtquick1
+
+# Input
+SOURCES += main.cpp \
+           lineedit.cpp
+HEADERS += lineedit.h
+RESOURCES += extended.qrc
+target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/extended
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS extended.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/extended
+INSTALLS += target sources
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.qrc
new file mode 100644 (file)
index 0000000..e2fa01d
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>example.qml</file>
+</qresource>
+</RCC>
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.cpp
new file mode 100644 (file)
index 0000000..42354c5
--- /dev/null
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "lineedit.h"
+
+LineEditExtension::LineEditExtension(QObject *object)
+: QObject(object), m_lineedit(static_cast<QLineEdit *>(object))
+{
+}
+
+int LineEditExtension::leftMargin() const
+{
+    int l, r, t, b;
+    m_lineedit->getTextMargins(&l, &t, &r, &b);
+    return l;
+}
+
+void LineEditExtension::setLeftMargin(int m)
+{
+    int l, r, t, b;
+    m_lineedit->getTextMargins(&l, &t, &r, &b);
+    m_lineedit->setTextMargins(m, t, r, b);
+}
+
+int LineEditExtension::rightMargin() const
+{
+    int l, r, t, b;
+    m_lineedit->getTextMargins(&l, &t, &r, &b);
+    return r;
+}
+
+void LineEditExtension::setRightMargin(int m)
+{
+    int l, r, t, b;
+    m_lineedit->getTextMargins(&l, &t, &r, &b);
+    m_lineedit->setTextMargins(l, t, m, b);
+}
+
+int LineEditExtension::topMargin() const
+{
+    int l, r, t, b;
+    m_lineedit->getTextMargins(&l, &t, &r, &b);
+    return t;
+}
+
+void LineEditExtension::setTopMargin(int m)
+{
+    int l, r, t, b;
+    m_lineedit->getTextMargins(&l, &t, &r, &b);
+    m_lineedit->setTextMargins(l, m, r, b);
+}
+
+int LineEditExtension::bottomMargin() const
+{
+    int l, r, t, b;
+    m_lineedit->getTextMargins(&l, &t, &r, &b);
+    return b;
+}
+
+void LineEditExtension::setBottomMargin(int m)
+{
+    int l, r, t, b;
+    m_lineedit->getTextMargins(&l, &t, &r, &b);
+    m_lineedit->setTextMargins(l, t, r, m);
+}
+
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.h
new file mode 100644 (file)
index 0000000..f7a0827
--- /dev/null
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef LINEEDIT_H
+#define LINEEDIT_H
+
+#include <QLineEdit>
+
+class LineEditExtension : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(int leftMargin READ leftMargin WRITE setLeftMargin NOTIFY marginsChanged)
+    Q_PROPERTY(int rightMargin READ rightMargin WRITE setRightMargin NOTIFY marginsChanged)
+    Q_PROPERTY(int topMargin READ topMargin WRITE setTopMargin NOTIFY marginsChanged)
+    Q_PROPERTY(int bottomMargin READ bottomMargin WRITE setBottomMargin NOTIFY marginsChanged)
+public:
+    LineEditExtension(QObject *);
+
+    int leftMargin() const;
+    void setLeftMargin(int);
+
+    int rightMargin() const;
+    void setRightMargin(int);
+
+    int topMargin() const;
+    void setTopMargin(int);
+
+    int bottomMargin() const;
+    void setBottomMargin(int);
+signals:
+    void marginsChanged();
+
+private:
+    QLineEdit *m_lineedit;
+};
+
+#endif // LINEEDIT_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/main.cpp
new file mode 100644 (file)
index 0000000..414106c
--- /dev/null
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QApplication>
+#include <QDeclarativeEngine>
+#include <QDeclarativeComponent>
+#include <QDebug>
+#include <QLineEdit>
+#include "lineedit.h"
+
+int main(int argc, char ** argv)
+{
+    QApplication app(argc, argv);
+
+    qmlRegisterExtendedType<QLineEdit, LineEditExtension>("People", 1,0, "QLineEdit");
+
+    QDeclarativeEngine engine;
+    QDeclarativeComponent component(&engine, QUrl("qrc:example.qml"));
+    QLineEdit *edit = qobject_cast<QLineEdit *>(component.create());
+
+    if (edit) {
+        edit->show();
+        return app.exec();
+    } else {
+        qWarning() << component.errors();
+        return 0;
+    }
+}
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.cpp
new file mode 100644 (file)
index 0000000..cde8d41
--- /dev/null
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "birthdayparty.h"
+
+BirthdayParty::BirthdayParty(QObject *parent)
+: QObject(parent), m_host(0)
+{
+}
+
+Person *BirthdayParty::host() const
+{
+    return m_host;
+}
+
+void BirthdayParty::setHost(Person *c)
+{
+    m_host = c;
+}
+
+QDeclarativeListProperty<Person> BirthdayParty::guests()
+{
+    return QDeclarativeListProperty<Person>(this, m_guests);
+}
+
+int BirthdayParty::guestCount() const
+{
+    return m_guests.count();
+}
+
+Person *BirthdayParty::guest(int index) const
+{
+    return m_guests.at(index);
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.h
new file mode 100644 (file)
index 0000000..47ed8f5
--- /dev/null
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef BIRTHDAYPARTY_H
+#define BIRTHDAYPARTY_H
+
+#include <QObject>
+#include <QDeclarativeListProperty>
+#include "person.h"
+
+class BirthdayParty : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(Person *host READ host WRITE setHost)
+    Q_PROPERTY(QDeclarativeListProperty<Person> guests READ guests)
+    Q_CLASSINFO("DefaultProperty", "guests")
+public:
+    BirthdayParty(QObject *parent = 0);
+
+    Person *host() const;
+    void setHost(Person *);
+
+    QDeclarativeListProperty<Person> guests();
+    int guestCount() const;
+    Person *guest(int) const;
+
+private:
+    Person *m_host;
+    QList<Person *> m_guests;
+};
+
+
+#endif // BIRTHDAYPARTY_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/example.qml
new file mode 100644 (file)
index 0000000..d97c9a4
--- /dev/null
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import People 1.0
+
+// ![0]
+BirthdayParty {
+    host: Boy {
+        name: "Bob Jones"
+        shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 }
+    }
+
+    Boy {
+        name: "Leo Hodges"
+        shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 }
+    }
+    // ![1]
+    Boy {
+        name: "Jack Smith"
+        shoe {
+            size: 8
+            color: "blue"
+            brand: "Puma"
+            price: 19.95
+        }
+    }
+    // ![1]
+    Girl {
+        name: "Anne Brown"
+        shoe.size: 7
+        shoe.color: "red"
+        shoe.brand: "Marc Jacobs"
+        shoe.price: 699.99
+    }
+}
+// ![0]
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.pro
new file mode 100644 (file)
index 0000000..ca6deea
--- /dev/null
@@ -0,0 +1,17 @@
+TEMPLATE = app
+TARGET = grouped
+DEPENDPATH += .
+INCLUDEPATH += .
+QT += declarative
+
+# Input
+SOURCES += main.cpp \
+           person.cpp \
+           birthdayparty.cpp
+HEADERS += person.h \
+           birthdayparty.h
+RESOURCES += grouped.qrc
+target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/grouped
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS grouped.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/grouped
+INSTALLS += target sources
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.qrc
new file mode 100644 (file)
index 0000000..e2fa01d
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>example.qml</file>
+</qresource>
+</RCC>
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/main.cpp
new file mode 100644 (file)
index 0000000..ea7d0ae
--- /dev/null
@@ -0,0 +1,85 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QCoreApplication>
+#include <QDeclarativeEngine>
+#include <QDeclarativeComponent>
+#include <QDebug>
+#include "birthdayparty.h"
+#include "person.h"
+
+int main(int argc, char ** argv)
+{
+    QCoreApplication app(argc, argv);
+
+    qmlRegisterType<BirthdayParty>("People", 1,0, "BirthdayParty");
+    qmlRegisterType<ShoeDescription>();
+    qmlRegisterType<Person>();
+    qmlRegisterType<Boy>("People", 1,0, "Boy");
+    qmlRegisterType<Girl>("People", 1,0, "Girl");
+
+    QDeclarativeEngine engine;
+    QDeclarativeComponent component(&engine, QUrl("qrc:example.qml"));
+    BirthdayParty *party = qobject_cast<BirthdayParty *>(component.create());
+
+    if (party && party->host()) {
+        qWarning() << party->host()->name() << "is having a birthday!";
+
+        if (qobject_cast<Boy *>(party->host()))
+            qWarning() << "He is inviting:";
+        else
+            qWarning() << "She is inviting:";
+
+        Person *bestShoe = 0;
+        for (int ii = 0; ii < party->guestCount(); ++ii) {
+            Person *guest = party->guest(ii);
+            qWarning() << "   " << guest->name();
+
+            if (!bestShoe || bestShoe->shoe()->price() < guest->shoe()->price())
+                bestShoe = guest;
+        }
+        if (bestShoe)
+            qWarning() << bestShoe->name() << "is wearing the best shoes!";
+
+    } else {
+        qWarning() << component.errors();
+    }
+
+    return 0;
+}
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.cpp
new file mode 100644 (file)
index 0000000..3be06bd
--- /dev/null
@@ -0,0 +1,118 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "person.h"
+
+ShoeDescription::ShoeDescription(QObject *parent)
+: QObject(parent), m_size(0), m_price(0)
+{
+}
+
+int ShoeDescription::size() const
+{
+    return m_size;
+}
+
+void ShoeDescription::setSize(int s)
+{
+    m_size = s;
+}
+
+QColor ShoeDescription::color() const
+{
+    return m_color;
+}
+
+void ShoeDescription::setColor(const QColor &c)
+{
+    m_color = c;
+}
+
+QString ShoeDescription::brand() const
+{
+    return m_brand;
+}
+
+void ShoeDescription::setBrand(const QString &b)
+{
+    m_brand = b;
+}
+
+qreal ShoeDescription::price() const
+{
+    return m_price;
+}
+
+void ShoeDescription::setPrice(qreal p)
+{
+    m_price = p;
+}
+
+Person::Person(QObject *parent)
+: QObject(parent)
+{
+}
+
+QString Person::name() const
+{
+    return m_name;
+}
+
+void Person::setName(const QString &n)
+{
+    m_name = n;
+}
+
+ShoeDescription *Person::shoe()
+{
+    return &m_shoe;
+}
+
+
+Boy::Boy(QObject * parent)
+: Person(parent)
+{
+}
+
+
+Girl::Girl(QObject * parent)
+: Person(parent)
+{
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.h
new file mode 100644 (file)
index 0000000..5efbd80
--- /dev/null
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PERSON_H
+#define PERSON_H
+
+#include <QObject>
+#include <QColor>
+
+class ShoeDescription : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(int size READ size WRITE setSize)
+    Q_PROPERTY(QColor color READ color WRITE setColor)
+    Q_PROPERTY(QString brand READ brand WRITE setBrand)
+    Q_PROPERTY(qreal price READ price WRITE setPrice)
+public:
+    ShoeDescription(QObject *parent = 0);
+
+    int size() const;
+    void setSize(int);
+
+    QColor color() const;
+    void setColor(const QColor &);
+
+    QString brand() const;
+    void setBrand(const QString &);
+
+    qreal price() const;
+    void setPrice(qreal);
+private:
+    int m_size;
+    QColor m_color;
+    QString m_brand;
+    qreal m_price;
+};
+
+class Person : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(QString name READ name WRITE setName)
+// ![1]
+    Q_PROPERTY(ShoeDescription *shoe READ shoe)
+// ![1]
+public:
+    Person(QObject *parent = 0);
+
+    QString name() const;
+    void setName(const QString &);
+
+    ShoeDescription *shoe();
+private:
+    QString m_name;
+    ShoeDescription m_shoe;
+};
+
+class Boy : public Person
+{
+    Q_OBJECT
+public:
+    Boy(QObject * parent = 0);
+};
+
+class Girl : public Person
+{
+    Q_OBJECT
+public:
+    Girl(QObject * parent = 0);
+};
+
+#endif // PERSON_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.cpp
new file mode 100644 (file)
index 0000000..51343cf
--- /dev/null
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "birthdayparty.h"
+
+BirthdayParty::BirthdayParty(QObject *parent)
+: QObject(parent), m_host(0)
+{
+}
+
+// ![0]
+Person *BirthdayParty::host() const
+{
+    return m_host;
+}
+
+void BirthdayParty::setHost(Person *c)
+{
+    m_host = c;
+}
+
+QDeclarativeListProperty<Person> BirthdayParty::guests()
+{
+    return QDeclarativeListProperty<Person>(this, m_guests);
+}
+
+int BirthdayParty::guestCount() const
+{
+    return m_guests.count();
+}
+
+Person *BirthdayParty::guest(int index) const
+{
+    return m_guests.at(index);
+}
+
+void BirthdayParty::invite(const QString &name)
+{
+    Person *person = new Person(this);
+    person->setName(name);
+    m_guests.append(person);
+}
+// ![0]
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.h
new file mode 100644 (file)
index 0000000..e49bffd
--- /dev/null
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef BIRTHDAYPARTY_H
+#define BIRTHDAYPARTY_H
+
+#include <QObject>
+#include <QDeclarativeListProperty>
+#include "person.h"
+
+class BirthdayParty : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(Person *host READ host WRITE setHost)
+    Q_PROPERTY(QDeclarativeListProperty<Person> guests READ guests)
+public:
+    BirthdayParty(QObject *parent = 0);
+
+    Person *host() const;
+    void setHost(Person *);
+
+    QDeclarativeListProperty<Person> guests();
+    int guestCount() const;
+    Person *guest(int) const;
+
+// ![0]
+    Q_INVOKABLE void invite(const QString &name);
+// ![0]
+
+private:
+    Person *m_host;
+    QList<Person *> m_guests;
+};
+
+#endif // BIRTHDAYPARTY_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/example.qml
new file mode 100644 (file)
index 0000000..868473a
--- /dev/null
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import People 1.0
+
+// ![0]
+BirthdayParty {
+    host: Person {
+        name: "Bob Jones"
+        shoeSize: 12
+    }
+    guests: [
+        Person { name: "Leo Hodges" },
+        Person { name: "Jack Smith" },
+        Person { name: "Anne Brown" }
+    ]
+
+    Component.onCompleted: invite("William Green")
+}
+// ![0]
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/main.cpp
new file mode 100644 (file)
index 0000000..90e1fad
--- /dev/null
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QCoreApplication>
+#include <QDeclarativeEngine>
+#include <QDeclarativeComponent>
+#include <QDebug>
+#include "birthdayparty.h"
+#include "person.h"
+
+int main(int argc, char ** argv)
+{
+    QCoreApplication app(argc, argv);
+
+    qmlRegisterType<BirthdayParty>("People", 1,0, "BirthdayParty");
+    qmlRegisterType<Person>("People", 1,0, "Person");
+
+    QDeclarativeEngine engine;
+    QDeclarativeComponent component(&engine, QUrl("qrc:example.qml"));
+    BirthdayParty *party = qobject_cast<BirthdayParty *>(component.create());
+
+    if (party && party->host()) {
+        qWarning() << party->host()->name() << "is having a birthday!";
+        qWarning() << "They are inviting:";
+        for (int ii = 0; ii < party->guestCount(); ++ii)
+            qWarning() << "   " << party->guest(ii)->name();
+    } else {
+        qWarning() << component.errors();
+    }
+
+    return 0;
+}
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.pro
new file mode 100644 (file)
index 0000000..c516049
--- /dev/null
@@ -0,0 +1,18 @@
+TEMPLATE = app
+TARGET = methods
+DEPENDPATH += .
+INCLUDEPATH += .
+QT += declarative qtquick1
+
+# Input
+SOURCES += main.cpp \
+           person.cpp \
+           birthdayparty.cpp
+HEADERS += person.h \
+           birthdayparty.h
+RESOURCES += methods.qrc
+
+target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/methods
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS methods.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/methods
+INSTALLS += target sources
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.qrc
new file mode 100644 (file)
index 0000000..e2fa01d
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>example.qml</file>
+</qresource>
+</RCC>
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.cpp
new file mode 100644 (file)
index 0000000..600b05f
--- /dev/null
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "person.h"
+
+Person::Person(QObject *parent)
+: QObject(parent), m_shoeSize(0)
+{
+}
+
+QString Person::name() const
+{
+    return m_name;
+}
+
+void Person::setName(const QString &n)
+{
+    m_name = n;
+}
+
+int Person::shoeSize() const
+{
+    return m_shoeSize;
+}
+
+void Person::setShoeSize(int s)
+{
+    m_shoeSize = s;
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.h
new file mode 100644 (file)
index 0000000..8545a3e
--- /dev/null
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PERSON_H
+#define PERSON_H
+
+#include <QObject>
+
+class Person : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(QString name READ name WRITE setName)
+    Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize)
+public:
+    Person(QObject *parent = 0);
+
+    QString name() const;
+    void setName(const QString &);
+
+    int shoeSize() const;
+    void setShoeSize(int);
+private:
+    QString m_name;
+    int m_shoeSize;
+};
+
+#endif // PERSON_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.cpp
new file mode 100644 (file)
index 0000000..bdd0105
--- /dev/null
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "birthdayparty.h"
+
+BirthdayParty::BirthdayParty(QObject *parent)
+: QObject(parent), m_host(0)
+{
+}
+
+// ![0]
+Person *BirthdayParty::host() const
+{
+    return m_host;
+}
+
+void BirthdayParty::setHost(Person *c)
+{
+    m_host = c;
+}
+
+QDeclarativeListProperty<Person> BirthdayParty::guests()
+{
+    return QDeclarativeListProperty<Person>(this, m_guests);
+}
+
+int BirthdayParty::guestCount() const
+{
+    return m_guests.count();
+}
+
+Person *BirthdayParty::guest(int index) const
+{
+    return m_guests.at(index);
+}
+// ![0]
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.h
new file mode 100644 (file)
index 0000000..0227bb6
--- /dev/null
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef BIRTHDAYPARTY_H
+#define BIRTHDAYPARTY_H
+
+#include <QObject>
+#include <QDeclarativeListProperty>
+#include "person.h"
+
+// ![0]
+class BirthdayParty : public QObject
+{
+    Q_OBJECT
+// ![0]
+// ![1]
+    Q_PROPERTY(Person *host READ host WRITE setHost)
+// ![1]
+// ![2]
+    Q_PROPERTY(QDeclarativeListProperty<Person> guests READ guests)
+// ![2]
+// ![3]
+public:
+    BirthdayParty(QObject *parent = 0);
+
+    Person *host() const;
+    void setHost(Person *);
+
+    QDeclarativeListProperty<Person> guests();
+    int guestCount() const;
+    Person *guest(int) const;
+
+private:
+    Person *m_host;
+    QList<Person *> m_guests;
+};
+// ![3]
+
+#endif // BIRTHDAYPARTY_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/example.qml
new file mode 100644 (file)
index 0000000..200492e
--- /dev/null
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import People 1.0
+
+// ![0]
+BirthdayParty {
+    host: Person {
+        name: "Bob Jones"
+        shoeSize: 12
+    }
+    guests: [
+        Person { name: "Leo Hodges" },
+        Person { name: "Jack Smith" },
+        Person { name: "Anne Brown" }
+    ]
+}
+// ![0]
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/main.cpp
new file mode 100644 (file)
index 0000000..90e1fad
--- /dev/null
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QCoreApplication>
+#include <QDeclarativeEngine>
+#include <QDeclarativeComponent>
+#include <QDebug>
+#include "birthdayparty.h"
+#include "person.h"
+
+int main(int argc, char ** argv)
+{
+    QCoreApplication app(argc, argv);
+
+    qmlRegisterType<BirthdayParty>("People", 1,0, "BirthdayParty");
+    qmlRegisterType<Person>("People", 1,0, "Person");
+
+    QDeclarativeEngine engine;
+    QDeclarativeComponent component(&engine, QUrl("qrc:example.qml"));
+    BirthdayParty *party = qobject_cast<BirthdayParty *>(component.create());
+
+    if (party && party->host()) {
+        qWarning() << party->host()->name() << "is having a birthday!";
+        qWarning() << "They are inviting:";
+        for (int ii = 0; ii < party->guestCount(); ++ii)
+            qWarning() << "   " << party->guest(ii)->name();
+    } else {
+        qWarning() << component.errors();
+    }
+
+    return 0;
+}
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.cpp
new file mode 100644 (file)
index 0000000..600b05f
--- /dev/null
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "person.h"
+
+Person::Person(QObject *parent)
+: QObject(parent), m_shoeSize(0)
+{
+}
+
+QString Person::name() const
+{
+    return m_name;
+}
+
+void Person::setName(const QString &n)
+{
+    m_name = n;
+}
+
+int Person::shoeSize() const
+{
+    return m_shoeSize;
+}
+
+void Person::setShoeSize(int s)
+{
+    m_shoeSize = s;
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.h
new file mode 100644 (file)
index 0000000..8545a3e
--- /dev/null
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PERSON_H
+#define PERSON_H
+
+#include <QObject>
+
+class Person : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(QString name READ name WRITE setName)
+    Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize)
+public:
+    Person(QObject *parent = 0);
+
+    QString name() const;
+    void setName(const QString &);
+
+    int shoeSize() const;
+    void setShoeSize(int);
+private:
+    QString m_name;
+    int m_shoeSize;
+};
+
+#endif // PERSON_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.pro
new file mode 100644 (file)
index 0000000..4f0ff88
--- /dev/null
@@ -0,0 +1,18 @@
+TEMPLATE = app
+TARGET = properties
+DEPENDPATH += .
+INCLUDEPATH += .
+QT += declarative qtquick1
+
+# Input
+SOURCES += main.cpp \
+           person.cpp \
+           birthdayparty.cpp
+HEADERS += person.h \
+           birthdayparty.h
+RESOURCES += properties.qrc
+
+target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/properties
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS properties.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/properties
+INSTALLS += target sources
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.qrc
new file mode 100644 (file)
index 0000000..e2fa01d
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>example.qml</file>
+</qresource>
+</RCC>
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.pro
new file mode 100644 (file)
index 0000000..505cefd
--- /dev/null
@@ -0,0 +1,14 @@
+TEMPLATE = subdirs
+
+SUBDIRS += \
+    adding \
+    attached \
+    binding \
+    coercion \
+    default \
+    extended \
+    grouped \
+    properties \
+    signal \
+    valuesource \
+    methods
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.qmlproject b/examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.cpp
new file mode 100644 (file)
index 0000000..8f904bb
--- /dev/null
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "birthdayparty.h"
+
+BirthdayPartyAttached::BirthdayPartyAttached(QObject *object)
+: QObject(object)
+{
+}
+
+QDate BirthdayPartyAttached::rsvp() const
+{
+    return m_rsvp;
+}
+
+void BirthdayPartyAttached::setRsvp(const QDate &d)
+{
+    m_rsvp = d;
+}
+
+
+BirthdayParty::BirthdayParty(QObject *parent)
+: QObject(parent), m_host(0)
+{
+}
+
+Person *BirthdayParty::host() const
+{
+    return m_host;
+}
+
+void BirthdayParty::setHost(Person *c)
+{
+    m_host = c;
+}
+
+QDeclarativeListProperty<Person> BirthdayParty::guests()
+{
+    return QDeclarativeListProperty<Person>(this, m_guests);
+}
+
+int BirthdayParty::guestCount() const
+{
+    return m_guests.count();
+}
+
+Person *BirthdayParty::guest(int index) const
+{
+    return m_guests.at(index);
+}
+
+void BirthdayParty::startParty()
+{
+    QTime time = QTime::currentTime();
+    emit partyStarted(time);
+}
+
+BirthdayPartyAttached *BirthdayParty::qmlAttachedProperties(QObject *object)
+{
+    return new BirthdayPartyAttached(object);
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.h
new file mode 100644 (file)
index 0000000..51972fc
--- /dev/null
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef BIRTHDAYPARTY_H
+#define BIRTHDAYPARTY_H
+
+#include <QObject>
+#include <QDate>
+#include <qdeclarative.h>
+#include "person.h"
+
+class BirthdayPartyAttached : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(QDate rsvp READ rsvp WRITE setRsvp)
+public:
+    BirthdayPartyAttached(QObject *object);
+
+    QDate rsvp() const;
+    void setRsvp(const QDate &);
+
+private:
+    QDate m_rsvp;
+};
+
+class BirthdayParty : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(Person *host READ host WRITE setHost)
+    Q_PROPERTY(QDeclarativeListProperty<Person> guests READ guests)
+    Q_CLASSINFO("DefaultProperty", "guests")
+public:
+    BirthdayParty(QObject *parent = 0);
+
+    Person *host() const;
+    void setHost(Person *);
+
+    QDeclarativeListProperty<Person> guests();
+    int guestCount() const;
+    Person *guest(int) const;
+
+    static BirthdayPartyAttached *qmlAttachedProperties(QObject *);
+
+    void startParty();
+// ![0]
+signals:
+    void partyStarted(const QTime &time);
+// ![0]
+
+private:
+    Person *m_host;
+    QList<Person *> m_guests;
+};
+QML_DECLARE_TYPEINFO(BirthdayParty, QML_HAS_ATTACHED_PROPERTIES)
+
+#endif // BIRTHDAYPARTY_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/example.qml
new file mode 100644 (file)
index 0000000..5b03798
--- /dev/null
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import People 1.0
+
+// ![0]
+BirthdayParty {
+    onPartyStarted: console.log("This party started rockin' at " + time);
+// ![0]
+
+    host: Boy {
+        name: "Bob Jones"
+        shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 }
+    }
+
+    Boy {
+        name: "Leo Hodges"
+        BirthdayParty.rsvp: "2009-07-06"
+        shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 }
+    }
+    Boy {
+        name: "Jack Smith"
+        shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 }
+    }
+    Girl {
+        name: "Anne Brown"
+        BirthdayParty.rsvp: "2009-07-01"
+        shoe.size: 7
+        shoe.color: "red"
+        shoe.brand: "Marc Jacobs"
+        shoe.price: 699.99
+    }
+// ![1]
+}
+// ![1]
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/main.cpp
new file mode 100644 (file)
index 0000000..f1a8f1c
--- /dev/null
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QCoreApplication>
+#include <QDeclarativeEngine>
+#include <QDeclarativeComponent>
+#include <QDebug>
+#include "birthdayparty.h"
+#include "person.h"
+
+int main(int argc, char ** argv)
+{
+    QCoreApplication app(argc, argv);
+
+    qmlRegisterType<BirthdayPartyAttached>();
+    qmlRegisterType<BirthdayParty>("People", 1,0, "BirthdayParty");
+    qmlRegisterType<ShoeDescription>();
+    qmlRegisterType<Person>();
+    qmlRegisterType<Boy>("People", 1,0, "Boy");
+    qmlRegisterType<Girl>("People", 1,0, "Girl");
+
+    QDeclarativeEngine engine;
+    QDeclarativeComponent component(&engine, QUrl("qrc:example.qml"));
+    BirthdayParty *party = qobject_cast<BirthdayParty *>(component.create());
+
+    if (party && party->host()) {
+        qWarning() << party->host()->name() << "is having a birthday!";
+
+        if (qobject_cast<Boy *>(party->host()))
+            qWarning() << "He is inviting:";
+        else
+            qWarning() << "She is inviting:";
+
+        for (int ii = 0; ii < party->guestCount(); ++ii) {
+            Person *guest = party->guest(ii);
+
+            QDate rsvpDate;
+            QObject *attached =
+                qmlAttachedPropertiesObject<BirthdayParty>(guest, false);
+            if (attached)
+                rsvpDate = attached->property("rsvp").toDate();
+
+            if (rsvpDate.isNull())
+                qWarning() << "   " << guest->name() << "RSVP date: Hasn't RSVP'd";
+            else
+                qWarning() << "   " << guest->name() << "RSVP date:" << qPrintable(rsvpDate.toString());
+        }
+
+        party->startParty();
+    } else {
+        qWarning() << component.errors();
+    }
+
+    return 0;
+}
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.cpp
new file mode 100644 (file)
index 0000000..3be06bd
--- /dev/null
@@ -0,0 +1,118 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "person.h"
+
+ShoeDescription::ShoeDescription(QObject *parent)
+: QObject(parent), m_size(0), m_price(0)
+{
+}
+
+int ShoeDescription::size() const
+{
+    return m_size;
+}
+
+void ShoeDescription::setSize(int s)
+{
+    m_size = s;
+}
+
+QColor ShoeDescription::color() const
+{
+    return m_color;
+}
+
+void ShoeDescription::setColor(const QColor &c)
+{
+    m_color = c;
+}
+
+QString ShoeDescription::brand() const
+{
+    return m_brand;
+}
+
+void ShoeDescription::setBrand(const QString &b)
+{
+    m_brand = b;
+}
+
+qreal ShoeDescription::price() const
+{
+    return m_price;
+}
+
+void ShoeDescription::setPrice(qreal p)
+{
+    m_price = p;
+}
+
+Person::Person(QObject *parent)
+: QObject(parent)
+{
+}
+
+QString Person::name() const
+{
+    return m_name;
+}
+
+void Person::setName(const QString &n)
+{
+    m_name = n;
+}
+
+ShoeDescription *Person::shoe()
+{
+    return &m_shoe;
+}
+
+
+Boy::Boy(QObject * parent)
+: Person(parent)
+{
+}
+
+
+Girl::Girl(QObject * parent)
+: Person(parent)
+{
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.h
new file mode 100644 (file)
index 0000000..5db160f
--- /dev/null
@@ -0,0 +1,105 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PERSON_H
+#define PERSON_H
+
+#include <QObject>
+#include <QColor>
+
+class ShoeDescription : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(int size READ size WRITE setSize)
+    Q_PROPERTY(QColor color READ color WRITE setColor)
+    Q_PROPERTY(QString brand READ brand WRITE setBrand)
+    Q_PROPERTY(qreal price READ price WRITE setPrice)
+public:
+    ShoeDescription(QObject *parent = 0);
+
+    int size() const;
+    void setSize(int);
+
+    QColor color() const;
+    void setColor(const QColor &);
+
+    QString brand() const;
+    void setBrand(const QString &);
+
+    qreal price() const;
+    void setPrice(qreal);
+private:
+    int m_size;
+    QColor m_color;
+    QString m_brand;
+    qreal m_price;
+};
+
+class Person : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(QString name READ name WRITE setName)
+    Q_PROPERTY(ShoeDescription *shoe READ shoe)
+public:
+    Person(QObject *parent = 0);
+
+    QString name() const;
+    void setName(const QString &);
+
+    ShoeDescription *shoe();
+private:
+    QString m_name;
+    ShoeDescription m_shoe;
+};
+
+class Boy : public Person
+{
+    Q_OBJECT
+public:
+    Boy(QObject * parent = 0);
+};
+
+class Girl : public Person
+{
+    Q_OBJECT
+public:
+    Girl(QObject * parent = 0);
+};
+
+#endif // PERSON_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.pro
new file mode 100644 (file)
index 0000000..7feed89
--- /dev/null
@@ -0,0 +1,17 @@
+TEMPLATE = app
+TARGET = signal
+DEPENDPATH += .
+INCLUDEPATH += .
+QT += declarative
+
+# Input
+SOURCES += main.cpp \
+           person.cpp \
+           birthdayparty.cpp
+HEADERS += person.h \
+           birthdayparty.h
+RESOURCES += signal.qrc
+target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/signal
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS signal.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/signal
+INSTALLS += target sources
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.qrc
new file mode 100644 (file)
index 0000000..e2fa01d
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>example.qml</file>
+</qresource>
+</RCC>
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.cpp
new file mode 100644 (file)
index 0000000..a9df5ba
--- /dev/null
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "birthdayparty.h"
+
+BirthdayPartyAttached::BirthdayPartyAttached(QObject *object)
+: QObject(object)
+{
+}
+
+QDate BirthdayPartyAttached::rsvp() const
+{
+    return m_rsvp;
+}
+
+void BirthdayPartyAttached::setRsvp(const QDate &d)
+{
+    m_rsvp = d;
+}
+
+
+BirthdayParty::BirthdayParty(QObject *parent)
+: QObject(parent), m_host(0)
+{
+}
+
+Person *BirthdayParty::host() const
+{
+    return m_host;
+}
+
+void BirthdayParty::setHost(Person *c)
+{
+    m_host = c;
+}
+
+QDeclarativeListProperty<Person> BirthdayParty::guests()
+{
+    return QDeclarativeListProperty<Person>(this, m_guests);
+}
+
+int BirthdayParty::guestCount() const
+{
+    return m_guests.count();
+}
+
+Person *BirthdayParty::guest(int index) const
+{
+    return m_guests.at(index);
+}
+
+void BirthdayParty::startParty()
+{
+    QTime time = QTime::currentTime();
+    emit partyStarted(time);
+}
+
+QString BirthdayParty::announcement() const
+{
+    return QString();
+}
+
+void BirthdayParty::setAnnouncement(const QString &speak)
+{
+    qWarning() << qPrintable(speak);
+}
+
+BirthdayPartyAttached *BirthdayParty::qmlAttachedProperties(QObject *object)
+{
+    return new BirthdayPartyAttached(object);
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.h
new file mode 100644 (file)
index 0000000..dfe3bd6
--- /dev/null
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef BIRTHDAYPARTY_H
+#define BIRTHDAYPARTY_H
+
+#include <QObject>
+#include <QDate>
+#include <QDebug>
+#include <qdeclarative.h>
+#include "person.h"
+
+class BirthdayPartyAttached : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(QDate rsvp READ rsvp WRITE setRsvp)
+public:
+    BirthdayPartyAttached(QObject *object);
+
+    QDate rsvp() const;
+    void setRsvp(const QDate &);
+
+private:
+    QDate m_rsvp;
+};
+
+class BirthdayParty : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(Person *host READ host WRITE setHost)
+    Q_PROPERTY(QDeclarativeListProperty<Person> guests READ guests)
+// ![0]
+    Q_PROPERTY(QString announcement READ announcement WRITE setAnnouncement)
+// ![0]
+    Q_CLASSINFO("DefaultProperty", "guests")
+public:
+    BirthdayParty(QObject *parent = 0);
+
+    Person *host() const;
+    void setHost(Person *);
+
+    QDeclarativeListProperty<Person> guests();
+    int guestCount() const;
+    Person *guest(int) const;
+
+    QString announcement() const;
+    void setAnnouncement(const QString &);
+
+    static BirthdayPartyAttached *qmlAttachedProperties(QObject *);
+
+    void startParty();
+signals:
+    void partyStarted(const QTime &time);
+
+private:
+    Person *m_host;
+    QList<Person *> m_guests;
+};
+QML_DECLARE_TYPEINFO(BirthdayParty, QML_HAS_ATTACHED_PROPERTIES)
+
+#endif // BIRTHDAYPARTY_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/example.qml
new file mode 100644 (file)
index 0000000..9c63aa4
--- /dev/null
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import People 1.0
+
+// ![0]
+BirthdayParty {
+    HappyBirthdaySong on announcement { name: "Bob Jones" }
+// ![0]
+
+    onPartyStarted: console.log("This party started rockin' at " + time);
+
+
+    host: Boy {
+        name: "Bob Jones"
+        shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 }
+    }
+
+    Boy {
+        name: "Leo Hodges"
+        BirthdayParty.rsvp: "2009-07-06"
+        shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 }
+    }
+    Boy {
+        name: "Jack Smith"
+        shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 }
+    }
+    Girl {
+        name: "Anne Brown"
+        BirthdayParty.rsvp: "2009-07-01"
+        shoe.size: 7
+        shoe.color: "red"
+        shoe.brand: "Marc Jacobs"
+        shoe.price: 699.99
+    }
+
+// ![1]
+}
+// ![1]
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.cpp
new file mode 100644 (file)
index 0000000..e3f0222
--- /dev/null
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "happybirthdaysong.h"
+#include <QTimer>
+
+HappyBirthdaySong::HappyBirthdaySong(QObject *parent)
+: QObject(parent), m_line(-1)
+{
+    setName(QString());
+    QTimer *timer = new QTimer(this);
+    QObject::connect(timer, SIGNAL(timeout()), this, SLOT(advance()));
+    timer->start(1000);
+}
+
+void HappyBirthdaySong::setTarget(const QDeclarativeProperty &p)
+{
+    m_target = p;
+}
+
+QString HappyBirthdaySong::name() const
+{
+    return m_name;
+}
+
+void HappyBirthdaySong::setName(const QString &name)
+{
+    m_name = name;
+
+    m_lyrics.clear();
+    m_lyrics << "Happy birthday to you,";
+    m_lyrics << "Happy birthday to you,";
+    m_lyrics << "Happy birthday dear " + m_name + ",";
+    m_lyrics << "Happy birthday to you!";
+    m_lyrics << "";
+}
+
+void HappyBirthdaySong::advance()
+{
+    m_line = (m_line + 1) % m_lyrics.count();
+
+    m_target.write(m_lyrics.at(m_line));
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.h
new file mode 100644 (file)
index 0000000..b3cd3f4
--- /dev/null
@@ -0,0 +1,79 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef HAPPYBIRTHDAYSONG_H
+#define HAPPYBIRTHDAYSONG_H
+
+#include <QDeclarativePropertyValueSource>
+#include <QDeclarativeProperty>
+#include <qdeclarative.h>
+
+#include <QStringList>
+
+// ![0]
+class HappyBirthdaySong : public QObject, public QDeclarativePropertyValueSource
+{
+    Q_OBJECT
+    Q_INTERFACES(QDeclarativePropertyValueSource)
+// ![0]
+    Q_PROPERTY(QString name READ name WRITE setName)
+// ![1]
+public:
+    HappyBirthdaySong(QObject *parent = 0);
+
+    virtual void setTarget(const QDeclarativeProperty &);
+// ![1]
+
+    QString name() const;
+    void setName(const QString &);
+
+private slots:
+    void advance();
+
+private:
+    int m_line;
+    QStringList m_lyrics;
+    QDeclarativeProperty m_target;
+    QString m_name;
+// ![2]
+};
+// ![2]
+
+#endif // HAPPYBIRTHDAYSONG_H
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/main.cpp
new file mode 100644 (file)
index 0000000..3515f51
--- /dev/null
@@ -0,0 +1,93 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QCoreApplication>
+#include <QDeclarativeEngine>
+#include <QDeclarativeComponent>
+#include <QDebug>
+#include "birthdayparty.h"
+#include "happybirthdaysong.h"
+#include "person.h"
+
+int main(int argc, char ** argv)
+{
+    QCoreApplication app(argc, argv);
+
+    qmlRegisterType<BirthdayPartyAttached>();
+    qmlRegisterType<BirthdayParty>("People", 1,0, "BirthdayParty");
+    qmlRegisterType<HappyBirthdaySong>("People", 1,0, "HappyBirthdaySong");
+    qmlRegisterType<ShoeDescription>();
+    qmlRegisterType<Person>();
+    qmlRegisterType<Boy>("People", 1,0, "Boy");
+    qmlRegisterType<Girl>("People", 1,0, "Girl");
+
+    QDeclarativeEngine engine;
+    QDeclarativeComponent component(&engine, QUrl("qrc:example.qml"));
+    BirthdayParty *party = qobject_cast<BirthdayParty *>(component.create());
+
+    if (party && party->host()) {
+        qWarning() << party->host()->name() << "is having a birthday!";
+
+        if (qobject_cast<Boy *>(party->host()))
+            qWarning() << "He is inviting:";
+        else
+            qWarning() << "She is inviting:";
+
+        for (int ii = 0; ii < party->guestCount(); ++ii) {
+            Person *guest = party->guest(ii);
+
+            QDate rsvpDate;
+            QObject *attached =
+                qmlAttachedPropertiesObject<BirthdayParty>(guest, false);
+            if (attached)
+                rsvpDate = attached->property("rsvp").toDate();
+
+            if (rsvpDate.isNull())
+                qWarning() << "   " << guest->name() << "RSVP date: Hasn't RSVP'd";
+            else
+                qWarning() << "   " << guest->name() << "RSVP date:" << qPrintable(rsvpDate.toString());
+        }
+
+        party->startParty();
+    } else {
+        qWarning() << component.errors();
+    }
+
+    return app.exec();
+}
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.cpp
new file mode 100644 (file)
index 0000000..3be06bd
--- /dev/null
@@ -0,0 +1,118 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "person.h"
+
+ShoeDescription::ShoeDescription(QObject *parent)
+: QObject(parent), m_size(0), m_price(0)
+{
+}
+
+int ShoeDescription::size() const
+{
+    return m_size;
+}
+
+void ShoeDescription::setSize(int s)
+{
+    m_size = s;
+}
+
+QColor ShoeDescription::color() const
+{
+    return m_color;
+}
+
+void ShoeDescription::setColor(const QColor &c)
+{
+    m_color = c;
+}
+
+QString ShoeDescription::brand() const
+{
+    return m_brand;
+}
+
+void ShoeDescription::setBrand(const QString &b)
+{
+    m_brand = b;
+}
+
+qreal ShoeDescription::price() const
+{
+    return m_price;
+}
+
+void ShoeDescription::setPrice(qreal p)
+{
+    m_price = p;
+}
+
+Person::Person(QObject *parent)
+: QObject(parent)
+{
+}
+
+QString Person::name() const
+{
+    return m_name;
+}
+
+void Person::setName(const QString &n)
+{
+    m_name = n;
+}
+
+ShoeDescription *Person::shoe()
+{
+    return &m_shoe;
+}
+
+
+Boy::Boy(QObject * parent)
+: Person(parent)
+{
+}
+
+
+Girl::Girl(QObject * parent)
+: Person(parent)
+{
+}
+
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.h b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.h
new file mode 100644 (file)
index 0000000..5db160f
--- /dev/null
@@ -0,0 +1,105 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PERSON_H
+#define PERSON_H
+
+#include <QObject>
+#include <QColor>
+
+class ShoeDescription : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(int size READ size WRITE setSize)
+    Q_PROPERTY(QColor color READ color WRITE setColor)
+    Q_PROPERTY(QString brand READ brand WRITE setBrand)
+    Q_PROPERTY(qreal price READ price WRITE setPrice)
+public:
+    ShoeDescription(QObject *parent = 0);
+
+    int size() const;
+    void setSize(int);
+
+    QColor color() const;
+    void setColor(const QColor &);
+
+    QString brand() const;
+    void setBrand(const QString &);
+
+    qreal price() const;
+    void setPrice(qreal);
+private:
+    int m_size;
+    QColor m_color;
+    QString m_brand;
+    qreal m_price;
+};
+
+class Person : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(QString name READ name WRITE setName)
+    Q_PROPERTY(ShoeDescription *shoe READ shoe)
+public:
+    Person(QObject *parent = 0);
+
+    QString name() const;
+    void setName(const QString &);
+
+    ShoeDescription *shoe();
+private:
+    QString m_name;
+    ShoeDescription m_shoe;
+};
+
+class Boy : public Person
+{
+    Q_OBJECT
+public:
+    Boy(QObject * parent = 0);
+};
+
+class Girl : public Person
+{
+    Q_OBJECT
+public:
+    Girl(QObject * parent = 0);
+};
+
+#endif // PERSON_H
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.pro
new file mode 100644 (file)
index 0000000..64034a1
--- /dev/null
@@ -0,0 +1,19 @@
+TEMPLATE = app
+TARGET = valuesource
+DEPENDPATH += .
+INCLUDEPATH += .
+QT += declarative
+
+# Input
+SOURCES += main.cpp \
+           person.cpp \
+           birthdayparty.cpp \
+           happybirthdaysong.cpp
+HEADERS += person.h \
+           birthdayparty.h \
+           happybirthdaysong.h
+RESOURCES += valuesource.qrc
+target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/valuesource
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS valuesource.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/valuesource
+INSTALLS += target sources
diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.qrc b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.qrc
new file mode 100644 (file)
index 0000000..e2fa01d
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>example.qml</file>
+</qresource>
+</RCC>
diff --git a/examples/declarative/qtquick1/examples.qmlproject b/examples/declarative/qtquick1/examples.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/i18n/i18n.qml b/examples/declarative/qtquick1/i18n/i18n.qml
new file mode 100644 (file)
index 0000000..86eafa2
--- /dev/null
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+//
+// The QML runtime automatically loads a translation from the i18n subdirectory of the root
+// QML file, based on the system language.
+//
+// The files are created/updated by running:
+//
+//   lupdate i18n.qml -ts i18n/base.ts
+//
+// Translations for new languages are created by copying i18n/base.ts to i18n/qml_<lang>.ts
+// The .ts files can then be edited with Linguist:
+//
+//   linguist i18n/qml_fr.ts
+//
+// The run-time translation files are then generaeted by running:
+//
+//   lrelease i18n/*.ts
+//
+
+Rectangle {
+    width: 640; height: 480
+
+    Column {
+        anchors.fill: parent; spacing: 20
+
+        Text {
+            text: "If a translation is available for the system language (eg. French) then the"+
+            " string below will translated (eg. 'Bonjour'). Otherwise it will show 'Hello'."
+            width: parent.width; wrapMode: Text.WordWrap
+        }
+
+        Text {
+            text: qsTr("Hello")
+            font.pointSize: 25; anchors.horizontalCenter: parent.horizontalCenter
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/i18n/i18n.qmlproject b/examples/declarative/qtquick1/i18n/i18n.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/i18n/i18n/base.ts b/examples/declarative/qtquick1/i18n/i18n/base.ts
new file mode 100644 (file)
index 0000000..82547a1
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" sourcelanguage="en">
+<context>
+    <name>i18n</name>
+    <message>
+        <location filename="../i18n.qml" line="30"/>
+        <source>Hello</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/examples/declarative/qtquick1/i18n/i18n/qml_en_AU.ts b/examples/declarative/qtquick1/i18n/i18n/qml_en_AU.ts
new file mode 100644 (file)
index 0000000..e991aff
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_AU" sourcelanguage="en">
+<context>
+    <name>i18n</name>
+    <message>
+        <location filename="../i18n.qml" line="30"/>
+        <source>Hello</source>
+        <translation>G&apos;day</translation>
+    </message>
+</context>
+</TS>
diff --git a/examples/declarative/qtquick1/i18n/i18n/qml_fr.ts b/examples/declarative/qtquick1/i18n/i18n/qml_fr.ts
new file mode 100644 (file)
index 0000000..365abd9
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr" sourcelanguage="en">
+<context>
+    <name>i18n</name>
+    <message>
+        <location filename="../i18n.qml" line="30"/>
+        <source>Hello</source>
+        <translation>Bonjour</translation>
+    </message>
+</context>
+</TS>
diff --git a/examples/declarative/qtquick1/imageelements/borderimage/borderimage.qml b/examples/declarative/qtquick1/imageelements/borderimage/borderimage.qml
new file mode 100644 (file)
index 0000000..2ff18c8
--- /dev/null
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import "content"
+
+Rectangle {
+    id: page
+    width: 1030; height: 540
+
+    Grid {
+        anchors.centerIn: parent; spacing: 20
+
+        MyBorderImage {
+            minWidth: 120; maxWidth: 240; minHeight: 120; maxHeight: 240
+            source: "content/colors.png"; margin: 30
+        }
+
+        MyBorderImage {
+            minWidth: 120; maxWidth: 240; minHeight: 120; maxHeight: 240
+            source: "content/colors.png"; margin: 30
+            horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat
+        }
+
+        MyBorderImage {
+            minWidth: 120; maxWidth: 240; minHeight: 120; maxHeight: 240
+            source: "content/colors.png"; margin: 30
+            horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat
+        }
+
+        MyBorderImage {
+            minWidth: 120; maxWidth: 240; minHeight: 120; maxHeight: 240
+            source: "content/colors.png"; margin: 30
+            horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round
+        }
+
+        MyBorderImage {
+            minWidth: 60; maxWidth: 200; minHeight: 40; maxHeight: 200
+            source: "content/bw.png"; margin: 10
+        }
+
+        MyBorderImage {
+            minWidth: 60; maxWidth: 200; minHeight: 40; maxHeight: 200
+            source: "content/bw.png"; margin: 10
+            horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat
+        }
+
+        MyBorderImage {
+            minWidth: 60; maxWidth: 200; minHeight: 40; maxHeight: 200
+            source: "content/bw.png"; margin: 10
+            horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat
+        }
+
+        MyBorderImage {
+            minWidth: 60; maxWidth: 200; minHeight: 40; maxHeight: 200
+            source: "content/bw.png"; margin: 10
+            horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/imageelements/borderimage/borderimage.qmlproject b/examples/declarative/qtquick1/imageelements/borderimage/borderimage.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/imageelements/borderimage/content/MyBorderImage.qml b/examples/declarative/qtquick1/imageelements/borderimage/content/MyBorderImage.qml
new file mode 100644 (file)
index 0000000..8ace6e1
--- /dev/null
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Item {
+    id: container
+
+    property alias horizontalMode: image.horizontalTileMode
+    property alias verticalMode: image.verticalTileMode
+    property alias source: image.source
+
+    property int minWidth
+    property int minHeight
+    property int maxWidth
+    property int maxHeight
+    property int margin
+
+    width: 240; height: 240
+
+    BorderImage {
+        id: image; anchors.centerIn: parent
+
+        SequentialAnimation on width {
+            loops: Animation.Infinite
+            NumberAnimation {
+                from: container.minWidth; to: container.maxWidth
+                duration: 2000; easing.type: Easing.InOutQuad
+            }
+            NumberAnimation {
+                from: container.maxWidth; to: container.minWidth
+                duration: 2000; easing.type: Easing.InOutQuad
+            }
+        }
+
+        SequentialAnimation on height {
+            loops: Animation.Infinite
+            NumberAnimation {
+                from: container.minHeight; to: container.maxHeight
+                duration: 2000; easing.type: Easing.InOutQuad
+            }
+            NumberAnimation {
+                from: container.maxHeight; to: container.minHeight
+                duration: 2000; easing.type: Easing.InOutQuad
+            }
+        }
+
+        border.top: container.margin
+        border.left: container.margin
+        border.bottom: container.margin
+        border.right: container.margin
+    }
+}
diff --git a/examples/declarative/qtquick1/imageelements/borderimage/content/ShadowRectangle.qml b/examples/declarative/qtquick1/imageelements/borderimage/content/ShadowRectangle.qml
new file mode 100644 (file)
index 0000000..722beae
--- /dev/null
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Item {
+    property alias color : rectangle.color
+
+    BorderImage {
+        anchors.fill: rectangle
+        anchors { leftMargin: -6; topMargin: -6; rightMargin: -8; bottomMargin: -8 }
+        border { left: 10; top: 10; right: 10; bottom: 10 }
+        source: "shadow.png"; smooth: true
+    }
+
+    Rectangle { id: rectangle; anchors.fill: parent }
+}
diff --git a/examples/declarative/qtquick1/imageelements/borderimage/content/bw.png b/examples/declarative/qtquick1/imageelements/borderimage/content/bw.png
new file mode 100644 (file)
index 0000000..486eaae
Binary files /dev/null and b/examples/declarative/qtquick1/imageelements/borderimage/content/bw.png differ
diff --git a/examples/declarative/qtquick1/imageelements/borderimage/content/colors-round.sci b/examples/declarative/qtquick1/imageelements/borderimage/content/colors-round.sci
new file mode 100644 (file)
index 0000000..506f6f5
--- /dev/null
@@ -0,0 +1,7 @@
+border.left:30
+border.top:30
+border.right:30
+border.bottom:30
+horizontalTileRule:Round
+verticalTileRule:Round
+source:colors.png
diff --git a/examples/declarative/qtquick1/imageelements/borderimage/content/colors-stretch.sci b/examples/declarative/qtquick1/imageelements/borderimage/content/colors-stretch.sci
new file mode 100644 (file)
index 0000000..e4989a7
--- /dev/null
@@ -0,0 +1,5 @@
+border.left:30
+border.top:30
+border.right:30
+border.bottom:30
+source:colors.png
diff --git a/examples/declarative/qtquick1/imageelements/borderimage/content/colors.png b/examples/declarative/qtquick1/imageelements/borderimage/content/colors.png
new file mode 100644 (file)
index 0000000..dfb62f3
Binary files /dev/null and b/examples/declarative/qtquick1/imageelements/borderimage/content/colors.png differ
diff --git a/examples/declarative/qtquick1/imageelements/borderimage/content/shadow.png b/examples/declarative/qtquick1/imageelements/borderimage/content/shadow.png
new file mode 100644 (file)
index 0000000..431af85
Binary files /dev/null and b/examples/declarative/qtquick1/imageelements/borderimage/content/shadow.png differ
diff --git a/examples/declarative/qtquick1/imageelements/borderimage/shadows.qml b/examples/declarative/qtquick1/imageelements/borderimage/shadows.qml
new file mode 100644 (file)
index 0000000..b48ab84
--- /dev/null
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import "content"
+
+Rectangle {
+    id: window
+
+    width: 480; height: 320
+    color: "gray"
+
+    ShadowRectangle {
+        anchors.centerIn: parent; width: 250; height: 250
+        color: "lightsteelblue"
+    }
+
+    ShadowRectangle {
+        anchors.centerIn: parent; width: 200; height: 200
+        color: "steelblue"
+    }
+
+    ShadowRectangle {
+        anchors.centerIn: parent; width: 150; height: 150
+        color: "thistle"
+    }
+}
diff --git a/examples/declarative/qtquick1/imageelements/image/ImageCell.qml b/examples/declarative/qtquick1/imageelements/image/ImageCell.qml
new file mode 100644 (file)
index 0000000..a2c4f44
--- /dev/null
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import QtQuick 1.0
+
+Item {
+    property alias mode: image.fillMode
+    property alias caption: captionItem.text
+
+    width: parent.cellWidth; height: parent.cellHeight
+
+    Image {
+        id: image
+        width: parent.width; height: parent.height - captionItem.height
+        source: "qt-logo.png"
+        clip: true      // only makes a difference if mode is PreserveAspectCrop
+        smooth: true
+    }
+
+    Text {
+        id: captionItem
+        anchors.horizontalCenter: parent.horizontalCenter; anchors.bottom: parent.bottom
+    }
+}
diff --git a/examples/declarative/qtquick1/imageelements/image/image.qml b/examples/declarative/qtquick1/imageelements/image/image.qml
new file mode 100644 (file)
index 0000000..abaa095
--- /dev/null
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    width: 490
+    height: 285
+
+    Grid {
+        property int cellWidth: (width - (spacing * (columns - 1))) / columns
+        property int cellHeight: (height - (spacing * (rows - 1))) / rows
+
+        anchors.fill: parent
+        anchors.margins: 30
+
+        columns: 3
+        rows: 2
+        spacing: 30
+
+        ImageCell { mode: Image.Stretch; caption: "Stretch" }
+        ImageCell { mode: Image.PreserveAspectFit; caption: "PreserveAspectFit" }
+        ImageCell { mode: Image.PreserveAspectCrop; caption: "PreserveAspectCrop" }
+
+        ImageCell { mode: Image.Tile; caption: "Tile" }
+        ImageCell { mode: Image.TileHorizontally; caption: "TileHorizontally" }
+        ImageCell { mode: Image.TileVertically; caption: "TileVertically" }
+    }
+}
diff --git a/examples/declarative/qtquick1/imageelements/image/image.qmlproject b/examples/declarative/qtquick1/imageelements/image/image.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/imageelements/image/qt-logo.png b/examples/declarative/qtquick1/imageelements/image/qt-logo.png
new file mode 100644 (file)
index 0000000..14ddf2a
Binary files /dev/null and b/examples/declarative/qtquick1/imageelements/image/qt-logo.png differ
diff --git a/examples/declarative/qtquick1/imageelements/imageelements.qmlproject b/examples/declarative/qtquick1/imageelements/imageelements.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/keyinteraction/focus/Core/ContextMenu.qml b/examples/declarative/qtquick1/keyinteraction/focus/Core/ContextMenu.qml
new file mode 100644 (file)
index 0000000..76dc076
--- /dev/null
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+FocusScope {
+    id: container
+
+    property bool open: false
+
+    Item {
+        anchors.fill: parent
+
+        Rectangle {
+            anchors.fill: parent
+            color: "#D1DBBD"
+            focus: true
+            Keys.onRightPressed: mainView.focus = true
+
+            Text {
+                anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; margins: 30 }
+                color: "black"
+                font.pixelSize: 14
+                text: "Context Menu"
+            }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/keyinteraction/focus/Core/GridMenu.qml b/examples/declarative/qtquick1/keyinteraction/focus/Core/GridMenu.qml
new file mode 100644 (file)
index 0000000..d199cbc
--- /dev/null
@@ -0,0 +1,105 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+FocusScope {
+    property alias interactive: gridView.interactive
+
+    onActiveFocusChanged: {
+        if (activeFocus)
+            mainView.state = ""
+    }
+
+    Rectangle {
+        anchors.fill: parent
+        clip: true
+        gradient: Gradient {
+            GradientStop { position: 0.0; color: "#193441" }
+            GradientStop { position: 1.0; color: Qt.darker("#193441") }
+        }
+
+        GridView {
+            id: gridView
+            anchors.fill: parent; anchors.leftMargin: 20; anchors.rightMargin: 20
+            cellWidth: 152; cellHeight: 152
+            focus: true
+            model: 12
+
+            KeyNavigation.down: listMenu
+            KeyNavigation.left: contextMenu
+
+            delegate: Item {
+                id: container
+                width: GridView.view.cellWidth; height: GridView.view.cellHeight
+
+                Rectangle {
+                    id: content
+                    color: "transparent"
+                    smooth: true
+                    anchors.fill: parent; anchors.margins: 20; radius: 10
+
+                    Rectangle { color: "#91AA9D"; anchors.fill: parent; anchors.margins: 3; radius: 8; smooth: true }
+                    Image { source: "images/qt-logo.png"; anchors.centerIn: parent; smooth: true }
+                }
+
+                MouseArea {
+                    id: mouseArea
+                    anchors.fill: parent
+                    hoverEnabled: true
+
+                    onClicked: {
+                        GridView.view.currentIndex = index
+                        container.forceActiveFocus()
+                    }
+                }
+
+                states: State {
+                    name: "active"; when: container.activeFocus
+                    PropertyChanges { target: content; color: "#FCFFF5"; scale: 1.1 }
+                }
+
+                transitions: Transition {
+                    NumberAnimation { properties: "scale"; duration: 100 }
+                }
+            }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/keyinteraction/focus/Core/ListMenu.qml b/examples/declarative/qtquick1/keyinteraction/focus/Core/ListMenu.qml
new file mode 100644 (file)
index 0000000..4a2c89c
--- /dev/null
@@ -0,0 +1,105 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+FocusScope {
+    clip: true
+
+    onActiveFocusChanged: {
+        if (activeFocus)
+            mainView.state = "showListViews"
+    }
+
+    ListView {
+        id: list1
+        y: activeFocus ? 10 : 40; width: parent.width / 3; height: parent.height - 20
+        focus: true
+        KeyNavigation.up: gridMenu; KeyNavigation.left: contextMenu; KeyNavigation.right: list2
+        model: 10; cacheBuffer: 200
+        delegate: ListViewDelegate {}
+
+        Behavior on y {
+            NumberAnimation { duration: 600; easing.type: Easing.OutQuint }
+        }
+    }
+
+    ListView {
+        id: list2
+        y: activeFocus ? 10 : 40; x: parseInt(parent.width / 3); width: parent.width / 3; height: parent.height - 20
+        KeyNavigation.up: gridMenu; KeyNavigation.left: list1; KeyNavigation.right: list3
+        model: 10; cacheBuffer: 200
+        delegate: ListViewDelegate {}
+
+        Behavior on y {
+            NumberAnimation { duration: 600; easing.type: Easing.OutQuint }
+        }
+    }
+
+    ListView {
+        id: list3
+        y: activeFocus ? 10 : 40; x: parseInt(2 * parent.width / 3); width: parent.width / 3; height: parent.height - 20
+        KeyNavigation.up: gridMenu; KeyNavigation.left: list2
+        model: 10; cacheBuffer: 200
+        delegate: ListViewDelegate {}
+
+        Behavior on y {
+            NumberAnimation { duration: 600; easing.type: Easing.OutQuint }
+        }
+    }
+
+    Rectangle { width: parent.width; height: 1; color: "#D1DBBD" }
+
+    Rectangle {
+        y: 1; width: parent.width; height: 10
+        gradient: Gradient {
+            GradientStop { position: 0.0; color: "#3E606F" }
+            GradientStop { position: 1.0; color: "transparent" }
+        }
+    }
+
+    Rectangle {
+        y: parent.height - 10; width: parent.width; height: 10
+        gradient: Gradient {
+            GradientStop { position: 1.0; color: "#3E606F" }
+            GradientStop { position: 0.0; color: "transparent" }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/keyinteraction/focus/Core/ListViewDelegate.qml b/examples/declarative/qtquick1/keyinteraction/focus/Core/ListViewDelegate.qml
new file mode 100644 (file)
index 0000000..88c3624
--- /dev/null
@@ -0,0 +1,85 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Item {
+    id: container
+    width: ListView.view.width; height: 60; anchors.leftMargin: 10; anchors.rightMargin: 10
+
+    Rectangle {
+        id: content
+        anchors.centerIn: parent; width: container.width - 40; height: container.height - 10
+        color: "transparent"
+        smooth: true
+        radius: 10
+
+        Rectangle { anchors.fill: parent; anchors.margins: 3; color: "#91AA9D"; smooth: true; radius: 8 }
+    }
+
+    Text {
+        id: label
+        anchors.centerIn: content
+        text: "List element " + (index + 1)
+        color: "#193441"
+        font.pixelSize: 14
+    }
+
+    MouseArea {
+        id: mouseArea
+        anchors.fill: parent
+        hoverEnabled: true
+
+        onClicked: {
+            ListView.view.currentIndex = index
+            container.forceActiveFocus()
+        }
+    }
+
+    states: State {
+        name: "active"; when: container.activeFocus
+        PropertyChanges { target: content; color: "#FCFFF5"; scale: 1.1 }
+        PropertyChanges { target: label; font.pixelSize: 16 }
+    }
+
+    transitions: Transition {
+        NumberAnimation { properties: "scale"; duration: 100 }
+    }
+}
diff --git a/examples/declarative/qtquick1/keyinteraction/focus/Core/images/arrow.png b/examples/declarative/qtquick1/keyinteraction/focus/Core/images/arrow.png
new file mode 100644 (file)
index 0000000..14978c2
Binary files /dev/null and b/examples/declarative/qtquick1/keyinteraction/focus/Core/images/arrow.png differ
diff --git a/examples/declarative/qtquick1/keyinteraction/focus/Core/images/qt-logo.png b/examples/declarative/qtquick1/keyinteraction/focus/Core/images/qt-logo.png
new file mode 100644 (file)
index 0000000..14ddf2a
Binary files /dev/null and b/examples/declarative/qtquick1/keyinteraction/focus/Core/images/qt-logo.png differ
diff --git a/examples/declarative/qtquick1/keyinteraction/focus/focus.qml b/examples/declarative/qtquick1/keyinteraction/focus/focus.qml
new file mode 100644 (file)
index 0000000..ab28260
--- /dev/null
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import "Core"
+
+Rectangle {
+    id: window
+
+    width: 800; height: 480
+    color: "#3E606F"
+
+    FocusScope {
+        id: mainView
+
+        width: parent.width; height: parent.height
+        focus: true
+
+        GridMenu {
+            id: gridMenu
+            width: parent.width; height: 320
+
+            focus: true
+            interactive: parent.activeFocus
+        }
+
+        ListMenu {
+            id: listMenu
+            y: 320; width: parent.width; height: 320
+        }
+
+        Rectangle {
+            id: shade
+            anchors.fill: parent
+            color: "black"
+            opacity: 0
+        }
+
+        states: State {
+            name: "showListViews"
+            PropertyChanges { target: gridMenu; y: -160 }
+            PropertyChanges { target: listMenu; y: 160 }
+        }
+
+        transitions: Transition {
+            NumberAnimation { properties: "y"; duration: 600; easing.type: Easing.OutQuint }
+        }
+    }
+
+    Image {
+        source: "Core/images/arrow.png"
+        rotation: 90
+        anchors.verticalCenter: parent.verticalCenter
+
+        MouseArea {
+            anchors.fill: parent; anchors.margins: -10
+            onClicked: contextMenu.focus = true
+        }
+    }
+
+    ContextMenu { id: contextMenu; x: -265; width: 260; height: parent.height }
+
+    states: State {
+        name: "contextMenuOpen"
+        when: !mainView.activeFocus
+        PropertyChanges { target: contextMenu; x: 0; open: true }
+        PropertyChanges { target: mainView; x: 130 }
+        PropertyChanges { target: shade; opacity: 0.25 }
+    }
+
+    transitions: Transition {
+        NumberAnimation { properties: "x,opacity"; duration: 600; easing.type: Easing.OutQuint }
+    }
+}
diff --git a/examples/declarative/qtquick1/keyinteraction/focus/focus.qmlproject b/examples/declarative/qtquick1/keyinteraction/focus/focus.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/keyinteraction/keyinteraction.qmlproject b/examples/declarative/qtquick1/keyinteraction/keyinteraction.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.pro b/examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.pro
new file mode 100644 (file)
index 0000000..760a8dc
--- /dev/null
@@ -0,0 +1,8 @@
+TEMPLATE = app
+
+QT += declarative qtquick1
+
+RESOURCES += abstractitemmodel.qrc
+
+HEADERS = model.h
+SOURCES = main.cpp model.cpp
diff --git a/examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.qrc b/examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.qrc
new file mode 100644 (file)
index 0000000..4ae861c
--- /dev/null
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>view.qml</file>
+</qresource>
+</RCC>
+
diff --git a/examples/declarative/qtquick1/modelviews/abstractitemmodel/main.cpp b/examples/declarative/qtquick1/modelviews/abstractitemmodel/main.cpp
new file mode 100644 (file)
index 0000000..611f512
--- /dev/null
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "model.h"
+#include <QDeclarativeContext>
+#include <QtQuick1/QDeclarativeView>
+
+#include <QApplication>
+
+//![0]
+int main(int argc, char ** argv)
+{
+    QApplication app(argc, argv);
+
+    AnimalModel model;
+    model.addAnimal(Animal("Wolf", "Medium"));
+    model.addAnimal(Animal("Polar bear", "Large"));
+    model.addAnimal(Animal("Quoll", "Small"));
+
+    QDeclarativeView view;
+    QDeclarativeContext *ctxt = view.rootContext();
+    ctxt->setContextProperty("myModel", &model);
+//![0]
+
+    view.setSource(QUrl("qrc:view.qml"));
+    view.show();
+
+    return app.exec();
+}
+
diff --git a/examples/declarative/qtquick1/modelviews/abstractitemmodel/model.cpp b/examples/declarative/qtquick1/modelviews/abstractitemmodel/model.cpp
new file mode 100644 (file)
index 0000000..9da0729
--- /dev/null
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "model.h"
+
+Animal::Animal(const QString &type, const QString &size)
+    : m_type(type), m_size(size)
+{
+}
+
+QString Animal::type() const
+{
+    return m_type;
+}
+
+QString Animal::size() const
+{
+    return m_size;
+}
+
+//![0]
+AnimalModel::AnimalModel(QObject *parent)
+    : QAbstractListModel(parent)
+{
+    QHash<int, QByteArray> roles;
+    roles[TypeRole] = "type";
+    roles[SizeRole] = "size";
+    setRoleNames(roles);
+}
+//![0]
+
+void AnimalModel::addAnimal(const Animal &animal)
+{
+    beginInsertRows(QModelIndex(), rowCount(), rowCount());
+    m_animals << animal;
+    endInsertRows();
+}
+
+int AnimalModel::rowCount(const QModelIndex & parent) const {
+    return m_animals.count();
+}
+
+QVariant AnimalModel::data(const QModelIndex & index, int role) const {
+    if (index.row() < 0 || index.row() > m_animals.count())
+        return QVariant();
+
+    const Animal &animal = m_animals[index.row()];
+    if (role == TypeRole)
+        return animal.type();
+    else if (role == SizeRole)
+        return animal.size();
+    return QVariant();
+}
+
diff --git a/examples/declarative/qtquick1/modelviews/abstractitemmodel/model.h b/examples/declarative/qtquick1/modelviews/abstractitemmodel/model.h
new file mode 100644 (file)
index 0000000..d9fcebf
--- /dev/null
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QAbstractListModel>
+#include <QStringList>
+
+//![0]
+class Animal
+{
+public:
+    Animal(const QString &type, const QString &size);
+//![0]
+
+    QString type() const;
+    QString size() const;
+
+private:
+    QString m_type;
+    QString m_size;
+//![1]
+};
+
+class AnimalModel : public QAbstractListModel
+{
+    Q_OBJECT
+public:
+    enum AnimalRoles {
+        TypeRole = Qt::UserRole + 1,
+        SizeRole
+    };
+
+    AnimalModel(QObject *parent = 0);
+//![1]
+
+    void addAnimal(const Animal &animal);
+
+    int rowCount(const QModelIndex & parent = QModelIndex()) const;
+
+    QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const;
+
+private:
+    QList<Animal> m_animals;
+//![2]
+};
+//![2]
+
+
diff --git a/examples/declarative/qtquick1/modelviews/abstractitemmodel/view.qml b/examples/declarative/qtquick1/modelviews/abstractitemmodel/view.qml
new file mode 100644 (file)
index 0000000..0363e9a
--- /dev/null
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import QtQuick 1.0
+
+//![0]
+ListView {
+    width: 200; height: 250
+    anchors.fill: parent
+
+    model: myModel
+    delegate: Text { text: "Animal: " + type + ", " + size }
+}
+//![0]
+
diff --git a/examples/declarative/qtquick1/modelviews/gridview/gridview-example.qml b/examples/declarative/qtquick1/modelviews/gridview/gridview-example.qml
new file mode 100644 (file)
index 0000000..85bd2f1
--- /dev/null
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    width: 300; height: 400
+    color: "white"
+
+    ListModel {
+        id: appModel
+        ListElement { name: "Music"; icon: "pics/AudioPlayer_48.png" }
+        ListElement { name: "Movies"; icon: "pics/VideoPlayer_48.png" }
+        ListElement { name: "Camera"; icon: "pics/Camera_48.png" }
+        ListElement { name: "Calendar"; icon: "pics/DateBook_48.png" }
+        ListElement { name: "Messaging"; icon: "pics/EMail_48.png" }
+        ListElement { name: "Todo List"; icon: "pics/TodoList_48.png" }
+        ListElement { name: "Contacts"; icon: "pics/AddressBook_48.png" }
+    }
+
+    Component {
+        id: appDelegate
+
+        Item {
+            width: 100; height: 100
+
+            Image {
+                id: myIcon
+                y: 20; anchors.horizontalCenter: parent.horizontalCenter
+                source: icon
+            }
+            Text {
+                anchors { top: myIcon.bottom; horizontalCenter: parent.horizontalCenter }
+                text: name
+            }
+        }
+    }
+
+    Component {
+        id: appHighlight
+        Rectangle { width: 80; height: 80; color: "lightsteelblue" }
+    }
+
+    GridView {
+        anchors.fill: parent
+        cellWidth: 100; cellHeight: 100
+        highlight: appHighlight
+        focus: true
+        model: appModel
+        delegate: appDelegate
+    }
+}
diff --git a/examples/declarative/qtquick1/modelviews/gridview/gridview.qmlproject b/examples/declarative/qtquick1/modelviews/gridview/gridview.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/modelviews/gridview/pics/AddressBook_48.png b/examples/declarative/qtquick1/modelviews/gridview/pics/AddressBook_48.png
new file mode 100644 (file)
index 0000000..1ab7c8e
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/gridview/pics/AddressBook_48.png differ
diff --git a/examples/declarative/qtquick1/modelviews/gridview/pics/AudioPlayer_48.png b/examples/declarative/qtquick1/modelviews/gridview/pics/AudioPlayer_48.png
new file mode 100644 (file)
index 0000000..f4b8689
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/gridview/pics/AudioPlayer_48.png differ
diff --git a/examples/declarative/qtquick1/modelviews/gridview/pics/Camera_48.png b/examples/declarative/qtquick1/modelviews/gridview/pics/Camera_48.png
new file mode 100644 (file)
index 0000000..c76b524
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/gridview/pics/Camera_48.png differ
diff --git a/examples/declarative/qtquick1/modelviews/gridview/pics/DateBook_48.png b/examples/declarative/qtquick1/modelviews/gridview/pics/DateBook_48.png
new file mode 100644 (file)
index 0000000..58f5787
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/gridview/pics/DateBook_48.png differ
diff --git a/examples/declarative/qtquick1/modelviews/gridview/pics/EMail_48.png b/examples/declarative/qtquick1/modelviews/gridview/pics/EMail_48.png
new file mode 100644 (file)
index 0000000..d6d84a6
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/gridview/pics/EMail_48.png differ
diff --git a/examples/declarative/qtquick1/modelviews/gridview/pics/TodoList_48.png b/examples/declarative/qtquick1/modelviews/gridview/pics/TodoList_48.png
new file mode 100644 (file)
index 0000000..0988448
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/gridview/pics/TodoList_48.png differ
diff --git a/examples/declarative/qtquick1/modelviews/gridview/pics/VideoPlayer_48.png b/examples/declarative/qtquick1/modelviews/gridview/pics/VideoPlayer_48.png
new file mode 100644 (file)
index 0000000..52638c5
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/gridview/pics/VideoPlayer_48.png differ
diff --git a/examples/declarative/qtquick1/modelviews/listview/content/PetsModel.qml b/examples/declarative/qtquick1/modelviews/listview/content/PetsModel.qml
new file mode 100644 (file)
index 0000000..d7375a7
--- /dev/null
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+ListModel {
+    ListElement {
+        name: "Polly"
+        type: "Parrot"
+        age: 12
+        size: "Small"
+    }
+    ListElement {
+        name: "Penny"
+        type: "Turtle"
+        age: 4
+        size: "Small"
+    }
+    ListElement {
+        name: "Warren"
+        type: "Rabbit"
+        age: 2
+        size: "Small"
+    }
+    ListElement {
+        name: "Spot"
+        type: "Dog"
+        age: 9
+        size: "Medium"
+    }
+    ListElement {
+        name: "Schrödinger"
+        type: "Cat"
+        age: 2
+        size: "Medium"
+    }
+    ListElement {
+        name: "Joey"
+        type: "Kangaroo"
+        age: 1
+        size: "Medium"
+    }
+    ListElement {
+        name: "Kimba"
+        type: "Bunny"
+        age: 65
+        size: "Large"
+    }
+    ListElement {
+        name: "Rover"
+        type: "Dog"
+        age: 5
+        size: "Large"
+    }
+    ListElement {
+        name: "Tiny"
+        type: "Elephant"
+        age: 15
+        size: "Large"
+    }
+}
diff --git a/examples/declarative/qtquick1/modelviews/listview/content/PressAndHoldButton.qml b/examples/declarative/qtquick1/modelviews/listview/content/PressAndHoldButton.qml
new file mode 100644 (file)
index 0000000..b79b5cb
--- /dev/null
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Image {
+    id: container
+
+    property int repeatDelay: 300
+    property int repeatDuration: 75
+    property bool pressed: false
+
+    signal clicked
+
+    scale: pressed ? 0.9 : 1
+
+    function release() {
+        autoRepeatClicks.stop()
+        container.pressed = false
+    }
+
+    SequentialAnimation on pressed {
+        id: autoRepeatClicks
+        running: false
+
+        PropertyAction { target: container; property: "pressed"; value: true }
+        ScriptAction { script: container.clicked() }
+        PauseAnimation { duration: repeatDelay }
+
+        SequentialAnimation {
+            loops: Animation.Infinite
+            ScriptAction { script: container.clicked() }
+            PauseAnimation { duration: repeatDuration }
+        }
+    }
+
+    MouseArea {
+        anchors.fill: parent
+
+        onPressed: autoRepeatClicks.start()
+        onReleased: container.release()
+        onCanceled: container.release()
+    }
+}
+
diff --git a/examples/declarative/qtquick1/modelviews/listview/content/RecipesModel.qml b/examples/declarative/qtquick1/modelviews/listview/content/RecipesModel.qml
new file mode 100644 (file)
index 0000000..23d296f
--- /dev/null
@@ -0,0 +1,129 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+ListModel {
+    ListElement {
+        title: "Pancakes"
+        picture: "content/pics/pancakes.jpg"
+        ingredients: "<html>
+                       <ul>
+                        <li> 1 cup (150g) self-raising flour
+                        <li> 1 tbs caster sugar
+                        <li> 3/4 cup (185ml) milk
+                        <li> 1 egg
+                       </ul>
+                      </html>"
+        method: "<html>
+                  <ol>
+                   <li> Sift flour and sugar together into a bowl. Add a pinch of salt.
+                   <li> Beat milk and egg together, then add to dry ingredients. Beat until smooth.
+                   <li> Pour mixture into a pan on medium heat and cook until bubbles appear on the surface.
+                   <li> Turn over and cook other side until golden.
+                  </ol>
+                 </html>"
+    }
+    ListElement {
+        title: "Fruit Salad"
+        picture: "content/pics/fruit-salad.jpg"
+        ingredients: "* Seasonal Fruit"
+        method: "* Chop fruit and place in a bowl."
+    }
+    ListElement {
+        title: "Vegetable Soup"
+        picture: "content/pics/vegetable-soup.jpg"
+        ingredients: "<html>
+                       <ul>
+                        <li> 1 onion
+                        <li> 1 turnip
+                        <li> 1 potato
+                        <li> 1 carrot
+                        <li> 1 head of celery
+                        <li> 1 1/2 litres of water
+                       </ul>
+                      </html>"
+        method: "<html>
+                  <ol>
+                   <li> Chop vegetables.
+                   <li> Boil in water until vegetables soften.
+                   <li> Season with salt and pepper to taste.
+                  </ol>
+                 </html>"
+    }
+    ListElement {
+        title: "Hamburger"
+        picture: "content/pics/hamburger.jpg"
+        ingredients: "<html>
+                       <ul>
+                        <li> 500g minced beef
+                        <li> Seasoning
+                        <li> lettuce, tomato, onion, cheese
+                        <li> 1 hamburger bun for each burger
+                       </ul>
+                      </html>"
+        method: "<html>
+                  <ol>
+                   <li> Mix the beef, together with seasoning, in a food processor.
+                   <li> Shape the beef into burgers.
+                   <li> Grill the burgers for about 5 mins on each side (until cooked through)
+                   <li> Serve each burger on a bun with ketchup, cheese, lettuce, tomato and onion.
+                  </ol>
+                 </html>"
+    }
+    ListElement {
+        title: "Lemonade"
+        picture: "content/pics/lemonade.jpg"
+        ingredients: "<html>
+                       <ul>
+                        <li> 1 cup Lemon Juice
+                        <li> 1 cup Sugar
+                        <li> 6 Cups of Water (2 cups warm water, 4 cups cold water)
+                       </ul>
+                      </html>"
+        method: "<html>
+                  <ol>
+                   <li> Pour 2 cups of warm water into a pitcher and stir in sugar until it dissolves.
+                   <li> Pour in lemon juice, stir again, and add 4 cups of cold water.
+                   <li> Chill or serve over ice cubes.
+                  </ol>
+                 </html>"
+    }
+}
diff --git a/examples/declarative/qtquick1/modelviews/listview/content/TextButton.qml b/examples/declarative/qtquick1/modelviews/listview/content/TextButton.qml
new file mode 100644 (file)
index 0000000..9eef671
--- /dev/null
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: container
+
+    property alias text: label.text
+
+    signal clicked
+
+    width: label.width + 20; height: label.height + 6
+    smooth: true
+    radius: 10
+
+    gradient: Gradient {
+        GradientStop { id: gradientStop; position: 0.0; color: palette.light }
+        GradientStop { position: 1.0; color: palette.button }
+    }
+
+    SystemPalette { id: palette }
+
+    MouseArea {
+        id: mouseArea
+        anchors.fill: parent
+        onClicked: { container.clicked() }
+    }
+
+    Text {
+        id: label
+        anchors.centerIn: parent
+    }
+
+    states: State {
+        name: "pressed"
+        when: mouseArea.pressed
+        PropertyChanges { target: gradientStop; color: palette.dark }
+    }
+}
+
diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/arrow-down.png b/examples/declarative/qtquick1/modelviews/listview/content/pics/arrow-down.png
new file mode 100644 (file)
index 0000000..29d1d44
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/listview/content/pics/arrow-down.png differ
diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/arrow-up.png b/examples/declarative/qtquick1/modelviews/listview/content/pics/arrow-up.png
new file mode 100644 (file)
index 0000000..e437312
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/listview/content/pics/arrow-up.png differ
diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/fruit-salad.jpg b/examples/declarative/qtquick1/modelviews/listview/content/pics/fruit-salad.jpg
new file mode 100644 (file)
index 0000000..da5a6b1
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/listview/content/pics/fruit-salad.jpg differ
diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/hamburger.jpg b/examples/declarative/qtquick1/modelviews/listview/content/pics/hamburger.jpg
new file mode 100644 (file)
index 0000000..d0a15be
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/listview/content/pics/hamburger.jpg differ
diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/lemonade.jpg b/examples/declarative/qtquick1/modelviews/listview/content/pics/lemonade.jpg
new file mode 100644 (file)
index 0000000..db445c9
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/listview/content/pics/lemonade.jpg differ
diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/list-delete.png b/examples/declarative/qtquick1/modelviews/listview/content/pics/list-delete.png
new file mode 100644 (file)
index 0000000..df2a147
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/listview/content/pics/list-delete.png differ
diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/minus-sign.png b/examples/declarative/qtquick1/modelviews/listview/content/pics/minus-sign.png
new file mode 100644 (file)
index 0000000..d6f233d
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/listview/content/pics/minus-sign.png differ
diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/moreDown.png b/examples/declarative/qtquick1/modelviews/listview/content/pics/moreDown.png
new file mode 100644 (file)
index 0000000..31a35d5
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/listview/content/pics/moreDown.png differ
diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/moreUp.png b/examples/declarative/qtquick1/modelviews/listview/content/pics/moreUp.png
new file mode 100644 (file)
index 0000000..fefb9c9
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/listview/content/pics/moreUp.png differ
diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/pancakes.jpg b/examples/declarative/qtquick1/modelviews/listview/content/pics/pancakes.jpg
new file mode 100644 (file)
index 0000000..60c4396
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/listview/content/pics/pancakes.jpg differ
diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/plus-sign.png b/examples/declarative/qtquick1/modelviews/listview/content/pics/plus-sign.png
new file mode 100644 (file)
index 0000000..40df113
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/listview/content/pics/plus-sign.png differ
diff --git a/examples/declarative/qtquick1/modelviews/listview/content/pics/vegetable-soup.jpg b/examples/declarative/qtquick1/modelviews/listview/content/pics/vegetable-soup.jpg
new file mode 100644 (file)
index 0000000..9dce332
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/listview/content/pics/vegetable-soup.jpg differ
diff --git a/examples/declarative/qtquick1/modelviews/listview/dynamiclist.qml b/examples/declarative/qtquick1/modelviews/listview/dynamiclist.qml
new file mode 100644 (file)
index 0000000..2dba8e4
--- /dev/null
@@ -0,0 +1,203 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import QtQuick 1.0
+import "content"
+
+// This example shows how items can be dynamically added to and removed from
+// a ListModel, and how these list modifications can be animated.
+
+Rectangle {
+    id: container
+    width: 500; height: 400
+    color: "#343434"
+
+    // The model:
+    ListModel {
+        id: fruitModel
+
+        ListElement {
+            name: "Apple"; cost: 2.45
+            attributes: [
+                ListElement { description: "Core" },
+                ListElement { description: "Deciduous" }
+            ]
+        }
+        ListElement {
+            name: "Banana"; cost: 1.95
+            attributes: [
+                ListElement { description: "Tropical" },
+                ListElement { description: "Seedless" }
+            ]
+        }
+        ListElement {
+            name: "Cumquat"; cost: 3.25
+            attributes: [
+                ListElement { description: "Citrus" }
+            ]
+        }
+        ListElement {
+            name: "Durian"; cost: 9.95
+            attributes: [
+                ListElement { description: "Tropical" },
+                ListElement { description: "Smelly" }
+            ]
+        }
+    }
+
+    // The delegate for each fruit in the model:
+    Component {
+        id: listDelegate
+
+        Item {
+            id: delegateItem
+            width: listView.width; height: 55
+            clip: true
+
+            Row {
+                anchors.verticalCenter: parent.verticalCenter
+                spacing: 10
+
+                Column {
+                    Image {
+                        source: "content/pics/arrow-up.png"
+                        MouseArea { anchors.fill: parent; onClicked: fruitModel.move(index, index-1, 1) }
+                    }
+                    Image { source: "content/pics/arrow-down.png"
+                        MouseArea { anchors.fill: parent; onClicked: fruitModel.move(index, index+1, 1) }
+                    }
+                }
+
+                Column {
+                    anchors.verticalCenter: parent.verticalCenter
+
+                    Text {
+                        text: name
+                        font.pixelSize: 15
+                        color: "white"
+                    }
+                    Row {
+                        spacing: 5
+                        Repeater {
+                            model: attributes
+                            Text { text: description; color: "White" }
+                        }
+                    }
+                }
+            }
+
+            Row {
+                anchors.verticalCenter: parent.verticalCenter
+                anchors.right: parent.right
+                spacing: 10
+
+                PressAndHoldButton {
+                    anchors.verticalCenter: parent.verticalCenter
+                    source: "content/pics/plus-sign.png"
+                    onClicked: fruitModel.setProperty(index, "cost", cost + 0.25)
+                }
+
+                Text {
+                    id: costText
+                    anchors.verticalCenter: parent.verticalCenter
+                    text: '$' + Number(cost).toFixed(2)
+                    font.pixelSize: 15
+                    color: "white"
+                    font.bold: true
+                }
+
+                PressAndHoldButton {
+                    anchors.verticalCenter: parent.verticalCenter
+                    source: "content/pics/minus-sign.png"
+                    onClicked: fruitModel.setProperty(index, "cost", Math.max(0,cost-0.25))
+                }
+
+                Image {
+                    source: "content/pics/list-delete.png"
+                    MouseArea { anchors.fill:parent; onClicked: fruitModel.remove(index) }
+                }
+            }
+
+            // Animate adding and removing of items:
+
+            ListView.onAdd: SequentialAnimation {
+                PropertyAction { target: delegateItem; property: "height"; value: 0 }
+                NumberAnimation { target: delegateItem; property: "height"; to: 55; duration: 250; easing.type: Easing.InOutQuad }
+            }
+
+            ListView.onRemove: SequentialAnimation {
+                PropertyAction { target: delegateItem; property: "ListView.delayRemove"; value: true }
+                //NumberAnimation { target: delegateItem; property: "height"; to: 0; duration: 250; easing.type: Easing.InOutQuad }
+
+                // Make sure delayRemove is set back to false so that the item can be destroyed
+                PropertyAction { target: delegateItem; property: "ListView.delayRemove"; value: false }
+            }
+        }
+    }
+
+    // The view:
+    ListView {
+        id: listView
+        anchors.fill: parent; anchors.margins: 20
+        model: fruitModel
+        delegate: listDelegate
+    }
+
+    Row {
+        anchors { left: parent.left; bottom: parent.bottom; margins: 20 }
+        spacing: 10
+
+        TextButton {
+            text: "Add an item"
+            onClicked: {
+                fruitModel.append({
+                    "name": "Pizza Margarita",
+                    "cost": 5.95,
+                    "attributes": [{"description": "Cheese"}, {"description": "Tomato"}]
+                })
+            }
+        }
+
+        TextButton {
+            text: "Remove all items"
+            onClicked: fruitModel.clear()
+        }
+    }
+}
+
diff --git a/examples/declarative/qtquick1/modelviews/listview/expandingdelegates.qml b/examples/declarative/qtquick1/modelviews/listview/expandingdelegates.qml
new file mode 100644 (file)
index 0000000..e9f2083
--- /dev/null
@@ -0,0 +1,202 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import "content"
+
+// This example illustrates expanding a list item to show a more detailed view.
+
+Rectangle {
+    id: page
+    width: 400; height: 240
+    color: "black"
+
+    // Delegate for the recipes.  This delegate has two modes:
+    // 1. List mode (default), which just shows the picture and title of the recipe.
+    // 2. Details mode, which also shows the ingredients and method.
+    Component {
+        id: recipeDelegate
+
+        Item {
+            id: recipe
+
+            // Create a property to contain the visibility of the details.
+            // We can bind multiple element's opacity to this one property,
+            // rather than having a "PropertyChanges" line for each element we
+            // want to fade.
+            property real detailsOpacity : 0
+
+            width: listView.width
+            height: 70
+
+            // A simple rounded rectangle for the background
+            Rectangle {
+                id: background
+                x: 2; y: 2; width: parent.width - x*2; height: parent.height - y*2
+                color: "ivory"
+                border.color: "orange"
+                radius: 5
+            }
+
+            // This mouse region covers the entire delegate.
+            // When clicked it changes mode to 'Details'.  If we are already
+            // in Details mode, then no change will happen.
+            MouseArea {
+                anchors.fill: parent
+                onClicked: recipe.state = 'Details';
+            }
+
+            // Lay out the page: picture, title and ingredients at the top, and method at the
+            // bottom.  Note that elements that should not be visible in the list
+            // mode have their opacity set to recipe.detailsOpacity.
+            Row {
+                id: topLayout
+                x: 10; y: 10; height: recipeImage.height; width: parent.width
+                spacing: 10
+
+                Image {
+                    id: recipeImage
+                    width: 50; height: 50
+                    source: picture
+                }
+
+                Column {
+                    width: background.width - recipeImage.width - 20; height: recipeImage.height
+                    spacing: 5
+
+                    Text {
+                        text: title
+                        font.bold: true; font.pointSize: 16
+                    }
+
+                    Text {
+                        text: "Ingredients"
+                        font.pointSize: 12; font.bold: true
+                        opacity: recipe.detailsOpacity
+                    }
+
+                    Text {
+                        text: ingredients
+                        wrapMode: Text.WordWrap
+                        width: parent.width
+                        opacity: recipe.detailsOpacity
+                    }
+                }
+            }
+
+            Item {
+                id: details
+                x: 10; width: parent.width - 20
+                anchors { top: topLayout.bottom; topMargin: 10; bottom: parent.bottom; bottomMargin: 10 }
+                opacity: recipe.detailsOpacity
+
+                Text {
+                    id: methodTitle
+                    anchors.top: parent.top
+                    text: "Method"
+                    font.pointSize: 12; font.bold: true
+                }
+
+                Flickable {
+                    id: flick
+                    width: parent.width
+                    anchors { top: methodTitle.bottom; bottom: parent.bottom }
+                    contentHeight: methodText.height
+                    clip: true
+
+                    Text { id: methodText; text: method; wrapMode: Text.WordWrap; width: details.width }
+                }
+
+                Image {
+                    anchors { right: flick.right; top: flick.top }
+                    source: "content/pics/moreUp.png"
+                    opacity: flick.atYBeginning ? 0 : 1
+                }
+
+                Image {
+                    anchors { right: flick.right; bottom: flick.bottom }
+                    source: "content/pics/moreDown.png"
+                    opacity: flick.atYEnd ? 0 : 1
+                }
+            }
+
+            // A button to close the detailed view, i.e. set the state back to default ('').
+            TextButton {
+                y: 10
+                anchors { right: background.right; rightMargin: 10 }
+                opacity: recipe.detailsOpacity
+                text: "Close"
+
+                onClicked: recipe.state = '';
+            }
+
+            states: State {
+                name: "Details"
+
+                PropertyChanges { target: background; color: "white" }
+                PropertyChanges { target: recipeImage; width: 130; height: 130 } // Make picture bigger
+                PropertyChanges { target: recipe; detailsOpacity: 1; x: 0 } // Make details visible
+                PropertyChanges { target: recipe; height: listView.height } // Fill the entire list area with the detailed view
+
+                // Move the list so that this item is at the top.
+                PropertyChanges { target: recipe.ListView.view; explicit: true; contentY: recipe.y }
+
+                // Disallow flicking while we're in detailed view
+                PropertyChanges { target: recipe.ListView.view; interactive: false }
+            }
+
+            transitions: Transition {
+                // Make the state changes smooth
+                ParallelAnimation {
+                    ColorAnimation { property: "color"; duration: 500 }
+                    NumberAnimation { duration: 300; properties: "detailsOpacity,x,contentY,height,width" }
+                }
+            }
+        }
+    }
+
+    // The actual list
+    ListView {
+        id: listView
+        anchors.fill: parent
+        model: RecipesModel {}
+        delegate: recipeDelegate
+    }
+}
diff --git a/examples/declarative/qtquick1/modelviews/listview/highlight.qml b/examples/declarative/qtquick1/modelviews/listview/highlight.qml
new file mode 100644 (file)
index 0000000..edc20c2
--- /dev/null
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// This example shows how to create your own highlight delegate for a ListView
+// that uses a SpringAnimation to provide custom movement when the
+// highlight bar is moved between items.
+
+import QtQuick 1.0
+import "content"
+
+Rectangle {
+    width: 200; height: 300
+
+    // Define a delegate component.  A component will be
+    // instantiated for each visible item in the list.
+    Component {
+        id: petDelegate
+        Item {
+            id: wrapper
+            width: 200; height: 55
+            Column {
+                Text { text: 'Name: ' + name }
+                Text { text: 'Type: ' + type }
+                Text { text: 'Age: ' + age }
+            }
+            // indent the item if it is the current item
+            states: State {
+                name: "Current"
+                when: wrapper.ListView.isCurrentItem
+                PropertyChanges { target: wrapper; x: 20 }
+            }
+            transitions: Transition {
+                NumberAnimation { properties: "x"; duration: 200 }
+            }
+        }
+    }
+
+    // Define a highlight with customised movement between items.
+    Component {
+        id: highlightBar
+        Rectangle {
+            width: 200; height: 50
+            color: "#FFFF88"
+            y: listView.currentItem.y;
+            Behavior on y { SpringAnimation { spring: 2; damping: 0.1 } }
+        }
+    }
+
+    ListView {
+        id: listView
+        width: 200; height: parent.height
+
+        model: PetsModel {}
+        delegate: petDelegate
+        focus: true
+
+        // Set the highlight delegate. Note we must also set highlightFollowsCurrentItem
+        // to false so the highlight delegate can control how the highlight is moved.
+        highlight: highlightBar
+        highlightFollowsCurrentItem: false
+    }
+}
diff --git a/examples/declarative/qtquick1/modelviews/listview/highlightranges.qml b/examples/declarative/qtquick1/modelviews/listview/highlightranges.qml
new file mode 100644 (file)
index 0000000..e6b8943
--- /dev/null
@@ -0,0 +1,122 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import "content"
+
+Rectangle {
+    id: root
+    property int current: 0
+    width: 600; height: 300
+
+    // This example shows the same model in three different ListView items,
+    // with different highlight ranges. The highlight ranges are set by the
+    // preferredHighlightBegin and preferredHighlightEnd properties in ListView.
+    //
+    // The first ListView does not set a highlight range, so its currentItem
+    // can move freely within the visible area. If it moves outside the
+    // visible area, the view is automatically scrolled to keep the current
+    // item visible.
+    //
+    // The second ListView sets a highlight range which attempts to keep the
+    // current item within the the bounds of the range. However,
+    // items will not scroll beyond the beginning or end of the view,
+    // forcing the highlight to move outside the range at the ends.
+    //
+    // The third ListView sets the highlightRangeMode to StrictlyEnforceRange
+    // and sets a range smaller than the height of an item.  This
+    // forces the current item to change when the view is flicked,
+    // since the highlight is unable to move.
+    //
+    // All ListViews bind their currentIndex to the root.current property.
+    // The first ListView sets root.current whenever its currentIndex changes
+    // due to keyboard interaction.
+    // Flicking the third ListView with the mouse also changes root.current.
+
+    ListView {
+        id: list1
+        width: 200; height: parent.height
+        model: PetsModel {}
+        delegate: petDelegate
+
+        highlight: Rectangle { color: "lightsteelblue" }
+        currentIndex: root.current
+        onCurrentIndexChanged: root.current = currentIndex
+        focus: true
+    }
+
+    ListView {
+        id: list2
+        x: list1.width
+        width: 200; height: parent.height
+        model: PetsModel {}
+        delegate: petDelegate
+
+        highlight: Rectangle { color: "yellow" }
+        currentIndex: root.current
+        preferredHighlightBegin: 80; preferredHighlightEnd: 220
+        highlightRangeMode: ListView.ApplyRange
+    }
+
+    ListView {
+        id: list3
+        x: list1.width + list2.width
+        width: 200; height: parent.height
+        model: PetsModel {}
+        delegate: petDelegate
+
+        highlight: Rectangle { color: "yellow" }
+        currentIndex: root.current
+        onCurrentIndexChanged: root.current = currentIndex
+        preferredHighlightBegin: 125; preferredHighlightEnd: 125
+        highlightRangeMode: ListView.StrictlyEnforceRange
+    }
+
+    // The delegate for each list
+    Component {
+        id: petDelegate
+        Column {
+            width: 200
+            Text { text: 'Name: ' + name }
+            Text { text: 'Type: ' + type }
+            Text { text: 'Age: ' + age }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/modelviews/listview/listview.qmlproject b/examples/declarative/qtquick1/modelviews/listview/listview.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/modelviews/listview/sections.qml b/examples/declarative/qtquick1/modelviews/listview/sections.qml
new file mode 100644 (file)
index 0000000..06e60a8
--- /dev/null
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// This example shows how a ListView can be separated into sections using
+// the ListView.section attached property.
+
+import QtQuick 1.0
+
+//! [0]
+Rectangle {
+    id: container
+    width: 200
+    height: 250
+
+    ListModel {
+        id: animalsModel
+        ListElement { name: "Parrot"; size: "Small" }
+        ListElement { name: "Guinea pig"; size: "Small" }
+        ListElement { name: "Dog"; size: "Medium" }
+        ListElement { name: "Cat"; size: "Medium" }
+        ListElement { name: "Elephant"; size: "Large" }
+    }
+
+    // The delegate for each section header
+    Component {
+        id: sectionHeading
+        Rectangle {
+            width: container.width
+            height: childrenRect.height
+            color: "lightsteelblue"
+
+            Text {
+                text: section
+                font.bold: true
+            }
+        }
+    }
+
+    ListView {
+        anchors.fill: parent
+        model: animalsModel
+        delegate: Text { text: name }
+
+        section.property: "size"
+        section.criteria: ViewSection.FullString
+        section.delegate: sectionHeading
+    }
+}
+//! [0]
+
diff --git a/examples/declarative/qtquick1/modelviews/modelviews.pro b/examples/declarative/qtquick1/modelviews/modelviews.pro
new file mode 100644 (file)
index 0000000..b811e44
--- /dev/null
@@ -0,0 +1,7 @@
+TEMPLATE = subdirs
+
+SUBDIRS += \
+    objectlistmodel \
+    stringlistmodel
+
+
diff --git a/examples/declarative/qtquick1/modelviews/modelviews.qmlproject b/examples/declarative/qtquick1/modelviews/modelviews.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/modelviews/objectlistmodel/dataobject.cpp b/examples/declarative/qtquick1/modelviews/objectlistmodel/dataobject.cpp
new file mode 100644 (file)
index 0000000..85bf54f
--- /dev/null
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "dataobject.h"
+
+DataObject::DataObject(QObject *parent)
+    : QObject(parent)
+{
+}
+
+DataObject::DataObject(const QString &name, const QString &color, QObject *parent)
+    : QObject(parent), m_name(name), m_color(color)
+{
+}
+
+QString DataObject::name() const
+{
+    return m_name;
+}
+
+void DataObject::setName(const QString &name)
+{
+    if (name != m_name) {
+        m_name = name;
+        emit nameChanged();
+    }
+}
+
+QString DataObject::color() const
+{
+    return m_color;
+}
+
+void DataObject::setColor(const QString &color)
+{
+    if (color != m_color) {
+        m_color = color;
+        emit colorChanged();
+    }
+}
diff --git a/examples/declarative/qtquick1/modelviews/objectlistmodel/dataobject.h b/examples/declarative/qtquick1/modelviews/objectlistmodel/dataobject.h
new file mode 100644 (file)
index 0000000..b2d34b7
--- /dev/null
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef DATAOBJECT_H
+#define DATAOBJECT_H
+
+#include <QObject>
+
+//![0]
+class DataObject : public QObject
+{
+    Q_OBJECT
+
+    Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
+    Q_PROPERTY(QString color READ color WRITE setColor NOTIFY colorChanged)
+//![0]
+
+public:
+    DataObject(QObject *parent=0);
+    DataObject(const QString &name, const QString &color, QObject *parent=0);
+
+    QString name() const;
+    void setName(const QString &name);
+
+    QString color() const;
+    void setColor(const QString &color);
+
+signals:
+    void nameChanged();
+    void colorChanged();
+
+private:
+    QString m_name;
+    QString m_color;
+//![1]
+};
+//![1]
+
+#endif // DATAOBJECT_H
diff --git a/examples/declarative/qtquick1/modelviews/objectlistmodel/main.cpp b/examples/declarative/qtquick1/modelviews/objectlistmodel/main.cpp
new file mode 100644 (file)
index 0000000..ba49f40
--- /dev/null
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QApplication>
+
+#include <QDeclarativeEngine>
+#include <QDeclarativeContext>
+#include <QtQuick1/QDeclarativeItem>
+#include <QtQuick1/QDeclarativeView>
+
+#include "dataobject.h"
+
+/*
+   This example illustrates exposing a QList<QObject*> as a
+   model in QML
+*/
+
+//![0]
+int main(int argc, char ** argv)
+{
+    QApplication app(argc, argv);
+
+    QList<QObject*> dataList;
+    dataList.append(new DataObject("Item 1", "red"));
+    dataList.append(new DataObject("Item 2", "green"));
+    dataList.append(new DataObject("Item 3", "blue"));
+    dataList.append(new DataObject("Item 4", "yellow"));
+
+    QDeclarativeView view;
+    QDeclarativeContext *ctxt = view.rootContext();
+    ctxt->setContextProperty("myModel", QVariant::fromValue(dataList));
+//![0]
+
+    view.setSource(QUrl("qrc:view.qml"));
+    view.show();
+
+    return app.exec();
+}
+
diff --git a/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.pro b/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.pro
new file mode 100644 (file)
index 0000000..f67a981
--- /dev/null
@@ -0,0 +1,18 @@
+TEMPLATE = app
+TARGET = objectlistmodel
+DEPENDPATH += .
+INCLUDEPATH += .
+QT += declarative qtquick1
+
+# Input
+SOURCES += main.cpp \
+           dataobject.cpp
+HEADERS += dataobject.h
+RESOURCES += objectlistmodel.qrc
+
+sources.files = $$SOURCES $$HEADERS $$RESOURCES objectlistmodel.pro view.qml
+sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/objectlistmodel
+target.path = $$[QT_INSTALL_EXAMPLES]/declarative/objectlistmodel
+
+INSTALLS += sources target
+
diff --git a/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qmlproject b/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qrc b/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qrc
new file mode 100644 (file)
index 0000000..17e9301
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>view.qml</file>
+</qresource>
+</RCC>
diff --git a/examples/declarative/qtquick1/modelviews/objectlistmodel/view.qml b/examples/declarative/qtquick1/modelviews/objectlistmodel/view.qml
new file mode 100644 (file)
index 0000000..264289f
--- /dev/null
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+//![0]
+ListView {
+    width: 100; height: 100
+    anchors.fill: parent
+
+    model: myModel
+    delegate: Rectangle {
+        height: 25
+        width: 100
+        color: model.modelData.color
+        Text { text: name }
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/modelviews/package/Delegate.qml b/examples/declarative/qtquick1/modelviews/package/Delegate.qml
new file mode 100644 (file)
index 0000000..24abc5d
--- /dev/null
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+//![0]
+Package {
+    Text { id: listDelegate; width: 200; height: 25; text: 'Empty'; Package.name: 'list' }
+    Text { id: gridDelegate; width: 100; height: 50; text: 'Empty'; Package.name: 'grid' }
+
+    Rectangle {
+        id: wrapper
+        width: 200; height: 25
+        color: 'lightsteelblue'
+
+        Text { text: display; anchors.centerIn: parent }
+        MouseArea {
+            anchors.fill: parent
+            onClicked: {
+                if (wrapper.state == 'inList')
+                    wrapper.state = 'inGrid';
+                else
+                    wrapper.state = 'inList';
+            }
+        }
+
+        state: 'inList'
+        states: [
+            State {
+                name: 'inList'
+                ParentChange { target: wrapper; parent: listDelegate }
+            },
+            State {
+                name: 'inGrid'
+                ParentChange {
+                    target: wrapper; parent: gridDelegate
+                    x: 0; y: 0; width: gridDelegate.width; height: gridDelegate.height
+                }
+            }
+        ]
+
+        transitions: [
+            Transition {
+                ParentAnimation {
+                    NumberAnimation { properties: 'x,y,width,height'; duration: 300 }
+                }
+            }
+        ]
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/modelviews/package/package.qmlproject b/examples/declarative/qtquick1/modelviews/package/package.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/modelviews/package/view.qml b/examples/declarative/qtquick1/modelviews/package/view.qml
new file mode 100644 (file)
index 0000000..1715ba1
--- /dev/null
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    color: "white"
+    width: 400
+    height: 200
+
+    ListModel {
+        id: myModel
+        ListElement { display: "One" }
+        ListElement { display: "Two" }
+        ListElement { display: "Three" }
+        ListElement { display: "Four" }
+        ListElement { display: "Five" }
+        ListElement { display: "Six" }
+        ListElement { display: "Seven" }
+        ListElement { display: "Eight" }
+    }
+    //![0]
+    VisualDataModel {
+        id: visualModel
+        delegate: Delegate {}
+        model: myModel
+    }
+
+    ListView {
+        width: 200; height:200
+        model: visualModel.parts.list
+    }
+    GridView {
+        x: 200; width: 200; height:200
+        cellHeight: 50
+        model: visualModel.parts.grid
+    }
+    //![0]
+}
diff --git a/examples/declarative/qtquick1/modelviews/parallax/parallax.qml b/examples/declarative/qtquick1/modelviews/parallax/parallax.qml
new file mode 100644 (file)
index 0000000..1287271
--- /dev/null
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import "../../toys/clocks/content"  // for loading the Clock element
+import "qml"
+
+Rectangle {
+    width: 320; height: 480
+
+    ParallaxView {
+        id: parallax
+        anchors.fill: parent
+        background: "pics/background.jpg"
+
+        Item {
+            property url icon: "pics/yast-wol.png"
+            width: 320; height: 480
+            Clock { anchors.centerIn: parent }
+        }
+
+        Item {
+            property url icon: "pics/home-page.svg"
+            width: 320; height: 480
+            Smiley { }
+        }
+
+        Item {
+            property url icon: "pics/yast-joystick.png"
+            width: 320; height: 480
+
+            Loader {
+                anchors { top: parent.top; topMargin: 10; horizontalCenter: parent.horizontalCenter }
+                width: 300; height: 400
+                clip: true;
+                source: "../../../../demos/declarative/samegame/samegame.qml"
+                Component.onCompleted: item.inAnotherDemo = true;
+            }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/modelviews/parallax/parallax.qmlproject b/examples/declarative/qtquick1/modelviews/parallax/parallax.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/modelviews/parallax/pics/background.jpg b/examples/declarative/qtquick1/modelviews/parallax/pics/background.jpg
new file mode 100644 (file)
index 0000000..61cca2f
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/parallax/pics/background.jpg differ
diff --git a/examples/declarative/qtquick1/modelviews/parallax/pics/face-smile.png b/examples/declarative/qtquick1/modelviews/parallax/pics/face-smile.png
new file mode 100644 (file)
index 0000000..3d66d72
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/parallax/pics/face-smile.png differ
diff --git a/examples/declarative/qtquick1/modelviews/parallax/pics/home-page.svg b/examples/declarative/qtquick1/modelviews/parallax/pics/home-page.svg
new file mode 100644 (file)
index 0000000..4f16958
--- /dev/null
@@ -0,0 +1,445 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48"
+   height="48"
+   overflow="visible"
+   enable-background="new 0 0 128 129.396"
+   xml:space="preserve"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="go-home.svg"
+   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/actions"
+   version="1.0"
+   inkscape:export-filename="/home/tigert/My Downloads/go-home.png"
+   inkscape:export-xdpi="90.000000"
+   inkscape:export-ydpi="90.000000"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
+   id="metadata367"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><cc:license
+         rdf:resource="http://creativecommons.org/licenses/publicdomain/" /><dc:title>Go Home</dc:title><dc:creator><cc:Agent><dc:title>Jakub Steiner</dc:title></cc:Agent></dc:creator><dc:source>http://jimmac.musichall.cz</dc:source><dc:subject><rdf:Bag><rdf:li>home</rdf:li><rdf:li>return</rdf:li><rdf:li>go</rdf:li><rdf:li>default</rdf:li><rdf:li>user</rdf:li><rdf:li>directory</rdf:li></rdf:Bag></dc:subject><dc:contributor><cc:Agent><dc:title>Tuomas Kuosmanen</dc:title></cc:Agent></dc:contributor></cc:Work><cc:License
+       rdf:about="http://creativecommons.org/licenses/publicdomain/"><cc:permits
+         rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
+         rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
+         rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF></metadata><defs
+   id="defs365"><inkscape:perspective
+     sodipodi:type="inkscape:persp3d"
+     inkscape:vp_x="0 : 24 : 1"
+     inkscape:vp_y="0 : 1000 : 0"
+     inkscape:vp_z="48 : 24 : 1"
+     inkscape:persp3d-origin="24 : 16 : 1"
+     id="perspective92" /><radialGradient
+     inkscape:collect="always"
+     xlink:href="#linearGradient5060"
+     id="radialGradient5031"
+     gradientUnits="userSpaceOnUse"
+     gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+     cx="605.71429"
+     cy="486.64789"
+     fx="605.71429"
+     fy="486.64789"
+     r="117.14286" /><linearGradient
+     inkscape:collect="always"
+     id="linearGradient5060"><stop
+       style="stop-color:black;stop-opacity:1;"
+       offset="0"
+       id="stop5062" /><stop
+       style="stop-color:black;stop-opacity:0;"
+       offset="1"
+       id="stop5064" /></linearGradient><radialGradient
+     inkscape:collect="always"
+     xlink:href="#linearGradient5060"
+     id="radialGradient5029"
+     gradientUnits="userSpaceOnUse"
+     gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+     cx="605.71429"
+     cy="486.64789"
+     fx="605.71429"
+     fy="486.64789"
+     r="117.14286" /><linearGradient
+     id="linearGradient5048"><stop
+       style="stop-color:black;stop-opacity:0;"
+       offset="0"
+       id="stop5050" /><stop
+       id="stop5056"
+       offset="0.5"
+       style="stop-color:black;stop-opacity:1;" /><stop
+       style="stop-color:black;stop-opacity:0;"
+       offset="1"
+       id="stop5052" /></linearGradient><linearGradient
+     inkscape:collect="always"
+     xlink:href="#linearGradient5048"
+     id="linearGradient5027"
+     gradientUnits="userSpaceOnUse"
+     gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+     x1="302.85715"
+     y1="366.64789"
+     x2="302.85715"
+     y2="609.50507" /><linearGradient
+     id="linearGradient2406"><stop
+       style="stop-color:#7c7e79;stop-opacity:1;"
+       offset="0"
+       id="stop2408" /><stop
+       id="stop2414"
+       offset="0.1724138"
+       style="stop-color:#848681;stop-opacity:1;" /><stop
+       style="stop-color:#898c86;stop-opacity:1;"
+       offset="1"
+       id="stop2410" /></linearGradient><linearGradient
+     inkscape:collect="always"
+     id="linearGradient2390"><stop
+       style="stop-color:#919191;stop-opacity:1;"
+       offset="0"
+       id="stop2392" /><stop
+       style="stop-color:#919191;stop-opacity:0;"
+       offset="1"
+       id="stop2394" /></linearGradient><linearGradient
+     inkscape:collect="always"
+     id="linearGradient2378"><stop
+       style="stop-color:#575757;stop-opacity:1;"
+       offset="0"
+       id="stop2380" /><stop
+       style="stop-color:#575757;stop-opacity:0;"
+       offset="1"
+       id="stop2382" /></linearGradient><linearGradient
+     inkscape:collect="always"
+     id="linearGradient2368"><stop
+       style="stop-color:#ffffff;stop-opacity:1;"
+       offset="0"
+       id="stop2370" /><stop
+       style="stop-color:#ffffff;stop-opacity:0;"
+       offset="1"
+       id="stop2372" /></linearGradient><linearGradient
+     inkscape:collect="always"
+     id="linearGradient2349"><stop
+       style="stop-color:#000000;stop-opacity:1;"
+       offset="0"
+       id="stop2351" /><stop
+       style="stop-color:#000000;stop-opacity:0;"
+       offset="1"
+       id="stop2353" /></linearGradient><linearGradient
+     id="linearGradient2341"><stop
+       id="stop2343"
+       offset="0"
+       style="stop-color:#000000;stop-opacity:1;" /><stop
+       id="stop2345"
+       offset="1"
+       style="stop-color:#000000;stop-opacity:0;" /></linearGradient><linearGradient
+     id="linearGradient2329"><stop
+       style="stop-color:#000000;stop-opacity:0.18556701;"
+       offset="0"
+       id="stop2331" /><stop
+       style="stop-color:#ffffff;stop-opacity:1;"
+       offset="1"
+       id="stop2333" /></linearGradient><linearGradient
+     inkscape:collect="always"
+     id="linearGradient2319"><stop
+       style="stop-color:#000000;stop-opacity:1;"
+       offset="0"
+       id="stop2321" /><stop
+       style="stop-color:#000000;stop-opacity:0;"
+       offset="1"
+       id="stop2323" /></linearGradient><linearGradient
+     id="linearGradient2307"><stop
+       style="stop-color:#edd400;stop-opacity:1;"
+       offset="0"
+       id="stop2309" /><stop
+       style="stop-color:#998800;stop-opacity:1;"
+       offset="1"
+       id="stop2311" /></linearGradient><linearGradient
+     inkscape:collect="always"
+     id="linearGradient2299"><stop
+       style="stop-color:#ffffff;stop-opacity:1;"
+       offset="0"
+       id="stop2301" /><stop
+       style="stop-color:#ffffff;stop-opacity:0;"
+       offset="1"
+       id="stop2303" /></linearGradient><linearGradient
+     id="XMLID_2_"
+     gradientUnits="userSpaceOnUse"
+     x1="80.223602"
+     y1="117.5205"
+     x2="48.046001"
+     y2="59.7995"
+     gradientTransform="matrix(0.314683,0.000000,0.000000,0.314683,4.128264,3.742874)">
+                               <stop
+   offset="0"
+   style="stop-color:#CCCCCC"
+   id="stop17" />
+                               <stop
+   offset="0.9831"
+   style="stop-color:#FFFFFF"
+   id="stop19" />
+                               <midPointStop
+   offset="0"
+   style="stop-color:#CCCCCC"
+   id="midPointStop48" />
+                               <midPointStop
+   offset="0.5"
+   style="stop-color:#CCCCCC"
+   id="midPointStop50" />
+                               <midPointStop
+   offset="0.9831"
+   style="stop-color:#FFFFFF"
+   id="midPointStop52" />
+                       </linearGradient><linearGradient
+     inkscape:collect="always"
+     xlink:href="#XMLID_2_"
+     id="linearGradient1514"
+     gradientUnits="userSpaceOnUse"
+     gradientTransform="matrix(0.336922,0.000000,0.000000,0.166888,17.98288,15.46151)"
+     x1="52.006104"
+     y1="166.1331"
+     x2="14.049017"
+     y2="-42.218513" /><linearGradient
+     id="XMLID_39_"
+     gradientUnits="userSpaceOnUse"
+     x1="64.387703"
+     y1="65.124001"
+     x2="64.387703"
+     y2="35.569"
+     gradientTransform="matrix(0.354101,0.000000,0.000000,0.354101,1.638679,-8.364921e-2)">
+                                               <stop
+   offset="0"
+   style="stop-color:#FFFFFF"
+   id="stop336" />
+                                               <stop
+   offset="0.8539"
+   style="stop-color:#FF6200"
+   id="stop338" />
+                                               <stop
+   offset="1"
+   style="stop-color:#F25D00"
+   id="stop340" />
+                                               <midPointStop
+   offset="0"
+   style="stop-color:#FFFFFF"
+   id="midPointStop335" />
+                                               <midPointStop
+   offset="0.5"
+   style="stop-color:#FFFFFF"
+   id="midPointStop337" />
+                                               <midPointStop
+   offset="0.8539"
+   style="stop-color:#FF6200"
+   id="midPointStop339" />
+                                               <midPointStop
+   offset="0.5"
+   style="stop-color:#FF6200"
+   id="midPointStop341" />
+                                               <midPointStop
+   offset="1"
+   style="stop-color:#F25D00"
+   id="midPointStop343" />
+                                       </linearGradient><radialGradient
+     inkscape:collect="always"
+     xlink:href="#linearGradient2299"
+     id="radialGradient2305"
+     cx="7.5326638"
+     cy="24.202574"
+     fx="7.5326638"
+     fy="24.202574"
+     r="8.2452128"
+     gradientTransform="matrix(4.100086,-1.627292e-17,2.125447e-14,4.201322,-25.41506,-78.53967)"
+     gradientUnits="userSpaceOnUse" /><radialGradient
+     inkscape:collect="always"
+     xlink:href="#linearGradient2307"
+     id="radialGradient2313"
+     cx="19.985598"
+     cy="36.77816"
+     fx="19.985598"
+     fy="36.77816"
+     r="1.0821035"
+     gradientTransform="matrix(1.125263,0.000000,0.000000,0.982744,-3.428678,0.565787)"
+     gradientUnits="userSpaceOnUse" /><radialGradient
+     inkscape:collect="always"
+     xlink:href="#linearGradient2319"
+     id="radialGradient2325"
+     cx="20.443665"
+     cy="37.425829"
+     fx="20.443665"
+     fy="37.425829"
+     r="1.0821035"
+     gradientTransform="matrix(1.125263,0.000000,0.000000,0.982744,-3.428678,0.731106)"
+     gradientUnits="userSpaceOnUse" /><linearGradient
+     inkscape:collect="always"
+     xlink:href="#linearGradient2329"
+     id="linearGradient2335"
+     x1="17.602522"
+     y1="26.057423"
+     x2="17.682528"
+     y2="32.654099"
+     gradientUnits="userSpaceOnUse"
+     gradientTransform="matrix(0.898789,0,0,1.071914,0.478025,-2.080838)" /><radialGradient
+     inkscape:collect="always"
+     xlink:href="#linearGradient2341"
+     id="radialGradient2339"
+     gradientUnits="userSpaceOnUse"
+     gradientTransform="matrix(4.100086,1.627292e-17,2.125447e-14,-4.201322,-5.198109,105.3535)"
+     cx="11.68129"
+     cy="19.554111"
+     fx="11.68129"
+     fy="19.554111"
+     r="8.2452126" /><radialGradient
+     inkscape:collect="always"
+     xlink:href="#linearGradient2349"
+     id="radialGradient2355"
+     cx="24.023088"
+     cy="40.56913"
+     fx="24.023088"
+     fy="40.56913"
+     r="16.28684"
+     gradientTransform="matrix(1.000000,0.000000,0.000000,0.431250,1.157278e-15,23.07369)"
+     gradientUnits="userSpaceOnUse" /><radialGradient
+     inkscape:collect="always"
+     xlink:href="#linearGradient2368"
+     id="radialGradient2374"
+     cx="29.913452"
+     cy="30.442923"
+     fx="29.913452"
+     fy="30.442923"
+     r="4.0018832"
+     gradientTransform="matrix(3.751495,-2.191984e-22,1.723265e-22,3.147818,-82.00907,-65.70704)"
+     gradientUnits="userSpaceOnUse" /><radialGradient
+     inkscape:collect="always"
+     xlink:href="#linearGradient2378"
+     id="radialGradient2384"
+     cx="24.195112"
+     cy="10.577631"
+     fx="24.195112"
+     fy="10.577631"
+     r="15.242914"
+     gradientTransform="matrix(1.125263,-3.585417e-8,4.269819e-8,1.340059,-3.006704,1.355395)"
+     gradientUnits="userSpaceOnUse" /><linearGradient
+     inkscape:collect="always"
+     xlink:href="#linearGradient2390"
+     id="linearGradient2396"
+     x1="30.603519"
+     y1="37.337803"
+     x2="30.603519"
+     y2="36.112415"
+     gradientUnits="userSpaceOnUse"
+     gradientTransform="matrix(1.263867,0,0,0.859794,-6.499556,8.390924)" /><linearGradient
+     inkscape:collect="always"
+     xlink:href="#linearGradient2406"
+     id="linearGradient2412"
+     x1="17.850183"
+     y1="28.939463"
+     x2="19.040216"
+     y2="41.03223"
+     gradientUnits="userSpaceOnUse"
+     gradientTransform="matrix(0.888785,0,0,1.08932,2.41099,-1.524336)" /></defs><sodipodi:namedview
+   inkscape:cy="-2.3755359"
+   inkscape:cx="25.234802"
+   inkscape:zoom="1"
+   inkscape:window-height="691"
+   inkscape:window-width="872"
+   inkscape:pageshadow="2"
+   inkscape:pageopacity="0.0"
+   borderopacity="0.21568627"
+   bordercolor="#666666"
+   pagecolor="#ffffff"
+   id="base"
+   inkscape:showpageshadow="false"
+   inkscape:window-x="466"
+   inkscape:window-y="157"
+   inkscape:current-layer="svg2"
+   fill="#555753"
+   showgrid="false"
+   stroke="#a40000"
+   showguides="true"
+   inkscape:guide-bbox="true" />
+       <g
+   style="display:inline"
+   id="g5022"
+   transform="matrix(2.158196e-2,0,0,1.859457e-2,43.12251,41.63767)"><rect
+     y="-150.69685"
+     x="-1559.2523"
+     height="478.35718"
+     width="1339.6335"
+     id="rect4173"
+     style="opacity:0.40206185;color:black;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" /><path
+     sodipodi:nodetypes="cccc"
+     id="path5058"
+     d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+     style="opacity:0.40206185;color:black;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" /><path
+     style="opacity:0.40206185;color:black;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+     d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+     id="path5018"
+     sodipodi:nodetypes="cccc" /></g><path
+   style="color:#000000;fill:url(#linearGradient1514);fill-opacity:1;fill-rule:nonzero;stroke:#757575;stroke-width:1.0000006;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+   d="M 21.619576,8.1833733 L 27.577035,8.1833733 C 28.416767,8.1833733 41.46351,23.618701 41.46351,24.524032 L 41.019989,43.020777 C 41.019989,43.92611 40.343959,44.654954 39.504227,44.654954 L 8.0469496,44.654954 C 7.2072167,44.654954 6.5311871,43.92611 6.5311871,43.020777 L 6.5876651,24.524032 C 6.5876651,23.618701 20.779844,8.1833733 21.619576,8.1833733 z "
+   id="rect1512"
+   sodipodi:nodetypes="ccccccccc" /><path
+   style="fill:none"
+   id="path5"
+   d="M 46.963575,45.735573 L 1.6386762,45.735573 L 1.6386762,0.41067554 L 46.963575,0.41067554 L 46.963575,45.735573 z " /><path
+   style="fill:url(#linearGradient2335);fill-opacity:1;fill-rule:evenodd"
+   id="path2327"
+   d="M 23,29 L 22.954256,44.090942 L 11.111465,44.090942 L 11,29 L 23,29 z "
+   clip-rule="evenodd"
+   sodipodi:nodetypes="ccccc" /><path
+   sodipodi:nodetypes="ccccccccc"
+   id="path2357"
+   d="M 21.780459,9.405584 L 27.339556,9.405584 C 28.123138,9.405584 40.340425,23.805172 40.340425,24.649756 L 39.993267,42.862067 C 39.993267,43.321326 39.84953,43.515532 39.480892,43.515532 L 8.0936894,43.529812 C 7.7250517,43.529812 7.5097258,43.449894 7.5097258,43.076262 L 7.7250676,24.649756 C 7.7250676,23.805172 20.99688,9.405584 21.780459,9.405584 z "
+   style="opacity:0.3125;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" /><path
+   clip-rule="evenodd"
+   d="M 7.2075295,27.943053 L 7.1532728,30.538247 L 25.521437,17.358993 L 40.807832,28.513421 L 40.879142,28.201707 L 24.508686,12.297576 L 7.2075295,27.943053 z "
+   id="path23"
+   style="opacity:0.2;fill:url(#radialGradient2384);fill-opacity:1;fill-rule:evenodd"
+   sodipodi:nodetypes="ccccccc" /><path
+   clip-rule="evenodd"
+   d="M 22,30 L 22,44.090942 L 12.188971,44.090942 L 12,30 L 22,30 z "
+   id="path188"
+   style="fill:url(#linearGradient2412);fill-opacity:1;fill-rule:evenodd"
+   sodipodi:nodetypes="ccccc" /><path
+   style="opacity:0.40909089;fill:url(#radialGradient2325);fill-opacity:1;fill-rule:evenodd"
+   id="path2315"
+   d="M 19.576856,36.44767 C 20.249646,36.44767 20.793472,36.922275 20.793472,37.506177 C 20.793472,38.095988 20.249646,38.574532 19.576856,38.574532 C 18.904584,38.574532 18.35817,38.095988 18.35817,37.506177 C 18.358685,36.922275 18.904584,36.44767 19.576856,36.44767 z "
+   clip-rule="evenodd" /><path
+   clip-rule="evenodd"
+   d="M 19.462314,35.932229 C 20.135103,35.932229 20.678929,36.406834 20.678929,36.990736 C 20.678929,37.580545 20.135103,38.059089 19.462314,38.059089 C 18.790041,38.059089 18.243627,37.580545 18.243627,36.990736 C 18.244142,36.406834 18.790041,35.932229 19.462314,35.932229 z "
+   id="path217"
+   style="fill:url(#radialGradient2313);fill-opacity:1;fill-rule:evenodd" /><path
+   d="M 24.447748,11.559337 L 43.374808,28.729205 L 43.869487,29.121196 L 44.273163,28.949811 L 43.900293,28.188138 L 43.622679,27.964702 L 24.447748,12.392396 L 5.0582327,28.135731 L 4.8206309,28.279851 L 4.603921,28.986637 L 5.0373408,29.115885 L 5.4218948,28.807462 L 24.447748,11.559337 z "
+   id="path342"
+   style="fill:url(#XMLID_39_)"
+   sodipodi:nodetypes="ccccccccccccc" /><path
+   style="fill:#ef2929;stroke:#a40000"
+   id="path362"
+   d="M 24.330168,2.2713382 L 2.4484294,20.372675 L 1.8237005,27.538603 L 3.8236367,29.602926 C 3.8236367,29.602926 24.231018,12.445641 24.44773,12.274963 L 44.08027,29.818223 L 45.978694,27.494226 L 44.362903,20.382852 L 24.44773,2.1668788 L 24.330168,2.2713382 z "
+   sodipodi:nodetypes="cccccccccc" />
+<path
+   style="opacity:0.40909089;color:#000000;fill:url(#radialGradient2305);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+   d="M 2.8413446,20.613129 L 2.5497894,27.236494 L 24.369219,8.980075 L 24.298891,3.0867443 L 2.8413446,20.613129 z "
+   id="path1536"
+   sodipodi:nodetypes="ccccc" /><path
+   sodipodi:nodetypes="ccccc"
+   id="path2337"
+   d="M 24.483763,8.7509884 L 24.583223,2.9098867 L 43.912186,20.56184 L 45.403998,27.062652 L 24.483763,8.7509884 z "
+   style="opacity:0.13636367;color:#000000;fill:url(#radialGradient2339);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" /><path
+   style="opacity:0.31818183;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.99999934;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+   d="M 27.102228,27.719824 L 36.142223,27.719824 C 36.912818,27.719824 37.53319,28.340194 37.53319,29.110791 L 37.525229,38.190012 C 37.525229,38.960608 36.928907,39.455981 36.158311,39.455981 L 27.102228,39.455981 C 26.331631,39.455981 25.711261,38.835608 25.711261,38.065012 L 25.711261,29.110791 C 25.711261,28.340194 26.331631,27.719824 27.102228,27.719824 z "
+   id="rect2361"
+   sodipodi:nodetypes="ccccccccc" /><rect
+   style="opacity:1;color:#000000;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:#757575;stroke-width:0.9999994;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+   id="rect3263"
+   width="10.001333"
+   height="9.9624557"
+   x="26.507767"
+   y="28.514256"
+   rx="0.38128215"
+   ry="0.38128215" /><path
+   style="opacity:0.39772728;color:#000000;fill:url(#radialGradient2374);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+   d="M 27.107118,34.408261 C 30.725101,34.739438 32.634842,32.962557 35.97527,32.855521 L 36,29.00603 L 27.088388,29 L 27.107118,34.408261 z "
+   id="rect2363"
+   sodipodi:nodetypes="ccccc" /></svg>
\ No newline at end of file
diff --git a/examples/declarative/qtquick1/modelviews/parallax/pics/shadow.png b/examples/declarative/qtquick1/modelviews/parallax/pics/shadow.png
new file mode 100644 (file)
index 0000000..8270565
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/parallax/pics/shadow.png differ
diff --git a/examples/declarative/qtquick1/modelviews/parallax/pics/yast-joystick.png b/examples/declarative/qtquick1/modelviews/parallax/pics/yast-joystick.png
new file mode 100644 (file)
index 0000000..858cea0
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/parallax/pics/yast-joystick.png differ
diff --git a/examples/declarative/qtquick1/modelviews/parallax/pics/yast-wol.png b/examples/declarative/qtquick1/modelviews/parallax/pics/yast-wol.png
new file mode 100644 (file)
index 0000000..7712180
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/parallax/pics/yast-wol.png differ
diff --git a/examples/declarative/qtquick1/modelviews/parallax/qml/ParallaxView.qml b/examples/declarative/qtquick1/modelviews/parallax/qml/ParallaxView.qml
new file mode 100644 (file)
index 0000000..9ad636f
--- /dev/null
@@ -0,0 +1,123 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Item {
+    id: root
+
+    property alias background: background.source
+    property int currentIndex: 0
+    default property alias content: visualModel.children
+
+    Image {
+        id: background
+        fillMode: Image.TileHorizontally
+        x: -list.contentX / 2
+        width: Math.max(list.contentWidth, parent.width)
+    }
+
+    ListView {
+        id: list
+        anchors.fill: parent
+
+        currentIndex: root.currentIndex
+        onCurrentIndexChanged: root.currentIndex = currentIndex
+
+        orientation: Qt.Horizontal
+        boundsBehavior: Flickable.DragOverBounds
+        model: VisualItemModel { id: visualModel }
+
+        highlightRangeMode: ListView.StrictlyEnforceRange
+        snapMode: ListView.SnapOneItem
+    }
+
+    ListView {
+        id: selector
+
+        height: 50
+        anchors.bottom: parent.bottom
+        anchors.horizontalCenter: parent.horizontalCenter
+        width: Math.min(count * 50, parent.width - 20)
+        interactive: width == parent.width - 20
+        orientation: Qt.Horizontal
+
+        currentIndex: root.currentIndex
+        onCurrentIndexChanged: root.currentIndex = currentIndex
+
+        model: visualModel.children
+        delegate: Item {
+            width: 50; height: 50
+            id: delegateRoot
+
+            Image {
+                id: image
+                source: modelData.icon
+                smooth: true
+                scale: 0.8
+            }
+
+            MouseArea {
+                anchors.fill: parent
+                onClicked: { root.currentIndex = index }
+            }
+
+            states: State {
+                name: "Selected"
+                when: delegateRoot.ListView.isCurrentItem == true
+                PropertyChanges {
+                    target: image
+                    scale: 1
+                    y: -5
+                }
+            }
+            transitions: Transition {
+                NumberAnimation { properties: "scale,y" }
+            }
+        }
+
+        Rectangle {
+            color: "#60FFFFFF"
+            x: -10; y: -10; z: -1
+            width: parent.width + 20; height: parent.height + 20
+            radius: 10
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/modelviews/parallax/qml/Smiley.qml b/examples/declarative/qtquick1/modelviews/parallax/qml/Smiley.qml
new file mode 100644 (file)
index 0000000..c964f50
--- /dev/null
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+// This is taken from the declarative animation/basics/property-animation.qml
+// example
+
+Item {
+    id: window
+    width: 320; height: 480
+
+    Image {
+        anchors.horizontalCenter: parent.horizontalCenter
+        y: smiley.minHeight + 58
+        source: "../pics/shadow.png"
+
+        scale: smiley.y * 0.5 / (smiley.minHeight - smiley.maxHeight)
+    }
+
+    Image {
+        id: smiley
+        property int maxHeight: window.height / 3
+        property int minHeight: 2 * window.height / 3
+
+        anchors.horizontalCenter: parent.horizontalCenter
+        y: minHeight
+        source: "../pics/face-smile.png"
+
+        SequentialAnimation on y {
+            loops: Animation.Infinite
+
+            NumberAnimation {
+                from: smiley.minHeight; to: smiley.maxHeight
+                easing.type: Easing.OutExpo; duration: 300
+            }
+
+            NumberAnimation {
+                from: smiley.maxHeight; to: smiley.minHeight
+                easing.type: Easing.OutBounce; duration: 1000
+            }
+
+            PauseAnimation { duration: 500 }
+        }
+    }
+}
+
diff --git a/examples/declarative/qtquick1/modelviews/pathview/pathview-example.qml b/examples/declarative/qtquick1/modelviews/pathview/pathview-example.qml
new file mode 100644 (file)
index 0000000..bddab8f
--- /dev/null
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    width: 400; height: 240
+    color: "white"
+
+    ListModel {
+        id: appModel
+        ListElement { name: "Music"; icon: "pics/AudioPlayer_48.png" }
+        ListElement { name: "Movies"; icon: "pics/VideoPlayer_48.png" }
+        ListElement { name: "Camera"; icon: "pics/Camera_48.png" }
+        ListElement { name: "Calendar"; icon: "pics/DateBook_48.png" }
+        ListElement { name: "Messaging"; icon: "pics/EMail_48.png" }
+        ListElement { name: "Todo List"; icon: "pics/TodoList_48.png" }
+        ListElement { name: "Contacts"; icon: "pics/AddressBook_48.png" }
+    }
+
+    Component {
+        id: appDelegate
+        Item {
+            width: 100; height: 100
+            scale: PathView.iconScale
+
+            Image {
+                id: myIcon
+                y: 20; anchors.horizontalCenter: parent.horizontalCenter
+                source: icon
+                smooth: true
+            }
+            Text {
+                anchors { top: myIcon.bottom; horizontalCenter: parent.horizontalCenter }
+                text: name
+                smooth: true
+            }
+
+            MouseArea {
+                anchors.fill: parent
+                onClicked: view.currentIndex = index
+            }
+        }
+    }
+
+    Component {
+        id: appHighlight
+        Rectangle { width: 80; height: 80; color: "lightsteelblue" }
+    }
+
+    PathView {
+        id: view
+        anchors.fill: parent
+        highlight: appHighlight
+        preferredHighlightBegin: 0.5
+        preferredHighlightEnd: 0.5
+        focus: true
+        model: appModel
+        delegate: appDelegate
+        path: Path {
+            startX: 10
+            startY: 50
+            PathAttribute { name: "iconScale"; value: 0.5 }
+            PathQuad { x: 200; y: 150; controlX: 50; controlY: 200 }
+            PathAttribute { name: "iconScale"; value: 1.0 }
+            PathQuad { x: 390; y: 50; controlX: 350; controlY: 200 }
+            PathAttribute { name: "iconScale"; value: 0.5 }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/modelviews/pathview/pathview.qmlproject b/examples/declarative/qtquick1/modelviews/pathview/pathview.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/modelviews/pathview/pics/AddressBook_48.png b/examples/declarative/qtquick1/modelviews/pathview/pics/AddressBook_48.png
new file mode 100644 (file)
index 0000000..1ab7c8e
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/pathview/pics/AddressBook_48.png differ
diff --git a/examples/declarative/qtquick1/modelviews/pathview/pics/AudioPlayer_48.png b/examples/declarative/qtquick1/modelviews/pathview/pics/AudioPlayer_48.png
new file mode 100644 (file)
index 0000000..f4b8689
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/pathview/pics/AudioPlayer_48.png differ
diff --git a/examples/declarative/qtquick1/modelviews/pathview/pics/Camera_48.png b/examples/declarative/qtquick1/modelviews/pathview/pics/Camera_48.png
new file mode 100644 (file)
index 0000000..c76b524
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/pathview/pics/Camera_48.png differ
diff --git a/examples/declarative/qtquick1/modelviews/pathview/pics/DateBook_48.png b/examples/declarative/qtquick1/modelviews/pathview/pics/DateBook_48.png
new file mode 100644 (file)
index 0000000..58f5787
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/pathview/pics/DateBook_48.png differ
diff --git a/examples/declarative/qtquick1/modelviews/pathview/pics/EMail_48.png b/examples/declarative/qtquick1/modelviews/pathview/pics/EMail_48.png
new file mode 100644 (file)
index 0000000..d6d84a6
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/pathview/pics/EMail_48.png differ
diff --git a/examples/declarative/qtquick1/modelviews/pathview/pics/TodoList_48.png b/examples/declarative/qtquick1/modelviews/pathview/pics/TodoList_48.png
new file mode 100644 (file)
index 0000000..0988448
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/pathview/pics/TodoList_48.png differ
diff --git a/examples/declarative/qtquick1/modelviews/pathview/pics/VideoPlayer_48.png b/examples/declarative/qtquick1/modelviews/pathview/pics/VideoPlayer_48.png
new file mode 100644 (file)
index 0000000..52638c5
Binary files /dev/null and b/examples/declarative/qtquick1/modelviews/pathview/pics/VideoPlayer_48.png differ
diff --git a/examples/declarative/qtquick1/modelviews/stringlistmodel/main.cpp b/examples/declarative/qtquick1/modelviews/stringlistmodel/main.cpp
new file mode 100644 (file)
index 0000000..070ddd4
--- /dev/null
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QApplication>
+
+#include <QDeclarativeEngine>
+#include <QDeclarativeContext>
+#include <QtQuick1/QDeclarativeItem>
+#include <QtQuick1/QDeclarativeView>
+
+
+/*
+   This example illustrates exposing a QStringList as a
+   model in QML
+*/
+
+int main(int argc, char ** argv)
+{
+    QApplication app(argc, argv);
+
+//![0]
+    QStringList dataList;
+    dataList.append("Item 1");
+    dataList.append("Item 2");
+    dataList.append("Item 3");
+    dataList.append("Item 4");
+
+    QDeclarativeView view;
+    QDeclarativeContext *ctxt = view.rootContext();
+    ctxt->setContextProperty("myModel", QVariant::fromValue(dataList));
+//![0]
+
+    view.setSource(QUrl("qrc:view.qml"));
+    view.show();
+
+    return app.exec();
+}
+
diff --git a/examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.pro b/examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.pro
new file mode 100644 (file)
index 0000000..3078e5b
--- /dev/null
@@ -0,0 +1,9 @@
+TEMPLATE = app
+TARGET = stringlistmodel
+DEPENDPATH += .
+INCLUDEPATH += .
+QT += declarative qtquick1
+
+# Input
+SOURCES += main.cpp
+RESOURCES += stringlistmodel.qrc
diff --git a/examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.qrc b/examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.qrc
new file mode 100644 (file)
index 0000000..17e9301
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>view.qml</file>
+</qresource>
+</RCC>
diff --git a/examples/declarative/qtquick1/modelviews/stringlistmodel/view.qml b/examples/declarative/qtquick1/modelviews/stringlistmodel/view.qml
new file mode 100644 (file)
index 0000000..9c65d80
--- /dev/null
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+//![0]
+
+ListView {
+    width: 100; height: 100
+    anchors.fill: parent
+
+    model: myModel
+    delegate: Rectangle {
+        height: 25
+        width: 100
+        Text { text: modelData }
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qml b/examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qml
new file mode 100644 (file)
index 0000000..4ea7e5b
--- /dev/null
@@ -0,0 +1,114 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// This example demonstrates placing items in a view using
+// a VisualItemModel
+
+import QtQuick 1.0
+
+Rectangle {
+    color: "lightgray"
+    width: 240
+    height: 320
+
+    VisualItemModel {
+        id: itemModel
+
+        Rectangle {
+            width: view.width; height: view.height
+            color: "#FFFEF0"
+            Text { text: "Page 1"; font.bold: true; anchors.centerIn: parent }
+
+            Component.onDestruction: print("destroyed 1")
+        }
+        Rectangle {
+            width: view.width; height: view.height
+            color: "#F0FFF7"
+            Text { text: "Page 2"; font.bold: true; anchors.centerIn: parent }
+
+            Component.onDestruction: print("destroyed 2")
+        }
+        Rectangle {
+            width: view.width; height: view.height
+            color: "#F4F0FF"
+            Text { text: "Page 3"; font.bold: true; anchors.centerIn: parent }
+
+            Component.onDestruction: print("destroyed 3")
+        }
+    }
+
+    ListView {
+        id: view
+        anchors { fill: parent; bottomMargin: 30 }
+        model: itemModel
+        preferredHighlightBegin: 0; preferredHighlightEnd: 0
+        highlightRangeMode: ListView.StrictlyEnforceRange
+        orientation: ListView.Horizontal
+        snapMode: ListView.SnapOneItem; flickDeceleration: 2000
+        cacheBuffer: 200
+    }
+
+    Rectangle {
+        width: 240; height: 30
+        anchors { top: view.bottom; bottom: parent.bottom }
+        color: "gray"
+
+        Row {
+            anchors.centerIn: parent
+            spacing: 20
+
+            Repeater {
+                model: itemModel.count
+
+                Rectangle {
+                    width: 5; height: 5
+                    radius: 3
+                    color: view.currentIndex == index ? "blue" : "white"
+
+                    MouseArea {
+                        width: 20; height: 20
+                        anchors.centerIn: parent
+                        onClicked: view.currentIndex = index
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qmlproject b/examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/positioners/Button.qml b/examples/declarative/qtquick1/positioners/Button.qml
new file mode 100644 (file)
index 0000000..25907c0
--- /dev/null
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: page
+
+    property string text
+    property string icon
+    signal clicked
+
+    border.color: "black"; color: "steelblue"; radius: 5
+    width: pix.width + textelement.width + 13
+    height: pix.height + 10
+
+    Image { id: pix; x: 5; y:5; source: parent.icon }
+
+    Text {
+        id: textelement
+        text: page.text; color: "white"
+        x: pix.width + pix.x + 3
+        anchors.verticalCenter: pix.verticalCenter
+    }
+
+    MouseArea {
+        id: mr
+        anchors.fill: parent
+        onClicked: { parent.focus = true; page.clicked() }
+    }
+
+    states: State {
+        name: "pressed"; when: mr.pressed
+        PropertyChanges { target: textelement; x: 5 }
+        PropertyChanges { target: pix; x: textelement.x + textelement.width + 3 }
+    }
+
+    transitions: Transition {
+        NumberAnimation { properties: "x,left"; easing.type: Easing.InOutQuad; duration: 200 }
+    }
+}
diff --git a/examples/declarative/qtquick1/positioners/add.png b/examples/declarative/qtquick1/positioners/add.png
new file mode 100644 (file)
index 0000000..1ee4542
Binary files /dev/null and b/examples/declarative/qtquick1/positioners/add.png differ
diff --git a/examples/declarative/qtquick1/positioners/del.png b/examples/declarative/qtquick1/positioners/del.png
new file mode 100644 (file)
index 0000000..8d2eaed
Binary files /dev/null and b/examples/declarative/qtquick1/positioners/del.png differ
diff --git a/examples/declarative/qtquick1/positioners/positioners.qml b/examples/declarative/qtquick1/positioners/positioners.qml
new file mode 100644 (file)
index 0000000..e5c632b
--- /dev/null
@@ -0,0 +1,253 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: page
+    width: 420; height: 420
+
+    Column {
+        id: layout1
+        y: 0
+        move: Transition {
+            NumberAnimation { properties: "y"; easing.type: Easing.OutBounce }
+        }
+        add: Transition {
+            NumberAnimation { properties: "y"; easing.type: Easing.OutQuad }
+        }
+
+        Rectangle { color: "red"; width: 100; height: 50; border.color: "black"; radius: 15 }
+
+        Rectangle {
+            id: blueV1
+            width: 100; height: 50
+            color: "lightsteelblue"
+            border.color: "black"
+            radius: 15
+            Behavior on opacity { NumberAnimation {} }
+        }
+
+        Rectangle { color: "green"; width: 100; height: 50; border.color: "black"; radius: 15 }
+
+        Rectangle {
+            id: blueV2
+            width: 100; height: 50
+            color: "lightsteelblue"
+            border.color: "black"
+            radius: 15
+            Behavior on opacity { NumberAnimation {} }
+        }
+
+        Rectangle { color: "orange"; width: 100; height: 50; border.color: "black"; radius: 15 }
+    }
+
+    Row {
+        id: layout2
+        y: 300
+        move: Transition {
+            NumberAnimation { properties: "x"; easing.type: Easing.OutBounce }
+        }
+        add: Transition {
+            NumberAnimation { properties: "x"; easing.type: Easing.OutQuad }
+        }
+
+        Rectangle { color: "red"; width: 50; height: 100; border.color: "black"; radius: 15 }
+
+        Rectangle {
+            id: blueH1
+            width: 50; height: 100
+            color: "lightsteelblue"
+            border.color: "black"
+            radius: 15
+            Behavior on opacity { NumberAnimation {} }
+        }
+
+        Rectangle { color: "green"; width: 50; height: 100; border.color: "black"; radius: 15 }
+
+        Rectangle {
+            id: blueH2
+            width: 50; height: 100
+            color: "lightsteelblue"
+            border.color: "black"
+            radius: 15
+            Behavior on opacity { NumberAnimation {} }
+        }
+
+        Rectangle { color: "orange"; width: 50; height: 100; border.color: "black"; radius: 15 }
+    }
+
+    Button {
+        x: 135; y: 90
+        text: "Remove"
+        icon: "del.png"
+
+        onClicked: {
+            blueH2.opacity = 0
+            blueH1.opacity = 0
+            blueV1.opacity = 0
+            blueV2.opacity = 0
+            blueG1.opacity = 0
+            blueG2.opacity = 0
+            blueG3.opacity = 0
+            blueF1.opacity = 0
+            blueF2.opacity = 0
+            blueF3.opacity = 0
+        }
+    }
+
+    Button {
+        x: 145; y: 140
+        text: "Add"
+        icon: "add.png"
+
+        onClicked: {
+            blueH2.opacity = 1
+            blueH1.opacity = 1
+            blueV1.opacity = 1
+            blueV2.opacity = 1
+            blueG1.opacity = 1
+            blueG2.opacity = 1
+            blueG3.opacity = 1
+            blueF1.opacity = 1
+            blueF2.opacity = 1
+            blueF3.opacity = 1
+        }
+    }
+
+    Grid {
+        x: 260; y: 0
+        columns: 3
+
+        move: Transition {
+            NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce }
+        }
+
+        add: Transition {
+            NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce }
+        }
+
+        Rectangle { color: "red"; width: 50; height: 50; border.color: "black"; radius: 15 }
+
+        Rectangle {
+            id: blueG1
+            width: 50; height: 50
+            color: "lightsteelblue"
+            border.color: "black"
+            radius: 15
+            Behavior on opacity { NumberAnimation {} }
+        }
+
+        Rectangle { color: "green"; width: 50; height: 50; border.color: "black"; radius: 15 }
+
+        Rectangle {
+            id: blueG2
+            width: 50; height: 50
+            color: "lightsteelblue"
+            border.color: "black"
+            radius: 15
+            Behavior on opacity { NumberAnimation {} }
+        }
+
+        Rectangle { color: "orange"; width: 50; height: 50; border.color: "black"; radius: 15 }
+
+        Rectangle {
+            id: blueG3
+            width: 50; height: 50
+            color: "lightsteelblue"
+            border.color: "black"
+            radius: 15
+            Behavior on opacity { NumberAnimation {} }
+        }
+
+        Rectangle { color: "red"; width: 50; height: 50; border.color: "black"; radius: 15 }
+        Rectangle { color: "green"; width: 50; height: 50; border.color: "black"; radius: 15 }
+        Rectangle { color: "orange"; width: 50; height: 50; border.color: "black"; radius: 15 }
+    }
+
+    Flow {
+        id: layout4
+        x: 260; y: 250; width: 150
+
+        move: Transition {
+            NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce }
+        }
+
+        add: Transition {
+            NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce }
+        }
+
+        Rectangle { color: "red"; width: 50; height: 50; border.color: "black"; radius: 15 }
+
+        Rectangle {
+            id: blueF1
+            width: 60; height: 50
+            color: "lightsteelblue"
+            border.color: "black"
+            radius: 15
+            Behavior on opacity { NumberAnimation {} }
+        }
+
+        Rectangle { color: "green"; width: 30; height: 50; border.color: "black"; radius: 15 }
+
+        Rectangle {
+            id: blueF2
+            width: 60; height: 50
+            color: "lightsteelblue"
+            border.color: "black"
+            radius: 15
+            Behavior on opacity { NumberAnimation {} }
+        }
+
+        Rectangle { color: "orange"; width: 50; height: 50; border.color: "black"; radius: 15 }
+
+        Rectangle {
+            id: blueF3
+            width: 40; height: 50
+            color: "lightsteelblue"
+            border.color: "black"
+            radius: 15
+            Behavior on opacity { NumberAnimation {} }
+        }
+
+        Rectangle { color: "red"; width: 80; height: 50; border.color: "black"; radius: 15 }
+    }
+
+}
diff --git a/examples/declarative/qtquick1/positioners/positioners.qmlproject b/examples/declarative/qtquick1/positioners/positioners.qmlproject
new file mode 100644 (file)
index 0000000..e526217
--- /dev/null
@@ -0,0 +1,18 @@
+/* File generated by QtCreator */
+
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/qtquick1.pro b/examples/declarative/qtquick1/qtquick1.pro
new file mode 100644 (file)
index 0000000..0618705
--- /dev/null
@@ -0,0 +1,29 @@
+TEMPLATE = subdirs
+
+# These examples contain some C++ and need to be built
+SUBDIRS = \
+   cppextensions \
+   modelviews \
+   tutorials
+
+# plugins uses a 'Time' class that conflicts with symbian e32std.h also defining a class of the same name
+symbian:SUBDIRS -= plugins
+
+# These examples contain no C++ and can simply be copied
+sources.files = \
+   animation \
+   cppextensions \
+   i18n \
+   imageelements \
+   keyinteraction \
+   positioners \
+   sqllocalstorage \
+   text \
+   threading \
+   touchinteraction \
+   toys \
+   ui-components \
+   xml
+
+sources.path = $$[QT_INSTALL_EXAMPLES]/declarative
+INSTALLS += sources
diff --git a/examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qml b/examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qml
new file mode 100644 (file)
index 0000000..197ea39
--- /dev/null
@@ -0,0 +1,256 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.1
+
+Rectangle {
+    id: root
+    property bool mirror
+    property int direction: Qt.application.layoutDirection
+    LayoutMirroring.enabled: mirror
+    LayoutMirroring.childrenInherit: true
+    width: column.width + 80
+    height: column.height + 40
+    Column {
+        id: column
+        width: 190
+        spacing: 10
+        anchors.centerIn: parent
+
+        Text {
+            text: "Row"
+            anchors.horizontalCenter: parent.horizontalCenter
+        }
+
+        Row {
+            layoutDirection: root.direction
+            spacing: 10
+            move: Transition {
+                NumberAnimation {
+                    properties: "x"
+                }
+            }
+            Repeater {
+                model: 4
+                Loader {
+                    property int value: index
+                    sourceComponent: positionerDelegate
+                }
+            }
+        }
+
+        Text {
+            text: "Grid"
+            anchors.horizontalCenter: parent.horizontalCenter
+        }
+
+        Grid {
+            layoutDirection: root.direction
+            spacing: 10; columns: 4
+            move: Transition {
+                NumberAnimation {
+                    properties: "x"
+                }
+            }
+            Repeater {
+                model: 11
+                Loader {
+                    property int value: index
+                    sourceComponent: positionerDelegate
+                }
+            }
+        }
+
+        Text {
+            text: "Flow"
+            anchors.horizontalCenter: parent.horizontalCenter
+        }
+
+        Flow {
+            layoutDirection: root.direction
+            spacing: 10; width: parent.width
+            move: Transition {
+                NumberAnimation {
+                    properties: "x"
+                }
+            }
+            Repeater {
+                model: 10
+                Loader {
+                    property int value: index
+                    sourceComponent: positionerDelegate
+                }
+            }
+        }
+
+        Text {
+            text: "ListView"
+            anchors.horizontalCenter: parent.horizontalCenter
+        }
+
+        ListView {
+            id: listView
+            clip: true
+            width: parent.width; height: 40
+            layoutDirection: root.direction
+            orientation: Qt.Horizontal
+            model: 48
+            delegate: viewDelegate
+        }
+
+        Text {
+            text: "GridView"
+            anchors.horizontalCenter: parent.horizontalCenter
+        }
+
+        GridView {
+            clip: true
+            width: 200; height: 160
+            cellWidth: 50; cellHeight: 50
+            layoutDirection: root.direction
+            model: 48
+            delegate: viewDelegate
+        }
+
+        Rectangle {
+            height: 50; width: parent.width
+            color: mouseArea.pressed ? "black" : "gray"
+            Column {
+                anchors.centerIn: parent
+                Text {
+                    text: root.direction ? "Right to left" : "Left to right"
+                    color: "white"
+                    font.pixelSize: 16
+                    anchors.horizontalCenter: parent.horizontalCenter
+                }
+                Text {
+                    text: "(click here to toggle)"
+                    color: "white"
+                    font.pixelSize: 10
+                    font.italic: true
+                    anchors.horizontalCenter: parent.horizontalCenter
+                }
+            }
+            MouseArea {
+                id: mouseArea
+                anchors.fill: parent
+                onClicked: {
+                    if (root.direction == Qt.LeftToRight) {
+                        root.direction = Qt.RightToLeft;
+                    } else {
+                        root.direction = Qt.LeftToRight;
+                    }
+                }
+            }
+        }
+
+        Rectangle {
+            height: 50; width: parent.width
+            color: mouseArea2.pressed ? "black" : "gray"
+            Column {
+                anchors.centerIn: parent
+                Text {
+                    text: root.mirror ? "Mirrored" : "Not mirrored"
+                    color: "white"
+                    font.pixelSize: 16
+                    anchors.horizontalCenter: parent.horizontalCenter
+                }
+                Text {
+                    text: "(click here to toggle)"
+                    color: "white"
+                    font.pixelSize: 10
+                    font.italic: true
+                    anchors.horizontalCenter: parent.horizontalCenter
+                }
+            }
+            MouseArea {
+                id: mouseArea2
+                anchors.fill: parent
+                onClicked: {
+                    root.mirror = !root.mirror;
+                }
+            }
+        }
+    }
+
+    Component {
+        id: positionerDelegate
+        Rectangle {
+            width: 40; height: 40
+            color: Qt.rgba(0.8/(parent.value+1),0.8/(parent.value+1),0.8/(parent.value+1),1.0)
+            Text {
+                text: parent.parent.value+1
+                color: "white"
+                font.pixelSize: 18
+                anchors.centerIn: parent
+            }
+        }
+    }
+    Component {
+        id: viewDelegate
+        Item {
+            function effectiveLayoutDirection() {
+                if (LayoutMirroring.enabled)
+                    if (listView.layoutDirection == Qt.LeftToRight)
+                        return Qt.RightToLeft;
+                    else
+                        return Qt.LeftToRight;
+                else
+                    return listView.layoutDirection;
+            }
+
+            width: (effectiveLayoutDirection() == Qt.LeftToRight ? (index == 48 - 1) : (index == 0)) ? 40 : 50
+            Rectangle {
+                width: 40; height: 40
+                color: Qt.rgba(0.5+(48 - index)*Math.random()/48,
+                               0.3+index*Math.random()/48,
+                               0.3*Math.random(),
+                               1.0)
+                Text {
+                    text: index+1
+                    color: "white"
+                    font.pixelSize: 18
+                    anchors.centerIn: parent
+                }
+            }
+        }
+    }
+}
+
diff --git a/examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qmlproject b/examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qmlproject
new file mode 100644 (file)
index 0000000..e526217
--- /dev/null
@@ -0,0 +1,18 @@
+/* File generated by QtCreator */
+
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qml b/examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qml
new file mode 100644 (file)
index 0000000..0d1b871
--- /dev/null
@@ -0,0 +1,313 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.1
+
+Rectangle {
+    id: root
+    property bool mirror: Qt.application.layoutDirection == Qt.RightToLeft
+    LayoutMirroring.enabled: mirror
+    LayoutMirroring.childrenInherit: true
+    width: 400
+    height: 875
+    color: "lightsteelblue"
+
+    Column {
+        spacing: 10
+        anchors { left: parent.left; right: parent.right; top: parent.top; margins: 10 }
+
+        Text {
+            text: "Positioners"
+            anchors.left: parent.left
+        }
+
+        Column {
+            id: positioners
+            spacing: 5
+            anchors.left: parent.left
+            Row {
+                id: row
+                spacing: 4
+                property string text: "THISISROW"
+                anchors.left: parent.left
+                Repeater {
+                    model: parent.text.length
+                    delegate: positionerDelegate
+                }
+            }
+            Flow {
+                id: flow
+                spacing: 4
+                width: 90
+                property string text: "THISISFLOW"
+                anchors.left: parent.left
+                Repeater {
+                    model: parent.text.length
+                    delegate: positionerDelegate
+                }
+            }
+            Grid {
+                id: grid
+                spacing: 4
+                columns: 6
+                property string text: "THISISGRID"
+                anchors.left: parent.left
+                Repeater {
+                    model: parent.text.length
+                    delegate: positionerDelegate
+                }
+            }
+            Component {
+                id: positionerDelegate
+                Text {
+                    color: "white"
+                    font.pixelSize: 20
+                    text: parent.text[index]
+                    Rectangle {
+                        z: -1
+                        opacity: 0.7
+                        color: "black"
+                        anchors.fill: parent
+                    }
+                }
+            }
+        }
+
+        Text {
+            text: "Text alignment"
+            anchors.left: parent.left
+        }
+
+        Rectangle {
+            id: textStrings
+            width: 148
+            height: 85
+            color: "white"
+            anchors.left: parent.left
+            Column {
+                spacing: 5
+                width: parent.width
+                anchors { fill: parent; margins: 5 }
+                Text {
+                    id: englishText
+                    width: parent.width
+                    text: "English text"
+                }
+                Text {
+                    id: arabicText
+                    width: parent.width
+                    text: "النص Ø§Ù„عربي"
+                }
+                Text {
+                    id: leftAlignedText
+                    width: parent.width
+                    text: "Text aligned to left"
+                    horizontalAlignment: Text.AlignLeft
+                }
+                Text {
+                    id: rightAlignedText
+                    width: parent.width
+                    text: "Text aligned to right"
+                    horizontalAlignment: Text.AlignRight
+                }
+            }
+        }
+
+        Text {
+            text: "Model views"
+            anchors.left: parent.left
+        }
+
+        Column {
+            id: views
+            spacing: 10
+            anchors.left: parent.left
+            ListView {
+                id: listView
+                z: -1
+                clip: true
+                model: text.length
+                width: 360; height: 45
+                orientation: Qt.Horizontal
+                property string text: "LISTVIEWLISTVIEWLISTVIEWLISTVIEWLISTVIEWLISTVIEW"
+                delegate: Rectangle {
+                    color: "black"
+                    width: 45; height: 45
+                    Rectangle {
+                        anchors { fill: parent; margins: 1 }
+                        color: "red"
+                    }
+                    Text {
+                        text: listView.text[index]
+                        font.pixelSize: 30
+                        anchors.centerIn: parent
+                    }
+                }
+            }
+            GridView {
+                id: gridView
+                z: -1
+                clip: true
+                model: text.length
+                width: 180; height: 90
+                cellWidth: 45; cellHeight: 45
+                property string text: "GRIDVIEWGRIDVIEWGRIDVIEWGRIDVIEWGRIDVIEWGRIDVIEW"
+                anchors.left: parent.left
+                delegate: Rectangle {
+                    color: "black"
+                    width: 45; height: 45
+                    Rectangle {
+                        anchors { fill: parent; margins: 1 }
+                        color: "red"
+                    }
+                    Text {
+                        anchors.centerIn: parent
+                        font.pixelSize: 30
+                        text: gridView.text[index]
+                    }
+                }
+            }
+        }
+
+        Text {
+            text: "Item x"
+            anchors.left: parent.left
+        }
+        Rectangle {
+            id: items
+            color: Qt.rgba(0.2, 0.2, 0.2, 0.6)
+            width: 275; height: 95
+            anchors.left: parent.left
+            Rectangle {
+                y: 5; x: 5
+                width: 130; height: 40
+                Text {
+                    text: "Item with x: 5\n(not mirrored)"
+                    anchors.centerIn: parent
+                }
+            }
+            Rectangle {
+                color:  Qt.rgba(0.7, 0.7, 0.7)
+                y: 50; x: mirror(5)
+                width: 130; height: 40
+                function mirror(value) {
+                    return LayoutMirroring.enabled ? (parent.width - width - value) : value;
+                }
+                Text {
+                    text: "Item with x: " + parent.x + "\n(manually mirrored)"
+                    anchors.centerIn: parent
+                }
+            }
+        }
+        Text {
+            text: "Item anchors"
+            anchors.left: parent.left
+        }
+
+        Rectangle {
+            id: anchoredItems
+            color: Qt.rgba(0.2, 0.2, 0.2, 0.6)
+            width: 270; height: 170
+            anchors.left: parent.left
+            Rectangle {
+                id: blackRectangle
+                color: "black"
+                width: 180; height: 90
+                anchors { horizontalCenter: parent.horizontalCenter; horizontalCenterOffset: 30 }
+                Text {
+                    text: "Horizontal center anchored\nwith offset 30\nto the horizontal center\nof the parent."
+                    color: "white"
+                    anchors.centerIn: parent
+                }
+            }
+            Rectangle {
+                id: whiteRectangle
+                color: "white"
+                width: 120; height: 70
+                anchors { left: parent.left; bottom: parent.bottom }
+                Text {
+                    text: "Left side anchored\nto the left side\nof the parent."
+                    color: "black"
+                    anchors.centerIn: parent
+                }
+            }
+            Rectangle {
+                id: grayRectangle
+                color: Qt.rgba(0.7, 0.7, 0.7)
+                width: 140; height: 90
+                anchors { right: parent.right; bottom: parent.bottom }
+                Text {
+                    text: "Right side anchored\nto the right side\nof the parent."
+                    anchors.centerIn: parent
+                }
+            }
+        }
+        Rectangle {
+            id: mirrorButton
+            color: mouseArea2.pressed ? "black" : "gray"
+            height: 50; width: parent.width
+            anchors.left: parent.left
+            Column {
+                anchors.centerIn: parent
+                Text {
+                    text: root.mirror ? "Mirrored" : "Not mirrored"
+                    color: "white"
+                    font.pixelSize: 16
+                    anchors.horizontalCenter: parent.horizontalCenter
+                }
+                Text {
+                    text: "(click here to toggle)"
+                    color: "white"
+                    font.pixelSize: 10
+                    font.italic: true
+                    anchors.horizontalCenter: parent.horizontalCenter
+                }
+            }
+            MouseArea {
+                id: mouseArea2
+                anchors.fill: parent
+                onClicked: {
+                    root.mirror = !root.mirror;
+                }
+            }
+        }
+    }
+}
+
diff --git a/examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qmlproject b/examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qmlproject
new file mode 100644 (file)
index 0000000..e526217
--- /dev/null
@@ -0,0 +1,18 @@
+/* File generated by QtCreator */
+
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qml b/examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qml
new file mode 100644 (file)
index 0000000..4c40c3c
--- /dev/null
@@ -0,0 +1,426 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.1
+
+Rectangle {
+    id: root
+    color: "white"
+    width: containerColumn.width
+    height: containerColumn.height + containerColumn.anchors.topMargin
+
+    property bool mirror: false
+    property variant horizontalAlignment: undefined
+
+    property variant editorType: ["Plain Text", "Styled Text", "Plain Rich Text", "Italic Rich Text", "Plain TextEdit", "Italic TextEdit", "TextInput"]
+    property variant text: ["", " ", "Hello world!", "مرحبا Ø§Ù„عالم!", "Hello world! Hello!\nHello world! Hello!", "مرحبا Ø§Ù„عالم! Ù…رحبا! Ù…رحبا Ø§Ù„عالم! Ù…رحبا!" ,"مرحبا Ø§Ù„عالم! Ù…رحبا! Ù…رحبا Hello world!\nالعالم! Ù…رحبا!"]
+    property variant description: ["empty text", "white-space-only text", "left-to-right text", "right-to-left text", "multi-line left-to-right text", "multi-line right-to-left text", "multi-line bidi text"]
+    property variant textComponents: [plainTextComponent, styledTextComponent, richTextComponent, italicRichTextComponent, plainTextEdit, italicTextEdit, textInput]
+
+    function shortText(horizontalAlignment) {
+
+        // all the different QML editors have
+        // the same alignment values
+        switch (horizontalAlignment) {
+        case Text.AlignLeft:
+            return "L";
+        case Text.AlignRight:
+            return "R";
+        case Text.AlignHCenter:
+            return "C";
+        case Text.AlignJustify:
+            return "J";
+        default:
+            return "Error";
+        }
+    }
+    Column {
+        id: containerColumn
+        spacing: 10
+        width: editorTypeRow.width
+        anchors { top: parent.top; topMargin: 5 }
+        Row {
+            id: editorTypeRow
+            Repeater {
+                model: editorType.length
+                Item {
+                    width: editorColumn.width
+                    height: editorColumn.height
+                    Column {
+                        id: editorColumn
+                        spacing: 5
+                        width: textColumn.width+10
+                        Text {
+                            text: root.editorType[index]
+                            font.pixelSize: 16
+                            anchors.horizontalCenter: parent.horizontalCenter
+                        }
+                        Column {
+                            id: textColumn
+                            spacing: 5
+                            anchors.horizontalCenter: parent.horizontalCenter
+                            Repeater {
+                                model: textComponents.length
+                                delegate: textComponents[index]
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        Column {
+            spacing: 2
+            width: parent.width
+            Rectangle {
+                // button
+                height: 50; width: parent.width
+                color: mouseArea.pressed ? "black" : "lightgray"
+                Column {
+                    anchors.centerIn: parent
+                    Text {
+                        text: root.mirror ? "Mirrored" : "Not mirrored"
+                        color: "white"
+                        font.pixelSize: 16
+                        anchors.horizontalCenter: parent.horizontalCenter
+                    }
+                    Text {
+                        text: "(click here to toggle)"
+                        color: "white"
+                        font.pixelSize: 10
+                        font.italic: true
+                        anchors.horizontalCenter: parent.horizontalCenter
+                    }
+                }
+                MouseArea {
+                    id: mouseArea
+                    property int index: 0
+                    anchors.fill: parent
+                    onClicked: root.mirror = !root.mirror
+                }
+            }
+            Rectangle {
+                // button
+                height: 50; width: parent.width
+                color: mouseArea2.pressed ? "black" : "gray"
+                Column {
+                    anchors.centerIn: parent
+                    Text {
+                        text: {
+                            if (root.horizontalAlignment == undefined)
+                                return "Implict alignment";
+                            switch (root.horizontalAlignment) {
+                            case Text.AlignLeft:
+                                return "Left alignment";
+                            case Text.AlignRight:
+                                return "Right alignment";
+                            case Text.AlignHCenter:
+                                return "Center alignment";
+                            case Text.AlignJustify:
+                                return "Justify alignment";
+                            }
+                        }
+                        color: "white"
+                        font.pixelSize: 16
+                        anchors.horizontalCenter: parent.horizontalCenter
+                    }
+                    Text {
+                        text: "(click here to toggle)"
+                        color: "white"
+                        font.pixelSize: 10
+                        font.italic: true
+                        anchors.horizontalCenter: parent.horizontalCenter
+                    }
+                }
+                MouseArea {
+                    id: mouseArea2
+                    property int index: 0
+                    anchors.fill: parent
+                    onClicked: {
+                        if (index < 0) {
+                            root.horizontalAlignment = undefined;
+                        } else {
+                            root.horizontalAlignment = Math.pow(2, index);
+                        }
+                        index = (index + 2) % 5 - 1;
+                    }
+                }
+            }
+        }
+    }
+
+    Component {
+        id: plainTextComponent
+        Text {
+            width: 180
+            text: root.text[index]
+            font.pixelSize: 24
+            wrapMode: Text.WordWrap
+            horizontalAlignment: root.horizontalAlignment
+            LayoutMirroring.enabled: root.mirror
+            textFormat: Text.RichText
+            Rectangle {
+                z: -1
+                color: Qt.rgba(0.8, 0.2, 0.2, 0.3)
+                anchors.fill: parent
+            }
+            Text {
+                text: root.description[index]
+                color: Qt.rgba(1,1,1,1.0)
+                anchors.centerIn: parent
+                Rectangle {
+                    z: -1
+                    color: Qt.rgba(0.3, 0, 0, 0.3)
+                    anchors { fill: parent; margins: -3 }
+                }
+            }
+            Text {
+                color: "white"
+                text: shortText(parent.horizontalAlignment)
+                anchors { top: parent.top; right: parent.right; margins: 2 }
+            }
+        }
+    }
+
+    Component {
+        id: styledTextComponent
+        Text {
+            width: 180
+            text: root.text[index]
+            font.pixelSize: 24
+            wrapMode: Text.WordWrap
+            horizontalAlignment: root.horizontalAlignment
+            LayoutMirroring.enabled: root.mirror
+            textFormat: Text.RichText
+            style: Text.Sunken
+            styleColor: "white"
+            Rectangle {
+                z: -1
+                color: Qt.rgba(0.8, 0.2, 0.2, 0.3)
+                anchors.fill: parent
+            }
+            Text {
+                text: root.description[index]
+                color: Qt.rgba(1,1,1,1.0)
+                anchors.centerIn: parent
+                Rectangle {
+                    z: -1
+                    color: Qt.rgba(0.3, 0, 0, 0.3)
+                    anchors { fill: parent; margins: -3 }
+                }
+            }
+            Text {
+                color: "white"
+                text: shortText(parent.horizontalAlignment)
+                anchors { top: parent.top; right: parent.right; margins: 2 }
+            }
+        }
+    }
+
+    Component {
+        id: richTextComponent
+        Text {
+            width: 180
+            text: root.text[index]
+            font.pixelSize: 24
+            wrapMode: Text.WordWrap
+            horizontalAlignment: root.horizontalAlignment
+            LayoutMirroring.enabled: root.mirror
+            textFormat: Text.RichText
+            Rectangle {
+                z: -1
+                color: Qt.rgba(0.8, 0.2, 0.2, 0.3)
+                anchors.fill: parent
+            }
+            Text {
+                text: root.description[index]
+                color: Qt.rgba(1,1,1,1.0)
+                anchors.centerIn: parent
+                Rectangle {
+                    z: -1
+                    color: Qt.rgba(0.3, 0, 0, 0.3)
+                    anchors { fill: parent; margins: -3 }
+                }
+            }
+            Text {
+                color: "white"
+                text: shortText(parent.horizontalAlignment)
+                anchors { top: parent.top; right: parent.right; margins: 2 }
+            }
+        }
+    }
+
+    Component {
+        id: italicRichTextComponent
+        Text {
+            width: 180
+            text: "<i>" + root.text[index] + "</i>"
+            font.pixelSize: 24
+            wrapMode: Text.WordWrap
+            horizontalAlignment: root.horizontalAlignment
+            LayoutMirroring.enabled: root.mirror
+            textFormat: Text.RichText
+            property variant backgroundColor: Qt.rgba(0.8, 0.2, 0.2, 0.3)
+            Rectangle {
+                z: -1
+                color: parent.backgroundColor
+                anchors.fill: parent
+            }
+            Text {
+                text: root.description[index]
+                color: Qt.rgba(1,1,1,1.0)
+                anchors.centerIn: parent
+                Rectangle {
+                    z: -1
+                    color: Qt.rgba(0.3, 0, 0, 0.3)
+                    anchors { fill: parent; margins: -3 }
+                }
+            }
+            Text {
+                color: "white"
+                text: shortText(parent.horizontalAlignment)
+                anchors { top: parent.top; right: parent.right; margins: 2 }
+            }
+        }
+    }
+
+    Component {
+        id: plainTextEdit
+        TextEdit {
+            width: 180
+            text: root.text[index]
+            font.pixelSize: 24
+            cursorVisible: true
+            wrapMode: TextEdit.WordWrap
+            horizontalAlignment: root.horizontalAlignment
+            LayoutMirroring.enabled: root.mirror
+            Rectangle {
+                z: -1
+                color: Qt.rgba(0.5, 0.5, 0.2, 0.3)
+                anchors.fill: parent
+            }
+            Text {
+                text: root.description[index]
+                color: Qt.rgba(1,1,1,1.0)
+                anchors.centerIn: parent
+                Rectangle {
+                    z: -1
+                    color: Qt.rgba(0.3, 0, 0, 0.3)
+                    anchors { fill: parent; margins: -3 }
+                }
+            }
+            Text {
+                color: "white"
+                text: shortText(parent.horizontalAlignment)
+                anchors { top: parent.top; right: parent.right; margins: 2 }
+            }
+        }
+    }
+
+    Component {
+        id: italicTextEdit
+        TextEdit {
+            width: 180
+            text: "<i>" + root.text[index] + "<i>"
+            font.pixelSize: 24
+            cursorVisible: true
+            wrapMode: TextEdit.WordWrap
+            horizontalAlignment: root.horizontalAlignment
+            LayoutMirroring.enabled: root.mirror
+            Rectangle {
+                z: -1
+                color: Qt.rgba(0.5, 0.5, 0.2, 0.3)
+                anchors.fill: parent
+            }
+            Text {
+                text: root.description[index]
+                color: Qt.rgba(1,1,1,1.0)
+                anchors.centerIn: parent
+                Rectangle {
+                    z: -1
+                    color: Qt.rgba(0.3, 0, 0, 0.3)
+                    anchors { fill: parent; margins: -3 }
+                }
+            }
+            Text {
+                color: "white"
+                text: shortText(parent.horizontalAlignment)
+                anchors { top: parent.top; right: parent.right; margins: 2 }
+            }
+        }
+    }
+
+    Component {
+        id: textInput
+        Item {
+            width: 180
+            height: textInput.text.length > 20 ? 3*textInput.height : textInput.height
+            TextInput {
+                id: textInput
+                width: 180
+                text: root.text[index]
+                font.pixelSize: 24
+                cursorVisible: true
+                horizontalAlignment: root.horizontalAlignment
+                LayoutMirroring.enabled: root.mirror
+                Rectangle {
+                    z: -1
+                    color: Qt.rgba(0.6, 0.4, 0.2, 0.3)
+                    anchors.fill: parent
+                }
+                Text {
+                    text: root.description[index]
+                    color: Qt.rgba(1,1,1,1.0)
+                    anchors.centerIn: parent
+                    Rectangle {
+                        z: -1
+                        color: Qt.rgba(0.3, 0, 0, 0.3)
+                        anchors { fill: parent; margins: -3 }
+                    }
+                }
+                Text {
+                    color: "white"
+                    text: shortText(parent.horizontalAlignment)
+                    anchors { top: parent.top; right: parent.right; margins: 2 }
+                }
+            }
+        }
+    }
+}
+
diff --git a/examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qmlproject b/examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qmlproject
new file mode 100644 (file)
index 0000000..e526217
--- /dev/null
@@ -0,0 +1,18 @@
+/* File generated by QtCreator */
+
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/screenorientation/Core/Bubble.qml b/examples/declarative/qtquick1/screenorientation/Core/Bubble.qml
new file mode 100644 (file)
index 0000000..3ada7df
--- /dev/null
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    property bool rising: false
+    property bool verticalRise: true
+    property real xAttractor: 0
+    property real yAttractor: 0
+
+    width: 5 + 10*Math.random()
+    height: width
+    radius: Math.floor(width/2)-1
+    property real amountOfGray: Math.random()
+    color: Qt.rgba(amountOfGray,amountOfGray,amountOfGray,1)
+
+    y: (rising && verticalRise) ? yAttractor : Math.random()*(main.inPortrait ? main.baseHeight : main.baseWidth)
+    x: (rising && !verticalRise) ? xAttractor : Math.random()*(main.inPortrait ? main.baseWidth : main.baseHeight)
+    Behavior on x {
+        id: xBehavior
+        SmoothedAnimation {
+            velocity: 100+Math.random()*100
+        }
+    }
+    Behavior on y {
+        id: yBehavior
+        SmoothedAnimation {
+            velocity: 100+Math.random()*100
+        }
+    }
+    Timer {
+       interval: 80+Math.random()*40
+        repeat: true
+        running: true
+        onTriggered: {
+            if (rising) {
+                if (x > main.width || x < 0) {
+                    xBehavior.enabled = false;
+                    rising = false;
+                    xBehavior.enabled = true;
+                    rising = true;
+                }
+                if (y > main.height || y < 0) {
+                    yBehavior.enabled = false;
+                    rising = false;
+                    yBehavior.enabled = true;
+                    rising = true;
+                }
+            }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/screenorientation/Core/Button.qml b/examples/declarative/qtquick1/screenorientation/Core/Button.qml
new file mode 100644 (file)
index 0000000..8fefe0c
--- /dev/null
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+Item {
+    id: button
+    signal clicked
+    property string text
+    property bool toggled: false
+    width: 100
+    height: 60
+    Rectangle {
+        anchors.fill: button
+        anchors.margins: mouseArea.pressed ? 3 : 2
+        color: toggled ? (mouseArea.pressed ? "#442222" : "darkred") : (mouseArea.pressed ? "#333333": "black")
+        radius: mouseArea.pressed ? 8 : 6
+        Text {
+            id: text
+            anchors.centerIn: parent
+            text: button.text
+            font.pixelSize: mouseArea.pressed ? 12 : 14
+            color: "white"
+            horizontalAlignment: Text.AlignHCenter
+            verticalAlignment: Text.AlignVCenter
+        }
+        MouseArea {
+            id: mouseArea
+            anchors.fill: parent
+            onClicked: {
+                button.clicked()
+            }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/screenorientation/Core/screenorientation.js b/examples/declarative/qtquick1/screenorientation/Core/screenorientation.js
new file mode 100644 (file)
index 0000000..842846b
--- /dev/null
@@ -0,0 +1,94 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+function printOrientation(orientation) {
+    var orientationString;
+    if (orientation == Orientation.Portrait) {
+        orientationString = "Portrait";
+    } else if (orientation == Orientation.Landscape) {
+        orientationString = "Landscape";
+    } else if (orientation == Orientation.PortraitInverted) {
+        orientationString = "Portrait inverted";
+    } else if (orientation == Orientation.LandscapeInverted) {
+        orientationString = "Landscape inverted";
+    } else {
+        orientationString = "UnknownOrientation";
+    }
+    return orientationString;
+}
+
+function getAngle(orientation) {
+    var angle;
+    if (orientation == Orientation.Portrait) {
+        angle = 0;
+    } else if (orientation == Orientation.Landscape) {
+        angle = 90;
+    } else if (orientation == Orientation.PortraitInverted) {
+        angle = 180;
+    } else if (orientation == Orientation.LandscapeInverted) {
+        angle = 270;
+    } else {
+        angle = 0;
+    }
+    return angle;
+}
+
+function parallel(firstOrientation, secondOrientation) {
+    var difference = getAngle(firstOrientation) - getAngle(secondOrientation)
+    return difference % 180 == 0;
+}
+
+function calculateGravityPoint(firstOrientation, secondOrientation) {
+    var position = Qt.point(0, 0);
+    var difference = getAngle(firstOrientation) - getAngle(secondOrientation)
+    if (difference < 0) {
+        difference = 360 + difference;
+    }
+    if (difference == 0) {
+        position = Qt.point(0, -10);
+    } else if (difference == 90) {
+        position = Qt.point(-10, 0);
+    } else if (difference == 180) {
+        position = Qt.point(0, 1000);
+    } else if (difference == 270) {
+        position = Qt.point(1000, 0);
+    }
+    return position;
+}
diff --git a/examples/declarative/qtquick1/screenorientation/screenorientation.qml b/examples/declarative/qtquick1/screenorientation/screenorientation.qml
new file mode 100644 (file)
index 0000000..b9db83e
--- /dev/null
@@ -0,0 +1,201 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import "Core"
+import "Core/screenorientation.js" as ScreenOrientation
+
+Rectangle {
+    id: window
+    width: 360
+    height: 640
+    color: "white"
+
+    Rectangle {
+        id: main
+        clip: true
+        property variant selectedOrientation: Orientation.UnknownOrientation
+        property variant activeOrientation: selectedOrientation == Orientation.UnknownOrientation ? runtime.orientation : selectedOrientation
+        state: "orientation " + activeOrientation
+        property bool inPortrait: (activeOrientation == Orientation.Portrait || activeOrientation == Orientation.PortraitInverted);
+
+        // rotation correction for landscape devices like N900
+        property bool landscapeWindow: window.width > window.height
+        property variant rotationDelta: landscapeWindow ? -90 : 0
+        rotation: rotationDelta
+
+        // initial state is portrait
+        property real baseWidth: landscapeWindow ? window.height-10 : window.width-10
+        property real baseHeight: landscapeWindow ? window.width-10 : window.height-10
+
+        width: baseWidth
+        height: baseHeight
+        anchors.centerIn: parent
+
+        color: "black"
+        gradient: Gradient {
+            GradientStop { position: 0.0; color: Qt.rgba(0.5,0.5,0.5,0.5) }
+            GradientStop { position: 0.8; color: "black" }
+            GradientStop { position: 1.0; color: "black" }
+        }
+        Item {
+            id: bubbles
+            property bool rising: false
+            anchors.fill: parent
+            property variant gravityPoint: ScreenOrientation.calculateGravityPoint(main.activeOrientation, runtime.orientation)
+            Repeater {
+                model: 24
+                Bubble {
+                    rising: bubbles.rising
+                    verticalRise: ScreenOrientation.parallel(main.activeOrientation, runtime.orientation)
+                    xAttractor: parent.gravityPoint.x
+                    yAttractor: parent.gravityPoint.y
+                }
+            }
+            Component.onCompleted: bubbles.rising = true;
+        }
+
+        Column {
+            width: centeredText.width
+            anchors.verticalCenter: parent.verticalCenter
+            anchors.horizontalCenter: parent.horizontalCenter
+            anchors.verticalCenterOffset: 30
+            Text {
+                text: "Orientation"
+                color: "white"
+                font.pixelSize: 22
+                anchors.horizontalCenter: parent.horizontalCenter
+            }
+            Text {
+                id: centeredText
+                text: ScreenOrientation.printOrientation(main.activeOrientation)
+                color: "white"
+                font.pixelSize: 40
+                anchors.horizontalCenter: parent.horizontalCenter
+            }
+            Text {
+                text: "sensor: " + ScreenOrientation.printOrientation(runtime.orientation)
+                color: "white"
+                font.pixelSize: 14
+                anchors.horizontalCenter: parent.horizontalCenter
+            }
+        }
+        Flow {
+            anchors.top: parent.top
+            anchors.left: parent.left
+            anchors.right: parent.right
+            anchors.margins: 10
+            spacing: 4
+            Button {
+                width: main.inPortrait ? (parent.width-4)/2 : (parent.width-8)/3
+                text: "Portrait"
+                onClicked: main.selectedOrientation = Orientation.Portrait
+                toggled: main.selectedOrientation == Orientation.Portrait
+            }
+            Button {
+                width: main.inPortrait ? (parent.width-4)/2 : (parent.width-8)/3
+                text: "Portrait inverted"
+                onClicked: main.selectedOrientation = Orientation.PortraitInverted
+                toggled: main.selectedOrientation == Orientation.PortraitInverted
+            }
+            Button {
+                width: main.inPortrait ? (parent.width-4)/2 : (parent.width-8)/3
+                text: "Landscape"
+                onClicked: main.selectedOrientation = Orientation.Landscape
+                toggled: main.selectedOrientation == Orientation.Landscape
+            }
+            Button {
+                width: main.inPortrait ? (parent.width-4)/2 : (parent.width-8)/3
+                text: "Landscape inverted"
+                onClicked: main.selectedOrientation = Orientation.LandscapeInverted
+                toggled: main.selectedOrientation == Orientation.LandscapeInverted
+            }
+            Button {
+                width: main.inPortrait ? parent.width : 2*(parent.width-2)/3
+                text: "From runtime.orientation"
+                onClicked: main.selectedOrientation = Orientation.UnknownOrientation
+                toggled: main.selectedOrientation == Orientation.UnknownOrientation
+            }
+        }
+        states: [
+            State {
+                name: "orientation " + Orientation.Landscape
+                PropertyChanges {
+                    target: main
+                    rotation: ScreenOrientation.getAngle(Orientation.Landscape)+rotationDelta
+                    width: baseHeight
+                    height: baseWidth
+                }
+            },
+            State {
+                name: "orientation " + Orientation.PortraitInverted
+                PropertyChanges {
+                    target: main
+                    rotation: ScreenOrientation.getAngle(Orientation.PortraitInverted)+rotationDelta
+                    width: baseWidth
+                    height: baseHeight
+                }
+            },
+            State {
+                name: "orientation " + Orientation.LandscapeInverted
+                PropertyChanges {
+                    target: main
+                    rotation: ScreenOrientation.getAngle(Orientation.LandscapeInverted)+rotationDelta
+                    width: baseHeight
+                    height: baseWidth
+                }
+            }
+        ]
+        transitions: Transition {
+            ParallelAnimation {
+                RotationAnimation {
+                    direction: RotationAnimation.Shortest
+                    duration: 300
+                    easing.type: Easing.InOutQuint
+                }
+                NumberAnimation {
+                    properties: "x,y,width,height"
+                    duration: 300
+                    easing.type: Easing.InOutQuint
+                }
+            }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/screenorientation/screenorientation.qmlproject b/examples/declarative/qtquick1/screenorientation/screenorientation.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/sqllocalstorage/hello.qml b/examples/declarative/qtquick1/sqllocalstorage/hello.qml
new file mode 100644 (file)
index 0000000..55a04c3
--- /dev/null
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import QtQuick 1.0
+
+Rectangle {
+    color: "white"
+    width: 200
+    height: 100
+
+    Text {
+        text: "?"
+        anchors.horizontalCenter: parent.horizontalCenter
+        function findGreetings() {
+            var db = openDatabaseSync("QDeclarativeExampleDB", "1.0", "The Example QML SQL!", 1000000);
+
+            db.transaction(
+                function(tx) {
+                    // Create the database if it doesn't already exist
+                    tx.executeSql('CREATE TABLE IF NOT EXISTS Greeting(salutation TEXT, salutee TEXT)');
+
+                    // Add (another) greeting row
+                    tx.executeSql('INSERT INTO Greeting VALUES(?, ?)', [ 'hello', 'world' ]);
+
+                    // Show all added greetings
+                    var rs = tx.executeSql('SELECT * FROM Greeting');
+
+                    var r = ""
+                    for (var i = 0; i < rs.rows.length; i++) {
+                        r += rs.rows.item(i).salutation + ", " + rs.rows.item(i).salutee + "\n"
+                    }
+                    text = r
+                }
+            )
+        }
+
+        Component.onCompleted: findGreetings()
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/sqllocalstorage/sqllocalstorage.qmlproject b/examples/declarative/qtquick1/sqllocalstorage/sqllocalstorage.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/text/fonts/availableFonts.qml b/examples/declarative/qtquick1/text/fonts/availableFonts.qml
new file mode 100644 (file)
index 0000000..58073ac
--- /dev/null
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    width: 480; height: 640; color: "steelblue"
+
+    ListView {
+        anchors.fill: parent; model: Qt.fontFamilies()
+
+        delegate: Item {
+            height: 40; width: ListView.view.width
+            Text {
+                anchors.centerIn: parent
+                text: modelData; font.family: modelData; font.pixelSize: 24; color: "white"
+            }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/text/fonts/banner.qml b/examples/declarative/qtquick1/text/fonts/banner.qml
new file mode 100644 (file)
index 0000000..7d5ce2e
--- /dev/null
@@ -0,0 +1,61 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: screen
+
+    property int pixelSize: screen.height * 1.25
+    property color textColor: "lightsteelblue"
+    property string text: "Hello world! "
+
+    width: 640; height: 320
+    color: "steelblue"
+
+    Row {
+        y: -screen.height / 4.5
+
+        NumberAnimation on x { from: 0; to: -text.width; duration: 6000; loops: Animation.Infinite }
+        Text { id: text; font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text }
+        Text { font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text }
+        Text { font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text }
+    }
+}
diff --git a/examples/declarative/qtquick1/text/fonts/fonts.qml b/examples/declarative/qtquick1/text/fonts/fonts.qml
new file mode 100644 (file)
index 0000000..8dd6b19
--- /dev/null
@@ -0,0 +1,104 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    property string myText: "The quick brown fox jumps over the lazy dog."
+
+    width: 800; height: 480
+    color: "steelblue"
+
+    FontLoader { id: fixedFont; name: "Courier" }
+    FontLoader { id: localFont; source: "fonts/tarzeau_ocr_a.ttf" }
+    FontLoader { id: webFont; source: "http://www.princexml.com/fonts/steffmann/Starburst.ttf" }
+
+    Column {
+        anchors { fill: parent; leftMargin: 10; rightMargin: 10 }
+        spacing: 15
+
+        Text {
+            text: myText
+            color: "lightsteelblue"
+            width: parent.width
+            elide: Text.ElideRight
+            font.family: "Times"; font.pointSize: 42
+        }
+        Text {
+            text: myText
+            color: "lightsteelblue"
+            width: parent.width
+            elide: Text.ElideLeft
+            font { family: "Times"; pointSize: 42; capitalization: Font.AllUppercase }
+        }
+        Text {
+            text: myText
+            color: "lightsteelblue"
+            width: parent.width
+            elide: Text.ElideMiddle
+            font { family: fixedFont.name; pointSize: 42; weight: Font.Bold; capitalization: Font.AllLowercase }
+        }
+        Text {
+            text: myText
+            color: "lightsteelblue"
+            width: parent.width
+            elide: Text.ElideRight
+            font { family: fixedFont.name; pointSize: 42; italic: true; capitalization: Font.SmallCaps }
+        }
+        Text {
+            text: myText
+            color: "lightsteelblue"
+            width: parent.width
+            elide: Text.ElideLeft
+            font { family: localFont.name; pointSize: 42; capitalization: Font.Capitalize }
+        }
+        Text {
+            text: {
+                if (webFont.status == FontLoader.Ready) myText
+                else if (webFont.status == FontLoader.Loading) "Loading..."
+                else if (webFont.status == FontLoader.Error) "Error loading font"
+            }
+            color: "lightsteelblue"
+            width: parent.width
+            elide: Text.ElideMiddle
+            font.family: webFont.name; font.pointSize: 42
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/text/fonts/fonts.qmlproject b/examples/declarative/qtquick1/text/fonts/fonts.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/text/fonts/fonts/tarzeau_ocr_a.ttf b/examples/declarative/qtquick1/text/fonts/fonts/tarzeau_ocr_a.ttf
new file mode 100644 (file)
index 0000000..cf93f96
Binary files /dev/null and b/examples/declarative/qtquick1/text/fonts/fonts/tarzeau_ocr_a.ttf differ
diff --git a/examples/declarative/qtquick1/text/fonts/hello.qml b/examples/declarative/qtquick1/text/fonts/hello.qml
new file mode 100644 (file)
index 0000000..ad8e6f2
--- /dev/null
@@ -0,0 +1,79 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: screen
+
+    width: 800; height: 480
+    color: "black"
+
+    Item {
+        id: container
+        x: screen.width / 2; y: screen.height / 2
+
+        Text {
+            id: text
+            anchors.centerIn: parent
+            color: "white"
+            text: "Hello world!"
+            font.pixelSize: 60
+            smooth: true
+
+            SequentialAnimation on font.letterSpacing {
+                loops: Animation.Infinite;
+                NumberAnimation { from: 0; to: 150; easing.type: Easing.InQuad; duration: 3000 }
+                ScriptAction {
+                    script: {
+                        container.y = (screen.height / 4) + (Math.random() * screen.height / 2)
+                        container.x = (screen.width / 4) + (Math.random() * screen.width / 2)
+                    }
+                }
+            }
+
+            SequentialAnimation on opacity {
+                loops: Animation.Infinite;
+                NumberAnimation { from: 1; to: 0; duration: 2600 }
+                PauseAnimation { duration: 400 }
+            }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/text/text.qmlproject b/examples/declarative/qtquick1/text/text.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/text/textselection/pics/endHandle.png b/examples/declarative/qtquick1/text/textselection/pics/endHandle.png
new file mode 100644 (file)
index 0000000..1a4bc5d
Binary files /dev/null and b/examples/declarative/qtquick1/text/textselection/pics/endHandle.png differ
diff --git a/examples/declarative/qtquick1/text/textselection/pics/endHandle.sci b/examples/declarative/qtquick1/text/textselection/pics/endHandle.sci
new file mode 100644 (file)
index 0000000..4f51f24
--- /dev/null
@@ -0,0 +1,5 @@
+border.left: 0
+border.top: 6
+border.bottom: 6
+border.right: 6
+source: endHandle.png
diff --git a/examples/declarative/qtquick1/text/textselection/pics/startHandle.png b/examples/declarative/qtquick1/text/textselection/pics/startHandle.png
new file mode 100644 (file)
index 0000000..deedcd5
Binary files /dev/null and b/examples/declarative/qtquick1/text/textselection/pics/startHandle.png differ
diff --git a/examples/declarative/qtquick1/text/textselection/pics/startHandle.sci b/examples/declarative/qtquick1/text/textselection/pics/startHandle.sci
new file mode 100644 (file)
index 0000000..f9eae20
--- /dev/null
@@ -0,0 +1,5 @@
+border.left: 6
+border.top: 6
+border.bottom: 6
+border.right: 0
+source: startHandle.png
diff --git a/examples/declarative/qtquick1/text/textselection/textselection.qml b/examples/declarative/qtquick1/text/textselection/textselection.qml
new file mode 100644 (file)
index 0000000..26073f4
--- /dev/null
@@ -0,0 +1,289 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import QtQuick 1.0
+
+Rectangle {
+    id: editor
+    color: "lightGrey"
+    width: 640; height: 480
+
+    Rectangle {
+        color: "white"
+        anchors.fill: parent
+        anchors.margins: 20
+
+        BorderImage {
+            id: startHandle
+            source: "pics/startHandle.sci"
+            opacity: 0.0
+            width: 10
+            x: edit.positionToRectangle(edit.selectionStart).x - flick.contentX-width
+            y: edit.positionToRectangle(edit.selectionStart).y - flick.contentY
+            height: edit.positionToRectangle(edit.selectionStart).height
+        }
+
+        BorderImage {
+            id: endHandle
+            source: "pics/endHandle.sci"
+            opacity: 0.0
+            width: 10
+            x: edit.positionToRectangle(edit.selectionEnd).x - flick.contentX
+            y: edit.positionToRectangle(edit.selectionEnd).y - flick.contentY
+            height: edit.positionToRectangle(edit.selectionEnd).height
+        }
+
+        Flickable {
+            id: flick
+
+            anchors.fill: parent
+            contentWidth: edit.paintedWidth
+            contentHeight: edit.paintedHeight
+            interactive: true
+            clip: true
+
+            function ensureVisible(r) {
+                if (contentX >= r.x)
+                    contentX = r.x;
+                else if (contentX+width <= r.x+r.width)
+                    contentX = r.x+r.width-width;
+                if (contentY >= r.y)
+                    contentY = r.y;
+                else if (contentY+height <= r.y+r.height)
+                    contentY = r.y+r.height-height;
+            }
+
+            TextEdit {
+                id: edit
+                width: flick.width
+                height: flick.height
+                focus: true
+                wrapMode: TextEdit.Wrap
+
+                onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
+
+                text: "<h1>Text Selection</h1>"
+                    +"<p>This example is a whacky text selection mechanisms, showing how these can be implemented in the TextEdit element, to cater for whatever style is appropriate for the target platform."
+                    +"<p><b>Press-and-hold</b> to select a word, then drag the selection handles."
+                    +"<p><b>Drag outside the selection</b> to scroll the text."
+                    +"<p><b>Click inside the selection</b> to cut/copy/paste/cancel selection."
+                    +"<p>It's too whacky to let you paste if there is no current selection."
+
+                MouseArea {
+                    property string drag: ""
+                    property int pressPos
+
+                    x: -startHandle.width
+                    y: 0
+                    width: parent.width+startHandle.width+endHandle.width
+                    height: parent.height
+
+                    onPressAndHold: {
+                        if (editor.state == "") {
+                            edit.cursorPosition = edit.positionAt(mouse.x+x,mouse.y+y);
+                            edit.selectWord();
+                            editor.state = "selection"
+                        }
+                    }
+
+                    onClicked: {
+                        if (editor.state == "") {
+                            edit.cursorPosition = edit.positionAt(mouse.x+x,mouse.y+y);
+                            if (!edit.focus)
+                                edit.focus = true;
+                            edit.openSoftwareInputPanel();
+                        }
+                    }
+
+                    function hitHandle(h,x,y) {
+                        return x>=h.x+flick.contentX && x<h.x+flick.contentX+h.width && y>=h.y+flick.contentY && y<h.y+flick.contentY+h.height
+                    }
+
+                    onPressed: {
+                        if (editor.state == "selection") {
+                            if (hitHandle(startHandle,mouse.x+x,mouse.y+y)) {
+                                drag = "start"
+                                flick.interactive = false
+                            } else if (hitHandle(endHandle,mouse.x+x,mouse.y+y)) {
+                                drag = "end"
+                                flick.interactive = false
+                            } else {
+                                var pos = edit.positionAt(mouse.x+x,mouse.y+y);
+                                if (pos >= edit.selectionStart && pos <= edit.selectionEnd) {
+                                    drag = "selection"
+                                    flick.interactive = false
+                                } else {
+                                    drag = ""
+                                    flick.interactive = true
+                                }
+                            }
+                        }
+                    }
+
+                    onReleased: {
+                        if (editor.state == "selection") {
+                            if (drag == "selection") {
+                                editor.state = "menu"
+                            }
+                            drag = ""
+                        }
+                        flick.interactive = true
+                    }
+
+                    onPositionChanged: {
+                        if (editor.state == "selection" && drag != "") {
+                            if (drag == "start") {
+                                var pos = edit.positionAt(mouse.x+x+startHandle.width/2,mouse.y+y);
+                                var e = edit.selectionEnd;
+                                if (e < pos)
+                                    e = pos;
+                                edit.select(pos,e);
+                            } else if (drag == "end") {
+                                var pos = edit.positionAt(mouse.x+x-endHandle.width/2,mouse.y+y);
+                                var s = edit.selectionStart;
+                                if (s > pos)
+                                    s = pos;
+                                edit.select(s,pos);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        Item {
+            id: menu
+            opacity: 0.0
+            width: 100
+            height: 120
+            anchors.centerIn: parent
+
+            Rectangle {
+                border.width: 1
+                border.color: "darkBlue"
+                radius: 15
+                color: "#806080FF"
+                anchors.fill: parent
+            }
+
+            Column {
+                anchors.centerIn: parent
+                spacing: 8
+
+                Rectangle {
+                    border.width: 1
+                    border.color: "darkBlue"
+                    color: "#ff7090FF"
+                    width: 60
+                    height: 16
+
+                    Text { anchors.centerIn: parent; text: "Cut" }
+
+                    MouseArea {
+                        anchors.fill: parent
+                        onClicked: { edit.cut(); editor.state = "" }
+                    }
+                }
+
+                Rectangle {
+                    border.width: 1
+                    border.color: "darkBlue"
+                    color: "#ff7090FF"
+                    width: 60
+                    height: 16
+
+                    Text { anchors.centerIn: parent; text: "Copy" }
+
+                    MouseArea {
+                        anchors.fill: parent
+                        onClicked: { edit.copy(); editor.state = "selection" }
+                    }
+                }
+
+                Rectangle {
+                    border.width: 1
+                    border.color: "darkBlue"
+                    color: "#ff7090FF"
+                    width: 60
+                    height: 16
+
+                    Text { anchors.centerIn: parent; text: "Paste" }
+
+                    MouseArea {
+                        anchors.fill: parent
+                        onClicked: { edit.paste(); edit.cursorPosition = edit.selectionEnd; editor.state = "" }
+                    }
+                }
+
+                Rectangle {
+                    border.width: 1
+                    border.color: "darkBlue"
+                    color: "#ff7090FF"
+                    width: 60
+                    height: 16
+
+                    Text { anchors.centerIn: parent; text: "Deselect" }
+
+                    MouseArea {
+                        anchors.fill: parent
+                        onClicked: {
+                            edit.cursorPosition = edit.selectionEnd;
+                            edit.deselect();
+                            editor.state = ""
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    states: [
+        State {
+            name: "selection"
+            PropertyChanges { target: startHandle; opacity: 1.0 }
+            PropertyChanges { target: endHandle; opacity: 1.0 }
+        },
+        State {
+            name: "menu"
+            PropertyChanges { target: startHandle; opacity: 0.5 }
+            PropertyChanges { target: endHandle; opacity: 0.5 }
+            PropertyChanges { target: menu; opacity: 1.0 }
+        }
+    ]
+}
diff --git a/examples/declarative/qtquick1/text/textselection/textselection.qmlproject b/examples/declarative/qtquick1/text/textselection/textselection.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/threading/threadedlistmodel/dataloader.js b/examples/declarative/qtquick1/threading/threadedlistmodel/dataloader.js
new file mode 100644 (file)
index 0000000..dffcd56
--- /dev/null
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// ![0]
+WorkerScript.onMessage = function(msg) {
+    if (msg.action == 'appendCurrentTime') {
+        var data = {'time': new Date().toTimeString()};
+        msg.model.append(data);
+        msg.model.sync();   // updates the changes to the list
+    }
+}
+// ![0]
diff --git a/examples/declarative/qtquick1/threading/threadedlistmodel/threadedlistmodel.qmlproject b/examples/declarative/qtquick1/threading/threadedlistmodel/threadedlistmodel.qmlproject
new file mode 100644 (file)
index 0000000..fe2dc29
--- /dev/null
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/threading/threadedlistmodel/timedisplay.qml b/examples/declarative/qtquick1/threading/threadedlistmodel/timedisplay.qml
new file mode 100644 (file)
index 0000000..42d1345
--- /dev/null
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// ![0]
+import QtQuick 1.0
+
+Rectangle {
+    color: "white"
+    width: 200
+    height: 300
+
+    ListView {
+        anchors.fill: parent
+        model: listModel
+        delegate: Component {
+            Text { text: time }
+        }
+
+        ListModel { id: listModel }
+
+        WorkerScript {
+            id: worker
+            source: "dataloader.js"
+        }
+
+        Timer {
+            id: timer
+            interval: 2000; repeat: true
+            running: true
+            triggeredOnStart: true
+
+            onTriggered: {
+                var msg = {'action': 'appendCurrentTime', 'model': listModel};
+                worker.sendMessage(msg);
+            }
+        }
+    }
+}
+// ![0]
diff --git a/examples/declarative/qtquick1/threading/threading.qmlproject b/examples/declarative/qtquick1/threading/threading.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/threading/workerscript/workerscript.js b/examples/declarative/qtquick1/threading/workerscript/workerscript.js
new file mode 100644 (file)
index 0000000..f76471f
--- /dev/null
@@ -0,0 +1,15 @@
+var lastx = 0;
+var lasty = 0;
+
+WorkerScript.onMessage = function(message) {
+    var ydiff = message.y - lasty;
+    var xdiff = message.x - lastx;
+
+    var total = Math.sqrt(ydiff * ydiff + xdiff * xdiff);
+
+    lastx = message.x;
+    lasty = message.y;
+
+    WorkerScript.sendMessage( {xmove: xdiff, ymove: ydiff, move: total} );
+}
+
diff --git a/examples/declarative/qtquick1/threading/workerscript/workerscript.qml b/examples/declarative/qtquick1/threading/workerscript/workerscript.qml
new file mode 100644 (file)
index 0000000..9581123
--- /dev/null
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    width: 480; height: 320
+
+    WorkerScript {
+        id: myWorker
+        source: "workerscript.js"
+
+        onMessage: {
+            console.log("Moved " + messageObject.xmove + " along the X axis.");
+            console.log("Moved " + messageObject.ymove + " along the Y axis.");
+            console.log("Moved " + messageObject.move + " pixels.");
+        }
+    }
+
+    Rectangle {
+        width: 200; height: 200
+        anchors.left: parent.left; anchors.leftMargin: 20
+        color: "red"
+
+        MouseArea {
+            anchors.fill: parent
+            onClicked: myWorker.sendMessage( { rectangle: "red", x: mouse.x, y: mouse.y } );
+        }
+    }
+
+    Rectangle {
+        width: 200; height: 200
+        anchors.right: parent.right; anchors.rightMargin: 20
+        color: "blue"
+
+        MouseArea {
+            anchors.fill: parent
+            onClicked: myWorker.sendMessage( { rectangle: "blue", x: mouse.x, y: mouse.y } );
+        }
+    }
+
+    Text {
+        text: "Click a Rectangle!"
+        anchors { horizontalCenter: parent.horizontalCenter; bottom: parent.bottom; bottomMargin: 50 }
+    }
+}
diff --git a/examples/declarative/qtquick1/threading/workerscript/workerscript.qmlproject b/examples/declarative/qtquick1/threading/workerscript/workerscript.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/touchinteraction/gestures/experimental-gestures.qml b/examples/declarative/qtquick1/touchinteraction/gestures/experimental-gestures.qml
new file mode 100644 (file)
index 0000000..c607194
--- /dev/null
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import Qt.labs.gestures 1.0
+
+// Only works on platforms with Touch support.
+
+Rectangle {
+    id: rect
+    width: 320
+    height: 180
+
+    Text {
+        anchors.centerIn: parent
+        text: "Tap / TapAndHold / Pan / Pinch / Swipe\nOnly works on platforms with Touch support."
+        horizontalAlignment: Text.Center
+    }
+
+    GestureArea {
+        anchors.fill: parent
+        focus: true
+
+        // Only some of the many gesture properties are shown. See Gesture documentation.
+
+        onTap:
+            console.log("tap pos = (",gesture.position.x,",",gesture.position.y,")")
+        onTapAndHold:
+            console.log("tap and hold pos = (",gesture.position.x,",",gesture.position.y,")")
+        onPan:
+            console.log("pan delta = (",gesture.delta.x,",",gesture.delta.y,") acceleration = ",gesture.acceleration)
+        onPinch:
+            console.log("pinch center = (",gesture.centerPoint.x,",",gesture.centerPoint.y,") rotation =",gesture.rotationAngle," scale =",gesture.scaleFactor)
+        onSwipe:
+            console.log("swipe angle=",gesture.swipeAngle)
+        onGesture:
+            console.log("gesture hot spot = (",gesture.hotSpot.x,",",gesture.hotSpot.y,")")
+    }
+}
diff --git a/examples/declarative/qtquick1/touchinteraction/gestures/gestures.qmlproject b/examples/declarative/qtquick1/touchinteraction/gestures/gestures.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/touchinteraction/mousearea/mousearea-example.qml b/examples/declarative/qtquick1/touchinteraction/mousearea/mousearea-example.qml
new file mode 100644 (file)
index 0000000..9bca78f
--- /dev/null
@@ -0,0 +1,112 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: box
+    width: 350; height: 250
+
+    Rectangle {
+        id: redSquare
+        width: 80; height: 80
+        anchors.top: parent.top; anchors.left: parent.left; anchors.margins: 10
+        color: "red"
+
+        Text { text: "Click"; font.pixelSize: 16; anchors.centerIn: parent }
+
+        MouseArea {
+            anchors.fill: parent
+            hoverEnabled: true
+            acceptedButtons: Qt.LeftButton | Qt.RightButton
+
+            onEntered: info.text = 'Entered'
+            onExited: info.text = 'Exited (pressed=' + pressed + ')'
+
+            onPressed: {
+                info.text = 'Pressed (button=' + (mouse.button == Qt.RightButton ? 'right' : 'left')
+                    + ' shift=' + (mouse.modifiers & Qt.ShiftModifier ? 'true' : 'false') + ')'
+                var posInBox = redSquare.mapToItem(box, mouse.x, mouse.y)
+                posInfo.text = + mouse.x + ',' + mouse.y + ' in square'
+                        + ' (' + posInBox.x + ',' + posInBox.y + ' in window)'
+            }
+
+            onReleased: {
+                info.text = 'Released (isClick=' + mouse.isClick + ' wasHeld=' + mouse.wasHeld + ')'
+                posInfo.text = ''
+            }
+
+            onPressAndHold: info.text = 'Press and hold'
+            onClicked: info.text = 'Clicked (wasHeld=' + mouse.wasHeld + ')'
+            onDoubleClicked: info.text = 'Double clicked'
+        }
+    }
+
+    Rectangle {
+        id: blueSquare
+        width: 80; height: 80
+        x: box.width - width - 10; y: 10    // making this item draggable, so don't use anchors
+        color: "blue"
+
+        Text { text: "Drag"; font.pixelSize: 16; color: "white"; anchors.centerIn: parent }
+
+        MouseArea {
+            anchors.fill: parent
+            drag.target: blueSquare
+            drag.axis: Drag.XandYAxis
+            drag.minimumX: 0
+            drag.maximumX: box.width - parent.width
+            drag.minimumY: 0
+            drag.maximumY: box.height - parent.width
+        }
+    }
+
+    Text {
+        id: info
+        anchors.bottom: posInfo.top; anchors.horizontalCenter: parent.horizontalCenter; anchors.margins: 30
+
+        onTextChanged: console.log(text)
+    }
+
+    Text {
+        id: posInfo
+        anchors.bottom: parent.bottom; anchors.horizontalCenter: parent.horizontalCenter; anchors.margins: 30
+    }
+}
diff --git a/examples/declarative/qtquick1/touchinteraction/mousearea/mousearea.qmlproject b/examples/declarative/qtquick1/touchinteraction/mousearea/mousearea.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/touchinteraction/pincharea/flickresize.qml b/examples/declarative/qtquick1/touchinteraction/pincharea/flickresize.qml
new file mode 100644 (file)
index 0000000..9439ace
--- /dev/null
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.1
+
+Rectangle {
+    width: 640
+    height: 360
+    color: "gray"
+
+    Flickable {
+        id: flick
+        anchors.fill: parent
+        contentWidth: 500
+        contentHeight: 500
+
+        PinchArea {
+            width: Math.max(flick.contentWidth, flick.width)
+            height: Math.max(flick.contentHeight, flick.height)
+
+            property real initialWidth
+            property real initialHeight
+            onPinchStarted: {
+                initialWidth = flick.contentWidth
+                initialHeight = flick.contentHeight
+            }
+
+            onPinchUpdated: {
+                // adjust content pos due to drag
+                flick.contentX += pinch.previousCenter.x - pinch.center.x
+                flick.contentY += pinch.previousCenter.y - pinch.center.y
+
+                // resize content
+                flick.resizeContent(initialWidth * pinch.scale, initialHeight * pinch.scale, pinch.center)
+            }
+
+            onPinchFinished: {
+                // Move its content within bounds.
+                flick.returnToBounds()
+            }
+
+            Rectangle {
+                width: flick.contentWidth
+                height: flick.contentHeight
+                color: "white"
+                Image {
+                    anchors.fill: parent
+                    source: "qt-logo.jpg"
+                    MouseArea {
+                        anchors.fill: parent
+                        onDoubleClicked: {
+                            flick.contentWidth = 500
+                            flick.contentHeight = 500
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/touchinteraction/pincharea/pincharea.qmlproject b/examples/declarative/qtquick1/touchinteraction/pincharea/pincharea.qmlproject
new file mode 100644 (file)
index 0000000..e526217
--- /dev/null
@@ -0,0 +1,18 @@
+/* File generated by QtCreator */
+
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/touchinteraction/pincharea/qt-logo.jpg b/examples/declarative/qtquick1/touchinteraction/pincharea/qt-logo.jpg
new file mode 100644 (file)
index 0000000..4014b46
Binary files /dev/null and b/examples/declarative/qtquick1/touchinteraction/pincharea/qt-logo.jpg differ
diff --git a/examples/declarative/qtquick1/touchinteraction/touchinteraction.qmlproject b/examples/declarative/qtquick1/touchinteraction/touchinteraction.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/toys/README b/examples/declarative/qtquick1/toys/README
new file mode 100644 (file)
index 0000000..ff4d024
--- /dev/null
@@ -0,0 +1,37 @@
+These pure QML examples demonstrate
+some of what can be easily done using just a few QML files.
+
+The example launcher provided with Qt can be used to explore each of the
+examples in this directory. They can also be viewed directly with the
+QML viewer utility, without requiring compilation.
+
+Documentation for these examples can be found via the Tutorial and Examples
+link in the main Qt documentation.
+
+
+Finding the Qt Examples and Demos launcher
+==========================================
+
+On Windows:
+
+The launcher can be accessed via the Windows Start menu. Select the menu
+entry entitled "Qt Examples and Demos" entry in the submenu containing
+the Qt tools.
+
+On Mac OS X:
+
+For the binary distribution, the qtdemo executable is installed in the
+/Developer/Applications/Qt directory. For the source distribution, it is
+installed alongside the other Qt tools on the path specified when Qt is
+configured.
+
+On Unix/Linux:
+
+The qtdemo executable is installed alongside the other Qt tools on the path
+specified when Qt is configured.
+
+On all platforms:
+
+The source code for the launcher can be found in the demos/qtdemo directory
+in the Qt package. This example is built at the same time as the Qt libraries,
+tools, examples, and demonstrations.
diff --git a/examples/declarative/qtquick1/toys/clocks/clocks.qml b/examples/declarative/qtquick1/toys/clocks/clocks.qml
new file mode 100644 (file)
index 0000000..85723c0
--- /dev/null
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import "content"
+
+Rectangle {
+    width: 640; height: 240
+    color: "#646464"
+
+    Row {
+        anchors.centerIn: parent
+        Clock { city: "New York"; shift: -4 }
+        Clock { city: "Mumbai"; shift: 5.5 }
+        Clock { city: "Tokyo"; shift: 9 }
+    }
+    QuitButton {
+        anchors.right: parent.right
+        anchors.top: parent.top
+        anchors.margins: 10
+    }
+}
diff --git a/examples/declarative/qtquick1/toys/clocks/clocks.qmlproject b/examples/declarative/qtquick1/toys/clocks/clocks.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/toys/clocks/content/Clock.qml b/examples/declarative/qtquick1/toys/clocks/content/Clock.qml
new file mode 100644 (file)
index 0000000..17ca2e0
--- /dev/null
@@ -0,0 +1,124 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Item {
+    id: clock
+    width: 200; height: 230
+
+    property alias city: cityLabel.text
+    property int hours
+    property int minutes
+    property int seconds
+    property real shift
+    property bool night: false
+
+    function timeChanged() {
+        var date = new Date;
+        hours = shift ? date.getUTCHours() + Math.floor(clock.shift) : date.getHours()
+        night = ( hours < 7 || hours > 19 )
+        minutes = shift ? date.getUTCMinutes() + ((clock.shift % 1) * 60) : date.getMinutes()
+        seconds = date.getUTCSeconds();
+    }
+
+    Timer {
+        interval: 100; running: true; repeat: true;
+        onTriggered: clock.timeChanged()
+    }
+
+    Image { id: background; source: "clock.png"; visible: clock.night == false }
+    Image { source: "clock-night.png"; visible: clock.night == true }
+
+
+    Image {
+        x: 92.5; y: 27
+        source: "hour.png"
+        smooth: true
+        transform: Rotation {
+            id: hourRotation
+            origin.x: 7.5; origin.y: 73;
+            angle: (clock.hours * 30) + (clock.minutes * 0.5)
+            Behavior on angle {
+                SpringAnimation { spring: 2; damping: 0.2; modulus: 360 }
+            }
+        }
+    }
+
+    Image {
+        x: 93.5; y: 17
+        source: "minute.png"
+        smooth: true
+        transform: Rotation {
+            id: minuteRotation
+            origin.x: 6.5; origin.y: 83;
+            angle: clock.minutes * 6
+            Behavior on angle {
+                SpringAnimation { spring: 2; damping: 0.2; modulus: 360 }
+            }
+        }
+    }
+
+    Image {
+        x: 97.5; y: 20
+        source: "second.png"
+        smooth: true
+        transform: Rotation {
+            id: secondRotation
+            origin.x: 2.5; origin.y: 80;
+            angle: clock.seconds * 6
+            Behavior on angle {
+                SpringAnimation { spring: 2; damping: 0.2; modulus: 360 }
+            }
+        }
+    }
+
+    Image {
+        anchors.centerIn: background; source: "center.png"
+    }
+
+    Text {
+        id: cityLabel
+        y: 200; anchors.horizontalCenter: parent.horizontalCenter
+        color: "white"
+        font.bold: true; font.pixelSize: 14
+        style: Text.Raised; styleColor: "black"
+    }
+}
diff --git a/examples/declarative/qtquick1/toys/clocks/content/QuitButton.qml b/examples/declarative/qtquick1/toys/clocks/content/QuitButton.qml
new file mode 100644 (file)
index 0000000..39f8f77
--- /dev/null
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+Image {
+    source: "quit.png"
+    scale: quitMouse.pressed ? 0.8 : 1.0
+    smooth: quitMouse.pressed
+    MouseArea {
+        id: quitMouse
+        anchors.fill: parent
+        anchors.margins: -10
+        onClicked: Qt.quit()
+    }
+}
diff --git a/examples/declarative/qtquick1/toys/clocks/content/background.png b/examples/declarative/qtquick1/toys/clocks/content/background.png
new file mode 100644 (file)
index 0000000..a885950
Binary files /dev/null and b/examples/declarative/qtquick1/toys/clocks/content/background.png differ
diff --git a/examples/declarative/qtquick1/toys/clocks/content/center.png b/examples/declarative/qtquick1/toys/clocks/content/center.png
new file mode 100644 (file)
index 0000000..7fbd802
Binary files /dev/null and b/examples/declarative/qtquick1/toys/clocks/content/center.png differ
diff --git a/examples/declarative/qtquick1/toys/clocks/content/clock-night.png b/examples/declarative/qtquick1/toys/clocks/content/clock-night.png
new file mode 100644 (file)
index 0000000..cc7151a
Binary files /dev/null and b/examples/declarative/qtquick1/toys/clocks/content/clock-night.png differ
diff --git a/examples/declarative/qtquick1/toys/clocks/content/clock.png b/examples/declarative/qtquick1/toys/clocks/content/clock.png
new file mode 100644 (file)
index 0000000..462edac
Binary files /dev/null and b/examples/declarative/qtquick1/toys/clocks/content/clock.png differ
diff --git a/examples/declarative/qtquick1/toys/clocks/content/hour.png b/examples/declarative/qtquick1/toys/clocks/content/hour.png
new file mode 100644 (file)
index 0000000..f8061a1
Binary files /dev/null and b/examples/declarative/qtquick1/toys/clocks/content/hour.png differ
diff --git a/examples/declarative/qtquick1/toys/clocks/content/minute.png b/examples/declarative/qtquick1/toys/clocks/content/minute.png
new file mode 100644 (file)
index 0000000..1297ec7
Binary files /dev/null and b/examples/declarative/qtquick1/toys/clocks/content/minute.png differ
diff --git a/examples/declarative/qtquick1/toys/clocks/content/quit.png b/examples/declarative/qtquick1/toys/clocks/content/quit.png
new file mode 100644 (file)
index 0000000..b822057
Binary files /dev/null and b/examples/declarative/qtquick1/toys/clocks/content/quit.png differ
diff --git a/examples/declarative/qtquick1/toys/clocks/content/second.png b/examples/declarative/qtquick1/toys/clocks/content/second.png
new file mode 100644 (file)
index 0000000..4aa9fb5
Binary files /dev/null and b/examples/declarative/qtquick1/toys/clocks/content/second.png differ
diff --git a/examples/declarative/qtquick1/toys/corkboards/Day.qml b/examples/declarative/qtquick1/toys/corkboards/Day.qml
new file mode 100644 (file)
index 0000000..ca95182
--- /dev/null
@@ -0,0 +1,153 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Component {
+    Item {
+        property variant stickies
+
+        id: page
+        width: ListView.view.width+40; height: ListView.view.height
+
+
+        Image {
+            source: "cork.jpg"
+            width: page.ListView.view.width
+            height: page.ListView.view.height
+            fillMode: Image.PreserveAspectCrop
+            clip: true
+        }
+
+        MouseArea {
+            anchors.fill: parent
+            onClicked: page.focus = false;
+        }
+
+        Text {
+            text: name; x: 15; y: 8; height: 40; width: 370
+            font.pixelSize: 18; font.bold: true; color: "white"
+            style: Text.Outline; styleColor: "black"
+        }
+
+        Repeater {
+            model: notes
+            Item {
+                id: stickyPage
+
+                property int randomX: Math.random() * (page.ListView.view.width-0.5*stickyImage.width) +100
+                property int randomY: Math.random() * (page.ListView.view.height-0.5*stickyImage.height) +50
+
+                x: randomX; y: randomY
+
+                rotation: -flickable.horizontalVelocity / 100;
+                Behavior on rotation {
+                    SpringAnimation { spring: 2.0; damping: 0.15 }
+                }
+
+                Item {
+                    id: sticky
+                    scale: 0.7
+
+                    Image {
+                        id: stickyImage
+                        x: 8 + -width * 0.6 / 2; y: -20
+                        source: "note-yellow.png"
+                        scale: 0.6; transformOrigin: Item.TopLeft
+                        smooth: true
+                    }
+
+                    TextEdit {
+                        id: myText
+                        x: -104; y: 36; width: 215; height: 200
+                        smooth: true
+                        font.pixelSize: 24
+                        readOnly: false
+                        rotation: -8
+                        text: noteText
+                    }
+
+                    Item {
+                        x: stickyImage.x; y: -20
+                        width: stickyImage.width * stickyImage.scale
+                        height: stickyImage.height * stickyImage.scale
+
+                        MouseArea {
+                            id: mouse
+                            anchors.fill: parent
+                            drag.target: stickyPage
+                            drag.axis: Drag.XandYAxis
+                            drag.minimumY: 0
+                            drag.maximumY: page.height - 80
+                            drag.minimumX: 100
+                            drag.maximumX: page.width - 140
+                            onClicked: { myText.focus = true; myText.openSoftwareInputPanel(); }
+                        }
+                    }
+                }
+
+                Image {
+                    x: -width / 2; y: -height * 0.5 / 2
+                    source: "tack.png"
+                    scale: 0.7; transformOrigin: Item.TopLeft
+                }
+
+                states: State {
+                    name: "pressed"
+                    when: mouse.pressed
+                    PropertyChanges { target: sticky; rotation: 8; scale: 1 }
+                    PropertyChanges { target: page; z: 8 }
+                }
+
+                transitions: Transition {
+                    NumberAnimation { properties: "rotation,scale"; duration: 200 }
+                }
+            }
+        }
+    }
+}
+
+
+
+
+
+
+
+
diff --git a/examples/declarative/qtquick1/toys/corkboards/cork.jpg b/examples/declarative/qtquick1/toys/corkboards/cork.jpg
new file mode 100644 (file)
index 0000000..160bc00
Binary files /dev/null and b/examples/declarative/qtquick1/toys/corkboards/cork.jpg differ
diff --git a/examples/declarative/qtquick1/toys/corkboards/corkboards.qml b/examples/declarative/qtquick1/toys/corkboards/corkboards.qml
new file mode 100644 (file)
index 0000000..1fe3523
--- /dev/null
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    width: 800; height: 480
+    color: "#464646"
+
+    ListModel {
+        id: list
+
+        ListElement {
+            name: "Sunday"
+            notes: [
+                ListElement { noteText: "Lunch" },
+                ListElement { noteText: "Birthday Party" }
+            ]
+        }
+
+        ListElement {
+            name: "Monday"
+            notes: [
+                ListElement { noteText: "Pickup kids from\nschool\n4.30pm" },
+                ListElement { noteText: "Checkout Qt" }, ListElement { noteText: "Read email" }
+            ]
+        }
+
+        ListElement {
+            name: "Tuesday"
+            notes: [
+                ListElement { noteText: "Walk dog" },
+                ListElement { noteText: "Buy newspaper" }
+            ]
+        }
+
+        ListElement {
+            name: "Wednesday"
+            notes: [ ListElement { noteText: "Cook dinner" } ]
+        }
+
+        ListElement {
+            name: "Thursday"
+            notes: [
+                ListElement { noteText: "Meeting\n5.30pm" },
+                ListElement { noteText: "Weed garden" }
+            ]
+        }
+
+        ListElement {
+            name: "Friday"
+            notes: [
+                ListElement { noteText: "More work" },
+                ListElement { noteText: "Grocery shopping" }
+            ]
+        }
+
+        ListElement {
+            name: "Saturday"
+            notes: [
+                ListElement { noteText: "Drink" },
+                ListElement { noteText: "Download Qt\nPlay with QML" }
+            ]
+        }
+    }
+
+    ListView {
+        id: flickable
+
+        anchors.fill: parent
+        focus: true
+        highlightRangeMode: ListView.StrictlyEnforceRange
+        orientation: ListView.Horizontal
+        snapMode: ListView.SnapOneItem
+        model: list
+        delegate: Day { }
+    }
+}
diff --git a/examples/declarative/qtquick1/toys/corkboards/corkboards.qmlproject b/examples/declarative/qtquick1/toys/corkboards/corkboards.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/toys/corkboards/note-yellow.png b/examples/declarative/qtquick1/toys/corkboards/note-yellow.png
new file mode 100644 (file)
index 0000000..8ddecc8
Binary files /dev/null and b/examples/declarative/qtquick1/toys/corkboards/note-yellow.png differ
diff --git a/examples/declarative/qtquick1/toys/corkboards/tack.png b/examples/declarative/qtquick1/toys/corkboards/tack.png
new file mode 100644 (file)
index 0000000..cef2d1c
Binary files /dev/null and b/examples/declarative/qtquick1/toys/corkboards/tack.png differ
diff --git a/examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qml b/examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qml
new file mode 100644 (file)
index 0000000..d2be3b6
--- /dev/null
@@ -0,0 +1,224 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import Qt.labs.particles 1.0
+import "qml"
+
+Item {
+    id: window
+
+    property int activeSuns: 0
+
+    //This is a desktop-sized example
+    width: 800; height: 480
+
+
+    MouseArea {
+        anchors.fill: parent
+        onClicked: window.focus = false;
+    }
+
+    //This is the message box that pops up when there's an error
+    Rectangle {
+        id: dialog
+
+        opacity: 0
+        anchors.centerIn: parent
+        width: dialogText.width + 6; height: dialogText.height + 6
+        border.color: 'black'
+        color: 'lightsteelblue'
+        z: 65535 //Arbitrary number chosen to be above all the items, including the scaled perspective ones.
+
+        function show(str){
+            dialogText.text = str;
+            dialogAnim.start();
+        }
+
+        Text {
+            id: dialogText
+            x: 3; y: 3
+            font.pixelSize: 14
+        }
+
+        SequentialAnimation {
+            id: dialogAnim
+            NumberAnimation { target: dialog; property:"opacity"; to: 1; duration: 1000 }
+            PauseAnimation { duration: 5000 }
+            NumberAnimation { target: dialog; property:"opacity"; to: 0; duration: 1000 }
+        }
+    }
+
+    // sky
+    Rectangle {
+        id: sky
+        anchors { left: parent.left; top: parent.top; right: toolbox.right; bottom: parent.verticalCenter }
+        gradient: Gradient {
+            GradientStop { id: gradientStopA; position: 0.0; color: "#0E1533" }
+            GradientStop { id: gradientStopB; position: 1.0; color: "#437284" }
+        }
+    }
+
+    // stars (when there's no sun)
+    Particles {
+        id: stars
+        x: 0; y: 0; width: parent.width; height: parent.height / 2
+        source: "images/star.png"
+        angleDeviation: 360
+        velocity: 0; velocityDeviation: 0
+        count: parent.width / 10
+        fadeInDuration: 2800
+        opacity: 1
+    }
+
+    // ground
+    Rectangle {
+        id: ground
+        z: 2    // just above the sun so that the sun can set behind it
+        anchors { left: parent.left; top: parent.verticalCenter; right: toolbox.left; bottom: parent.bottom }
+        gradient: Gradient {
+            GradientStop { position: 0.0; color: "ForestGreen" }
+            GradientStop { position: 1.0; color: "DarkGreen" }
+        }
+    }
+
+    SystemPalette { id: activePalette }
+
+    // right-hand panel
+    Rectangle {
+        id: toolbox
+
+        width: 380
+        color: activePalette.window
+        anchors { right: parent.right; top: parent.top; bottom: parent.bottom }
+
+        Column {
+            anchors.centerIn: parent
+            spacing: 8
+
+            Text { text: "Drag an item into the scene." }
+
+            Rectangle {
+                width: palette.width + 10; height: palette.height + 10
+                border.color: "black"
+
+                Row {
+                    id: palette
+                    anchors.centerIn: parent
+                    spacing: 8
+
+                    PaletteItem {
+                        anchors.verticalCenter: parent.verticalCenter
+                        componentFile: "Sun.qml"
+                        image: "../images/sun.png"
+                    }
+                    PaletteItem {
+                        anchors.verticalCenter: parent.verticalCenter
+                        componentFile: "GenericSceneItem.qml"
+                        image: "../images/moon.png"
+                    }
+                    PaletteItem {
+                        anchors.verticalCenter: parent.verticalCenter
+                        componentFile: "PerspectiveItem.qml"
+                        image: "../images/tree_s.png"
+                    }
+                    PaletteItem {
+                        anchors.verticalCenter: parent.verticalCenter
+                        componentFile: "PerspectiveItem.qml"
+                        image: "../images/rabbit_brown.png"
+                    }
+                    PaletteItem {
+                        anchors.verticalCenter: parent.verticalCenter
+                        componentFile: "PerspectiveItem.qml"
+                        image: "../images/rabbit_bw.png"
+                    }
+                }
+            }
+
+            Text { text: "Active Suns: " + activeSuns }
+
+            Rectangle { width: parent.width; height: 1; color: "black" }
+
+            Text { text: "Arbitrary QML:" }
+
+            Rectangle {
+                width: 360; height: 240
+
+                TextEdit {
+                    id: qmlText
+                    anchors.fill: parent; anchors.margins: 5
+                    readOnly: false
+                    font.pixelSize: 14
+                    wrapMode: TextEdit.WordWrap
+
+                    text: "import QtQuick 1.0\nImage {\n    id: smile\n    x: 360 * Math.random()\n    y: 180 * Math.random() \n    source: 'images/face-smile.png'\n    NumberAnimation on opacity { \n        to: 0; duration: 1500\n    }\n    Component.onCompleted: smile.destroy(1500);\n}"
+                }
+            }
+
+            Button {
+                text: "Create"
+                onClicked: {
+                    try {
+                        Qt.createQmlObject(qmlText.text, window, 'CustomObject');
+                    } catch(err) {
+                        dialog.show('Error on line ' + err.qmlErrors[0].lineNumber + '\n' + err.qmlErrors[0].message);
+                    }
+                }
+            }
+        }
+    }
+
+    //Day state, for when a sun is added to the scene
+    states: State {
+        name: "Day"
+        when: window.activeSuns > 0
+
+        PropertyChanges { target: gradientStopA; color: "DeepSkyBlue" }
+        PropertyChanges { target: gradientStopB; color: "SkyBlue" }
+        PropertyChanges { target: stars; opacity: 0 }
+    }
+
+    //! [top-level transitions]
+    transitions: Transition {
+        PropertyAnimation { duration: 3000 }
+        ColorAnimation { duration: 3000 }
+    }
+    //! [top-level transitions]
+}
diff --git a/examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qmlproject b/examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/toys/dynamicscene/images/NOTE b/examples/declarative/qtquick1/toys/dynamicscene/images/NOTE
new file mode 100644 (file)
index 0000000..fcd87f9
--- /dev/null
@@ -0,0 +1 @@
+Images (except star.png) are from the KDE project.
diff --git a/examples/declarative/qtquick1/toys/dynamicscene/images/face-smile.png b/examples/declarative/qtquick1/toys/dynamicscene/images/face-smile.png
new file mode 100644 (file)
index 0000000..3d66d72
Binary files /dev/null and b/examples/declarative/qtquick1/toys/dynamicscene/images/face-smile.png differ
diff --git a/examples/declarative/qtquick1/toys/dynamicscene/images/moon.png b/examples/declarative/qtquick1/toys/dynamicscene/images/moon.png
new file mode 100644 (file)
index 0000000..1c0d606
Binary files /dev/null and b/examples/declarative/qtquick1/toys/dynamicscene/images/moon.png differ
diff --git a/examples/declarative/qtquick1/toys/dynamicscene/images/rabbit_brown.png b/examples/declarative/qtquick1/toys/dynamicscene/images/rabbit_brown.png
new file mode 100644 (file)
index 0000000..ebfdeed
Binary files /dev/null and b/examples/declarative/qtquick1/toys/dynamicscene/images/rabbit_brown.png differ
diff --git a/examples/declarative/qtquick1/toys/dynamicscene/images/rabbit_bw.png b/examples/declarative/qtquick1/toys/dynamicscene/images/rabbit_bw.png
new file mode 100644 (file)
index 0000000..7bff9b9
Binary files /dev/null and b/examples/declarative/qtquick1/toys/dynamicscene/images/rabbit_bw.png differ
diff --git a/examples/declarative/qtquick1/toys/dynamicscene/images/star.png b/examples/declarative/qtquick1/toys/dynamicscene/images/star.png
new file mode 100644 (file)
index 0000000..27ef924
Binary files /dev/null and b/examples/declarative/qtquick1/toys/dynamicscene/images/star.png differ
diff --git a/examples/declarative/qtquick1/toys/dynamicscene/images/sun.png b/examples/declarative/qtquick1/toys/dynamicscene/images/sun.png
new file mode 100644 (file)
index 0000000..7713ca5
Binary files /dev/null and b/examples/declarative/qtquick1/toys/dynamicscene/images/sun.png differ
diff --git a/examples/declarative/qtquick1/toys/dynamicscene/images/tree_s.png b/examples/declarative/qtquick1/toys/dynamicscene/images/tree_s.png
new file mode 100644 (file)
index 0000000..6eac35a
Binary files /dev/null and b/examples/declarative/qtquick1/toys/dynamicscene/images/tree_s.png differ
diff --git a/examples/declarative/qtquick1/toys/dynamicscene/qml/Button.qml b/examples/declarative/qtquick1/toys/dynamicscene/qml/Button.qml
new file mode 100644 (file)
index 0000000..8cb9b58
--- /dev/null
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: container
+
+    property variant text
+    signal clicked
+
+    height: text.height + 10; width: text.width + 20
+    border.width: 1
+    radius: 4
+    smooth: true
+
+    gradient: Gradient {
+        GradientStop {
+            position: 0.0
+            color: !mouseArea.pressed ? activePalette.light : activePalette.button
+        }
+        GradientStop {
+            position: 1.0
+            color: !mouseArea.pressed ? activePalette.button : activePalette.dark
+        }
+    }
+
+    SystemPalette { id: activePalette }
+
+    MouseArea {
+        id: mouseArea
+        anchors.fill: parent
+        onClicked: container.clicked()
+    }
+
+    Text {
+        id: text
+        anchors.centerIn:parent
+        font.pointSize: 10
+        text: parent.text
+        color: activePalette.buttonText
+    }
+}
diff --git a/examples/declarative/qtquick1/toys/dynamicscene/qml/GenericSceneItem.qml b/examples/declarative/qtquick1/toys/dynamicscene/qml/GenericSceneItem.qml
new file mode 100644 (file)
index 0000000..26db159
--- /dev/null
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Image {
+    property bool created: false
+    property string image
+
+    source: image
+
+}
diff --git a/examples/declarative/qtquick1/toys/dynamicscene/qml/PaletteItem.qml b/examples/declarative/qtquick1/toys/dynamicscene/qml/PaletteItem.qml
new file mode 100644 (file)
index 0000000..df94cc8
--- /dev/null
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import "itemCreation.js" as Code
+
+Image {
+    id: paletteItem
+
+    property string componentFile
+    property string image
+
+    source: image
+
+    MouseArea {
+        anchors.fill: parent
+
+        onPressed: Code.startDrag(mouse);
+        onPositionChanged: Code.continueDrag(mouse);
+        onReleased: Code.endDrag(mouse);
+    }
+}
diff --git a/examples/declarative/qtquick1/toys/dynamicscene/qml/PerspectiveItem.qml b/examples/declarative/qtquick1/toys/dynamicscene/qml/PerspectiveItem.qml
new file mode 100644 (file)
index 0000000..9c905d8
--- /dev/null
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Image {
+    id: rootItem
+
+    property bool created: false
+    property string image
+
+    property double scaledBottom: y + (height + height*scale) / 2
+    property bool onLand: scaledBottom > window.height / 2
+
+    source: image
+    opacity: onLand ? 1 : 0.25
+    scale: Math.max((y + height - 250) * 0.01, 0.3)
+    smooth: true
+
+    onCreatedChanged: {
+        if (created && !onLand)
+            rootItem.destroy();
+        else
+            z = scaledBottom;
+    }
+
+    onYChanged: z = scaledBottom;
+}
diff --git a/examples/declarative/qtquick1/toys/dynamicscene/qml/Sun.qml b/examples/declarative/qtquick1/toys/dynamicscene/qml/Sun.qml
new file mode 100644 (file)
index 0000000..3ae4305
--- /dev/null
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Image {
+    id: sun
+
+    property bool created: false
+    property string image: "../images/sun.png"
+
+    source: image
+
+    // once item is created, start moving offscreen
+    NumberAnimation on y {
+        to: window.height / 2
+        running: created
+        onRunningChanged: {
+            if (running)
+                duration = (window.height - sun.y) * 10;
+            else
+                state = "OffScreen"
+        }
+    }
+
+    states: State {
+        name: "OffScreen"
+        StateChangeScript {
+            script: { sun.created = false; sun.destroy() }
+        }
+    }
+
+    onCreatedChanged: {
+        if (created) {
+            sun.z = 1;    // above the sky but below the ground layer
+            window.activeSuns++;
+        } else {
+            window.activeSuns--;
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/toys/dynamicscene/qml/itemCreation.js b/examples/declarative/qtquick1/toys/dynamicscene/qml/itemCreation.js
new file mode 100644 (file)
index 0000000..b96f3a5
--- /dev/null
@@ -0,0 +1,62 @@
+var itemComponent = null;
+var draggedItem = null;
+var startingMouse;
+var posnInWindow;
+
+function startDrag(mouse)
+{
+    posnInWindow = paletteItem.mapToItem(window, 0, 0);
+    startingMouse = { x: mouse.x, y: mouse.y }
+    loadComponent();
+}
+
+//Creation is split into two functions due to an asynchronous wait while
+//possible external files are loaded.
+
+function loadComponent() {
+    if (itemComponent != null) { // component has been previously loaded
+        createItem();
+        return;
+    }
+
+    itemComponent = Qt.createComponent(paletteItem.componentFile);
+    if (itemComponent.status == Component.Loading)  //Depending on the content, it can be ready or error immediately
+        component.statusChanged.connect(createItem);
+    else
+        createItem();
+}
+
+function createItem() {
+    if (itemComponent.status == Component.Ready && draggedItem == null) {
+        draggedItem = itemComponent.createObject(window, {"image": paletteItem.image, "x": posnInWindow.x, "y": posnInWindow.y, "z": 3});
+        // make sure created item is above the ground layer
+    } else if (itemComponent.status == Component.Error) {
+        draggedItem = null;
+        console.log("error creating component");
+        console.log(itemComponent.errorString());
+    }
+}
+
+function continueDrag(mouse)
+{
+    if (draggedItem == null)
+        return;
+
+    draggedItem.x = mouse.x + posnInWindow.x - startingMouse.x;
+    draggedItem.y = mouse.y + posnInWindow.y - startingMouse.y;
+}
+
+function endDrag(mouse)
+{
+    if (draggedItem == null)
+        return;
+
+    if (draggedItem.x + draggedItem.width > toolbox.x) { //Don't drop it in the toolbox
+        draggedItem.destroy();
+        draggedItem = null;
+    } else {
+        draggedItem.created = true;
+        draggedItem = null;
+    }
+}
+
diff --git a/examples/declarative/qtquick1/toys/tic-tac-toe/content/Button.qml b/examples/declarative/qtquick1/toys/tic-tac-toe/content/Button.qml
new file mode 100644 (file)
index 0000000..afc89f4
--- /dev/null
@@ -0,0 +1,79 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: container
+
+    property string text
+    property bool pressed: false
+
+    signal clicked
+
+    width: buttonLabel.width + 20; height: buttonLabel.height + 6
+    border { width: 1; color: Qt.darker(container.color) }
+    radius: 8
+    color: "lightgray"
+    smooth: true
+
+    gradient: Gradient {
+        GradientStop {
+            position: 0.0
+            color: container.pressed ? "darkgray" : "white"
+        }
+        GradientStop {
+            position: 1.0
+            color: container.color
+        }
+    }
+
+    MouseArea {
+        anchors.fill: parent
+        onClicked: container.clicked()
+    }
+
+    Text {
+        id: buttonLabel
+        anchors.centerIn: container
+        text: container.text
+        font.pixelSize: 14
+    }
+}
diff --git a/examples/declarative/qtquick1/toys/tic-tac-toe/content/TicTac.qml b/examples/declarative/qtquick1/toys/tic-tac-toe/content/TicTac.qml
new file mode 100644 (file)
index 0000000..dd4de5e
--- /dev/null
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Item {
+    signal clicked
+
+    states: [
+        State { name: "X"; PropertyChanges { target: image; source: "pics/x.png" } },
+        State { name: "O"; PropertyChanges { target: image; source: "pics/o.png" } }
+    ]
+
+    Image {
+        id: image
+        anchors.centerIn: parent
+    }
+
+    MouseArea {
+        anchors.fill: parent
+        onClicked: parent.clicked()
+    }
+}
diff --git a/examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/board.png b/examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/board.png
new file mode 100644 (file)
index 0000000..7e5b7ba
Binary files /dev/null and b/examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/board.png differ
diff --git a/examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/o.png b/examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/o.png
new file mode 100644 (file)
index 0000000..abc7ee0
Binary files /dev/null and b/examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/o.png differ
diff --git a/examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/x.png b/examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/x.png
new file mode 100644 (file)
index 0000000..ddc65c8
Binary files /dev/null and b/examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/x.png differ
diff --git a/examples/declarative/qtquick1/toys/tic-tac-toe/content/tic-tac-toe.js b/examples/declarative/qtquick1/toys/tic-tac-toe/content/tic-tac-toe.js
new file mode 100644 (file)
index 0000000..5a166b7
--- /dev/null
@@ -0,0 +1,149 @@
+function winner(board)
+{
+    for (var i=0; i<3; ++i) {
+        if (board.children[i].state != ""
+                && board.children[i].state == board.children[i+3].state
+                && board.children[i].state == board.children[i+6].state)
+            return true
+
+        if (board.children[i*3].state != ""
+                && board.children[i*3].state == board.children[i*3+1].state
+                && board.children[i*3].state == board.children[i*3+2].state)
+            return true
+    }
+
+    if (board.children[0].state != ""
+            && board.children[0].state == board.children[4].state != ""
+            && board.children[0].state == board.children[8].state != "")
+        return true
+
+    if (board.children[2].state != ""
+            && board.children[2].state == board.children[4].state != ""
+            && board.children[2].state == board.children[6].state != "")
+        return true
+
+    return false
+}
+
+function restartGame()
+{
+    game.running = true
+
+    for (var i=0; i<9; ++i)
+        board.children[i].state = ""
+}
+
+function makeMove(pos, player)
+{
+    board.children[pos].state = player
+    if (winner(board)) {
+        gameFinished(player + " wins")
+        return true
+    } else {
+        return false
+    }
+}
+
+function canPlayAtPos(pos)
+{
+    return board.children[pos].state == ""
+}
+
+function computerTurn()
+{
+    var r = Math.random();
+    if (r < game.difficulty)
+        smartAI();
+    else
+        randomAI();
+}
+
+function smartAI()
+{
+    function boardCopy(a) {
+        var ret = new Object;
+        ret.children = new Array(9);
+        for (var i = 0; i<9; i++) {
+            ret.children[i] = new Object;
+            ret.children[i].state = a.children[i].state;
+        }
+        return ret;
+    }
+
+    for (var i=0; i<9; i++) {
+        var simpleBoard = boardCopy(board);
+        if (canPlayAtPos(i)) {
+            simpleBoard.children[i].state = "O";
+            if (winner(simpleBoard)) {
+                makeMove(i, "O")
+                return
+            }
+        }
+    }
+    for (var i=0; i<9; i++) {
+        var simpleBoard = boardCopy(board);
+        if (canPlayAtPos(i)) {
+            simpleBoard.children[i].state = "X";
+            if (winner(simpleBoard)) {
+                makeMove(i, "O")
+                return
+            }
+        }
+    }
+
+    function thwart(a,b,c) {    //If they are at a, try b or c
+        if (board.children[a].state == "X") {
+            if (canPlayAtPos(b)) {
+                makeMove(b, "O")
+                return true
+            } else if (canPlayAtPos(c)) {
+                makeMove(c, "O")
+                return true
+            }
+        }
+        return false;
+    }
+
+    if (thwart(4,0,2)) return;
+    if (thwart(0,4,3)) return;
+    if (thwart(2,4,1)) return;
+    if (thwart(6,4,7)) return;
+    if (thwart(8,4,5)) return;
+    if (thwart(1,4,2)) return;
+    if (thwart(3,4,0)) return;
+    if (thwart(5,4,8)) return;
+    if (thwart(7,4,6)) return;
+
+    for (var i =0; i<9; i++) {
+        if (canPlayAtPos(i)) {
+            makeMove(i, "O")
+            return
+        }
+    }
+    restartGame();
+}
+
+function randomAI()
+{
+    var unfilledPosns = new Array();
+
+    for (var i=0; i<9; ++i) {
+        if (canPlayAtPos(i))
+            unfilledPosns.push(i);
+    }
+
+    if (unfilledPosns.length == 0) {
+        restartGame();
+    } else {
+        var choice = unfilledPosns[Math.floor(Math.random() * unfilledPosns.length)];
+        makeMove(choice, "O");
+    }
+}
+
+function gameFinished(message)
+{
+    messageDisplay.text = message
+    messageDisplay.visible = true
+    game.running = false
+}
+
diff --git a/examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qml b/examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qml
new file mode 100644 (file)
index 0000000..87e3e2e
--- /dev/null
@@ -0,0 +1,123 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import "content"
+import "content/tic-tac-toe.js" as Logic
+
+Rectangle {
+    id: game
+
+    property bool running: true
+    property real difficulty: 1.0   //chance it will actually think
+
+    width: display.width; height: display.height + 10
+
+    Image {
+        id: boardImage
+        source: "content/pics/board.png"
+    }
+
+
+    Column {
+        id: display
+
+        Grid {
+            id: board
+            width: boardImage.width; height: boardImage.height
+            columns: 3
+
+            Repeater {
+                model: 9
+
+                TicTac {
+                    width: board.width/3
+                    height: board.height/3
+
+                    onClicked: {
+                        if (game.running && Logic.canPlayAtPos(index)) {
+                            if (!Logic.makeMove(index, "X"))
+                                Logic.computerTurn();
+                        }
+                    }
+                }
+            }
+        }
+
+        Row {
+            spacing: 4
+            anchors.horizontalCenter: parent.horizontalCenter
+
+            Button {
+                text: "Hard"
+                pressed: game.difficulty == 1.0
+                onClicked: { game.difficulty = 1.0 }
+            }
+            Button {
+                text: "Moderate"
+                pressed: game.difficulty == 0.8
+                onClicked: { game.difficulty = 0.8 }
+            }
+            Button {
+                text: "Easy"
+                pressed: game.difficulty == 0.2
+                onClicked: { game.difficulty = 0.2 }
+            }
+        }
+    }
+
+
+    Text {
+        id: messageDisplay
+        anchors.centerIn: parent
+        color: "blue"
+        style: Text.Outline; styleColor: "white"
+        font.pixelSize: 50; font.bold: true
+        visible: false
+
+        Timer {
+            running: messageDisplay.visible
+            onTriggered: {
+                messageDisplay.visible = false;
+                Logic.restartGame();
+            }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qmlproject b/examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/toys/toys.qmlproject b/examples/declarative/qtquick1/toys/toys.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/toys/tvtennis/tvtennis.qml b/examples/declarative/qtquick1/toys/tvtennis/tvtennis.qml
new file mode 100644 (file)
index 0000000..2e4d81d
--- /dev/null
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: page
+    width: 640; height: 480
+    color: "Black"
+
+    // Make a ball to bounce
+    Rectangle {
+        id: ball
+
+        // Add a property for the target y coordinate
+        property variant direction : "right"
+
+        x: 20; width: 20; height: 20; z: 1
+        color: "Lime"
+
+        // Move the ball to the right and back to the left repeatedly
+        SequentialAnimation on x {
+            loops: Animation.Infinite
+            NumberAnimation { to: page.width - 40; duration: 2000 }
+            PropertyAction { target: ball; property: "direction"; value: "left" }
+            NumberAnimation { to: 20; duration: 2000 }
+            PropertyAction { target: ball; property: "direction"; value: "right" }
+        }
+
+        // Make y move with a velocity of 200
+        Behavior on y { SpringAnimation{ velocity: 200; }
+        }
+
+        Component.onCompleted: y = page.height-10; // start the ball motion
+
+        // Detect the ball hitting the top or bottom of the view and bounce it
+        onYChanged: {
+            if (y <= 0) {
+                y = page.height - 20;
+            } else if (y >= page.height - 20) {
+                y = 0;
+            }
+        }
+    }
+
+    // Place bats to the left and right of the view, following the y
+    // coordinates of the ball.
+    Rectangle {
+        id: leftBat
+        color: "Lime"
+        x: 2; width: 20; height: 90
+        y: ball.direction == 'left' ? ball.y - 45 : page.height/2 -45;
+        Behavior on y { SpringAnimation{ velocity: 300 } }
+    }
+    Rectangle {
+        id: rightBat
+        color: "Lime"
+        x: page.width - 22; width: 20; height: 90
+        y: ball.direction == 'right' ? ball.y - 45 : page.height/2 -45;
+        Behavior on y { SpringAnimation{ velocity: 300 } }
+    }
+
+    // The rest, to make it look realistic, if neither ever scores...
+    Rectangle { color: "Lime"; x: page.width/2-80; y: 0; width: 40; height: 60 }
+    Rectangle { color: "Black"; x: page.width/2-70; y: 10; width: 20; height: 40 }
+    Rectangle { color: "Lime"; x: page.width/2+40; y: 0; width: 40; height: 60 }
+    Rectangle { color: "Black"; x: page.width/2+50; y: 10; width: 20; height: 40 }
+    Repeater {
+        model: page.height / 20
+        Rectangle { color: "Lime"; x: page.width/2-5; y: index * 20; width: 10; height: 10 }
+    }
+}
diff --git a/examples/declarative/qtquick1/toys/tvtennis/tvtennis.qmlproject b/examples/declarative/qtquick1/toys/tvtennis/tvtennis.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/app.qml b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/app.qml
new file mode 100644 (file)
index 0000000..f42ec1e
--- /dev/null
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import Charts 1.0
+import QtQuick 1.0
+
+Item {
+    width: 300; height: 200
+
+    PieChart {
+        id: aPieChart
+        anchors.centerIn: parent
+        width: 100; height: 100
+        name: "A simple pie chart"
+        color: "red"
+    }
+
+    Text {
+        anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 20 }
+        text: aPieChart.name
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/chapter1-basics.pro b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/chapter1-basics.pro
new file mode 100644 (file)
index 0000000..77cc4cd
--- /dev/null
@@ -0,0 +1,5 @@
+QT += declarative qtquick1
+
+HEADERS += piechart.h
+SOURCES += piechart.cpp \
+           main.cpp
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/main.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/main.cpp
new file mode 100644 (file)
index 0000000..f0cf371
--- /dev/null
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+#include "piechart.h"
+#include <QtQuick1/QDeclarativeView>
+#include <QApplication>
+
+int main(int argc, char *argv[])
+{
+    QApplication app(argc, argv);
+
+    qmlRegisterType<PieChart>("Charts", 1, 0, "PieChart");
+
+    QDeclarativeView view;
+    view.setSource(QUrl::fromLocalFile("app.qml"));
+    view.show();
+    return app.exec();
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.cpp
new file mode 100644 (file)
index 0000000..bfc1645
--- /dev/null
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "piechart.h"
+#include <QPainter>
+
+//![0]
+PieChart::PieChart(QDeclarativeItem *parent)
+    : QDeclarativeItem(parent)
+{
+    // need to disable this flag to draw inside a QDeclarativeItem
+    setFlag(QGraphicsItem::ItemHasNoContents, false);
+}
+//![0]
+
+QString PieChart::name() const
+{
+    return m_name;
+}
+
+void PieChart::setName(const QString &name)
+{
+    m_name = name;
+}
+
+QColor PieChart::color() const
+{
+    return m_color;
+}
+
+void PieChart::setColor(const QColor &color)
+{
+    m_color = color;
+}
+
+//![1]
+void PieChart::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
+{
+    QPen pen(m_color, 2);
+    painter->setPen(pen);
+    painter->setRenderHints(QPainter::Antialiasing, true);
+    painter->drawPie(boundingRect(), 90 * 16, 290 * 16);
+}
+//![1]
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.h b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.h
new file mode 100644 (file)
index 0000000..06b49ba
--- /dev/null
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PIECHART_H
+#define PIECHART_H
+
+//![0]
+#include <QtQuick1/QDeclarativeItem>
+#include <QColor>
+
+class PieChart : public QDeclarativeItem
+{
+    Q_OBJECT
+    Q_PROPERTY(QString name READ name WRITE setName)
+    Q_PROPERTY(QColor color READ color WRITE setColor)
+
+public:
+    PieChart(QDeclarativeItem *parent = 0);
+
+    QString name() const;
+    void setName(const QString &name);
+
+    QColor color() const;
+    void setColor(const QColor &color);
+
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
+
+private:
+    QString m_name;
+    QColor m_color;
+};
+//![0]
+
+#endif
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/app.qml b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/app.qml
new file mode 100644 (file)
index 0000000..e2f34c7
--- /dev/null
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import Charts 1.0
+import QtQuick 1.0
+
+Item {
+    width: 300; height: 200
+
+    PieChart {
+        id: aPieChart
+        anchors.centerIn: parent
+        width: 100; height: 100
+        color: "red"
+
+        onChartCleared: console.log("The chart has been cleared")
+    }
+
+    MouseArea {
+        anchors.fill: parent
+        onClicked: aPieChart.clearChart()
+    }
+
+    Text {
+        anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 20 }
+        text: "Click anywhere to clear the chart"
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/chapter2-methods.pro b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/chapter2-methods.pro
new file mode 100644 (file)
index 0000000..77cc4cd
--- /dev/null
@@ -0,0 +1,5 @@
+QT += declarative qtquick1
+
+HEADERS += piechart.h
+SOURCES += piechart.cpp \
+           main.cpp
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/main.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/main.cpp
new file mode 100644 (file)
index 0000000..f0cf371
--- /dev/null
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+#include "piechart.h"
+#include <QtQuick1/QDeclarativeView>
+#include <QApplication>
+
+int main(int argc, char *argv[])
+{
+    QApplication app(argc, argv);
+
+    qmlRegisterType<PieChart>("Charts", 1, 0, "PieChart");
+
+    QDeclarativeView view;
+    view.setSource(QUrl::fromLocalFile("app.qml"));
+    view.show();
+    return app.exec();
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.cpp
new file mode 100644 (file)
index 0000000..78970e5
--- /dev/null
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "piechart.h"
+#include <QPainter>
+#include <QDebug>
+
+PieChart::PieChart(QDeclarativeItem *parent)
+    : QDeclarativeItem(parent)
+{
+    // need to disable this flag to draw inside a QDeclarativeItem
+    setFlag(QGraphicsItem::ItemHasNoContents, false);
+}
+
+QString PieChart::name() const
+{
+    return m_name;
+}
+
+void PieChart::setName(const QString &name)
+{
+    m_name = name;
+}
+
+QColor PieChart::color() const
+{
+    return m_color;
+}
+
+void PieChart::setColor(const QColor &color)
+{
+    m_color = color;
+}
+
+void PieChart::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
+{
+    QPen pen(m_color, 2);
+    painter->setPen(pen);
+    painter->setRenderHints(QPainter::Antialiasing, true);
+    painter->drawPie(boundingRect(), 90 * 16, 290 * 16);
+}
+
+//![0]
+void PieChart::clearChart()
+{
+    setColor(QColor(Qt::transparent));
+    update();
+
+    emit chartCleared();
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.h b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.h
new file mode 100644 (file)
index 0000000..5aebecc
--- /dev/null
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PIECHART_H
+#define PIECHART_H
+
+#include <QtQuick1/QDeclarativeItem>
+#include <QColor>
+
+//![0]
+class PieChart : public QDeclarativeItem
+{
+//![0]
+    Q_OBJECT
+    Q_PROPERTY(QString name READ name WRITE setName)
+    Q_PROPERTY(QColor color READ color WRITE setColor)
+
+//![1]
+public:
+//![1]
+
+    PieChart(QDeclarativeItem *parent = 0);
+
+    QString name() const;
+    void setName(const QString &name);
+
+    QColor color() const;
+    void setColor(const QColor &color);
+
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
+
+//![2]
+    Q_INVOKABLE void clearChart();
+
+signals:
+    void chartCleared();
+//![2]
+
+private:
+    QString m_name;
+    QColor m_color;
+
+//![3]
+};
+//![3]
+
+#endif
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/app.qml b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/app.qml
new file mode 100644 (file)
index 0000000..b4ad5ef
--- /dev/null
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import Charts 1.0
+import QtQuick 1.0
+
+Item {
+    width: 300; height: 200
+
+    Row {
+        anchors.centerIn: parent
+        spacing: 20
+
+        PieChart {
+            id: chartA
+            width: 100; height: 100
+            color: "red"
+        }
+
+        PieChart {
+            id: chartB
+            width: 100; height: 100
+            color: chartA.color
+        }
+    }
+
+    MouseArea {
+        anchors.fill: parent
+        onClicked: { chartA.color = "blue" }
+    }
+
+    Text {
+        anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 20 }
+        text: "Click anywhere to change the chart color"
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/chapter3-bindings.pro b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/chapter3-bindings.pro
new file mode 100644 (file)
index 0000000..77cc4cd
--- /dev/null
@@ -0,0 +1,5 @@
+QT += declarative qtquick1
+
+HEADERS += piechart.h
+SOURCES += piechart.cpp \
+           main.cpp
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/main.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/main.cpp
new file mode 100644 (file)
index 0000000..f0cf371
--- /dev/null
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+#include "piechart.h"
+#include <QtQuick1/QDeclarativeView>
+#include <QApplication>
+
+int main(int argc, char *argv[])
+{
+    QApplication app(argc, argv);
+
+    qmlRegisterType<PieChart>("Charts", 1, 0, "PieChart");
+
+    QDeclarativeView view;
+    view.setSource(QUrl::fromLocalFile("app.qml"));
+    view.show();
+    return app.exec();
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.cpp
new file mode 100644 (file)
index 0000000..375025e
--- /dev/null
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "piechart.h"
+#include <QPainter>
+#include <QDebug>
+
+PieChart::PieChart(QDeclarativeItem *parent)
+    : QDeclarativeItem(parent)
+{
+    // need to disable this flag to draw inside a QDeclarativeItem
+    setFlag(QGraphicsItem::ItemHasNoContents, false);
+}
+
+QString PieChart::name() const
+{
+    return m_name;
+}
+
+void PieChart::setName(const QString &name)
+{
+    m_name = name;
+}
+
+QColor PieChart::color() const
+{
+    return m_color;
+}
+
+//![0]
+void PieChart::setColor(const QColor &color)
+{
+    if (color != m_color) {
+        m_color = color;
+        update();   // repaint with the new color
+        emit colorChanged();
+    }
+}
+//![0]
+
+void PieChart::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
+{
+    QPen pen(m_color, 2);
+    painter->setPen(pen);
+    painter->setRenderHints(QPainter::Antialiasing, true);
+    painter->drawPie(boundingRect(), 90 * 16, 290 * 16);
+}
+
+void PieChart::clearChart()
+{
+    setColor(QColor(Qt::transparent));
+    update();
+}
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.h b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.h
new file mode 100644 (file)
index 0000000..4fd41d4
--- /dev/null
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PIECHART_H
+#define PIECHART_H
+
+#include <QtQuick1/QDeclarativeItem>
+#include <QColor>
+
+//![0]
+class PieChart : public QDeclarativeItem
+{
+//![0]
+    Q_OBJECT
+    Q_PROPERTY(QString name READ name WRITE setName)
+
+//![1]
+    Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)
+public:
+//![1]
+
+    PieChart(QDeclarativeItem *parent = 0);
+
+    QString name() const;
+    void setName(const QString &name);
+
+    QColor color() const;
+    void setColor(const QColor &color);
+
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
+
+    Q_INVOKABLE void clearChart();
+
+//![2]
+signals:
+    void colorChanged();
+//![2]
+
+private:
+    QString m_name;
+    QColor m_color;
+
+//![3]
+};
+//![3]
+
+#endif
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/app.qml b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/app.qml
new file mode 100644 (file)
index 0000000..8fee245
--- /dev/null
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import Charts 1.0
+import QtQuick 1.0
+
+Item {
+    width: 300; height: 200
+
+    PieChart {
+        id: chart
+        anchors.centerIn: parent
+        width: 100; height: 100
+
+        pieSlice: PieSlice {
+            anchors.fill: parent
+            color: "red"
+        }
+    }
+
+    Component.onCompleted: console.log("The pie is colored " + chart.pieSlice.color)
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro
new file mode 100644 (file)
index 0000000..f5dc31a
--- /dev/null
@@ -0,0 +1,7 @@
+QT += declarative qtquick1
+
+HEADERS += piechart.h \
+           pieslice.h
+SOURCES += piechart.cpp \
+           pieslice.cpp \
+           main.cpp
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/main.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/main.cpp
new file mode 100644 (file)
index 0000000..9fb548c
--- /dev/null
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "piechart.h"
+#include "pieslice.h"
+
+#include <QtQuick1/QDeclarativeView>
+#include <QApplication>
+
+//![0]
+int main(int argc, char *argv[])
+{
+//![0]
+    QApplication app(argc, argv);
+
+    qmlRegisterType<PieChart>("Charts", 1, 0, "PieChart");
+
+//![1]
+    qmlRegisterType<PieSlice>("Charts", 1, 0, "PieSlice");
+//![1]
+
+    QDeclarativeView view;
+    view.setSource(QUrl::fromLocalFile("app.qml"));
+    view.show();
+    return app.exec();
+
+//![2]
+}
+//![2]
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.cpp
new file mode 100644 (file)
index 0000000..b1f4278
--- /dev/null
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "piechart.h"
+#include "pieslice.h"
+
+PieChart::PieChart(QDeclarativeItem *parent)
+    : QDeclarativeItem(parent)
+{
+    // this doesn't need to disable QGraphicsItem::ItemHasNoContents
+    // anymore since the drawing is now done in PieSlice
+}
+
+QString PieChart::name() const
+{
+    return m_name;
+}
+
+void PieChart::setName(const QString &name)
+{
+    m_name = name;
+}
+
+PieSlice *PieChart::pieSlice() const
+{
+    return m_pieSlice;
+}
+
+//![0]
+void PieChart::setPieSlice(PieSlice *pieSlice)
+{
+    m_pieSlice = pieSlice;
+    pieSlice->setParentItem(this);
+}
+//![0]
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.h b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.h
new file mode 100644 (file)
index 0000000..ec9e61c
--- /dev/null
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PIECHART_H
+#define PIECHART_H
+
+#include <QtQuick1/QDeclarativeItem>
+
+class PieSlice;
+
+//![0]
+class PieChart : public QDeclarativeItem
+{
+    Q_OBJECT
+    Q_PROPERTY(PieSlice* pieSlice READ pieSlice WRITE setPieSlice)
+//![0]
+    Q_PROPERTY(QString name READ name WRITE setName)
+
+//![1]
+public:
+//![1]
+
+    PieChart(QDeclarativeItem *parent = 0);
+
+    QString name() const;
+    void setName(const QString &name);
+
+//![2]
+    PieSlice *pieSlice() const;
+    void setPieSlice(PieSlice *pieSlice);
+//![2]
+
+private:
+    QString m_name;
+    PieSlice *m_pieSlice;
+
+//![3]
+};
+//![3]
+
+#endif
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.cpp
new file mode 100644 (file)
index 0000000..f36c8ce
--- /dev/null
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "pieslice.h"
+
+#include <QPainter>
+
+PieSlice::PieSlice(QDeclarativeItem *parent)
+    : QDeclarativeItem(parent)
+{
+    // need to disable this flag to draw inside a QDeclarativeItem
+    setFlag(QGraphicsItem::ItemHasNoContents, false);
+}
+
+QColor PieSlice::color() const
+{
+    return m_color;
+}
+
+void PieSlice::setColor(const QColor &color)
+{
+    m_color = color;
+}
+
+void PieSlice::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
+{
+    QPen pen(m_color, 2);
+    painter->setPen(pen);
+    painter->setRenderHints(QPainter::Antialiasing, true);
+    painter->drawPie(boundingRect(), 90 * 16, 290 * 16);
+}
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.h b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.h
new file mode 100644 (file)
index 0000000..3e7fcba
--- /dev/null
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PIESLICE_H
+#define PIESLICE_H
+
+#include <QtQuick1/QDeclarativeItem>
+#include <QColor>
+
+//![0]
+class PieSlice : public QDeclarativeItem
+{
+    Q_OBJECT
+    Q_PROPERTY(QColor color READ color WRITE setColor)
+
+public:
+    PieSlice(QDeclarativeItem *parent = 0);
+
+    QColor color() const;
+    void setColor(const QColor &color);
+
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
+
+private:
+    QColor m_color;
+};
+//![0]
+
+#endif
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/app.qml b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/app.qml
new file mode 100644 (file)
index 0000000..cb46ebf
--- /dev/null
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import Charts 1.0
+import QtQuick 1.0
+
+Item {
+    width: 300; height: 200
+
+    PieChart {
+        anchors.centerIn: parent
+        width: 100; height: 100
+
+        slices: [
+            PieSlice {
+                anchors.fill: parent
+                color: "red"
+                fromAngle: 0; angleSpan: 110
+            },
+            PieSlice {
+                anchors.fill: parent
+                color: "black"
+                fromAngle: 110; angleSpan: 50
+            },
+            PieSlice {
+                anchors.fill: parent
+                color: "blue"
+                fromAngle: 160; angleSpan: 100
+            }
+        ]
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/chapter5-listproperties.pro b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/chapter5-listproperties.pro
new file mode 100644 (file)
index 0000000..f5dc31a
--- /dev/null
@@ -0,0 +1,7 @@
+QT += declarative qtquick1
+
+HEADERS += piechart.h \
+           pieslice.h
+SOURCES += piechart.cpp \
+           pieslice.cpp \
+           main.cpp
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/main.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/main.cpp
new file mode 100644 (file)
index 0000000..2832e85
--- /dev/null
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "piechart.h"
+#include "pieslice.h"
+
+#include <QtQuick1/QDeclarativeView>
+#include <QApplication>
+
+int main(int argc, char *argv[])
+{
+    QApplication app(argc, argv);
+
+    qmlRegisterType<PieChart>("Charts", 1, 0, "PieChart");
+    qmlRegisterType<PieSlice>("Charts", 1, 0, "PieSlice");
+
+    QDeclarativeView view;
+    view.setSource(QUrl::fromLocalFile("app.qml"));
+    view.show();
+    return app.exec();
+}
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.cpp
new file mode 100644 (file)
index 0000000..1719c0f
--- /dev/null
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "piechart.h"
+#include "pieslice.h"
+
+PieChart::PieChart(QDeclarativeItem *parent)
+    : QDeclarativeItem(parent)
+{
+}
+
+QString PieChart::name() const
+{
+    return m_name;
+}
+
+void PieChart::setName(const QString &name)
+{
+    m_name = name;
+}
+
+//![0]
+QDeclarativeListProperty<PieSlice> PieChart::slices()
+{
+    return QDeclarativeListProperty<PieSlice>(this, 0, &PieChart::append_slice);
+}
+
+void PieChart::append_slice(QDeclarativeListProperty<PieSlice> *list, PieSlice *slice)
+{
+    PieChart *chart = qobject_cast<PieChart *>(list->object);
+    if (chart) {
+        slice->setParentItem(chart);
+        chart->m_slices.append(slice);
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.h b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.h
new file mode 100644 (file)
index 0000000..aba695c
--- /dev/null
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PIECHART_H
+#define PIECHART_H
+
+#include <QtQuick1/QDeclarativeItem>
+
+class PieSlice;
+
+//![0]
+class PieChart : public QDeclarativeItem
+{
+    Q_OBJECT
+    Q_PROPERTY(QDeclarativeListProperty<PieSlice> slices READ slices)
+//![0]
+    Q_PROPERTY(QString name READ name WRITE setName)
+
+//![1]
+public:
+//![1]
+    PieChart(QDeclarativeItem *parent = 0);
+
+    QString name() const;
+    void setName(const QString &name);
+
+//![2]
+    QDeclarativeListProperty<PieSlice> slices();
+
+private:
+    static void append_slice(QDeclarativeListProperty<PieSlice> *list, PieSlice *slice);
+
+    QString m_name;
+    QList<PieSlice *> m_slices;
+};
+//![2]
+
+#endif
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.cpp
new file mode 100644 (file)
index 0000000..16f4bae
--- /dev/null
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "pieslice.h"
+
+#include <QPainter>
+
+PieSlice::PieSlice(QDeclarativeItem *parent)
+    : QDeclarativeItem(parent)
+{
+    // need to disable this flag to draw inside a QDeclarativeItem
+    setFlag(QGraphicsItem::ItemHasNoContents, false);
+}
+
+QColor PieSlice::color() const
+{
+    return m_color;
+}
+
+void PieSlice::setColor(const QColor &color)
+{
+    m_color = color;
+}
+
+int PieSlice::fromAngle() const
+{
+    return m_fromAngle;
+}
+
+void PieSlice::setFromAngle(int angle)
+{
+    m_fromAngle = angle;
+}
+
+int PieSlice::angleSpan() const
+{
+    return m_angleSpan;
+}
+
+void PieSlice::setAngleSpan(int angle)
+{
+    m_angleSpan = angle;
+}
+
+void PieSlice::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
+{
+    QPen pen(m_color, 2);
+    painter->setPen(pen);
+    painter->setRenderHints(QPainter::Antialiasing, true);
+    painter->drawPie(boundingRect(), m_fromAngle * 16, m_angleSpan * 16);
+}
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.h b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.h
new file mode 100644 (file)
index 0000000..40e4f8a
--- /dev/null
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PIESLICE_H
+#define PIESLICE_H
+
+#include <QtQuick1/QDeclarativeItem>
+#include <QColor>
+
+//![0]
+class PieSlice : public QDeclarativeItem
+{
+    Q_OBJECT
+    Q_PROPERTY(QColor color READ color WRITE setColor)
+    Q_PROPERTY(int fromAngle READ fromAngle WRITE setFromAngle)
+    Q_PROPERTY(int angleSpan READ angleSpan WRITE setAngleSpan)
+//![0]
+
+public:
+    PieSlice(QDeclarativeItem *parent = 0);
+
+    QColor color() const;
+    void setColor(const QColor &color);
+
+    int fromAngle() const;
+    void setFromAngle(int angle);
+
+    int angleSpan() const;
+    void setAngleSpan(int span);
+
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
+
+private:
+    QColor m_color;
+    int m_fromAngle;
+    int m_angleSpan;
+};
+
+#endif
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/app.qml b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/app.qml
new file mode 100644 (file)
index 0000000..fded8f3
--- /dev/null
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import QtQuick 1.0
+
+Item {
+    width: 300; height: 200
+
+    PieChart {
+        anchors.centerIn: parent
+        width: 100; height: 100
+
+        slices: [
+            PieSlice {
+                anchors.fill: parent
+                color: "red"
+                fromAngle: 0; angleSpan: 110
+            },
+            PieSlice {
+                anchors.fill: parent
+                color: "black"
+                fromAngle: 110; angleSpan: 50
+            },
+            PieSlice {
+                anchors.fill: parent
+                color: "blue"
+                fromAngle: 160; angleSpan: 100
+            }
+        ]
+    }
+}
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chapter6-plugins.pro b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chapter6-plugins.pro
new file mode 100644 (file)
index 0000000..3533096
--- /dev/null
@@ -0,0 +1,20 @@
+TEMPLATE = lib
+CONFIG += qt plugin
+QT += declarative qtquick1
+
+DESTDIR = lib
+OBJECTS_DIR = tmp
+MOC_DIR = tmp
+
+HEADERS += piechart.h \
+           pieslice.h \
+           chartsplugin.h
+
+SOURCES += piechart.cpp \
+           pieslice.cpp \
+           chartsplugin.cpp
+
+symbian {
+    include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
+    TARGET.EPOCALLOWDLLDATA = 1
+}
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.cpp
new file mode 100644 (file)
index 0000000..08ffbe4
--- /dev/null
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "chartsplugin.h"
+//![0]
+#include "piechart.h"
+#include "pieslice.h"
+
+void ChartsPlugin::registerTypes(const char *uri)
+{
+    qmlRegisterType<PieChart>(uri, 1, 0, "PieChart");
+    qmlRegisterType<PieSlice>(uri, 1, 0, "PieSlice");
+}
+
+Q_EXPORT_PLUGIN2(chartsplugin, ChartsPlugin);
+//![0]
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.h b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.h
new file mode 100644 (file)
index 0000000..8cb6ded
--- /dev/null
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef CHARTSPLUGIN_H
+#define CHARTSPLUGIN_H
+
+//![0]
+#include <QDeclarativeExtensionPlugin>
+
+class ChartsPlugin : public QDeclarativeExtensionPlugin
+{
+    Q_OBJECT
+public:
+    void registerTypes(const char *uri);
+};
+//![0]
+
+#endif
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.cpp
new file mode 100644 (file)
index 0000000..c1ea448
--- /dev/null
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "piechart.h"
+#include "pieslice.h"
+
+PieChart::PieChart(QDeclarativeItem *parent)
+    : QDeclarativeItem(parent)
+{
+}
+
+QString PieChart::name() const
+{
+    return m_name;
+}
+
+void PieChart::setName(const QString &name)
+{
+    m_name = name;
+}
+
+QDeclarativeListProperty<PieSlice> PieChart::slices()
+{
+    return QDeclarativeListProperty<PieSlice>(this, 0, &PieChart::append_slice);
+}
+
+void PieChart::append_slice(QDeclarativeListProperty<PieSlice> *list, PieSlice *slice)
+{
+    PieChart *chart = qobject_cast<PieChart *>(list->object);
+    if (chart) {
+        slice->setParentItem(chart);
+        chart->m_slices.append(slice);
+    }
+}
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.h b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.h
new file mode 100644 (file)
index 0000000..2f86d22
--- /dev/null
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PIECHART_H
+#define PIECHART_H
+
+#include <QtQuick1/QDeclarativeItem>
+
+class PieSlice;
+
+class PieChart : public QDeclarativeItem
+{
+    Q_OBJECT
+    Q_PROPERTY(QDeclarativeListProperty<PieSlice> slices READ slices)
+    Q_PROPERTY(QString name READ name WRITE setName)
+
+public:
+    PieChart(QDeclarativeItem *parent = 0);
+
+    QString name() const;
+    void setName(const QString &name);
+
+    QDeclarativeListProperty<PieSlice> slices();
+
+private:
+    static void append_slice(QDeclarativeListProperty<PieSlice> *list, PieSlice *slice);
+
+    QString m_name;
+    QList<PieSlice *> m_slices;
+};
+
+#endif
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.cpp b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.cpp
new file mode 100644 (file)
index 0000000..16f4bae
--- /dev/null
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "pieslice.h"
+
+#include <QPainter>
+
+PieSlice::PieSlice(QDeclarativeItem *parent)
+    : QDeclarativeItem(parent)
+{
+    // need to disable this flag to draw inside a QDeclarativeItem
+    setFlag(QGraphicsItem::ItemHasNoContents, false);
+}
+
+QColor PieSlice::color() const
+{
+    return m_color;
+}
+
+void PieSlice::setColor(const QColor &color)
+{
+    m_color = color;
+}
+
+int PieSlice::fromAngle() const
+{
+    return m_fromAngle;
+}
+
+void PieSlice::setFromAngle(int angle)
+{
+    m_fromAngle = angle;
+}
+
+int PieSlice::angleSpan() const
+{
+    return m_angleSpan;
+}
+
+void PieSlice::setAngleSpan(int angle)
+{
+    m_angleSpan = angle;
+}
+
+void PieSlice::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
+{
+    QPen pen(m_color, 2);
+    painter->setPen(pen);
+    painter->setRenderHints(QPainter::Antialiasing, true);
+    painter->drawPie(boundingRect(), m_fromAngle * 16, m_angleSpan * 16);
+}
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.h b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.h
new file mode 100644 (file)
index 0000000..f1f1e89
--- /dev/null
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PIESLICE_H
+#define PIESLICE_H
+
+#include <QtQuick1/QDeclarativeItem>
+#include <QColor>
+
+class PieSlice : public QDeclarativeItem
+{
+    Q_OBJECT
+    Q_PROPERTY(QColor color READ color WRITE setColor)
+    Q_PROPERTY(int fromAngle READ fromAngle WRITE setFromAngle)
+    Q_PROPERTY(int angleSpan READ angleSpan WRITE setAngleSpan)
+
+public:
+    PieSlice(QDeclarativeItem *parent = 0);
+
+    QColor color() const;
+    void setColor(const QColor &color);
+
+    int fromAngle() const;
+    void setFromAngle(int angle);
+
+    int angleSpan() const;
+    void setAngleSpan(int span);
+
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
+
+private:
+    QColor m_color;
+    int m_fromAngle;
+    int m_angleSpan;
+};
+
+#endif
+
diff --git a/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/qmldir b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/qmldir
new file mode 100644 (file)
index 0000000..a83bf85
--- /dev/null
@@ -0,0 +1 @@
+plugin chapter6-plugins lib
diff --git a/examples/declarative/qtquick1/tutorials/extending/extending.pro b/examples/declarative/qtquick1/tutorials/extending/extending.pro
new file mode 100644 (file)
index 0000000..a665975
--- /dev/null
@@ -0,0 +1,10 @@
+TEMPLATE = subdirs
+
+SUBDIRS += \
+    chapter1-basics \
+    chapter2-methods \
+    chapter3-bindings \
+    chapter4-customPropertyTypes \
+    chapter5-listproperties \
+    chapter6-plugins
+
diff --git a/examples/declarative/qtquick1/tutorials/helloworld/Cell.qml b/examples/declarative/qtquick1/tutorials/helloworld/Cell.qml
new file mode 100644 (file)
index 0000000..39f8591
--- /dev/null
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//![0]
+import QtQuick 1.0
+
+//![1]
+Item {
+    id: container
+//![4]
+    property alias cellColor: rectangle.color
+//![4]
+//![5]
+    signal clicked(color cellColor)
+//![5]
+
+    width: 40; height: 25
+//![1]
+
+//![2]
+    Rectangle {
+        id: rectangle
+        border.color: "white"
+        anchors.fill: parent
+    }
+//![2]
+
+//![3]
+    MouseArea {
+        anchors.fill: parent
+        onClicked: container.clicked(container.cellColor)
+    }
+//![3]
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/helloworld/tutorial1.qml b/examples/declarative/qtquick1/tutorials/helloworld/tutorial1.qml
new file mode 100644 (file)
index 0000000..de70995
--- /dev/null
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//![0]
+//![3]
+import QtQuick 1.0
+//![3]
+
+//![1]
+Rectangle {
+    id: page
+    width: 500; height: 200
+    color: "lightgray"
+//![1]
+
+//![2]
+    Text {
+        id: helloText
+        text: "Hello world!"
+        y: 30
+        anchors.horizontalCenter: page.horizontalCenter
+        font.pointSize: 24; font.bold: true
+    }
+//![2]
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/helloworld/tutorial2.qml b/examples/declarative/qtquick1/tutorials/helloworld/tutorial2.qml
new file mode 100644 (file)
index 0000000..88f347a
--- /dev/null
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//![0]
+import QtQuick 1.0
+
+Rectangle {
+    id: page
+    width: 500; height: 200
+    color: "lightgray"
+
+    Text {
+        id: helloText
+        text: "Hello world!"
+        y: 30
+        anchors.horizontalCenter: page.horizontalCenter
+        font.pointSize: 24; font.bold: true
+    }
+
+    Grid {
+        id: colorPicker
+        x: 4; anchors.bottom: page.bottom; anchors.bottomMargin: 4
+        rows: 2; columns: 3; spacing: 3
+
+//![1]
+        Cell { cellColor: "red"; onClicked: helloText.color = cellColor }
+//![1]
+        Cell { cellColor: "green"; onClicked: helloText.color = cellColor }
+        Cell { cellColor: "blue"; onClicked: helloText.color = cellColor }
+        Cell { cellColor: "yellow"; onClicked: helloText.color = cellColor }
+        Cell { cellColor: "steelblue"; onClicked: helloText.color = cellColor }
+        Cell { cellColor: "black"; onClicked: helloText.color = cellColor }
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/helloworld/tutorial3.qml b/examples/declarative/qtquick1/tutorials/helloworld/tutorial3.qml
new file mode 100644 (file)
index 0000000..282af9c
--- /dev/null
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//![0]
+import QtQuick 1.0
+
+Rectangle {
+    id: page
+    width: 500; height: 200
+    color: "lightgray"
+
+    Text {
+        id: helloText
+        text: "Hello world!"
+        y: 30
+        anchors.horizontalCenter: page.horizontalCenter
+        font.pointSize: 24; font.bold: true
+
+//![1]
+        MouseArea { id: mouseArea; anchors.fill: parent }
+//![1]
+
+//![2]
+        states: State {
+            name: "down"; when: mouseArea.pressed == true
+            PropertyChanges { target: helloText; y: 160; rotation: 180; color: "red" }
+        }
+//![2]
+
+//![3]
+        transitions: Transition {
+            from: ""; to: "down"; reversible: true
+            ParallelAnimation {
+                NumberAnimation { properties: "y,rotation"; duration: 500; easing.type: Easing.InOutQuad }
+                ColorAnimation { duration: 500 }
+            }
+        }
+//![3]
+    }
+
+    Grid {
+        id: colorPicker
+        x: 4; anchors.bottom: page.bottom; anchors.bottomMargin: 4
+        rows: 2; columns: 3; spacing: 3
+
+        Cell { cellColor: "red"; onClicked: helloText.color = cellColor }
+        Cell { cellColor: "green"; onClicked: helloText.color = cellColor }
+        Cell { cellColor: "blue"; onClicked: helloText.color = cellColor }
+        Cell { cellColor: "yellow"; onClicked: helloText.color = cellColor }
+        Cell { cellColor: "steelblue"; onClicked: helloText.color = cellColor }
+        Cell { cellColor: "black"; onClicked: helloText.color = cellColor }
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame1/Block.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame1/Block.qml
new file mode 100644 (file)
index 0000000..645e2f0
--- /dev/null
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//![0]
+import QtQuick 1.0
+
+Item {
+    id: block
+
+    Image {
+        id: img
+        anchors.fill: parent
+        source: "../shared/pics/redStone.png"
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame1/Button.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame1/Button.qml
new file mode 100644 (file)
index 0000000..a9aa938
--- /dev/null
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//![0]
+import QtQuick 1.0
+
+Rectangle {
+    id: container
+
+    property string text: "Button"
+
+    signal clicked
+
+    width: buttonLabel.width + 20; height: buttonLabel.height + 5
+    border { width: 1; color: Qt.darker(activePalette.button) }
+    smooth: true
+    radius: 8
+
+    // color the button with a gradient
+    gradient: Gradient {
+        GradientStop {
+            position: 0.0
+            color: {
+                if (mouseArea.pressed)
+                    return activePalette.dark
+                else
+                    return activePalette.light
+            }
+        }
+        GradientStop { position: 1.0; color: activePalette.button }
+    }
+
+    MouseArea {
+        id: mouseArea
+        anchors.fill: parent
+        onClicked: container.clicked();
+    }
+
+    Text {
+        id: buttonLabel
+        anchors.centerIn: container
+        color: activePalette.buttonText
+        text: container.text
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame.qml
new file mode 100644 (file)
index 0000000..d82a33c
--- /dev/null
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//![0]
+import QtQuick 1.0
+
+Rectangle {
+    id: screen
+
+    width: 490; height: 720
+
+    SystemPalette { id: activePalette }
+
+    Item {
+        width: parent.width
+        anchors { top: parent.top; bottom: toolBar.top }
+
+        Image {
+            id: background
+            anchors.fill: parent
+            source: "../shared/pics/background.jpg"
+            fillMode: Image.PreserveAspectCrop
+        }
+    }
+
+    Rectangle {
+        id: toolBar
+        width: parent.width; height: 30
+        color: activePalette.window
+        anchors.bottom: screen.bottom
+
+        Button {
+            anchors { left: parent.left; verticalCenter: parent.verticalCenter }
+            text: "New Game"
+            onClicked: console.log("This doesn't do anything yet...")
+        }
+
+        Text {
+            id: score
+            anchors { right: parent.right; verticalCenter: parent.verticalCenter }
+            text: "Score: Who knows?"
+        }
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame1.qmlproject b/examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame1.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame2/Block.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame2/Block.qml
new file mode 100644 (file)
index 0000000..9da8267
--- /dev/null
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Item {
+    id: block
+
+    Image {
+        id: img
+        anchors.fill: parent
+        source: "../shared/pics/redStone.png"
+    }
+}
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame2/Button.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame2/Button.qml
new file mode 100644 (file)
index 0000000..aef0a1e
--- /dev/null
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: container
+
+    property string text: "Button"
+
+    signal clicked
+
+    width: buttonLabel.width + 20; height: buttonLabel.height + 5
+    border { width: 1; color: Qt.darker(activePalette.button) }
+    smooth: true
+    radius: 8
+
+    // color the button with a gradient
+    gradient: Gradient {
+        GradientStop {
+            position: 0.0
+            color: {
+                if (mouseArea.pressed)
+                    return activePalette.dark
+                else
+                    return activePalette.light
+            }
+        }
+        GradientStop { position: 1.0; color: activePalette.button }
+    }
+
+    MouseArea {
+        id: mouseArea
+        anchors.fill: parent
+        onClicked: container.clicked();
+    }
+
+    Text {
+        id: buttonLabel
+        anchors.centerIn: container
+        color: activePalette.buttonText
+        text: container.text
+    }
+}
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.js b/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.js
new file mode 100644 (file)
index 0000000..c749dc1
--- /dev/null
@@ -0,0 +1,63 @@
+//![0]
+var blockSize = 40;
+var maxColumn = 10;
+var maxRow = 15;
+var maxIndex = maxColumn * maxRow;
+var board = new Array(maxIndex);
+var component;
+
+//Index function used instead of a 2D array
+function index(column, row) {
+    return column + (row * maxColumn);
+}
+
+function startNewGame() {
+    //Delete blocks from previous game
+    for (var i = 0; i < maxIndex; i++) {
+        if (board[i] != null)
+            board[i].destroy();
+    }
+
+    //Calculate board size
+    maxColumn = Math.floor(background.width / blockSize);
+    maxRow = Math.floor(background.height / blockSize);
+    maxIndex = maxRow * maxColumn;
+
+    //Initialize Board
+    board = new Array(maxIndex);
+    for (var column = 0; column < maxColumn; column++) {
+        for (var row = 0; row < maxRow; row++) {
+            board[index(column, row)] = null;
+            createBlock(column, row);
+        }
+    }
+}
+
+function createBlock(column, row) {
+    if (component == null)
+        component = Qt.createComponent("Block.qml");
+
+    // Note that if Block.qml was not a local file, component.status would be
+    // Loading and we should wait for the component's statusChanged() signal to
+    // know when the file is downloaded and ready before calling createObject().
+    if (component.status == Component.Ready) {
+        var dynamicObject = component.createObject(background);
+        if (dynamicObject == null) {
+            console.log("error creating block");
+            console.log(component.errorString());
+            return false;
+        }
+        dynamicObject.x = column * blockSize;
+        dynamicObject.y = row * blockSize;
+        dynamicObject.width = blockSize;
+        dynamicObject.height = blockSize;
+        board[index(column, row)] = dynamicObject;
+    } else {
+        console.log("error loading block component");
+        console.log(component.errorString());
+        return false;
+    }
+    return true;
+}
+//![0]
+
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.qml
new file mode 100644 (file)
index 0000000..24391e5
--- /dev/null
@@ -0,0 +1,85 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+//![2]
+import "samegame.js" as SameGame
+//![2]
+
+Rectangle {
+    id: screen
+
+    width: 490; height: 720
+
+    SystemPalette { id: activePalette }
+
+    Item {
+        width: parent.width
+        anchors { top: parent.top; bottom: toolBar.top }
+
+        Image {
+            id: background
+            anchors.fill: parent
+            source: "../shared/pics/background.jpg"
+            fillMode: Image.PreserveAspectCrop
+        }
+    }
+
+    Rectangle {
+        id: toolBar
+        width: parent.width; height: 32
+        color: activePalette.window
+        anchors.bottom: screen.bottom
+
+//![1]
+        Button {
+            anchors { left: parent.left; verticalCenter: parent.verticalCenter }
+            text: "New Game"
+            onClicked: SameGame.startNewGame()
+        }
+//![1]
+
+        Text {
+            id: score
+            anchors { right: parent.right; verticalCenter: parent.verticalCenter }
+            text: "Score: Who knows?"
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame2.qmlproject b/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame2.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame3/Block.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame3/Block.qml
new file mode 100644 (file)
index 0000000..86c2f70
--- /dev/null
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//![0]
+import QtQuick 1.0
+
+Item {
+    id: block
+
+    property int type: 0
+
+    Image {
+        id: img
+
+        anchors.fill: parent
+        source: {
+            if (type == 0)
+                return "../shared/pics/redStone.png";
+            else if (type == 1)
+                return "../shared/pics/blueStone.png";
+            else
+                return "../shared/pics/greenStone.png";
+        }
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame3/Button.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame3/Button.qml
new file mode 100644 (file)
index 0000000..aef0a1e
--- /dev/null
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: container
+
+    property string text: "Button"
+
+    signal clicked
+
+    width: buttonLabel.width + 20; height: buttonLabel.height + 5
+    border { width: 1; color: Qt.darker(activePalette.button) }
+    smooth: true
+    radius: 8
+
+    // color the button with a gradient
+    gradient: Gradient {
+        GradientStop {
+            position: 0.0
+            color: {
+                if (mouseArea.pressed)
+                    return activePalette.dark
+                else
+                    return activePalette.light
+            }
+        }
+        GradientStop { position: 1.0; color: activePalette.button }
+    }
+
+    MouseArea {
+        id: mouseArea
+        anchors.fill: parent
+        onClicked: container.clicked();
+    }
+
+    Text {
+        id: buttonLabel
+        anchors.centerIn: container
+        color: activePalette.buttonText
+        text: container.text
+    }
+}
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame3/Dialog.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame3/Dialog.qml
new file mode 100644 (file)
index 0000000..0af4e2c
--- /dev/null
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//![0]
+import QtQuick 1.0
+
+Rectangle {
+    id: container
+
+    function show(text) {
+        dialogText.text = text;
+        container.opacity = 1;
+    }
+
+    function hide() {
+        container.opacity = 0;
+    }
+
+    width: dialogText.width + 20
+    height: dialogText.height + 20
+    opacity: 0
+
+    Text {
+        id: dialogText
+        anchors.centerIn: parent
+        text: ""
+    }
+
+    MouseArea {
+        anchors.fill: parent
+        onClicked: hide();
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.js b/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.js
new file mode 100644 (file)
index 0000000..01edc5b
--- /dev/null
@@ -0,0 +1,174 @@
+/* This script file handles the game logic */
+var maxColumn = 10;
+var maxRow = 15;
+var maxIndex = maxColumn * maxRow;
+var board = new Array(maxIndex);
+var component;
+
+//Index function used instead of a 2D array
+function index(column, row) {
+    return column + (row * maxColumn);
+}
+
+function startNewGame() {
+    //Calculate board size
+    maxColumn = Math.floor(gameCanvas.width / gameCanvas.blockSize);
+    maxRow = Math.floor(gameCanvas.height / gameCanvas.blockSize);
+    maxIndex = maxRow * maxColumn;
+
+    //Close dialogs
+    dialog.hide();
+
+    //Initialize Board
+    board = new Array(maxIndex);
+    gameCanvas.score = 0;
+    for (var column = 0; column < maxColumn; column++) {
+        for (var row = 0; row < maxRow; row++) {
+            board[index(column, row)] = null;
+            createBlock(column, row);
+        }
+    }
+}
+
+function createBlock(column, row) {
+    if (component == null)
+        component = Qt.createComponent("Block.qml");
+
+    // Note that if Block.qml was not a local file, component.status would be
+    // Loading and we should wait for the component's statusChanged() signal to
+    // know when the file is downloaded and ready before calling createObject().
+    if (component.status == Component.Ready) {
+        var dynamicObject = component.createObject(gameCanvas);
+        if (dynamicObject == null) {
+            console.log("error creating block");
+            console.log(component.errorString());
+            return false;
+        }
+        dynamicObject.type = Math.floor(Math.random() * 3);
+        dynamicObject.x = column * gameCanvas.blockSize;
+        dynamicObject.y = row * gameCanvas.blockSize;
+        dynamicObject.width = gameCanvas.blockSize;
+        dynamicObject.height = gameCanvas.blockSize;
+        board[index(column, row)] = dynamicObject;
+    } else {
+        console.log("error loading block component");
+        console.log(component.errorString());
+        return false;
+    }
+    return true;
+}
+
+var fillFound; //Set after a floodFill call to the number of blocks found
+var floodBoard; //Set to 1 if the floodFill reaches off that node
+
+//![1]
+function handleClick(xPos, yPos) {
+    var column = Math.floor(xPos / gameCanvas.blockSize);
+    var row = Math.floor(yPos / gameCanvas.blockSize);
+    if (column >= maxColumn || column < 0 || row >= maxRow || row < 0)
+        return;
+    if (board[index(column, row)] == null)
+        return;
+    //If it's a valid block, remove it and all connected (does nothing if it's not connected)
+    floodFill(column, row, -1);
+    if (fillFound <= 0)
+        return;
+    gameCanvas.score += (fillFound - 1) * (fillFound - 1);
+    shuffleDown();
+    victoryCheck();
+}
+//![1]
+
+function floodFill(column, row, type) {
+    if (board[index(column, row)] == null)
+        return;
+    var first = false;
+    if (type == -1) {
+        first = true;
+        type = board[index(column, row)].type;
+
+        //Flood fill initialization
+        fillFound = 0;
+        floodBoard = new Array(maxIndex);
+    }
+    if (column >= maxColumn || column < 0 || row >= maxRow || row < 0)
+        return;
+    if (floodBoard[index(column, row)] == 1 || (!first && type != board[index(column, row)].type))
+        return;
+    floodBoard[index(column, row)] = 1;
+    floodFill(column + 1, row, type);
+    floodFill(column - 1, row, type);
+    floodFill(column, row + 1, type);
+    floodFill(column, row - 1, type);
+    if (first == true && fillFound == 0)
+        return;     //Can't remove single blocks
+    board[index(column, row)].opacity = 0;
+    board[index(column, row)] = null;
+    fillFound += 1;
+}
+
+function shuffleDown() {
+    //Fall down
+    for (var column = 0; column < maxColumn; column++) {
+        var fallDist = 0;
+        for (var row = maxRow - 1; row >= 0; row--) {
+            if (board[index(column, row)] == null) {
+                fallDist += 1;
+            } else {
+                if (fallDist > 0) {
+                    var obj = board[index(column, row)];
+                    obj.y += fallDist * gameCanvas.blockSize;
+                    board[index(column, row + fallDist)] = obj;
+                    board[index(column, row)] = null;
+                }
+            }
+        }
+    }
+    //Fall to the left
+    var fallDist = 0;
+    for (var column = 0; column < maxColumn; column++) {
+        if (board[index(column, maxRow - 1)] == null) {
+            fallDist += 1;
+        } else {
+            if (fallDist > 0) {
+                for (var row = 0; row < maxRow; row++) {
+                    var obj = board[index(column, row)];
+                    if (obj == null)
+                        continue;
+                    obj.x -= fallDist * gameCanvas.blockSize;
+                    board[index(column - fallDist, row)] = obj;
+                    board[index(column, row)] = null;
+                }
+            }
+        }
+    }
+}
+
+//![2]
+function victoryCheck() {
+    //Award bonus points if no blocks left
+    var deservesBonus = true;
+    for (var column = maxColumn - 1; column >= 0; column--)
+        if (board[index(column, maxRow - 1)] != null)
+        deservesBonus = false;
+    if (deservesBonus)
+        gameCanvas.score += 500;
+
+    //Check whether game has finished
+    if (deservesBonus || !(floodMoveCheck(0, maxRow - 1, -1)))
+        dialog.show("Game Over. Your score is " + gameCanvas.score);
+}
+//![2]
+
+//only floods up and right, to see if it can find adjacent same-typed blocks
+function floodMoveCheck(column, row, type) {
+    if (column >= maxColumn || column < 0 || row >= maxRow || row < 0)
+        return false;
+    if (board[index(column, row)] == null)
+        return false;
+    var myType = board[index(column, row)].type;
+    if (type == myType)
+        return true;
+    return floodMoveCheck(column + 1, row, myType) || floodMoveCheck(column, row - 1, board[index(column, row)].type);
+}
+
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.qml
new file mode 100644 (file)
index 0000000..068fa8b
--- /dev/null
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//![0]
+import QtQuick 1.0
+import "samegame.js" as SameGame
+
+Rectangle {
+    id: screen
+
+    width: 490; height: 720
+
+    SystemPalette { id: activePalette }
+
+    Item {
+        width: parent.width
+        anchors { top: parent.top; bottom: toolBar.top }
+
+        Image {
+            id: background
+            anchors.fill: parent
+            source: "../shared/pics/background.jpg"
+            fillMode: Image.PreserveAspectCrop
+        }
+
+//![1]
+        Item {
+            id: gameCanvas
+
+            property int score: 0
+            property int blockSize: 40
+
+            width: parent.width - (parent.width % blockSize)
+            height: parent.height - (parent.height % blockSize)
+            anchors.centerIn: parent
+
+            MouseArea {
+                anchors.fill: parent
+                onClicked: SameGame.handleClick(mouse.x, mouse.y)
+            }
+        }
+//![1]
+    }
+
+//![2]
+    Dialog {
+        id: dialog
+        anchors.centerIn: parent
+        z: 100
+    }
+//![2]
+
+    Rectangle {
+        id: toolBar
+        width: parent.width; height: 30
+        color: activePalette.window
+        anchors.bottom: screen.bottom
+
+        Button {
+            anchors { left: parent.left; verticalCenter: parent.verticalCenter }
+            text: "New Game"
+            onClicked: SameGame.startNewGame()
+        }
+
+        Text {
+            id: score
+            anchors { right: parent.right; verticalCenter: parent.verticalCenter }
+            text: "Score: Who knows?"
+        }
+    }
+}
+//![0]
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame3.qmlproject b/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame3.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/BoomBlock.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/BoomBlock.qml
new file mode 100644 (file)
index 0000000..08ee0ef
--- /dev/null
@@ -0,0 +1,122 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import Qt.labs.particles 1.0
+
+Item {
+    id: block
+
+    property int type: 0
+    property bool dying: false
+
+    //![1]
+    property bool spawned: false
+
+    Behavior on x {
+        enabled: spawned;
+        SpringAnimation{ spring: 2; damping: 0.2 }
+    }
+    Behavior on y {
+        SpringAnimation{ spring: 2; damping: 0.2 }
+    }
+    //![1]
+
+    //![2]
+    Image {
+        id: img
+
+        anchors.fill: parent
+        source: {
+            if (type == 0)
+                return "../../shared/pics/redStone.png";
+            else if (type == 1)
+                return "../../shared/pics/blueStone.png";
+            else
+                return "../../shared/pics/greenStone.png";
+        }
+        opacity: 0
+
+        Behavior on opacity {
+            NumberAnimation { properties:"opacity"; duration: 200 }
+        }
+    }
+    //![2]
+
+    //![3]
+    Particles {
+        id: particles
+
+        width: 1; height: 1
+        anchors.centerIn: parent
+
+        emissionRate: 0
+        lifeSpan: 700; lifeSpanDeviation: 600
+        angle: 0; angleDeviation: 360;
+        velocity: 100; velocityDeviation: 30
+        source: {
+            if (type == 0)
+                return "../../shared/pics/redStar.png";
+            else if (type == 1)
+                return "../../shared/pics/blueStar.png";
+            else
+                return "../../shared/pics/greenStar.png";
+        }
+    }
+    //![3]
+
+    //![4]
+    states: [
+        State {
+            name: "AliveState"
+            when: spawned == true && dying == false
+            PropertyChanges { target: img; opacity: 1 }
+        },
+
+        State {
+            name: "DeathState"
+            when: dying == true
+            StateChangeScript { script: particles.burst(50); }
+            PropertyChanges { target: img; opacity: 0 }
+            StateChangeScript { script: block.destroy(1000); }
+        }
+    ]
+    //![4]
+}
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Button.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Button.qml
new file mode 100644 (file)
index 0000000..aef0a1e
--- /dev/null
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: container
+
+    property string text: "Button"
+
+    signal clicked
+
+    width: buttonLabel.width + 20; height: buttonLabel.height + 5
+    border { width: 1; color: Qt.darker(activePalette.button) }
+    smooth: true
+    radius: 8
+
+    // color the button with a gradient
+    gradient: Gradient {
+        GradientStop {
+            position: 0.0
+            color: {
+                if (mouseArea.pressed)
+                    return activePalette.dark
+                else
+                    return activePalette.light
+            }
+        }
+        GradientStop { position: 1.0; color: activePalette.button }
+    }
+
+    MouseArea {
+        id: mouseArea
+        anchors.fill: parent
+        onClicked: container.clicked();
+    }
+
+    Text {
+        id: buttonLabel
+        anchors.centerIn: container
+        color: activePalette.buttonText
+        text: container.text
+    }
+}
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Dialog.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Dialog.qml
new file mode 100644 (file)
index 0000000..6276fcf
--- /dev/null
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+//![0]
+Rectangle {
+    id: container
+//![0]
+
+//![1]
+    property string inputText: textInput.text
+    signal closed
+
+    function show(text) {
+        dialogText.text = text;
+        container.opacity = 1;
+        textInput.opacity = 0;
+    }
+
+    function showWithInput(text) {
+        show(text);
+        textInput.opacity = 1;
+        textInput.focus = true;
+        textInput.text = ""
+    }
+
+    function hide() {
+        textInput.focus = false;
+        container.opacity = 0;
+        container.closed();
+    }
+//![1]
+
+    width: dialogText.width + textInput.width + 20
+    height: dialogText.height + 20
+    opacity: 0
+    visible: opacity > 0
+
+    Text {
+        id: dialogText
+        anchors { verticalCenter: parent.verticalCenter; left: parent.left; leftMargin: 10 }
+        text: ""
+    }
+
+//![2]
+    TextInput {
+        id: textInput
+        anchors { verticalCenter: parent.verticalCenter; left: dialogText.right }
+        width: 80
+        text: ""
+
+        onAccepted: container.hide()    // close dialog when Enter is pressed
+    }
+//![2]
+
+    MouseArea {
+        anchors.fill: parent
+
+        onClicked:  {
+            if (textInput.text == "" && textInput.opacity > 0)
+                textInput.openSoftwareInputPanel();
+            else
+                hide();
+        }
+    }
+
+//![3]
+}
+//![3]
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/samegame.js b/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/samegame.js
new file mode 100755 (executable)
index 0000000..59ac446
--- /dev/null
@@ -0,0 +1,225 @@
+/* This script file handles the game logic */
+var maxColumn = 10;
+var maxRow = 15;
+var maxIndex = maxColumn * maxRow;
+var board = new Array(maxIndex);
+var component;
+var scoresURL = "";
+var gameDuration;
+
+//Index function used instead of a 2D array
+function index(column, row) {
+    return column + (row * maxColumn);
+}
+
+function startNewGame() {
+    //Delete blocks from previous game
+    for (var i = 0; i < maxIndex; i++) {
+        if (board[i] != null)
+            board[i].destroy();
+    }
+
+    //Calculate board size
+    maxColumn = Math.floor(gameCanvas.width / gameCanvas.blockSize);
+    maxRow = Math.floor(gameCanvas.height / gameCanvas.blockSize);
+    maxIndex = maxRow * maxColumn;
+
+    //Close dialogs
+    nameInputDialog.hide();
+    dialog.hide();
+
+    //Initialize Board
+    board = new Array(maxIndex);
+    gameCanvas.score = 0;
+    for (var column = 0; column < maxColumn; column++) {
+        for (var row = 0; row < maxRow; row++) {
+            board[index(column, row)] = null;
+            createBlock(column, row);
+        }
+    }
+
+    gameDuration = new Date();
+}
+
+function createBlock(column, row) {
+    if (component == null)
+        component = Qt.createComponent("content/BoomBlock.qml");
+
+    // Note that if Block.qml was not a local file, component.status would be
+    // Loading and we should wait for the component's statusChanged() signal to
+    // know when the file is downloaded and ready before calling createObject().
+    if (component.status == Component.Ready) {
+        var dynamicObject = component.createObject(gameCanvas);
+        if (dynamicObject == null) {
+            console.log("error creating block");
+            console.log(component.errorString());
+            return false;
+        }
+        dynamicObject.type = Math.floor(Math.random() * 3);
+        dynamicObject.x = column * gameCanvas.blockSize;
+        dynamicObject.y = row * gameCanvas.blockSize;
+        dynamicObject.width = gameCanvas.blockSize;
+        dynamicObject.height = gameCanvas.blockSize;
+        dynamicObject.spawned = true;
+        board[index(column, row)] = dynamicObject;
+    } else {
+        console.log("error loading block component");
+        console.log(component.errorString());
+        return false;
+    }
+    return true;
+}
+
+var fillFound; //Set after a floodFill call to the number of blocks found
+var floodBoard; //Set to 1 if the floodFill reaches off that node
+
+function handleClick(xPos, yPos) {
+    var column = Math.floor(xPos / gameCanvas.blockSize);
+    var row = Math.floor(yPos / gameCanvas.blockSize);
+    if (column >= maxColumn || column < 0 || row >= maxRow || row < 0)
+        return;
+    if (board[index(column, row)] == null)
+        return;
+    //If it's a valid block, remove it and all connected (does nothing if it's not connected)
+    floodFill(column, row, -1);
+    if (fillFound <= 0)
+        return;
+    gameCanvas.score += (fillFound - 1) * (fillFound - 1);
+    shuffleDown();
+    victoryCheck();
+}
+
+function floodFill(column, row, type) {
+    if (board[index(column, row)] == null)
+        return;
+    var first = false;
+    if (type == -1) {
+        first = true;
+        type = board[index(column, row)].type;
+
+        //Flood fill initialization
+        fillFound = 0;
+        floodBoard = new Array(maxIndex);
+    }
+    if (column >= maxColumn || column < 0 || row >= maxRow || row < 0)
+        return;
+    if (floodBoard[index(column, row)] == 1 || (!first && type != board[index(column, row)].type))
+        return;
+    floodBoard[index(column, row)] = 1;
+    floodFill(column + 1, row, type);
+    floodFill(column - 1, row, type);
+    floodFill(column, row + 1, type);
+    floodFill(column, row - 1, type);
+    if (first == true && fillFound == 0)
+        return;     //Can't remove single blocks
+    board[index(column, row)].dying = true;
+    board[index(column, row)] = null;
+    fillFound += 1;
+}
+
+function shuffleDown() {
+    //Fall down
+    for (var column = 0; column < maxColumn; column++) {
+        var fallDist = 0;
+        for (var row = maxRow - 1; row >= 0; row--) {
+            if (board[index(column, row)] == null) {
+                fallDist += 1;
+            } else {
+                if (fallDist > 0) {
+                    var obj = board[index(column, row)];
+                    obj.y = (row + fallDist) * gameCanvas.blockSize;
+                    board[index(column, row + fallDist)] = obj;
+                    board[index(column, row)] = null;
+                }
+            }
+        }
+    }
+    //Fall to the left
+    fallDist = 0;
+    for (column = 0; column < maxColumn; column++) {
+        if (board[index(column, maxRow - 1)] == null) {
+            fallDist += 1;
+        } else {
+            if (fallDist > 0) {
+                for (row = 0; row < maxRow; row++) {
+                    obj = board[index(column, row)];
+                    if (obj == null)
+                        continue;
+                    obj.x = (column - fallDist) * gameCanvas.blockSize;
+                    board[index(column - fallDist, row)] = obj;
+                    board[index(column, row)] = null;
+                }
+            }
+        }
+    }
+}
+
+//![3]
+function victoryCheck() {
+//![3]
+    //Award bonus points if no blocks left
+    var deservesBonus = true;
+    for (var column = maxColumn - 1; column >= 0; column--)
+        if (board[index(column, maxRow - 1)] != null)
+        deservesBonus = false;
+    if (deservesBonus)
+        gameCanvas.score += 500;
+
+//![4]
+    //Check whether game has finished
+    if (deservesBonus || !(floodMoveCheck(0, maxRow - 1, -1))) {
+        gameDuration = new Date() - gameDuration;
+        nameInputDialog.showWithInput("You won! Please enter your name: ");
+    }
+}
+//![4]
+
+//only floods up and right, to see if it can find adjacent same-typed blocks
+function floodMoveCheck(column, row, type) {
+    if (column >= maxColumn || column < 0 || row >= maxRow || row < 0)
+        return false;
+    if (board[index(column, row)] == null)
+        return false;
+    var myType = board[index(column, row)].type;
+    if (type == myType)
+        return true;
+    return floodMoveCheck(column + 1, row, myType) || floodMoveCheck(column, row - 1, board[index(column, row)].type);
+}
+
+//![2]
+function saveHighScore(name) {
+    if (scoresURL != "")
+        sendHighScore(name);
+
+    var db = openDatabaseSync("SameGameScores", "1.0", "Local SameGame High Scores", 100);
+    var dataStr = "INSERT INTO Scores VALUES(?, ?, ?, ?)";
+    var data = [name, gameCanvas.score, maxColumn + "x" + maxRow, Math.floor(gameDuration / 1000)];
+    db.transaction(function(tx) {
+        tx.executeSql('CREATE TABLE IF NOT EXISTS Scores(name TEXT, score NUMBER, gridSize TEXT, time NUMBER)');
+        tx.executeSql(dataStr, data);
+
+        var rs = tx.executeSql('SELECT * FROM Scores WHERE gridSize = "12x17" ORDER BY score desc LIMIT 10');
+        var r = "\nHIGH SCORES for a standard sized grid\n\n"
+        for (var i = 0; i < rs.rows.length; i++) {
+            r += (i + 1) + ". " + rs.rows.item(i).name + ' got ' + rs.rows.item(i).score + ' points in ' + rs.rows.item(i).time + ' seconds.\n';
+        }
+        dialog.show(r);
+    });
+}
+//![2]
+
+//![1]
+function sendHighScore(name) {
+    var postman = new XMLHttpRequest()
+        var postData = "name=" + name + "&score=" + gameCanvas.score + "&gridSize=" + maxColumn + "x" + maxRow + "&time=" + Math.floor(gameDuration / 1000);
+    postman.open("POST", scoresURL, true);
+    postman.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+    postman.onreadystatechange = function() {
+        if (postman.readyState == postman.DONE) {
+            dialog.show("Your score has been uploaded.");
+        }
+    }
+    postman.send(postData);
+}
+//![1]
+
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/README b/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/README
new file mode 100644 (file)
index 0000000..eaa00fa
--- /dev/null
@@ -0,0 +1 @@
+The SameGame example can interface with a simple PHP script to store XML high score data on a remote server. We do not have a publically accessible server available for this use, but if you have access to a PHP capable webserver you can copy the files (score_data.xml, score.php, score_style.xsl) to it and alter the highscore_server variable at the top of the samegame.js file to point to it.
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_data.xml b/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_data.xml
new file mode 100755 (executable)
index 0000000..c3fd90d
--- /dev/null
@@ -0,0 +1,2 @@
+<record><score>1000000</score><name>Alan the Tester</name><gridSize>0x0</gridSize><seconds>0</seconds></record>
+<record><score>6213</score><name>Alan</name><gridSize>12x17</gridSize><seconds>51</seconds></record>
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_style.xsl b/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_style.xsl
new file mode 100755 (executable)
index 0000000..670354c
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:template match="/">
+  <html>
+  <head><title>SameGame High Scores</title></head>
+  <body>
+  <h2>SameGame High Scores</h2>
+    <table border="1">
+      <tr bgcolor="lightsteelblue">
+        <th>Name</th>
+        <th>Score</th>
+        <th>Grid Size</th>
+        <th>Time, s</th>
+      </tr>
+      <xsl:for-each select="records/record">
+      <xsl:sort select="score" data-type="number" order="descending"/>
+      <tr>
+        <td><xsl:value-of select="name"/></td>
+        <td><xsl:value-of select="score"/></td>
+        <td><xsl:value-of select="gridSize"/></td>
+        <td><xsl:value-of select="seconds"/></td>
+      </tr>
+      </xsl:for-each>
+    </table>
+  </body>
+  </html>
+</xsl:template>
+</xsl:stylesheet>
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/scores.php b/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/scores.php
new file mode 100755 (executable)
index 0000000..f2ccb8e
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+    $score = $_POST["score"];
+    echo "<html>";
+    echo "<head><title>SameGame High Scores</title></head><body>";
+    if($score > 0){#Sending in a new high score
+        $name = $_POST["name"];
+        $grid = $_POST["gridSize"];
+        $time = $_POST["time"];
+        if($name == "")
+            $name = "Anonymous";
+    $file = fopen("score_data.xml", "a");
+        $ret = fwrite($file, "<record><score>". $score . "</score><name>"
+            . $name . "</name><gridSize>" . $grid . "</gridSize><seconds>"
+            . $time . "</seconds></record>\n");
+        echo "Your score has been recorded. Thanks for playing!";
+        if($ret == False)
+            echo "<br/> There was an error though, so don't expect to see that score again.";
+    }else{#Read high score list
+        #Now uses XSLT to display. So just print the file. With XML cruft added.
+        #Note that firefox at least won't apply the XSLT on a php file. So redirecting
+    $file = fopen("scores.xml", "w");
+        $ret = fwrite($file, '<?xml version="1.0" encoding="ISO-8859-1"?>' . "\n"
+            . '<?xml-stylesheet type="text/xsl" href="score_style.xsl"?>' . "\n"
+            . "<records>\n" . file_get_contents("score_data.xml") . "</records>\n");
+        if($ret == False)
+            echo "There was an internal error. Sorry.";
+        else
+            echo '<script type="text/javascript">window.location.replace("scores.xml")</script>';
+    }
+    echo "</body></html>";
+?>
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame.qml
new file mode 100644 (file)
index 0000000..157cd13
--- /dev/null
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import "content"
+import "content/samegame.js" as SameGame
+
+Rectangle {
+    id: screen
+
+    width: 490; height: 720
+
+    SystemPalette { id: activePalette }
+
+    Item {
+        width: parent.width
+        anchors { top: parent.top; bottom: toolBar.top }
+
+        Image {
+            id: background
+            anchors.fill: parent
+            source: "../shared/pics/background.jpg"
+            fillMode: Image.PreserveAspectCrop
+        }
+
+        Item {
+            id: gameCanvas
+            property int score: 0
+            property int blockSize: 40
+
+            anchors.centerIn: parent
+            width: parent.width - (parent.width % blockSize);
+            height: parent.height - (parent.height % blockSize);
+
+            MouseArea {
+                anchors.fill: parent; onClicked: SameGame.handleClick(mouse.x,mouse.y);
+            }
+        }
+    }
+
+    Dialog {
+        id: dialog
+        anchors.centerIn: parent
+        z: 100
+    }
+
+    //![0]
+    Dialog {
+        id: nameInputDialog
+        anchors.centerIn: parent
+        z: 100
+
+        onClosed: {
+            if (nameInputDialog.inputText != "")
+                SameGame.saveHighScore(nameInputDialog.inputText);
+        }
+    }
+    //![0]
+
+    Rectangle {
+        id: toolBar
+        width: parent.width; height: 30
+        color: activePalette.window
+        anchors.bottom: screen.bottom
+
+        Button {
+            anchors { left: parent.left; verticalCenter: parent.verticalCenter }
+            text: "New Game"
+            onClicked: SameGame.startNewGame()
+        }
+
+        Text {
+            id: score
+            anchors { right: parent.right; verticalCenter: parent.verticalCenter }
+            text: "Score: " + gameCanvas.score
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame4.qmlproject b/examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame4.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/tutorials/samegame/shared/pics/background.jpg b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/background.jpg
new file mode 100644 (file)
index 0000000..903d395
Binary files /dev/null and b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/background.jpg differ
diff --git a/examples/declarative/qtquick1/tutorials/samegame/shared/pics/blueStar.png b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/blueStar.png
new file mode 100644 (file)
index 0000000..ff9588f
Binary files /dev/null and b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/blueStar.png differ
diff --git a/examples/declarative/qtquick1/tutorials/samegame/shared/pics/blueStone.png b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/blueStone.png
new file mode 100644 (file)
index 0000000..20e43c7
Binary files /dev/null and b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/blueStone.png differ
diff --git a/examples/declarative/qtquick1/tutorials/samegame/shared/pics/greenStar.png b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/greenStar.png
new file mode 100644 (file)
index 0000000..cd06854
Binary files /dev/null and b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/greenStar.png differ
diff --git a/examples/declarative/qtquick1/tutorials/samegame/shared/pics/greenStone.png b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/greenStone.png
new file mode 100644 (file)
index 0000000..b568a19
Binary files /dev/null and b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/greenStone.png differ
diff --git a/examples/declarative/qtquick1/tutorials/samegame/shared/pics/redStar.png b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/redStar.png
new file mode 100644 (file)
index 0000000..0a4dffe
Binary files /dev/null and b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/redStar.png differ
diff --git a/examples/declarative/qtquick1/tutorials/samegame/shared/pics/redStone.png b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/redStone.png
new file mode 100644 (file)
index 0000000..36b09a2
Binary files /dev/null and b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/redStone.png differ
diff --git a/examples/declarative/qtquick1/tutorials/samegame/shared/pics/star.png b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/star.png
new file mode 100644 (file)
index 0000000..defbde5
Binary files /dev/null and b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/star.png differ
diff --git a/examples/declarative/qtquick1/tutorials/samegame/shared/pics/yellowStone.png b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/yellowStone.png
new file mode 100644 (file)
index 0000000..b1ce762
Binary files /dev/null and b/examples/declarative/qtquick1/tutorials/samegame/shared/pics/yellowStone.png differ
diff --git a/examples/declarative/qtquick1/tutorials/tutorials.pro b/examples/declarative/qtquick1/tutorials/tutorials.pro
new file mode 100644 (file)
index 0000000..0a82c1e
--- /dev/null
@@ -0,0 +1,5 @@
+TEMPLATE = subdirs
+
+SUBDIRS += \
+    extending
+
diff --git a/examples/declarative/qtquick1/tutorials/tutorials.qmlproject b/examples/declarative/qtquick1/tutorials/tutorials.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/ui-components/README b/examples/declarative/qtquick1/ui-components/README
new file mode 100644 (file)
index 0000000..7eecec1
--- /dev/null
@@ -0,0 +1,39 @@
+With Qt Declarative, it is easy to implement the UI components that you need
+in exactly the way that you want. These examples demonstrate this by creating
+a selection of user interface components where the look and feel has been
+completely defined in a QML file.
+
+The example launcher provided with Qt can be used to explore each of the
+examples in this directory. But most can also be viewed directly with the
+QML viewer utility, without requiring compilation.
+
+Documentation for these examples can be found via the Tutorials and Examples
+link in the main Qt documentation.
+
+
+Finding the Qt Examples and Demos launcher
+==========================================
+
+On Windows:
+
+The launcher can be accessed via the Windows Start menu. Select the menu
+entry entitled "Qt Examples and Demos" entry in the submenu containing
+the Qt tools.
+
+On Mac OS X:
+
+For the binary distribution, the qtdemo executable is installed in the
+/Developer/Applications/Qt directory. For the source distribution, it is
+installed alongside the other Qt tools on the path specified when Qt is
+configured.
+
+On Unix/Linux:
+
+The qtdemo executable is installed alongside the other Qt tools on the path
+specified when Qt is configured.
+
+On all platforms:
+
+The source code for the launcher can be found in the demos/qtdemo directory
+in the Qt package. This example is built at the same time as the Qt libraries,
+tools, examples, and demonstrations.
diff --git a/examples/declarative/qtquick1/ui-components/dialcontrol/content/Dial.qml b/examples/declarative/qtquick1/ui-components/dialcontrol/content/Dial.qml
new file mode 100644 (file)
index 0000000..5b37992
--- /dev/null
@@ -0,0 +1,86 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Item {
+    id: root
+    property real value : 0
+
+    width: 210; height: 210
+
+    Image { source: "background.png" }
+
+//! [needle_shadow]
+    Image {
+        x: 96
+        y: 35
+        source: "needle_shadow.png"
+        transform: Rotation {
+            origin.x: 9; origin.y: 67
+            angle: needleRotation.angle
+        }
+    }
+//! [needle_shadow]
+//! [needle]
+    Image {
+        id: needle
+        x: 98; y: 33
+        smooth: true
+        source: "needle.png"
+        transform: Rotation {
+            id: needleRotation
+            origin.x: 5; origin.y: 65
+            //! [needle angle]
+            angle: Math.min(Math.max(-130, root.value*2.6 - 130), 133)
+            Behavior on angle {
+                SpringAnimation {
+                    spring: 1.4
+                    damping: .15
+                }
+            }
+            //! [needle angle]
+        }
+    }
+//! [needle]
+//! [overlay]
+    Image { x: 21; y: 18; source: "overlay.png" }
+//! [overlay]
+}
diff --git a/examples/declarative/qtquick1/ui-components/dialcontrol/content/QuitButton.qml b/examples/declarative/qtquick1/ui-components/dialcontrol/content/QuitButton.qml
new file mode 100644 (file)
index 0000000..39f8f77
--- /dev/null
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+Image {
+    source: "quit.png"
+    scale: quitMouse.pressed ? 0.8 : 1.0
+    smooth: quitMouse.pressed
+    MouseArea {
+        id: quitMouse
+        anchors.fill: parent
+        anchors.margins: -10
+        onClicked: Qt.quit()
+    }
+}
diff --git a/examples/declarative/qtquick1/ui-components/dialcontrol/content/background.png b/examples/declarative/qtquick1/ui-components/dialcontrol/content/background.png
new file mode 100644 (file)
index 0000000..75d555d
Binary files /dev/null and b/examples/declarative/qtquick1/ui-components/dialcontrol/content/background.png differ
diff --git a/examples/declarative/qtquick1/ui-components/dialcontrol/content/needle.png b/examples/declarative/qtquick1/ui-components/dialcontrol/content/needle.png
new file mode 100644 (file)
index 0000000..2d19f75
Binary files /dev/null and b/examples/declarative/qtquick1/ui-components/dialcontrol/content/needle.png differ
diff --git a/examples/declarative/qtquick1/ui-components/dialcontrol/content/needle_shadow.png b/examples/declarative/qtquick1/ui-components/dialcontrol/content/needle_shadow.png
new file mode 100644 (file)
index 0000000..8d8a928
Binary files /dev/null and b/examples/declarative/qtquick1/ui-components/dialcontrol/content/needle_shadow.png differ
diff --git a/examples/declarative/qtquick1/ui-components/dialcontrol/content/overlay.png b/examples/declarative/qtquick1/ui-components/dialcontrol/content/overlay.png
new file mode 100644 (file)
index 0000000..3860a7b
Binary files /dev/null and b/examples/declarative/qtquick1/ui-components/dialcontrol/content/overlay.png differ
diff --git a/examples/declarative/qtquick1/ui-components/dialcontrol/content/quit.png b/examples/declarative/qtquick1/ui-components/dialcontrol/content/quit.png
new file mode 100644 (file)
index 0000000..b822057
Binary files /dev/null and b/examples/declarative/qtquick1/ui-components/dialcontrol/content/quit.png differ
diff --git a/examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qml b/examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qml
new file mode 100644 (file)
index 0000000..9168f81
--- /dev/null
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//! [imports]
+import QtQuick 1.0
+import "content"
+//! [imports]
+
+//! [0]
+Rectangle {
+    color: "#545454"
+    width: 300; height: 300
+
+    // Dial with a slider to adjust it
+    Dial {
+        id: dial
+        anchors.centerIn: parent
+        value: slider.x * 100 / (container.width - 34)
+    }
+
+    Rectangle {
+        id: container
+        anchors { bottom: parent.bottom; left: parent.left
+            right: parent.right; leftMargin: 20; rightMargin: 20
+            bottomMargin: 10
+        }
+        height: 16
+
+        radius: 8
+        opacity: 0.7
+        smooth: true
+        gradient: Gradient {
+            GradientStop { position: 0.0; color: "gray" }
+            GradientStop { position: 1.0; color: "white" }
+        }
+
+        Rectangle {
+            id: slider
+            x: 1; y: 1; width: 30; height: 14
+            radius: 6
+            smooth: true
+            gradient: Gradient {
+                GradientStop { position: 0.0; color: "#424242" }
+                GradientStop { position: 1.0; color: "black" }
+            }
+
+            MouseArea {
+                anchors.fill: parent
+                anchors.margins: -16 // Increase mouse area a lot outside the slider
+                drag.target: parent; drag.axis: Drag.XAxis
+                drag.minimumX: 2; drag.maximumX: container.width - 32
+            }
+        }
+    }
+    QuitButton {
+        anchors.right: parent.right
+        anchors.top: parent.top
+        anchors.margins: 10
+    }
+}
+//! [0]
diff --git a/examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qmlproject b/examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/ui-components/flipable/content/5_heart.png b/examples/declarative/qtquick1/ui-components/flipable/content/5_heart.png
new file mode 100644 (file)
index 0000000..fb59d81
Binary files /dev/null and b/examples/declarative/qtquick1/ui-components/flipable/content/5_heart.png differ
diff --git a/examples/declarative/qtquick1/ui-components/flipable/content/9_club.png b/examples/declarative/qtquick1/ui-components/flipable/content/9_club.png
new file mode 100644 (file)
index 0000000..2545001
Binary files /dev/null and b/examples/declarative/qtquick1/ui-components/flipable/content/9_club.png differ
diff --git a/examples/declarative/qtquick1/ui-components/flipable/content/Card.qml b/examples/declarative/qtquick1/ui-components/flipable/content/Card.qml
new file mode 100644 (file)
index 0000000..f03e299
--- /dev/null
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Flipable {
+    id: container
+
+    property alias image: frontImage.source
+    property bool flipped: true
+    property int xAxis: 0
+    property int yAxis: 0
+    property int angle: 0
+
+    width: front.width; height: front.height
+
+    front: Image { id: frontImage; smooth: true }
+    back: Image { source: "back.png"; smooth: true }
+
+    state: "back"
+
+    MouseArea { anchors.fill: parent; onClicked: container.flipped = !container.flipped }
+
+    transform: Rotation {
+        id: rotation; origin.x: container.width / 2; origin.y: container.height / 2
+        axis.x: container.xAxis; axis.y: container.yAxis; axis.z: 0
+    }
+
+    states: State {
+        name: "back"; when: container.flipped
+        PropertyChanges { target: rotation; angle: container.angle }
+    }
+
+    transitions: Transition {
+        ParallelAnimation {
+            NumberAnimation { target: rotation; properties: "angle"; duration: 600 }
+            SequentialAnimation {
+                NumberAnimation { target: container; property: "scale"; to: 0.75; duration: 300 }
+                NumberAnimation { target: container; property: "scale"; to: 1.0; duration: 300 }
+            }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/ui-components/flipable/content/back.png b/examples/declarative/qtquick1/ui-components/flipable/content/back.png
new file mode 100644 (file)
index 0000000..f715d74
Binary files /dev/null and b/examples/declarative/qtquick1/ui-components/flipable/content/back.png differ
diff --git a/examples/declarative/qtquick1/ui-components/flipable/flipable.qml b/examples/declarative/qtquick1/ui-components/flipable/flipable.qml
new file mode 100644 (file)
index 0000000..af98bd0
--- /dev/null
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import "content"
+
+Rectangle {
+    id: window
+
+    width: 480; height: 320
+    color: "darkgreen"
+
+    Row {
+        anchors.centerIn: parent; spacing: 30
+        Card { image: "content/9_club.png"; angle: 180; yAxis: 1 }
+        Card { image: "content/5_heart.png"; angle: 540; xAxis: 1 }
+    }
+}
diff --git a/examples/declarative/qtquick1/ui-components/flipable/flipable.qmlproject b/examples/declarative/qtquick1/ui-components/flipable/flipable.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/ui-components/progressbar/content/ProgressBar.qml b/examples/declarative/qtquick1/ui-components/progressbar/content/ProgressBar.qml
new file mode 100644 (file)
index 0000000..75dc488
--- /dev/null
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Item {
+    id: progressbar
+
+    property int minimum: 0
+    property int maximum: 100
+    property int value: 0
+    property alias color: gradient1.color
+    property alias secondColor: gradient2.color
+
+    width: 250; height: 23
+    clip: true
+
+    BorderImage {
+        source: "background.png"
+        width: parent.width; height: parent.height
+        border { left: 4; top: 4; right: 4; bottom: 4 }
+    }
+
+    Rectangle {
+        id: highlight
+
+        property int widthDest: ((progressbar.width * (value - minimum)) / (maximum - minimum) - 6)
+
+        width: highlight.widthDest
+        Behavior on width { SmoothedAnimation { velocity: 1200 } }
+
+        anchors { left: parent.left; top: parent.top; bottom: parent.bottom; margins: 3 }
+        radius: 1
+        gradient: Gradient {
+            GradientStop { id: gradient1; position: 0.0 }
+            GradientStop { id: gradient2; position: 1.0 }
+        }
+
+    }
+    Text {
+        anchors { right: highlight.right; rightMargin: 6; verticalCenter: parent.verticalCenter }
+        color: "white"
+        font.bold: true
+        text: Math.floor((value - minimum) / (maximum - minimum) * 100) + '%'
+    }
+}
diff --git a/examples/declarative/qtquick1/ui-components/progressbar/content/background.png b/examples/declarative/qtquick1/ui-components/progressbar/content/background.png
new file mode 100644 (file)
index 0000000..9044226
Binary files /dev/null and b/examples/declarative/qtquick1/ui-components/progressbar/content/background.png differ
diff --git a/examples/declarative/qtquick1/ui-components/progressbar/main.qml b/examples/declarative/qtquick1/ui-components/progressbar/main.qml
new file mode 100644 (file)
index 0000000..313aaa3
--- /dev/null
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import "content"
+
+Rectangle {
+    id: main
+
+    width: 600; height: 405
+    color: "#edecec"
+
+    Flickable {
+        anchors.fill: parent
+        contentHeight: column.height + 20
+
+        Column {
+            id: column
+            x: 10; y: 10
+            spacing: 10
+
+            Repeater {
+                model: 25
+
+                ProgressBar {
+                    property int r: Math.floor(Math.random() * 5000 + 1000)
+                    width: main.width - 20
+
+                    NumberAnimation on value { duration: r; from: 0; to: 100; loops: Animation.Infinite }
+                    ColorAnimation on color { duration: r; from: "lightsteelblue"; to: "thistle"; loops: Animation.Infinite }
+                    ColorAnimation on secondColor { duration: r; from: "steelblue"; to: "#CD96CD"; loops: Animation.Infinite }
+                }
+            }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/ui-components/progressbar/progressbar.qmlproject b/examples/declarative/qtquick1/ui-components/progressbar/progressbar.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/ui-components/scrollbar/ScrollBar.qml b/examples/declarative/qtquick1/ui-components/scrollbar/ScrollBar.qml
new file mode 100644 (file)
index 0000000..63dd0bd
--- /dev/null
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Item {
+    id: scrollBar
+
+    // The properties that define the scrollbar's state.
+    // position and pageSize are in the range 0.0 - 1.0.  They are relative to the
+    // height of the page, i.e. a pageSize of 0.5 means that you can see 50%
+    // of the height of the view.
+    // orientation can be either Qt.Vertical or Qt.Horizontal
+    property real position
+    property real pageSize
+    property variant orientation : Qt.Vertical
+
+    // A light, semi-transparent background
+    Rectangle {
+        id: background
+        anchors.fill: parent
+        radius: orientation == Qt.Vertical ? (width/2 - 1) : (height/2 - 1)
+        color: "white"
+        opacity: 0.3
+    }
+
+    // Size the bar to the required size, depending upon the orientation.
+    Rectangle {
+        x: orientation == Qt.Vertical ? 1 : (scrollBar.position * (scrollBar.width-2) + 1)
+        y: orientation == Qt.Vertical ? (scrollBar.position * (scrollBar.height-2) + 1) : 1
+        width: orientation == Qt.Vertical ? (parent.width-2) : (scrollBar.pageSize * (scrollBar.width-2))
+        height: orientation == Qt.Vertical ? (scrollBar.pageSize * (scrollBar.height-2)) : (parent.height-2)
+        radius: orientation == Qt.Vertical ? (width/2 - 1) : (height/2 - 1)
+        color: "black"
+        opacity: 0.7
+    }
+}
diff --git a/examples/declarative/qtquick1/ui-components/scrollbar/main.qml b/examples/declarative/qtquick1/ui-components/scrollbar/main.qml
new file mode 100644 (file)
index 0000000..f282dc4
--- /dev/null
@@ -0,0 +1,93 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    width: 640
+    height: 480
+
+    // Create a flickable to view a large image.
+    Flickable {
+        id: view
+        anchors.fill: parent
+        contentWidth: picture.width
+        contentHeight: picture.height
+
+        Image {
+            id: picture
+            source: "pics/niagara_falls.jpg"
+            asynchronous: true
+        }
+
+        // Only show the scrollbars when the view is moving.
+        states: State {
+            name: "ShowBars"
+            when: view.movingVertically || view.movingHorizontally
+            PropertyChanges { target: verticalScrollBar; opacity: 1 }
+            PropertyChanges { target: horizontalScrollBar; opacity: 1 }
+        }
+
+        transitions: Transition {
+            NumberAnimation { properties: "opacity"; duration: 400 }
+        }
+    }
+
+    // Attach scrollbars to the right and bottom edges of the view.
+    ScrollBar {
+        id: verticalScrollBar
+        width: 12; height: view.height-12
+        anchors.right: view.right
+        opacity: 0
+        orientation: Qt.Vertical
+        position: view.visibleArea.yPosition
+        pageSize: view.visibleArea.heightRatio
+    }
+
+    ScrollBar {
+        id: horizontalScrollBar
+        width: view.width-12; height: 12
+        anchors.bottom: view.bottom
+        opacity: 0
+        orientation: Qt.Horizontal
+        position: view.visibleArea.xPosition
+        pageSize: view.visibleArea.widthRatio
+    }
+}
diff --git a/examples/declarative/qtquick1/ui-components/scrollbar/pics/niagara_falls.jpg b/examples/declarative/qtquick1/ui-components/scrollbar/pics/niagara_falls.jpg
new file mode 100644 (file)
index 0000000..618d808
Binary files /dev/null and b/examples/declarative/qtquick1/ui-components/scrollbar/pics/niagara_falls.jpg differ
diff --git a/examples/declarative/qtquick1/ui-components/scrollbar/scrollbar.qmlproject b/examples/declarative/qtquick1/ui-components/scrollbar/scrollbar.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/ui-components/searchbox/SearchBox.qml b/examples/declarative/qtquick1/ui-components/searchbox/SearchBox.qml
new file mode 100644 (file)
index 0000000..4cbce18
--- /dev/null
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+FocusScope {
+    id: focusScope
+    width: 250; height: 28
+
+    BorderImage {
+        source: "images/lineedit-bg.png"
+        width: parent.width; height: parent.height
+        border { left: 4; top: 4; right: 4; bottom: 4 }
+    }
+
+    BorderImage {
+        source: "images/lineedit-bg-focus.png"
+        width: parent.width; height: parent.height
+        border { left: 4; top: 4; right: 4; bottom: 4 }
+        visible: parent.activeFocus ? true : false
+    }
+
+    Text {
+        id: typeSomething
+        anchors.fill: parent; anchors.leftMargin: 8
+        verticalAlignment: Text.AlignVCenter
+        text: "Type something..."
+        color: "gray"
+        font.italic: true
+    }
+
+    MouseArea {
+        anchors.fill: parent
+        onClicked: { focusScope.focus = true; textInput.openSoftwareInputPanel(); }
+    }
+
+    TextInput {
+        id: textInput
+        anchors { left: parent.left; leftMargin: 8; right: clear.left; rightMargin: 8; verticalCenter: parent.verticalCenter }
+        focus: true
+        selectByMouse: true
+    }
+
+    Image {
+        id: clear
+        anchors { right: parent.right; rightMargin: 8; verticalCenter: parent.verticalCenter }
+        source: "images/clear.png"
+        opacity: 0
+
+        MouseArea {
+            anchors.fill: parent
+            onClicked: { textInput.text = ''; focusScope.focus = true; textInput.openSoftwareInputPanel(); }
+        }
+    }
+
+    states: State {
+        name: "hasText"; when: textInput.text != ''
+        PropertyChanges { target: typeSomething; opacity: 0 }
+        PropertyChanges { target: clear; opacity: 1 }
+    }
+
+    transitions: [
+        Transition {
+            from: ""; to: "hasText"
+            NumberAnimation { exclude: typeSomething; properties: "opacity" }
+        },
+        Transition {
+            from: "hasText"; to: ""
+            NumberAnimation { properties: "opacity" }
+        }
+    ]
+}
diff --git a/examples/declarative/qtquick1/ui-components/searchbox/images/clear.png b/examples/declarative/qtquick1/ui-components/searchbox/images/clear.png
new file mode 100644 (file)
index 0000000..91eb270
Binary files /dev/null and b/examples/declarative/qtquick1/ui-components/searchbox/images/clear.png differ
diff --git a/examples/declarative/qtquick1/ui-components/searchbox/images/lineedit-bg-focus.png b/examples/declarative/qtquick1/ui-components/searchbox/images/lineedit-bg-focus.png
new file mode 100644 (file)
index 0000000..bbfac38
Binary files /dev/null and b/examples/declarative/qtquick1/ui-components/searchbox/images/lineedit-bg-focus.png differ
diff --git a/examples/declarative/qtquick1/ui-components/searchbox/images/lineedit-bg.png b/examples/declarative/qtquick1/ui-components/searchbox/images/lineedit-bg.png
new file mode 100644 (file)
index 0000000..9044226
Binary files /dev/null and b/examples/declarative/qtquick1/ui-components/searchbox/images/lineedit-bg.png differ
diff --git a/examples/declarative/qtquick1/ui-components/searchbox/main.qml b/examples/declarative/qtquick1/ui-components/searchbox/main.qml
new file mode 100644 (file)
index 0000000..fbcafa2
--- /dev/null
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    id: page
+    width: 500; height: 250
+    color: "#edecec"
+
+    MouseArea {
+        anchors.fill: parent
+        onClicked: page.focus = false;
+    }
+    Column {
+        anchors { horizontalCenter: parent.horizontalCenter; verticalCenter: parent.verticalCenter }
+        spacing: 10
+
+        SearchBox { id: search1; KeyNavigation.tab: search2; KeyNavigation.backtab: search3; focus: true }
+        SearchBox { id: search2; KeyNavigation.tab: search3; KeyNavigation.backtab: search1 }
+        SearchBox { id: search3; KeyNavigation.tab: search1; KeyNavigation.backtab: search2 }
+    }
+}
diff --git a/examples/declarative/qtquick1/ui-components/searchbox/searchbox.qmlproject b/examples/declarative/qtquick1/ui-components/searchbox/searchbox.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/ui-components/slideswitch/content/Switch.qml b/examples/declarative/qtquick1/ui-components/slideswitch/content/Switch.qml
new file mode 100644 (file)
index 0000000..2d77f8e
--- /dev/null
@@ -0,0 +1,117 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//![0]
+import QtQuick 1.0
+
+Item {
+    id: toggleswitch
+    width: background.width; height: background.height
+
+//![1]
+    property bool on: false
+//![1]
+
+//![2]
+    function toggle() {
+        if (toggleswitch.state == "on")
+            toggleswitch.state = "off";
+        else
+            toggleswitch.state = "on";
+    }
+//![2]
+
+//![3]
+    function releaseSwitch() {
+        if (knob.x == 1) {
+            if (toggleswitch.state == "off") return;
+        }
+        if (knob.x == 78) {
+            if (toggleswitch.state == "on") return;
+        }
+        toggle();
+    }
+//![3]
+
+//![4]
+    Image {
+        id: background
+        source: "background.svg"
+        MouseArea { anchors.fill: parent; onClicked: toggle() }
+    }
+//![4]
+
+//![5]
+    Image {
+        id: knob
+        x: 1; y: 2
+        source: "knob.svg"
+
+        MouseArea {
+            anchors.fill: parent
+            drag.target: knob; drag.axis: Drag.XAxis; drag.minimumX: 1; drag.maximumX: 78
+            onClicked: toggle()
+            onReleased: releaseSwitch()
+        }
+    }
+//![5]
+
+//![6]
+    states: [
+        State {
+            name: "on"
+            PropertyChanges { target: knob; x: 78 }
+            PropertyChanges { target: toggleswitch; on: true }
+        },
+        State {
+            name: "off"
+            PropertyChanges { target: knob; x: 1 }
+            PropertyChanges { target: toggleswitch; on: false }
+        }
+    ]
+//![6]
+
+//![7]
+    transitions: Transition {
+        NumberAnimation { properties: "x"; easing.type: Easing.InOutQuad; duration: 200 }
+    }
+//![7]
+}
+//![0]
diff --git a/examples/declarative/qtquick1/ui-components/slideswitch/content/background.svg b/examples/declarative/qtquick1/ui-components/slideswitch/content/background.svg
new file mode 100644 (file)
index 0000000..f920d3e
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+       <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.1"
+        xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+        x="0px" y="0px" width="130px" height="56px" viewBox="0 0 130 56" enable-background="new 0 0 130 56" xml:space="preserve">
+<defs>
+</defs>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-37.5005" y1="-66" x2="-37.5005" y2="-121.9985" gradientTransform="matrix(1 0 0 -1 102.5 -66)">
+       <stop  offset="0.0056" style="stop-color:#000000"/>
+       <stop  offset="1" style="stop-color:#EAECEF"/>
+</linearGradient>
+<path fill="url(#SVGID_1_)" d="M101.998,55.998H28c-15.439,0-28-12.562-28-28C0,12.56,12.561,0,28,0h73.998
+       c15.439,0,28,12.559,28,27.998C129.998,43.438,117.438,55.998,101.998,55.998L101.998,55.998z"/>
+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-5.5" y1="-132.1338" x2="-69.5002" y2="-55.8613" gradientTransform="matrix(1 0 0 -1 102.5 -66)">
+       <stop  offset="0.0056" style="stop-color:#000000"/>
+       <stop  offset="1" style="stop-color:#828385"/>
+</linearGradient>
+<path fill="url(#SVGID_2_)" d="M127.999,27.998c0,14.359-11.642,26-26,26h-74c-14.359,0-26-11.641-26-26l0,0
+       c0-14.359,11.641-26,26-26h74C116.357,1.998,127.999,13.639,127.999,27.998L127.999,27.998z"/>
+</svg>
diff --git a/examples/declarative/qtquick1/ui-components/slideswitch/content/knob.svg b/examples/declarative/qtquick1/ui-components/slideswitch/content/knob.svg
new file mode 100644 (file)
index 0000000..fb69337
--- /dev/null
@@ -0,0 +1,867 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In  -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   x="0px"
+   y="0px"
+   width="52px"
+   height="52px"
+   viewBox="0 0 52 52"
+   enable-background="new 0 0 52 52"
+   xml:space="preserve"
+   id="svg3883"
+   sodipodi:version="0.32"
+   inkscape:version="0.44.1"
+   sodipodi:docname="knob_on.svg"
+   sodipodi:docbase="/local/axel/embeddedwidgets/embeddedstories/skins/svgslideswitch/MetallicBrush"><metadata
+   id="metadata4200"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+   inkscape:window-height="640"
+   inkscape:window-width="937"
+   inkscape:pageshadow="2"
+   inkscape:pageopacity="0.0"
+   guidetolerance="10.0"
+   gridtolerance="10.0"
+   objecttolerance="10.0"
+   borderopacity="1.0"
+   bordercolor="#666666"
+   pagecolor="#ffffff"
+   id="base"
+   inkscape:zoom="8.3653846"
+   inkscape:cx="26.000002"
+   inkscape:cy="26"
+   inkscape:window-x="0"
+   inkscape:window-y="0"
+   inkscape:current-layer="svg3883" />
+<defs
+   id="defs3885">
+</defs>
+<linearGradient
+   id="SVGID_1_"
+   gradientUnits="userSpaceOnUse"
+   x1="-59.7866"
+   y1="-115.917"
+   x2="-93.2123"
+   y2="-76.0818"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#000000"
+   id="stop3888" />
+       <stop
+   offset="1"
+   style="stop-color:#EAECEF"
+   id="stop3890" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="26"
+   id="circle3892"
+   style="fill:url(#SVGID_1_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="26"
+   sodipodi:ry="26"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_2_"
+   gradientUnits="userSpaceOnUse"
+   x1="-100.5"
+   y1="-96"
+   x2="-52.5"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop3895" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop3897" />
+       <stop
+   offset="0.6043"
+   style="stop-color:#E7EAED"
+   id="stop3899" />
+       <stop
+   offset="0.6751"
+   style="stop-color:#DEE4E7"
+   id="stop3901" />
+       <stop
+   offset="0.7358"
+   style="stop-color:#CFD9DD"
+   id="stop3903" />
+       <stop
+   offset="0.791"
+   style="stop-color:#B9CACF"
+   id="stop3905" />
+       <stop
+   offset="0.8425"
+   style="stop-color:#9EB6BD"
+   id="stop3907" />
+       <stop
+   offset="0.891"
+   style="stop-color:#7B9EA7"
+   id="stop3909" />
+       <stop
+   offset="0.9374"
+   style="stop-color:#53828C"
+   id="stop3911" />
+       <stop
+   offset="0.9809"
+   style="stop-color:#25626E"
+   id="stop3913" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop3915" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="24"
+   id="circle3917"
+   style="fill:url(#SVGID_2_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="24"
+   sodipodi:ry="24"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_3_"
+   gradientUnits="userSpaceOnUse"
+   x1="-98.6328"
+   y1="-96"
+   x2="-54.3672"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop3920" />
+       <stop
+   offset="0.073"
+   style="stop-color:#8FAECB"
+   id="stop3922" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop3924" />
+       <stop
+   offset="0.5902"
+   style="stop-color:#E7E9ED"
+   id="stop3926" />
+       <stop
+   offset="0.618"
+   style="stop-color:#E4E7EB"
+   id="stop3928" />
+       <stop
+   offset="0.6697"
+   style="stop-color:#E0E4E9"
+   id="stop3930" />
+       <stop
+   offset="0.7211"
+   style="stop-color:#D4DCE1"
+   id="stop3932" />
+       <stop
+   offset="0.7722"
+   style="stop-color:#C0CFD5"
+   id="stop3934" />
+       <stop
+   offset="0.809"
+   style="stop-color:#ADC2C9"
+   id="stop3936" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop3938" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="22.132999"
+   id="circle3940"
+   style="fill:url(#SVGID_3_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="22.132999"
+   sodipodi:ry="22.132999"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_4_"
+   gradientUnits="userSpaceOnUse"
+   x1="-96.7671"
+   y1="-96"
+   x2="-56.2324"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop3943" />
+       <stop
+   offset="0.073"
+   style="stop-color:#86A7C4"
+   id="stop3945" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop3947" />
+       <stop
+   offset="0.577"
+   style="stop-color:#E7EAED"
+   id="stop3949" />
+       <stop
+   offset="0.618"
+   style="stop-color:#E1E6EA"
+   id="stop3951" />
+       <stop
+   offset="0.6697"
+   style="stop-color:#DDE3E8"
+   id="stop3953" />
+       <stop
+   offset="0.7211"
+   style="stop-color:#D1DBE1"
+   id="stop3955" />
+       <stop
+   offset="0.7722"
+   style="stop-color:#BDCDD5"
+   id="stop3957" />
+       <stop
+   offset="0.809"
+   style="stop-color:#AAC0CA"
+   id="stop3959" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop3961" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="20.267"
+   id="circle3963"
+   style="fill:url(#SVGID_4_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="20.267"
+   sodipodi:ry="20.267"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_5_"
+   gradientUnits="userSpaceOnUse"
+   x1="-94.8999"
+   y1="-96"
+   x2="-58.0996"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop3966" />
+       <stop
+   offset="0.073"
+   style="stop-color:#7E9FBC"
+   id="stop3968" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop3970" />
+       <stop
+   offset="0.5709"
+   style="stop-color:#E6E9ED"
+   id="stop3972" />
+       <stop
+   offset="0.618"
+   style="stop-color:#DFE4E9"
+   id="stop3974" />
+       <stop
+   offset="0.6687"
+   style="stop-color:#DBE1E7"
+   id="stop3976" />
+       <stop
+   offset="0.7193"
+   style="stop-color:#CFD9E0"
+   id="stop3978" />
+       <stop
+   offset="0.7695"
+   style="stop-color:#BBCCD6"
+   id="stop3980" />
+       <stop
+   offset="0.809"
+   style="stop-color:#A6BECA"
+   id="stop3982" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop3984" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="18.4"
+   id="circle3986"
+   style="fill:url(#SVGID_5_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="18.4"
+   sodipodi:ry="18.4"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_6_"
+   gradientUnits="userSpaceOnUse"
+   x1="-93.0332"
+   y1="-96"
+   x2="-59.9668"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop3989" />
+       <stop
+   offset="0.073"
+   style="stop-color:#7697B4"
+   id="stop3991" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop3993" />
+       <stop
+   offset="0.5636"
+   style="stop-color:#E6E9ED"
+   id="stop3995" />
+       <stop
+   offset="0.618"
+   style="stop-color:#DCE2E8"
+   id="stop3997" />
+       <stop
+   offset="0.6687"
+   style="stop-color:#D8DFE6"
+   id="stop3999" />
+       <stop
+   offset="0.7193"
+   style="stop-color:#CCD7E0"
+   id="stop4001" />
+       <stop
+   offset="0.7695"
+   style="stop-color:#B8CAD5"
+   id="stop4003" />
+       <stop
+   offset="0.809"
+   style="stop-color:#A3BCCA"
+   id="stop4005" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4007" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="16.533001"
+   id="circle4009"
+   style="fill:url(#SVGID_6_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="16.533001"
+   sodipodi:ry="16.533001"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_7_"
+   gradientUnits="userSpaceOnUse"
+   x1="-91.167"
+   y1="-96"
+   x2="-61.833"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop4012" />
+       <stop
+   offset="0.073"
+   style="stop-color:#6D8FAD"
+   id="stop4014" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop4016" />
+       <stop
+   offset="0.5605"
+   style="stop-color:#E5E8EC"
+   id="stop4018" />
+       <stop
+   offset="0.618"
+   style="stop-color:#DAE1E7"
+   id="stop4020" />
+       <stop
+   offset="0.6679"
+   style="stop-color:#D6DEE5"
+   id="stop4022" />
+       <stop
+   offset="0.7175"
+   style="stop-color:#CAD6DF"
+   id="stop4024" />
+       <stop
+   offset="0.7669"
+   style="stop-color:#B6C9D6"
+   id="stop4026" />
+       <stop
+   offset="0.809"
+   style="stop-color:#9FBACB"
+   id="stop4028" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4030" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="14.667"
+   id="circle4032"
+   style="fill:url(#SVGID_7_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="14.667"
+   sodipodi:ry="14.667"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_8_"
+   gradientUnits="userSpaceOnUse"
+   x1="-89.2998"
+   y1="-96"
+   x2="-63.7002"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop4035" />
+       <stop
+   offset="0.073"
+   style="stop-color:#6587A5"
+   id="stop4037" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop4039" />
+       <stop
+   offset="0.5588"
+   style="stop-color:#E4E8EC"
+   id="stop4041" />
+       <stop
+   offset="0.618"
+   style="stop-color:#D8DFE7"
+   id="stop4043" />
+       <stop
+   offset="0.6675"
+   style="stop-color:#D4DCE5"
+   id="stop4045" />
+       <stop
+   offset="0.7167"
+   style="stop-color:#C8D5E0"
+   id="stop4047" />
+       <stop
+   offset="0.7657"
+   style="stop-color:#B4C8D6"
+   id="stop4049" />
+       <stop
+   offset="0.809"
+   style="stop-color:#9CB8CB"
+   id="stop4051" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4053" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="12.8"
+   id="circle4055"
+   style="fill:url(#SVGID_8_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="12.8"
+   sodipodi:ry="12.8"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_9_"
+   gradientUnits="userSpaceOnUse"
+   x1="-87.4331"
+   y1="-96"
+   x2="-65.5664"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop4058" />
+       <stop
+   offset="0.073"
+   style="stop-color:#5D809D"
+   id="stop4060" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop4062" />
+       <stop
+   offset="0.5567"
+   style="stop-color:#E3E7EC"
+   id="stop4064" />
+       <stop
+   offset="0.618"
+   style="stop-color:#D5DDE6"
+   id="stop4066" />
+       <stop
+   offset="0.6671"
+   style="stop-color:#D1DAE4"
+   id="stop4068" />
+       <stop
+   offset="0.7159"
+   style="stop-color:#C5D3DF"
+   id="stop4070" />
+       <stop
+   offset="0.7645"
+   style="stop-color:#B1C6D6"
+   id="stop4072" />
+       <stop
+   offset="0.809"
+   style="stop-color:#98B5CB"
+   id="stop4074" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4076" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="10.933"
+   id="circle4078"
+   style="fill:url(#SVGID_9_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="10.933"
+   sodipodi:ry="10.933"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_10_"
+   gradientUnits="userSpaceOnUse"
+   x1="-85.5659"
+   y1="-96"
+   x2="-67.4336"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop4081" />
+       <stop
+   offset="0.073"
+   style="stop-color:#547896"
+   id="stop4083" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop4085" />
+       <stop
+   offset="0.5588"
+   style="stop-color:#E1E6EB"
+   id="stop4087" />
+       <stop
+   offset="0.618"
+   style="stop-color:#D3DCE5"
+   id="stop4089" />
+       <stop
+   offset="0.6663"
+   style="stop-color:#CFD9E3"
+   id="stop4091" />
+       <stop
+   offset="0.7143"
+   style="stop-color:#C3D2DF"
+   id="stop4093" />
+       <stop
+   offset="0.7621"
+   style="stop-color:#AFC5D7"
+   id="stop4095" />
+       <stop
+   offset="0.809"
+   style="stop-color:#94B3CC"
+   id="stop4097" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4099" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="9.066"
+   id="circle4101"
+   style="fill:url(#SVGID_10_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="9.066"
+   sodipodi:ry="9.066"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_11_"
+   gradientUnits="userSpaceOnUse"
+   x1="-83.7002"
+   y1="-96"
+   x2="-69.2998"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop4104" />
+       <stop
+   offset="0.073"
+   style="stop-color:#4C708E"
+   id="stop4106" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop4108" />
+       <stop
+   offset="0.5625"
+   style="stop-color:#DEE4EA"
+   id="stop4110" />
+       <stop
+   offset="0.618"
+   style="stop-color:#D0DAE4"
+   id="stop4112" />
+       <stop
+   offset="0.6663"
+   style="stop-color:#CCD7E2"
+   id="stop4114" />
+       <stop
+   offset="0.7143"
+   style="stop-color:#C0D0DE"
+   id="stop4116" />
+       <stop
+   offset="0.7621"
+   style="stop-color:#ACC3D6"
+   id="stop4118" />
+       <stop
+   offset="0.809"
+   style="stop-color:#91B1CC"
+   id="stop4120" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4122" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="7.1999998"
+   id="circle4124"
+   style="fill:url(#SVGID_11_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="7.1999998"
+   sodipodi:ry="7.1999998"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_12_"
+   gradientUnits="userSpaceOnUse"
+   x1="-81.833"
+   y1="-96"
+   x2="-71.167"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop4127" />
+       <stop
+   offset="0.073"
+   style="stop-color:#446986"
+   id="stop4129" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop4131" />
+       <stop
+   offset="0.5757"
+   style="stop-color:#D9E0E8"
+   id="stop4133" />
+       <stop
+   offset="0.618"
+   style="stop-color:#CED8E3"
+   id="stop4135" />
+       <stop
+   offset="0.6655"
+   style="stop-color:#CAD5E2"
+   id="stop4137" />
+       <stop
+   offset="0.7129"
+   style="stop-color:#BECEDD"
+   id="stop4139" />
+       <stop
+   offset="0.7601"
+   style="stop-color:#AAC1D6"
+   id="stop4141" />
+       <stop
+   offset="0.807"
+   style="stop-color:#8EB0CC"
+   id="stop4143" />
+       <stop
+   offset="0.809"
+   style="stop-color:#8DAFCC"
+   id="stop4145" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4147" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="5.3330002"
+   id="circle4149"
+   style="fill:url(#SVGID_12_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="5.3330002"
+   sodipodi:ry="5.3330002"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_13_"
+   gradientUnits="userSpaceOnUse"
+   x1="-79.9658"
+   y1="-96"
+   x2="-73.0342"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop4152" />
+       <stop
+   offset="0.073"
+   style="stop-color:#3B617F"
+   id="stop4154" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop4156" />
+       <stop
+   offset="0.6087"
+   style="stop-color:#CED9E3"
+   id="stop4158" />
+       <stop
+   offset="0.618"
+   style="stop-color:#CBD7E2"
+   id="stop4160" />
+       <stop
+   offset="0.6655"
+   style="stop-color:#C7D4E1"
+   id="stop4162" />
+       <stop
+   offset="0.7129"
+   style="stop-color:#BBCDDD"
+   id="stop4164" />
+       <stop
+   offset="0.7601"
+   style="stop-color:#A7C0D6"
+   id="stop4166" />
+       <stop
+   offset="0.807"
+   style="stop-color:#8BAECD"
+   id="stop4168" />
+       <stop
+   offset="0.809"
+   style="stop-color:#8AADCD"
+   id="stop4170" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4172" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="3.4660001"
+   id="circle4174"
+   style="fill:url(#SVGID_13_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="3.4660001"
+   sodipodi:ry="3.4660001"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+<linearGradient
+   id="SVGID_14_"
+   gradientUnits="userSpaceOnUse"
+   x1="-78.1001"
+   y1="-96"
+   x2="-74.9004"
+   y2="-96"
+   gradientTransform="matrix(1,0,0,-1,102.5,-70)">
+       <stop
+   offset="0.0056"
+   style="stop-color:#8AADCE"
+   id="stop4177" />
+       <stop
+   offset="0.073"
+   style="stop-color:#335977"
+   id="stop4179" />
+       <stop
+   offset="0.5"
+   style="stop-color:#EAECEF"
+   id="stop4181" />
+       <stop
+   offset="0.618"
+   style="stop-color:#C9D5E1"
+   id="stop4183" />
+       <stop
+   offset="0.6648"
+   style="stop-color:#C5D3E0"
+   id="stop4185" />
+       <stop
+   offset="0.7114"
+   style="stop-color:#B9CBDC"
+   id="stop4187" />
+       <stop
+   offset="0.758"
+   style="stop-color:#A5BFD6"
+   id="stop4189" />
+       <stop
+   offset="0.8042"
+   style="stop-color:#89ADCE"
+   id="stop4191" />
+       <stop
+   offset="0.809"
+   style="stop-color:#86ABCD"
+   id="stop4193" />
+       <stop
+   offset="1"
+   style="stop-color:#0E525F"
+   id="stop4195" />
+</linearGradient>
+<circle
+   cx="26"
+   cy="26"
+   r="1.6"
+   id="circle4197"
+   style="fill:url(#SVGID_14_)"
+   sodipodi:cx="26"
+   sodipodi:cy="26"
+   sodipodi:rx="1.6"
+   sodipodi:ry="1.6"
+   transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
+</svg>
\ No newline at end of file
diff --git a/examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qml b/examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qml
new file mode 100644 (file)
index 0000000..0a869b5
--- /dev/null
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import "content"
+
+Rectangle {
+    color: "white"
+    width: 400; height: 250
+
+//![0]
+    Switch { anchors.centerIn: parent; on: false }
+//![0]
+}
diff --git a/examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qmlproject b/examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/ui-components/spinner/content/Spinner.qml b/examples/declarative/qtquick1/ui-components/spinner/content/Spinner.qml
new file mode 100644 (file)
index 0000000..73b6431
--- /dev/null
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Image {
+    property alias model: view.model
+    property alias delegate: view.delegate
+    property alias currentIndex: view.currentIndex
+    property real itemHeight: 30
+
+    source: "spinner-bg.png"
+    clip: true
+
+    PathView {
+        id: view
+        anchors.fill: parent
+
+        pathItemCount: height/itemHeight
+        preferredHighlightBegin: 0.5
+        preferredHighlightEnd: 0.5
+        highlight: Image { source: "spinner-select.png"; width: view.width; height: itemHeight+4 }
+        dragMargin: view.width/2
+
+        path: Path {
+            startX: view.width/2; startY: -itemHeight/2
+            PathLine { x: view.width/2; y: view.pathItemCount*itemHeight + itemHeight }
+        }
+    }
+
+    Keys.onDownPressed: view.incrementCurrentIndex()
+    Keys.onUpPressed: view.decrementCurrentIndex()
+}
diff --git a/examples/declarative/qtquick1/ui-components/spinner/content/spinner-bg.png b/examples/declarative/qtquick1/ui-components/spinner/content/spinner-bg.png
new file mode 100644 (file)
index 0000000..b3556f1
Binary files /dev/null and b/examples/declarative/qtquick1/ui-components/spinner/content/spinner-bg.png differ
diff --git a/examples/declarative/qtquick1/ui-components/spinner/content/spinner-select.png b/examples/declarative/qtquick1/ui-components/spinner/content/spinner-select.png
new file mode 100644 (file)
index 0000000..95a17a1
Binary files /dev/null and b/examples/declarative/qtquick1/ui-components/spinner/content/spinner-select.png differ
diff --git a/examples/declarative/qtquick1/ui-components/spinner/main.qml b/examples/declarative/qtquick1/ui-components/spinner/main.qml
new file mode 100644 (file)
index 0000000..89333ec
--- /dev/null
@@ -0,0 +1,61 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import "content"
+
+Rectangle {
+    width: 240; height: 320
+
+    Column {
+        y: 20; x: 20; spacing: 20
+
+        Spinner {
+            id: spinner
+            width: 200; height: 240
+            focus: true
+            model: 20
+            itemHeight: 30
+            delegate: Text { font.pixelSize: 25; text: index; height: 30 }
+        }
+
+        Text { text: "Current item index: " + spinner.currentIndex }
+    }
+}
diff --git a/examples/declarative/qtquick1/ui-components/spinner/spinner.qmlproject b/examples/declarative/qtquick1/ui-components/spinner/spinner.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/ui-components/tabwidget/TabWidget.qml b/examples/declarative/qtquick1/ui-components/tabwidget/TabWidget.qml
new file mode 100644 (file)
index 0000000..fe838b5
--- /dev/null
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Item {
+    id: tabWidget
+
+    // Setting the default property to stack.children means any child items
+    // of the TabWidget are actually added to the 'stack' item's children.
+    // See the "Property Binding"
+    // documentation for details on default properties.
+    default property alias content: stack.children
+
+    property int current: 0
+
+    onCurrentChanged: setOpacities()
+    Component.onCompleted: setOpacities()
+
+    function setOpacities() {
+        for (var i = 0; i < stack.children.length; ++i) {
+            stack.children[i].opacity = (i == current ? 1 : 0)
+        }
+    }
+
+    Row {
+        id: header
+
+        Repeater {
+            model: stack.children.length
+            delegate: Rectangle {
+                width: tabWidget.width / stack.children.length; height: 36
+
+                Rectangle {
+                    width: parent.width; height: 1
+                    anchors { bottom: parent.bottom; bottomMargin: 1 }
+                    color: "#acb2c2"
+                }
+                BorderImage {
+                    anchors { fill: parent; leftMargin: 2; topMargin: 5; rightMargin: 1 }
+                    border { left: 7; right: 7 }
+                    source: "tab.png"
+                    visible: tabWidget.current == index
+                }
+                Text {
+                    horizontalAlignment: Qt.AlignHCenter; verticalAlignment: Qt.AlignVCenter
+                    anchors.fill: parent
+                    text: stack.children[index].title
+                    elide: Text.ElideRight
+                    font.bold: tabWidget.current == index
+                }
+                MouseArea {
+                    anchors.fill: parent
+                    onClicked: tabWidget.current = index
+                }
+            }
+        }
+    }
+
+    Item {
+        id: stack
+        width: tabWidget.width
+        anchors.top: header.bottom; anchors.bottom: tabWidget.bottom
+    }
+}
diff --git a/examples/declarative/qtquick1/ui-components/tabwidget/main.qml b/examples/declarative/qtquick1/ui-components/tabwidget/main.qml
new file mode 100644 (file)
index 0000000..9367862
--- /dev/null
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+TabWidget {
+    id: tabs
+    width: 640; height: 480
+
+    Rectangle {
+        property string title: "Red"
+        anchors.fill: parent
+        color: "#e3e3e3"
+
+        Rectangle {
+            anchors.fill: parent; anchors.margins: 20
+            color: "#ff7f7f"
+            Text {
+                width: parent.width - 20
+                anchors.centerIn: parent; horizontalAlignment: Qt.AlignHCenter
+                text: "Roses are red"
+                font.pixelSize: 20
+                wrapMode: Text.WordWrap
+            }
+        }
+    }
+
+    Rectangle {
+        property string title: "Green"
+        anchors.fill: parent
+        color: "#e3e3e3"
+
+        Rectangle {
+            anchors.fill: parent; anchors.margins: 20
+            color: "#7fff7f"
+            Text {
+                width: parent.width - 20
+                anchors.centerIn: parent; horizontalAlignment: Qt.AlignHCenter
+                text: "Flower stems are green"
+                font.pixelSize: 20
+                wrapMode: Text.WordWrap
+            }
+        }
+    }
+
+    Rectangle {
+        property string title: "Blue"
+        anchors.fill: parent; color: "#e3e3e3"
+
+        Rectangle {
+            anchors.fill: parent; anchors.margins: 20
+            color: "#7f7fff"
+            Text {
+                width: parent.width - 20
+                anchors.centerIn: parent; horizontalAlignment: Qt.AlignHCenter
+                text: "Violets are blue"
+                font.pixelSize: 20
+                wrapMode: Text.WordWrap
+            }
+        }
+    }
+}
diff --git a/examples/declarative/qtquick1/ui-components/tabwidget/tab.png b/examples/declarative/qtquick1/ui-components/tabwidget/tab.png
new file mode 100644 (file)
index 0000000..ad80216
Binary files /dev/null and b/examples/declarative/qtquick1/ui-components/tabwidget/tab.png differ
diff --git a/examples/declarative/qtquick1/ui-components/tabwidget/tabwidget.qmlproject b/examples/declarative/qtquick1/ui-components/tabwidget/tabwidget.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/ui-components/ui-components.qmlproject b/examples/declarative/qtquick1/ui-components/ui-components.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/xml/xml.qmlproject b/examples/declarative/qtquick1/xml/xml.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/declarative/qtquick1/xml/xmlhttprequest/data.xml b/examples/declarative/qtquick1/xml/xmlhttprequest/data.xml
new file mode 100644 (file)
index 0000000..8b7f1e1
--- /dev/null
@@ -0,0 +1,5 @@
+<data>
+    <element1 />
+    <element2 />
+</data>
+
diff --git a/examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest-example.qml b/examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest-example.qml
new file mode 100644 (file)
index 0000000..9cbdcaf
--- /dev/null
@@ -0,0 +1,95 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+    width: 350; height: 400
+
+    function showRequestInfo(text) {
+        log.text = log.text + "\n" + text
+        console.log(text)
+    }
+
+    Text { id: log; anchors.fill: parent; anchors.margins: 10 }
+
+    Rectangle {
+        id: button
+        anchors.horizontalCenter: parent.horizontalCenter; anchors.bottom: parent.bottom; anchors.margins: 10
+        width: buttonText.width + 10; height: buttonText.height + 10
+        border.width: mouseArea.pressed ? 2 : 1
+        radius : 5; smooth: true
+
+        Text { id: buttonText; anchors.centerIn: parent; text: "Request data.xml" }
+
+        MouseArea {
+            id: mouseArea
+            anchors.fill: parent
+            onClicked: {
+                log.text = ""
+                console.log("\n")
+
+                var doc = new XMLHttpRequest();
+                doc.onreadystatechange = function() {
+                    if (doc.readyState == XMLHttpRequest.HEADERS_RECEIVED) {
+                        showRequestInfo("Headers -->");
+                        showRequestInfo(doc.getAllResponseHeaders ());
+                        showRequestInfo("Last modified -->");
+                        showRequestInfo(doc.getResponseHeader ("Last-Modified"));
+
+                    } else if (doc.readyState == XMLHttpRequest.DONE) {
+                        var a = doc.responseXML.documentElement;
+                        for (var ii = 0; ii < a.childNodes.length; ++ii) {
+                            showRequestInfo(a.childNodes[ii].nodeName);
+                        }
+                        showRequestInfo("Headers -->");
+                        showRequestInfo(doc.getAllResponseHeaders ());
+                        showRequestInfo("Last modified -->");
+                        showRequestInfo(doc.getResponseHeader ("Last-Modified"));
+                    }
+                }
+
+                doc.open("GET", "data.xml");
+                doc.send();
+            }
+        }
+    }
+}
+
diff --git a/examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest.qmlproject b/examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest.qmlproject
new file mode 100644 (file)
index 0000000..d4909f8
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
index 4a3a085..4df4e12 100644 (file)
@@ -69,6 +69,9 @@ tst_examples::tst_examples()
 {
     // Add directories you want excluded here
 
+    // Not run in QSGView
+    excludedDirs << "examples/declarative/qtquick1";
+
     // These snippets are not expected to run on their own.
     excludedDirs << "doc/src/snippets/declarative/visualdatamodel_rootindex";
     excludedDirs << "doc/src/snippets/declarative/qtbinding";
diff --git a/tests/auto/qtquick1/examples/data/dummytest.qml b/tests/auto/qtquick1/examples/data/dummytest.qml
new file mode 100644 (file)
index 0000000..b20e907
--- /dev/null
@@ -0,0 +1,6 @@
+import Qt.VisualTest 4.6
+
+VisualTest {
+    Frame { msec: 0 }
+    Frame { msec: 10 }
+}
diff --git a/tests/auto/qtquick1/examples/data/webbrowser/webbrowser.qml b/tests/auto/qtquick1/examples/data/webbrowser/webbrowser.qml
new file mode 100644 (file)
index 0000000..d31787b
--- /dev/null
@@ -0,0 +1,6 @@
+import Qt.VisualTest 4.6
+
+VisualTest {
+    Frame { msec: 0 }
+    Frame { msec: 2000 }
+}
diff --git a/tests/auto/qtquick1/examples/examples.pro b/tests/auto/qtquick1/examples/examples.pro
new file mode 100644 (file)
index 0000000..14756b9
--- /dev/null
@@ -0,0 +1,14 @@
+load(qttest_p4)
+contains(QT_CONFIG,declarative): QT += declarative qtquick1
+macx:CONFIG -= app_bundle
+
+include(../../../../tools/qmlviewer/qml.pri)
+
+SOURCES += tst_examples.cpp
+DEFINES += SRCDIR=\\\"$$PWD\\\"
+
+CONFIG += parallel_test
+
+QT += core-private gui-private declarative-private qtquick1-private
+
+qpa:CONFIG+=insignificant_test  # QTBUG-20990, aborts
diff --git a/tests/auto/qtquick1/examples/tst_examples.cpp b/tests/auto/qtquick1/examples/tst_examples.cpp
new file mode 100644 (file)
index 0000000..c2859dc
--- /dev/null
@@ -0,0 +1,212 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QLibraryInfo>
+#include <QDir>
+#include <QProcess>
+#include <QDebug>
+#include "qmlruntime.h"
+#include <QDeclarativeView>
+#include <QDeclarativeError>
+
+class tst_examples : public QObject
+{
+    Q_OBJECT
+public:
+    tst_examples();
+
+private slots:
+    void examples_data();
+    void examples();
+
+    void namingConvention();
+private:
+    QStringList excludedDirs;
+
+    void namingConvention(const QDir &);
+    QStringList findQmlFiles(const QDir &);
+};
+
+tst_examples::tst_examples()
+{
+    // Add directories you want excluded here
+
+#ifdef QT_NO_WEBKIT
+    excludedDirs << "examples/declarative/qtquick1/modelviews/webview";
+    excludedDirs << "examples/declarative/qtquick1/webbrowser";
+    excludedDirs << "doc/src/snippets/declarative/qtquick1/webview";
+    excludedDirs << "doc/src/snippets/qtquick1/qtquick1/webview";
+#endif
+
+#ifdef QT_NO_XMLPATTERNS
+    excludedDirs << "examples/declarative/qtquick1/xml/xmldata";
+    excludedDirs << "examples/declarative/qtquick1/twitter";
+    excludedDirs << "examples/declarative/qtquick1/flickr";
+    excludedDirs << "examples/declarative/qtquick1/photoviewer";
+#endif
+}
+
+/*
+This tests that the examples follow the naming convention required
+to have them tested by the examples() test.
+*/
+void tst_examples::namingConvention(const QDir &d)
+{
+    for (int ii = 0; ii < excludedDirs.count(); ++ii) {
+        QString s = excludedDirs.at(ii);
+        if (d.absolutePath().endsWith(s))
+            return;
+    }
+
+    QStringList files = d.entryList(QStringList() << QLatin1String("*.qml"),
+                                    QDir::Files);
+
+    bool seenQml = !files.isEmpty();
+    bool seenLowercase = false;
+
+    foreach (const QString &file, files) {
+        if (file.at(0).isLower())
+            seenLowercase = true;
+    }
+
+    if (!seenQml) {
+        QStringList dirs = d.entryList(QDir::Dirs | QDir::NoDotAndDotDot |
+                QDir::NoSymLinks);
+        foreach (const QString &dir, dirs) {
+            QDir sub = d;
+            sub.cd(dir);
+            namingConvention(sub);
+        }
+    } else if (!seenLowercase) {
+        QFAIL(qPrintable(QString(
+            "Directory %1 violates naming convention; expected at least one qml file "
+            "starting with lower case, got: %2"
+        ).arg(d.absolutePath()).arg(files.join(","))));
+    }
+}
+
+void tst_examples::namingConvention()
+{
+    QString examples = QLibraryInfo::location(QLibraryInfo::ExamplesPath);
+
+    namingConvention(QDir(examples));
+}
+
+QStringList tst_examples::findQmlFiles(const QDir &d)
+{
+    for (int ii = 0; ii < excludedDirs.count(); ++ii) {
+        QString s = excludedDirs.at(ii);
+        if (d.absolutePath().endsWith(s))
+            return QStringList();
+    }
+
+    QStringList rv;
+
+    QStringList cppfiles = d.entryList(QStringList() << QLatin1String("*.cpp"), QDir::Files);
+    if (cppfiles.isEmpty()) {
+        QStringList files = d.entryList(QStringList() << QLatin1String("*.qml"),
+                                        QDir::Files);
+        foreach (const QString &file, files) {
+            if (file.at(0).isLower()) {
+                rv << d.absoluteFilePath(file);
+            }
+        }
+    }
+
+    QStringList dirs = d.entryList(QDir::Dirs | QDir::NoDotAndDotDot |
+                                   QDir::NoSymLinks);
+    foreach (const QString &dir, dirs) {
+        QDir sub = d;
+        sub.cd(dir);
+        rv << findQmlFiles(sub);
+    }
+
+    return rv;
+}
+
+/*
+This test runs all the examples in the declarative UI source tree and ensures
+that they start and exit cleanly.
+
+Examples are any .qml files under the examples/ directory that start
+with a lower case letter.
+*/
+static void silentErrorsMsgHandler(QtMsgType, const char *)
+{
+}
+
+
+void tst_examples::examples_data()
+{
+    QTest::addColumn<QString>("file");
+
+    QString examples = QLatin1String(SRCDIR) + "/../../../../examples/declarative/qtquick1";
+
+    QStringList files;
+    files << findQmlFiles(QDir(examples));
+
+    foreach (const QString &file, files)
+        QTest::newRow(qPrintable(file)) << file;
+}
+
+void tst_examples::examples()
+{
+    QFETCH(QString, file);
+
+    QDeclarativeViewer viewer;
+
+    QtMsgHandler old = qInstallMsgHandler(silentErrorsMsgHandler);
+    QVERIFY(viewer.open(file));
+    qInstallMsgHandler(old);
+
+    if (viewer.view()->status() == QDeclarativeView::Error)
+        qWarning() << viewer.view()->errors();
+
+    QCOMPARE(viewer.view()->status(), QDeclarativeView::Ready);
+    viewer.show();
+
+    QTest::qWaitForWindowShown(&viewer);
+}
+
+QTEST_MAIN(tst_examples)
+
+#include "tst_examples.moc"
index 0c3e249..489accb 100644 (file)
@@ -43,6 +43,7 @@ contains(QT_CONFIG, private_tests) {
            qdeclarativetimer \
            qdeclarativevisualdatamodel \
            qdeclarativexmllistmodel \
+           examples
 
 }