From 0e43b5951f6366f65b4229e11d036d4077c101e4 Mon Sep 17 00:00:00 2001 From: Damian Jansen Date: Thu, 1 Sep 2011 10:46:27 +1000 Subject: [PATCH] Add examples and tests for QtQuick1 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 --- .../declarative/cppextensions/cppextensions.pro | 2 - .../qgraphicslayouts/layoutitem/layoutitem.pro | 8 - .../qgraphicslayouts/layoutitem/layoutitem.qml | 57 -- .../layoutitem/layoutitem.qmlproject | 16 - .../qgraphicslayouts/layoutitem/layoutitem.qrc | 5 - .../qgraphicslayouts/layoutitem/main.cpp | 74 -- .../qgraphicsgridlayout/gridlayout.cpp | 188 ----- .../qgraphicsgridlayout/gridlayout.h | 217 ----- .../qgraphicsgridlayout/gridlayout.qrc | 6 - .../qgraphicslayouts/qgraphicsgridlayout/main.cpp | 63 -- .../qgraphicsgridlayout/qgraphicsgridlayout.pro | 15 - .../qgraphicsgridlayout/qgraphicsgridlayout.qml | 100 --- .../qgraphicslayouts/qgraphicslayouts.pro | 6 - .../qgraphicslayouts/qgraphicslayouts.qmlproject | 16 - .../qgraphicslinearlayout/linearlayout.cpp | 175 ---- .../qgraphicslinearlayout/linearlayout.h | 152 ---- .../qgraphicslinearlayout/linearlayout.qrc | 6 - .../qgraphicslinearlayout/main.cpp | 64 -- .../qgraphicslinearlayout.pro | 15 - .../qgraphicslinearlayout.qml | 79 -- .../cppextensions/qwidgets/QWidgets/qmldir | 1 - examples/declarative/cppextensions/qwidgets/README | 6 - .../cppextensions/qwidgets/qwidgets.cpp | 96 --- .../cppextensions/qwidgets/qwidgets.pro | 25 - .../cppextensions/qwidgets/qwidgets.qml | 110 --- .../cppextensions/qwidgets/qwidgets.qmlproject | 16 - examples/declarative/qtquick1.pro | 32 + examples/declarative/qtquick1/README | 41 + .../qtquick1/animation/animation.qmlproject | 16 + .../qtquick1/animation/basics/basics.qmlproject | 16 + .../qtquick1/animation/basics/color-animation.qml | 110 +++ .../animation/basics/images/face-smile.png | Bin 0 -> 15408 bytes .../qtquick1/animation/basics/images/moon.png | Bin 0 -> 2433 bytes .../qtquick1/animation/basics/images/shadow.png | Bin 0 -> 425 bytes .../qtquick1/animation/basics/images/star.png | Bin 0 -> 349 bytes .../qtquick1/animation/basics/images/sun.png | Bin 0 -> 8153 bytes .../animation/basics/property-animation.qml | 105 +++ .../qtquick1/animation/behaviors/SideRect.qml | 62 ++ .../animation/behaviors/behavior-example.qml | 118 +++ .../animation/behaviors/behaviors.qmlproject | 16 + .../qtquick1/animation/behaviors/wigglytext.qml | 108 +++ .../animation/easing/content/QuitButton.qml | 52 ++ .../qtquick1/animation/easing/content/quit.png | Bin 0 -> 583 bytes .../qtquick1/animation/easing/easing.qml | 159 ++++ .../qtquick1/animation/easing/easing.qmlproject | 16 + .../qtquick1/animation/states/qt-logo.png | Bin 0 -> 5149 bytes .../qtquick1/animation/states/states.qml | 101 +++ .../qtquick1/animation/states/states.qmlproject | 16 + .../qtquick1/animation/states/transitions.qml | 130 +++ .../qtquick1/cppextensions/cppextensions.pro | 10 + .../cppextensions/cppextensions.qmlproject | 16 + .../imageprovider/ImageProviderCore/qmldir | 2 + .../imageprovider/imageprovider-example.qml | 49 ++ .../cppextensions/imageprovider/imageprovider.cpp | 110 +++ .../cppextensions/imageprovider/imageprovider.pro | 28 + .../imageprovider/imageprovider.qmlproject | 16 + .../networkaccessmanagerfactory/main.cpp | 108 +++ .../networkaccessmanagerfactory.pro | 9 + .../networkaccessmanagerfactory.qmlproject | 16 + .../networkaccessmanagerfactory.qrc | 5 + .../networkaccessmanagerfactory/view.qml | 47 ++ .../qtquick1/cppextensions/plugins/README | 9 + .../plugins/com/nokia/TimeExample/Clock.qml | 90 ++ .../plugins/com/nokia/TimeExample/center.png | Bin 0 -> 765 bytes .../plugins/com/nokia/TimeExample/clock.png | Bin 0 -> 20653 bytes .../plugins/com/nokia/TimeExample/hour.png | Bin 0 -> 625 bytes .../plugins/com/nokia/TimeExample/minute.png | Bin 0 -> 625 bytes .../plugins/com/nokia/TimeExample/qmldir | 2 + .../qtquick1/cppextensions/plugins/plugin.cpp | 157 ++++ .../qtquick1/cppextensions/plugins/plugins.pro | 29 + .../qtquick1/cppextensions/plugins/plugins.qml | 52 ++ .../cppextensions/plugins/plugins.qmlproject | 16 + .../qgraphicslayouts/layoutitem/layoutitem.pro | 8 + .../qgraphicslayouts/layoutitem/layoutitem.qml | 57 ++ .../layoutitem/layoutitem.qmlproject | 16 + .../qgraphicslayouts/layoutitem/layoutitem.qrc | 5 + .../qgraphicslayouts/layoutitem/main.cpp | 74 ++ .../qgraphicsgridlayout/gridlayout.cpp | 188 +++++ .../qgraphicsgridlayout/gridlayout.h | 217 +++++ .../qgraphicsgridlayout/gridlayout.qrc | 6 + .../qgraphicslayouts/qgraphicsgridlayout/main.cpp | 63 ++ .../qgraphicsgridlayout/qgraphicsgridlayout.pro | 15 + .../qgraphicsgridlayout/qgraphicsgridlayout.qml | 100 +++ .../qgraphicslayouts/qgraphicslayouts.pro | 6 + .../qgraphicslayouts/qgraphicslayouts.qmlproject | 16 + .../qgraphicslinearlayout/linearlayout.cpp | 175 ++++ .../qgraphicslinearlayout/linearlayout.h | 152 ++++ .../qgraphicslinearlayout/linearlayout.qrc | 6 + .../qgraphicslinearlayout/main.cpp | 64 ++ .../qgraphicslinearlayout.pro | 15 + .../qgraphicslinearlayout.qml | 79 ++ .../cppextensions/qwidgets/QWidgets/qmldir | 1 + .../qtquick1/cppextensions/qwidgets/README | 6 + .../qtquick1/cppextensions/qwidgets/qwidgets.cpp | 96 +++ .../qtquick1/cppextensions/qwidgets/qwidgets.pro | 24 + .../qtquick1/cppextensions/qwidgets/qwidgets.qml | 110 +++ .../cppextensions/qwidgets/qwidgets.qmlproject | 16 + .../referenceexamples/adding/adding.pro | 15 + .../referenceexamples/adding/adding.qrc | 5 + .../referenceexamples/adding/example.qml | 48 ++ .../referenceexamples/adding/main.cpp | 64 ++ .../referenceexamples/adding/person.cpp | 68 ++ .../referenceexamples/adding/person.h | 65 ++ .../referenceexamples/attached/attached.pro | 17 + .../referenceexamples/attached/attached.qrc | 5 + .../referenceexamples/attached/birthdayparty.cpp | 91 ++ .../referenceexamples/attached/birthdayparty.h | 86 ++ .../referenceexamples/attached/example.qml | 71 ++ .../referenceexamples/attached/main.cpp | 90 ++ .../referenceexamples/attached/person.cpp | 118 +++ .../referenceexamples/attached/person.h | 105 +++ .../referenceexamples/binding/binding.pro | 19 + .../referenceexamples/binding/binding.qrc | 5 + .../referenceexamples/binding/birthdayparty.cpp | 113 +++ .../referenceexamples/binding/birthdayparty.h | 102 +++ .../referenceexamples/binding/example.qml | 77 ++ .../binding/happybirthdaysong.cpp | 85 ++ .../referenceexamples/binding/happybirthdaysong.h | 74 ++ .../referenceexamples/binding/main.cpp | 92 ++ .../referenceexamples/binding/person.cpp | 138 ++++ .../referenceexamples/binding/person.h | 113 +++ .../referenceexamples/coercion/birthdayparty.cpp | 71 ++ .../referenceexamples/coercion/birthdayparty.h | 69 ++ .../referenceexamples/coercion/coercion.pro | 17 + .../referenceexamples/coercion/coercion.qrc | 5 + .../referenceexamples/coercion/example.qml | 55 ++ .../referenceexamples/coercion/main.cpp | 77 ++ .../referenceexamples/coercion/person.cpp | 79 ++ .../referenceexamples/coercion/person.h | 82 ++ .../referenceexamples/default/birthdayparty.cpp | 71 ++ .../referenceexamples/default/birthdayparty.h | 70 ++ .../referenceexamples/default/default.pro | 17 + .../referenceexamples/default/default.qrc | 5 + .../referenceexamples/default/example.qml | 54 ++ .../referenceexamples/default/main.cpp | 75 ++ .../referenceexamples/default/person.cpp | 78 ++ .../referenceexamples/default/person.h | 77 ++ .../referenceexamples/extended/example.qml | 47 ++ .../referenceexamples/extended/extended.pro | 15 + .../referenceexamples/extended/extended.qrc | 5 + .../referenceexamples/extended/lineedit.cpp | 103 +++ .../referenceexamples/extended/lineedit.h | 73 ++ .../referenceexamples/extended/main.cpp | 64 ++ .../referenceexamples/grouped/birthdayparty.cpp | 71 ++ .../referenceexamples/grouped/birthdayparty.h | 69 ++ .../referenceexamples/grouped/example.qml | 73 ++ .../referenceexamples/grouped/grouped.pro | 17 + .../referenceexamples/grouped/grouped.qrc | 5 + .../referenceexamples/grouped/main.cpp | 85 ++ .../referenceexamples/grouped/person.cpp | 118 +++ .../referenceexamples/grouped/person.h | 107 +++ .../referenceexamples/methods/birthdayparty.cpp | 80 ++ .../referenceexamples/methods/birthdayparty.h | 71 ++ .../referenceexamples/methods/example.qml | 58 ++ .../referenceexamples/methods/main.cpp | 68 ++ .../referenceexamples/methods/methods.pro | 18 + .../referenceexamples/methods/methods.qrc | 5 + .../referenceexamples/methods/person.cpp | 66 ++ .../referenceexamples/methods/person.h | 63 ++ .../referenceexamples/properties/birthdayparty.cpp | 73 ++ .../referenceexamples/properties/birthdayparty.h | 75 ++ .../referenceexamples/properties/example.qml | 55 ++ .../referenceexamples/properties/main.cpp | 68 ++ .../referenceexamples/properties/person.cpp | 66 ++ .../referenceexamples/properties/person.h | 63 ++ .../referenceexamples/properties/properties.pro | 18 + .../referenceexamples/properties/properties.qrc | 5 + .../referenceexamples/referenceexamples.pro | 14 + .../referenceexamples/referenceexamples.qmlproject | 16 + .../referenceexamples/signal/birthdayparty.cpp | 98 +++ .../referenceexamples/signal/birthdayparty.h | 92 ++ .../referenceexamples/signal/example.qml | 72 ++ .../referenceexamples/signal/main.cpp | 91 ++ .../referenceexamples/signal/person.cpp | 118 +++ .../referenceexamples/signal/person.h | 105 +++ .../referenceexamples/signal/signal.pro | 17 + .../referenceexamples/signal/signal.qrc | 5 + .../valuesource/birthdayparty.cpp | 108 +++ .../referenceexamples/valuesource/birthdayparty.h | 97 +++ .../referenceexamples/valuesource/example.qml | 76 ++ .../valuesource/happybirthdaysong.cpp | 80 ++ .../valuesource/happybirthdaysong.h | 79 ++ .../referenceexamples/valuesource/main.cpp | 93 +++ .../referenceexamples/valuesource/person.cpp | 118 +++ .../referenceexamples/valuesource/person.h | 105 +++ .../referenceexamples/valuesource/valuesource.pro | 19 + .../referenceexamples/valuesource/valuesource.qrc | 5 + examples/declarative/qtquick1/examples.qmlproject | 16 + examples/declarative/qtquick1/i18n/i18n.qml | 78 ++ examples/declarative/qtquick1/i18n/i18n.qmlproject | 16 + examples/declarative/qtquick1/i18n/i18n/base.ts | 12 + .../declarative/qtquick1/i18n/i18n/qml_en_AU.ts | 12 + examples/declarative/qtquick1/i18n/i18n/qml_fr.ts | 12 + .../imageelements/borderimage/borderimage.qml | 97 +++ .../borderimage/borderimage.qmlproject | 16 + .../borderimage/content/MyBorderImage.qml | 90 ++ .../borderimage/content/ShadowRectangle.qml | 54 ++ .../imageelements/borderimage/content/bw.png | Bin 0 -> 1357 bytes .../borderimage/content/colors-round.sci | 7 + .../borderimage/content/colors-stretch.sci | 5 + .../imageelements/borderimage/content/colors.png | Bin 0 -> 1655 bytes .../imageelements/borderimage/content/shadow.png | Bin 0 -> 588 bytes .../qtquick1/imageelements/borderimage/shadows.qml | 64 ++ .../qtquick1/imageelements/image/ImageCell.qml | 60 ++ .../qtquick1/imageelements/image/image.qml | 66 ++ .../qtquick1/imageelements/image/image.qmlproject | 16 + .../qtquick1/imageelements/image/qt-logo.png | Bin 0 -> 5149 bytes .../imageelements/imageelements.qmlproject | 16 + .../keyinteraction/focus/Core/ContextMenu.qml | 65 ++ .../keyinteraction/focus/Core/GridMenu.qml | 105 +++ .../keyinteraction/focus/Core/ListMenu.qml | 105 +++ .../keyinteraction/focus/Core/ListViewDelegate.qml | 85 ++ .../keyinteraction/focus/Core/images/arrow.png | Bin 0 -> 583 bytes .../keyinteraction/focus/Core/images/qt-logo.png | Bin 0 -> 5149 bytes .../qtquick1/keyinteraction/focus/focus.qml | 111 +++ .../qtquick1/keyinteraction/focus/focus.qmlproject | 16 + .../keyinteraction/keyinteraction.qmlproject | 16 + .../abstractitemmodel/abstractitemmodel.pro | 8 + .../abstractitemmodel/abstractitemmodel.qrc | 6 + .../qtquick1/modelviews/abstractitemmodel/main.cpp | 66 ++ .../modelviews/abstractitemmodel/model.cpp | 90 ++ .../qtquick1/modelviews/abstractitemmodel/model.h | 83 ++ .../qtquick1/modelviews/abstractitemmodel/view.qml | 51 ++ .../modelviews/gridview/gridview-example.qml | 89 ++ .../modelviews/gridview/gridview.qmlproject | 16 + .../modelviews/gridview/pics/AddressBook_48.png | Bin 0 -> 3350 bytes .../modelviews/gridview/pics/AudioPlayer_48.png | Bin 0 -> 3806 bytes .../modelviews/gridview/pics/Camera_48.png | Bin 0 -> 3540 bytes .../modelviews/gridview/pics/DateBook_48.png | Bin 0 -> 2610 bytes .../qtquick1/modelviews/gridview/pics/EMail_48.png | Bin 0 -> 3655 bytes .../modelviews/gridview/pics/TodoList_48.png | Bin 0 -> 3429 bytes .../modelviews/gridview/pics/VideoPlayer_48.png | Bin 0 -> 4151 bytes .../modelviews/listview/content/PetsModel.qml | 98 +++ .../listview/content/PressAndHoldButton.qml | 82 ++ .../modelviews/listview/content/RecipesModel.qml | 129 +++ .../modelviews/listview/content/TextButton.qml | 78 ++ .../listview/content/pics/arrow-down.png | Bin 0 -> 594 bytes .../modelviews/listview/content/pics/arrow-up.png | Bin 0 -> 692 bytes .../listview/content/pics/fruit-salad.jpg | Bin 0 -> 17952 bytes .../modelviews/listview/content/pics/hamburger.jpg | Bin 0 -> 8572 bytes .../modelviews/listview/content/pics/lemonade.jpg | Bin 0 -> 6645 bytes .../listview/content/pics/list-delete.png | Bin 0 -> 831 bytes .../listview/content/pics/minus-sign.png | Bin 0 -> 250 bytes .../modelviews/listview/content/pics/moreDown.png | Bin 0 -> 217 bytes .../modelviews/listview/content/pics/moreUp.png | Bin 0 -> 212 bytes .../modelviews/listview/content/pics/pancakes.jpg | Bin 0 -> 9163 bytes .../modelviews/listview/content/pics/plus-sign.png | Bin 0 -> 462 bytes .../listview/content/pics/vegetable-soup.jpg | Bin 0 -> 8639 bytes .../qtquick1/modelviews/listview/dynamiclist.qml | 203 +++++ .../modelviews/listview/expandingdelegates.qml | 202 +++++ .../qtquick1/modelviews/listview/highlight.qml | 99 +++ .../modelviews/listview/highlightranges.qml | 122 +++ .../modelviews/listview/listview.qmlproject | 16 + .../qtquick1/modelviews/listview/sections.qml | 87 ++ .../declarative/qtquick1/modelviews/modelviews.pro | 7 + .../qtquick1/modelviews/modelviews.qmlproject | 16 + .../modelviews/objectlistmodel/dataobject.cpp | 77 ++ .../modelviews/objectlistmodel/dataobject.h | 76 ++ .../qtquick1/modelviews/objectlistmodel/main.cpp | 76 ++ .../modelviews/objectlistmodel/objectlistmodel.pro | 18 + .../objectlistmodel/objectlistmodel.qmlproject | 16 + .../modelviews/objectlistmodel/objectlistmodel.qrc | 5 + .../qtquick1/modelviews/objectlistmodel/view.qml | 56 ++ .../qtquick1/modelviews/package/Delegate.qml | 88 ++ .../qtquick1/modelviews/package/package.qmlproject | 16 + .../qtquick1/modelviews/package/view.qml | 76 ++ .../qtquick1/modelviews/parallax/parallax.qml | 78 ++ .../modelviews/parallax/parallax.qmlproject | 16 + .../modelviews/parallax/pics/background.jpg | Bin 0 -> 209814 bytes .../modelviews/parallax/pics/face-smile.png | Bin 0 -> 15408 bytes .../modelviews/parallax/pics/home-page.svg | 445 ++++++++++ .../qtquick1/modelviews/parallax/pics/shadow.png | Bin 0 -> 425 bytes .../modelviews/parallax/pics/yast-joystick.png | Bin 0 -> 2723 bytes .../qtquick1/modelviews/parallax/pics/yast-wol.png | Bin 0 -> 3769 bytes .../modelviews/parallax/qml/ParallaxView.qml | 123 +++ .../qtquick1/modelviews/parallax/qml/Smiley.qml | 84 ++ .../modelviews/pathview/pathview-example.qml | 107 +++ .../modelviews/pathview/pathview.qmlproject | 16 + .../modelviews/pathview/pics/AddressBook_48.png | Bin 0 -> 3350 bytes .../modelviews/pathview/pics/AudioPlayer_48.png | Bin 0 -> 3806 bytes .../modelviews/pathview/pics/Camera_48.png | Bin 0 -> 3540 bytes .../modelviews/pathview/pics/DateBook_48.png | Bin 0 -> 2610 bytes .../qtquick1/modelviews/pathview/pics/EMail_48.png | Bin 0 -> 3655 bytes .../modelviews/pathview/pics/TodoList_48.png | Bin 0 -> 3429 bytes .../modelviews/pathview/pics/VideoPlayer_48.png | Bin 0 -> 4151 bytes .../qtquick1/modelviews/stringlistmodel/main.cpp | 75 ++ .../modelviews/stringlistmodel/stringlistmodel.pro | 9 + .../modelviews/stringlistmodel/stringlistmodel.qrc | 5 + .../qtquick1/modelviews/stringlistmodel/view.qml | 55 ++ .../modelviews/visualitemmodel/visualitemmodel.qml | 114 +++ .../visualitemmodel/visualitemmodel.qmlproject | 16 + .../declarative/qtquick1/positioners/Button.qml | 78 ++ examples/declarative/qtquick1/positioners/add.png | Bin 0 -> 810 bytes examples/declarative/qtquick1/positioners/del.png | Bin 0 -> 488 bytes .../qtquick1/positioners/positioners.qml | 253 ++++++ .../qtquick1/positioners/positioners.qmlproject | 18 + examples/declarative/qtquick1/qtquick1.pro | 29 + .../layoutdirection/layoutdirection.qml | 256 ++++++ .../layoutdirection/layoutdirection.qmlproject | 18 + .../layoutmirroring/layoutmirroring.qml | 313 +++++++ .../layoutmirroring/layoutmirroring.qmlproject | 18 + .../righttoleft/textalignment/textalignment.qml | 426 ++++++++++ .../textalignment/textalignment.qmlproject | 18 + .../qtquick1/screenorientation/Core/Bubble.qml | 90 ++ .../qtquick1/screenorientation/Core/Button.qml | 71 ++ .../screenorientation/Core/screenorientation.js | 94 +++ .../screenorientation/screenorientation.qml | 201 +++++ .../screenorientation/screenorientation.qmlproject | 16 + .../declarative/qtquick1/sqllocalstorage/hello.qml | 77 ++ .../sqllocalstorage/sqllocalstorage.qmlproject | 16 + .../qtquick1/text/fonts/availableFonts.qml | 57 ++ .../declarative/qtquick1/text/fonts/banner.qml | 61 ++ examples/declarative/qtquick1/text/fonts/fonts.qml | 104 +++ .../qtquick1/text/fonts/fonts.qmlproject | 16 + .../qtquick1/text/fonts/fonts/tarzeau_ocr_a.ttf | Bin 0 -> 24544 bytes examples/declarative/qtquick1/text/fonts/hello.qml | 79 ++ examples/declarative/qtquick1/text/text.qmlproject | 16 + .../qtquick1/text/textselection/pics/endHandle.png | Bin 0 -> 185 bytes .../qtquick1/text/textselection/pics/endHandle.sci | 5 + .../text/textselection/pics/startHandle.png | Bin 0 -> 178 bytes .../text/textselection/pics/startHandle.sci | 5 + .../qtquick1/text/textselection/textselection.qml | 289 +++++++ .../text/textselection/textselection.qmlproject | 16 + .../threading/threadedlistmodel/dataloader.js | 49 ++ .../threadedlistmodel/threadedlistmodel.qmlproject | 56 ++ .../threading/threadedlistmodel/timedisplay.qml | 76 ++ .../qtquick1/threading/threading.qmlproject | 16 + .../threading/workerscript/workerscript.js | 15 + .../threading/workerscript/workerscript.qml | 83 ++ .../threading/workerscript/workerscript.qmlproject | 16 + .../gestures/experimental-gestures.qml | 76 ++ .../touchinteraction/gestures/gestures.qmlproject | 16 + .../mousearea/mousearea-example.qml | 112 +++ .../mousearea/mousearea.qmlproject | 16 + .../touchinteraction/pincharea/flickresize.qml | 97 +++ .../pincharea/pincharea.qmlproject | 18 + .../touchinteraction/pincharea/qt-logo.jpg | Bin 0 -> 40886 bytes .../touchinteraction/touchinteraction.qmlproject | 16 + examples/declarative/qtquick1/toys/README | 37 + .../declarative/qtquick1/toys/clocks/clocks.qml | 59 ++ .../qtquick1/toys/clocks/clocks.qmlproject | 16 + .../qtquick1/toys/clocks/content/Clock.qml | 124 +++ .../qtquick1/toys/clocks/content/QuitButton.qml | 52 ++ .../qtquick1/toys/clocks/content/background.png | Bin 0 -> 46895 bytes .../qtquick1/toys/clocks/content/center.png | Bin 0 -> 765 bytes .../qtquick1/toys/clocks/content/clock-night.png | Bin 0 -> 23359 bytes .../qtquick1/toys/clocks/content/clock.png | Bin 0 -> 20653 bytes .../qtquick1/toys/clocks/content/hour.png | Bin 0 -> 625 bytes .../qtquick1/toys/clocks/content/minute.png | Bin 0 -> 625 bytes .../qtquick1/toys/clocks/content/quit.png | Bin 0 -> 583 bytes .../qtquick1/toys/clocks/content/second.png | Bin 0 -> 303 bytes .../declarative/qtquick1/toys/corkboards/Day.qml | 153 ++++ .../declarative/qtquick1/toys/corkboards/cork.jpg | Bin 0 -> 149337 bytes .../qtquick1/toys/corkboards/corkboards.qml | 115 +++ .../qtquick1/toys/corkboards/corkboards.qmlproject | 16 + .../qtquick1/toys/corkboards/note-yellow.png | Bin 0 -> 54559 bytes .../declarative/qtquick1/toys/corkboards/tack.png | Bin 0 -> 7282 bytes .../qtquick1/toys/dynamicscene/dynamicscene.qml | 224 +++++ .../toys/dynamicscene/dynamicscene.qmlproject | 16 + .../qtquick1/toys/dynamicscene/images/NOTE | 1 + .../toys/dynamicscene/images/face-smile.png | Bin 0 -> 15408 bytes .../qtquick1/toys/dynamicscene/images/moon.png | Bin 0 -> 1757 bytes .../toys/dynamicscene/images/rabbit_brown.png | Bin 0 -> 1245 bytes .../toys/dynamicscene/images/rabbit_bw.png | Bin 0 -> 1759 bytes .../qtquick1/toys/dynamicscene/images/star.png | Bin 0 -> 349 bytes .../qtquick1/toys/dynamicscene/images/sun.png | Bin 0 -> 8153 bytes .../qtquick1/toys/dynamicscene/images/tree_s.png | Bin 0 -> 3406 bytes .../qtquick1/toys/dynamicscene/qml/Button.qml | 80 ++ .../toys/dynamicscene/qml/GenericSceneItem.qml | 49 ++ .../qtquick1/toys/dynamicscene/qml/PaletteItem.qml | 59 ++ .../toys/dynamicscene/qml/PerspectiveItem.qml | 65 ++ .../qtquick1/toys/dynamicscene/qml/Sun.qml | 78 ++ .../qtquick1/toys/dynamicscene/qml/itemCreation.js | 62 ++ .../qtquick1/toys/tic-tac-toe/content/Button.qml | 79 ++ .../qtquick1/toys/tic-tac-toe/content/TicTac.qml | 60 ++ .../toys/tic-tac-toe/content/pics/board.png | Bin 0 -> 12258 bytes .../qtquick1/toys/tic-tac-toe/content/pics/o.png | Bin 0 -> 1470 bytes .../qtquick1/toys/tic-tac-toe/content/pics/x.png | Bin 0 -> 1331 bytes .../toys/tic-tac-toe/content/tic-tac-toe.js | 149 ++++ .../qtquick1/toys/tic-tac-toe/tic-tac-toe.qml | 123 +++ .../toys/tic-tac-toe/tic-tac-toe.qmlproject | 16 + examples/declarative/qtquick1/toys/toys.qmlproject | 16 + .../qtquick1/toys/tvtennis/tvtennis.qml | 109 +++ .../qtquick1/toys/tvtennis/tvtennis.qmlproject | 16 + .../tutorials/extending/chapter1-basics/app.qml | 60 ++ .../extending/chapter1-basics/chapter1-basics.pro | 5 + .../tutorials/extending/chapter1-basics/main.cpp | 56 ++ .../extending/chapter1-basics/piechart.cpp | 81 ++ .../tutorials/extending/chapter1-basics/piechart.h | 71 ++ .../tutorials/extending/chapter2-methods/app.qml | 66 ++ .../chapter2-methods/chapter2-methods.pro | 5 + .../tutorials/extending/chapter2-methods/main.cpp | 56 ++ .../extending/chapter2-methods/piechart.cpp | 87 ++ .../extending/chapter2-methods/piechart.h | 84 ++ .../tutorials/extending/chapter3-bindings/app.qml | 74 ++ .../chapter3-bindings/chapter3-bindings.pro | 5 + .../tutorials/extending/chapter3-bindings/main.cpp | 56 ++ .../extending/chapter3-bindings/piechart.cpp | 89 ++ .../extending/chapter3-bindings/piechart.h | 84 ++ .../extending/chapter4-customPropertyTypes/app.qml | 60 ++ .../chapter4-customPropertyTypes.pro | 7 + .../chapter4-customPropertyTypes/main.cpp | 65 ++ .../chapter4-customPropertyTypes/piechart.cpp | 72 ++ .../chapter4-customPropertyTypes/piechart.h | 78 ++ .../chapter4-customPropertyTypes/pieslice.cpp | 68 ++ .../chapter4-customPropertyTypes/pieslice.h | 66 ++ .../extending/chapter5-listproperties/app.qml | 70 ++ .../chapter5-listproperties.pro | 7 + .../extending/chapter5-listproperties/main.cpp | 57 ++ .../extending/chapter5-listproperties/piechart.cpp | 72 ++ .../extending/chapter5-listproperties/piechart.h | 75 ++ .../extending/chapter5-listproperties/pieslice.cpp | 88 ++ .../extending/chapter5-listproperties/pieslice.h | 76 ++ .../tutorials/extending/chapter6-plugins/app.qml | 68 ++ .../chapter6-plugins/chapter6-plugins.pro | 20 + .../extending/chapter6-plugins/chartsplugin.cpp | 53 ++ .../extending/chapter6-plugins/chartsplugin.h | 55 ++ .../extending/chapter6-plugins/piechart.cpp | 71 ++ .../extending/chapter6-plugins/piechart.h | 69 ++ .../extending/chapter6-plugins/pieslice.cpp | 88 ++ .../extending/chapter6-plugins/pieslice.h | 74 ++ .../tutorials/extending/chapter6-plugins/qmldir | 1 + .../qtquick1/tutorials/extending/extending.pro | 10 + .../qtquick1/tutorials/helloworld/Cell.qml | 72 ++ .../qtquick1/tutorials/helloworld/tutorial1.qml | 63 ++ .../qtquick1/tutorials/helloworld/tutorial2.qml | 72 ++ .../qtquick1/tutorials/helloworld/tutorial3.qml | 91 ++ .../tutorials/samegame/samegame1/Block.qml | 53 ++ .../tutorials/samegame/samegame1/Button.qml | 83 ++ .../tutorials/samegame/samegame1/samegame.qml | 82 ++ .../samegame/samegame1/samegame1.qmlproject | 16 + .../tutorials/samegame/samegame2/Block.qml | 51 ++ .../tutorials/samegame/samegame2/Button.qml | 81 ++ .../tutorials/samegame/samegame2/samegame.js | 63 ++ .../tutorials/samegame/samegame2/samegame.qml | 85 ++ .../samegame/samegame2/samegame2.qmlproject | 16 + .../tutorials/samegame/samegame3/Block.qml | 63 ++ .../tutorials/samegame/samegame3/Button.qml | 81 ++ .../tutorials/samegame/samegame3/Dialog.qml | 71 ++ .../tutorials/samegame/samegame3/samegame.js | 174 ++++ .../tutorials/samegame/samegame3/samegame.qml | 109 +++ .../samegame/samegame3/samegame3.qmlproject | 16 + .../samegame/samegame4/content/BoomBlock.qml | 122 +++ .../samegame/samegame4/content/Button.qml | 81 ++ .../samegame/samegame4/content/Dialog.qml | 107 +++ .../samegame/samegame4/content/samegame.js | 225 +++++ .../tutorials/samegame/samegame4/highscores/README | 1 + .../samegame/samegame4/highscores/score_data.xml | 2 + .../samegame/samegame4/highscores/score_style.xsl | 28 + .../samegame/samegame4/highscores/scores.php | 31 + .../tutorials/samegame/samegame4/samegame.qml | 115 +++ .../samegame/samegame4/samegame4.qmlproject | 16 + .../tutorials/samegame/shared/pics/background.jpg | Bin 0 -> 36473 bytes .../tutorials/samegame/shared/pics/blueStar.png | Bin 0 -> 278 bytes .../tutorials/samegame/shared/pics/blueStone.png | Bin 0 -> 3054 bytes .../tutorials/samegame/shared/pics/greenStar.png | Bin 0 -> 273 bytes .../tutorials/samegame/shared/pics/greenStone.png | Bin 0 -> 2932 bytes .../tutorials/samegame/shared/pics/redStar.png | Bin 0 -> 274 bytes .../tutorials/samegame/shared/pics/redStone.png | Bin 0 -> 2902 bytes .../tutorials/samegame/shared/pics/star.png | Bin 0 -> 262 bytes .../tutorials/samegame/shared/pics/yellowStone.png | Bin 0 -> 3056 bytes .../declarative/qtquick1/tutorials/tutorials.pro | 5 + .../qtquick1/tutorials/tutorials.qmlproject | 16 + examples/declarative/qtquick1/ui-components/README | 39 + .../ui-components/dialcontrol/content/Dial.qml | 86 ++ .../dialcontrol/content/QuitButton.qml | 52 ++ .../dialcontrol/content/background.png | Bin 0 -> 35876 bytes .../ui-components/dialcontrol/content/needle.png | Bin 0 -> 342 bytes .../dialcontrol/content/needle_shadow.png | Bin 0 -> 632 bytes .../ui-components/dialcontrol/content/overlay.png | Bin 0 -> 3564 bytes .../ui-components/dialcontrol/content/quit.png | Bin 0 -> 583 bytes .../ui-components/dialcontrol/dialcontrol.qml | 98 +++ .../dialcontrol/dialcontrol.qmlproject | 16 + .../ui-components/flipable/content/5_heart.png | Bin 0 -> 3872 bytes .../ui-components/flipable/content/9_club.png | Bin 0 -> 6135 bytes .../ui-components/flipable/content/Card.qml | 80 ++ .../ui-components/flipable/content/back.png | Bin 0 -> 1418 bytes .../qtquick1/ui-components/flipable/flipable.qml | 55 ++ .../ui-components/flipable/flipable.qmlproject | 16 + .../progressbar/content/ProgressBar.qml | 83 ++ .../progressbar/content/background.png | Bin 0 -> 426 bytes .../qtquick1/ui-components/progressbar/main.qml | 73 ++ .../progressbar/progressbar.qmlproject | 16 + .../qtquick1/ui-components/scrollbar/ScrollBar.qml | 74 ++ .../qtquick1/ui-components/scrollbar/main.qml | 93 +++ .../ui-components/scrollbar/pics/niagara_falls.jpg | Bin 0 -> 604121 bytes .../ui-components/scrollbar/scrollbar.qmlproject | 16 + .../qtquick1/ui-components/searchbox/SearchBox.qml | 109 +++ .../ui-components/searchbox/images/clear.png | Bin 0 -> 429 bytes .../searchbox/images/lineedit-bg-focus.png | Bin 0 -> 526 bytes .../ui-components/searchbox/images/lineedit-bg.png | Bin 0 -> 426 bytes .../qtquick1/ui-components/searchbox/main.qml | 60 ++ .../ui-components/searchbox/searchbox.qmlproject | 16 + .../ui-components/slideswitch/content/Switch.qml | 117 +++ .../slideswitch/content/background.svg | 23 + .../ui-components/slideswitch/content/knob.svg | 867 ++++++++++++++++++++ .../ui-components/slideswitch/slideswitch.qml | 51 ++ .../slideswitch/slideswitch.qmlproject | 16 + .../ui-components/spinner/content/Spinner.qml | 70 ++ .../ui-components/spinner/content/spinner-bg.png | Bin 0 -> 345 bytes .../spinner/content/spinner-select.png | Bin 0 -> 320 bytes .../qtquick1/ui-components/spinner/main.qml | 61 ++ .../ui-components/spinner/spinner.qmlproject | 16 + .../qtquick1/ui-components/tabwidget/TabWidget.qml | 102 +++ .../qtquick1/ui-components/tabwidget/main.qml | 99 +++ .../qtquick1/ui-components/tabwidget/tab.png | Bin 0 -> 507 bytes .../ui-components/tabwidget/tabwidget.qmlproject | 16 + .../ui-components/ui-components.qmlproject | 16 + examples/declarative/qtquick1/xml/xml.qmlproject | 16 + .../qtquick1/xml/xmlhttprequest/data.xml | 5 + .../xml/xmlhttprequest/xmlhttprequest-example.qml | 95 +++ .../xml/xmlhttprequest/xmlhttprequest.qmlproject | 16 + tests/auto/declarative/examples/tst_examples.cpp | 3 + tests/auto/qtquick1/examples/data/dummytest.qml | 6 + .../examples/data/webbrowser/webbrowser.qml | 6 + tests/auto/qtquick1/examples/examples.pro | 14 + tests/auto/qtquick1/examples/tst_examples.cpp | 212 +++++ tests/auto/qtquick1/qtquick1.pro | 1 + 518 files changed, 25625 insertions(+), 1518 deletions(-) delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.pro delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qml delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qrc delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/layoutitem/main.cpp delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.cpp delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.h delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.qrc delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.pro delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.qml delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/qgraphicslayouts.pro delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.cpp delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.h delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.qrc delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.pro delete mode 100644 examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.qml delete mode 100644 examples/declarative/cppextensions/qwidgets/QWidgets/qmldir delete mode 100644 examples/declarative/cppextensions/qwidgets/README delete mode 100644 examples/declarative/cppextensions/qwidgets/qwidgets.cpp delete mode 100644 examples/declarative/cppextensions/qwidgets/qwidgets.pro delete mode 100644 examples/declarative/cppextensions/qwidgets/qwidgets.qml delete mode 100644 examples/declarative/cppextensions/qwidgets/qwidgets.qmlproject create mode 100644 examples/declarative/qtquick1.pro create mode 100644 examples/declarative/qtquick1/README create mode 100644 examples/declarative/qtquick1/animation/animation.qmlproject create mode 100644 examples/declarative/qtquick1/animation/basics/basics.qmlproject create mode 100644 examples/declarative/qtquick1/animation/basics/color-animation.qml create mode 100644 examples/declarative/qtquick1/animation/basics/images/face-smile.png create mode 100644 examples/declarative/qtquick1/animation/basics/images/moon.png create mode 100644 examples/declarative/qtquick1/animation/basics/images/shadow.png create mode 100644 examples/declarative/qtquick1/animation/basics/images/star.png create mode 100644 examples/declarative/qtquick1/animation/basics/images/sun.png create mode 100644 examples/declarative/qtquick1/animation/basics/property-animation.qml create mode 100644 examples/declarative/qtquick1/animation/behaviors/SideRect.qml create mode 100644 examples/declarative/qtquick1/animation/behaviors/behavior-example.qml create mode 100644 examples/declarative/qtquick1/animation/behaviors/behaviors.qmlproject create mode 100644 examples/declarative/qtquick1/animation/behaviors/wigglytext.qml create mode 100644 examples/declarative/qtquick1/animation/easing/content/QuitButton.qml create mode 100644 examples/declarative/qtquick1/animation/easing/content/quit.png create mode 100644 examples/declarative/qtquick1/animation/easing/easing.qml create mode 100644 examples/declarative/qtquick1/animation/easing/easing.qmlproject create mode 100644 examples/declarative/qtquick1/animation/states/qt-logo.png create mode 100644 examples/declarative/qtquick1/animation/states/states.qml create mode 100644 examples/declarative/qtquick1/animation/states/states.qmlproject create mode 100644 examples/declarative/qtquick1/animation/states/transitions.qml create mode 100644 examples/declarative/qtquick1/cppextensions/cppextensions.pro create mode 100644 examples/declarative/qtquick1/cppextensions/cppextensions.qmlproject create mode 100644 examples/declarative/qtquick1/cppextensions/imageprovider/ImageProviderCore/qmldir create mode 100644 examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider-example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.pro create mode 100644 examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.qmlproject create mode 100644 examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.pro create mode 100644 examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qmlproject create mode 100644 examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/view.qml create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/README create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/Clock.qml create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/center.png create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/clock.png create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/hour.png create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/minute.png create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/qmldir create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/plugin.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/plugins.pro create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/plugins.qml create mode 100644 examples/declarative/qtquick1/cppextensions/plugins/plugins.qmlproject create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.pro create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qml create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.h create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.pro create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.qml create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.pro create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.h create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.pro create mode 100644 examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.qml create mode 100644 examples/declarative/qtquick1/cppextensions/qwidgets/QWidgets/qmldir create mode 100644 examples/declarative/qtquick1/cppextensions/qwidgets/README create mode 100644 examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.pro create mode 100644 examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qml create mode 100644 examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qmlproject create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/adding/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/adding/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/attached/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/attached/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/default/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/default/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/extended/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/extended/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/methods/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/methods/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/properties/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/properties/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.qmlproject create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/signal/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/signal/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.qrc create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/example.qml create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/main.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.cpp create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.h create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.pro create mode 100644 examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.qrc create mode 100644 examples/declarative/qtquick1/examples.qmlproject create mode 100644 examples/declarative/qtquick1/i18n/i18n.qml create mode 100644 examples/declarative/qtquick1/i18n/i18n.qmlproject create mode 100644 examples/declarative/qtquick1/i18n/i18n/base.ts create mode 100644 examples/declarative/qtquick1/i18n/i18n/qml_en_AU.ts create mode 100644 examples/declarative/qtquick1/i18n/i18n/qml_fr.ts create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/borderimage.qml create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/borderimage.qmlproject create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/content/MyBorderImage.qml create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/content/ShadowRectangle.qml create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/content/bw.png create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/content/colors-round.sci create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/content/colors-stretch.sci create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/content/colors.png create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/content/shadow.png create mode 100644 examples/declarative/qtquick1/imageelements/borderimage/shadows.qml create mode 100644 examples/declarative/qtquick1/imageelements/image/ImageCell.qml create mode 100644 examples/declarative/qtquick1/imageelements/image/image.qml create mode 100644 examples/declarative/qtquick1/imageelements/image/image.qmlproject create mode 100644 examples/declarative/qtquick1/imageelements/image/qt-logo.png create mode 100644 examples/declarative/qtquick1/imageelements/imageelements.qmlproject create mode 100644 examples/declarative/qtquick1/keyinteraction/focus/Core/ContextMenu.qml create mode 100644 examples/declarative/qtquick1/keyinteraction/focus/Core/GridMenu.qml create mode 100644 examples/declarative/qtquick1/keyinteraction/focus/Core/ListMenu.qml create mode 100644 examples/declarative/qtquick1/keyinteraction/focus/Core/ListViewDelegate.qml create mode 100644 examples/declarative/qtquick1/keyinteraction/focus/Core/images/arrow.png create mode 100644 examples/declarative/qtquick1/keyinteraction/focus/Core/images/qt-logo.png create mode 100644 examples/declarative/qtquick1/keyinteraction/focus/focus.qml create mode 100644 examples/declarative/qtquick1/keyinteraction/focus/focus.qmlproject create mode 100644 examples/declarative/qtquick1/keyinteraction/keyinteraction.qmlproject create mode 100644 examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.pro create mode 100644 examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.qrc create mode 100644 examples/declarative/qtquick1/modelviews/abstractitemmodel/main.cpp create mode 100644 examples/declarative/qtquick1/modelviews/abstractitemmodel/model.cpp create mode 100644 examples/declarative/qtquick1/modelviews/abstractitemmodel/model.h create mode 100644 examples/declarative/qtquick1/modelviews/abstractitemmodel/view.qml create mode 100644 examples/declarative/qtquick1/modelviews/gridview/gridview-example.qml create mode 100644 examples/declarative/qtquick1/modelviews/gridview/gridview.qmlproject create mode 100644 examples/declarative/qtquick1/modelviews/gridview/pics/AddressBook_48.png create mode 100644 examples/declarative/qtquick1/modelviews/gridview/pics/AudioPlayer_48.png create mode 100644 examples/declarative/qtquick1/modelviews/gridview/pics/Camera_48.png create mode 100644 examples/declarative/qtquick1/modelviews/gridview/pics/DateBook_48.png create mode 100644 examples/declarative/qtquick1/modelviews/gridview/pics/EMail_48.png create mode 100644 examples/declarative/qtquick1/modelviews/gridview/pics/TodoList_48.png create mode 100644 examples/declarative/qtquick1/modelviews/gridview/pics/VideoPlayer_48.png create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/PetsModel.qml create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/PressAndHoldButton.qml create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/RecipesModel.qml create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/TextButton.qml create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/arrow-down.png create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/arrow-up.png create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/fruit-salad.jpg create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/hamburger.jpg create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/lemonade.jpg create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/list-delete.png create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/minus-sign.png create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/moreDown.png create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/moreUp.png create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/pancakes.jpg create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/plus-sign.png create mode 100644 examples/declarative/qtquick1/modelviews/listview/content/pics/vegetable-soup.jpg create mode 100644 examples/declarative/qtquick1/modelviews/listview/dynamiclist.qml create mode 100644 examples/declarative/qtquick1/modelviews/listview/expandingdelegates.qml create mode 100644 examples/declarative/qtquick1/modelviews/listview/highlight.qml create mode 100644 examples/declarative/qtquick1/modelviews/listview/highlightranges.qml create mode 100644 examples/declarative/qtquick1/modelviews/listview/listview.qmlproject create mode 100644 examples/declarative/qtquick1/modelviews/listview/sections.qml create mode 100644 examples/declarative/qtquick1/modelviews/modelviews.pro create mode 100644 examples/declarative/qtquick1/modelviews/modelviews.qmlproject create mode 100644 examples/declarative/qtquick1/modelviews/objectlistmodel/dataobject.cpp create mode 100644 examples/declarative/qtquick1/modelviews/objectlistmodel/dataobject.h create mode 100644 examples/declarative/qtquick1/modelviews/objectlistmodel/main.cpp create mode 100644 examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.pro create mode 100644 examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qmlproject create mode 100644 examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qrc create mode 100644 examples/declarative/qtquick1/modelviews/objectlistmodel/view.qml create mode 100644 examples/declarative/qtquick1/modelviews/package/Delegate.qml create mode 100644 examples/declarative/qtquick1/modelviews/package/package.qmlproject create mode 100644 examples/declarative/qtquick1/modelviews/package/view.qml create mode 100644 examples/declarative/qtquick1/modelviews/parallax/parallax.qml create mode 100644 examples/declarative/qtquick1/modelviews/parallax/parallax.qmlproject create mode 100644 examples/declarative/qtquick1/modelviews/parallax/pics/background.jpg create mode 100644 examples/declarative/qtquick1/modelviews/parallax/pics/face-smile.png create mode 100644 examples/declarative/qtquick1/modelviews/parallax/pics/home-page.svg create mode 100644 examples/declarative/qtquick1/modelviews/parallax/pics/shadow.png create mode 100644 examples/declarative/qtquick1/modelviews/parallax/pics/yast-joystick.png create mode 100644 examples/declarative/qtquick1/modelviews/parallax/pics/yast-wol.png create mode 100644 examples/declarative/qtquick1/modelviews/parallax/qml/ParallaxView.qml create mode 100644 examples/declarative/qtquick1/modelviews/parallax/qml/Smiley.qml create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pathview-example.qml create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pathview.qmlproject create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pics/AddressBook_48.png create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pics/AudioPlayer_48.png create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pics/Camera_48.png create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pics/DateBook_48.png create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pics/EMail_48.png create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pics/TodoList_48.png create mode 100644 examples/declarative/qtquick1/modelviews/pathview/pics/VideoPlayer_48.png create mode 100644 examples/declarative/qtquick1/modelviews/stringlistmodel/main.cpp create mode 100644 examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.pro create mode 100644 examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.qrc create mode 100644 examples/declarative/qtquick1/modelviews/stringlistmodel/view.qml create mode 100644 examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qml create mode 100644 examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qmlproject create mode 100644 examples/declarative/qtquick1/positioners/Button.qml create mode 100644 examples/declarative/qtquick1/positioners/add.png create mode 100644 examples/declarative/qtquick1/positioners/del.png create mode 100644 examples/declarative/qtquick1/positioners/positioners.qml create mode 100644 examples/declarative/qtquick1/positioners/positioners.qmlproject create mode 100644 examples/declarative/qtquick1/qtquick1.pro create mode 100644 examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qml create mode 100644 examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qmlproject create mode 100644 examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qml create mode 100644 examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qmlproject create mode 100644 examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qml create mode 100644 examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qmlproject create mode 100644 examples/declarative/qtquick1/screenorientation/Core/Bubble.qml create mode 100644 examples/declarative/qtquick1/screenorientation/Core/Button.qml create mode 100644 examples/declarative/qtquick1/screenorientation/Core/screenorientation.js create mode 100644 examples/declarative/qtquick1/screenorientation/screenorientation.qml create mode 100644 examples/declarative/qtquick1/screenorientation/screenorientation.qmlproject create mode 100644 examples/declarative/qtquick1/sqllocalstorage/hello.qml create mode 100644 examples/declarative/qtquick1/sqllocalstorage/sqllocalstorage.qmlproject create mode 100644 examples/declarative/qtquick1/text/fonts/availableFonts.qml create mode 100644 examples/declarative/qtquick1/text/fonts/banner.qml create mode 100644 examples/declarative/qtquick1/text/fonts/fonts.qml create mode 100644 examples/declarative/qtquick1/text/fonts/fonts.qmlproject create mode 100644 examples/declarative/qtquick1/text/fonts/fonts/tarzeau_ocr_a.ttf create mode 100644 examples/declarative/qtquick1/text/fonts/hello.qml create mode 100644 examples/declarative/qtquick1/text/text.qmlproject create mode 100644 examples/declarative/qtquick1/text/textselection/pics/endHandle.png create mode 100644 examples/declarative/qtquick1/text/textselection/pics/endHandle.sci create mode 100644 examples/declarative/qtquick1/text/textselection/pics/startHandle.png create mode 100644 examples/declarative/qtquick1/text/textselection/pics/startHandle.sci create mode 100644 examples/declarative/qtquick1/text/textselection/textselection.qml create mode 100644 examples/declarative/qtquick1/text/textselection/textselection.qmlproject create mode 100644 examples/declarative/qtquick1/threading/threadedlistmodel/dataloader.js create mode 100644 examples/declarative/qtquick1/threading/threadedlistmodel/threadedlistmodel.qmlproject create mode 100644 examples/declarative/qtquick1/threading/threadedlistmodel/timedisplay.qml create mode 100644 examples/declarative/qtquick1/threading/threading.qmlproject create mode 100644 examples/declarative/qtquick1/threading/workerscript/workerscript.js create mode 100644 examples/declarative/qtquick1/threading/workerscript/workerscript.qml create mode 100644 examples/declarative/qtquick1/threading/workerscript/workerscript.qmlproject create mode 100644 examples/declarative/qtquick1/touchinteraction/gestures/experimental-gestures.qml create mode 100644 examples/declarative/qtquick1/touchinteraction/gestures/gestures.qmlproject create mode 100644 examples/declarative/qtquick1/touchinteraction/mousearea/mousearea-example.qml create mode 100644 examples/declarative/qtquick1/touchinteraction/mousearea/mousearea.qmlproject create mode 100644 examples/declarative/qtquick1/touchinteraction/pincharea/flickresize.qml create mode 100644 examples/declarative/qtquick1/touchinteraction/pincharea/pincharea.qmlproject create mode 100644 examples/declarative/qtquick1/touchinteraction/pincharea/qt-logo.jpg create mode 100644 examples/declarative/qtquick1/touchinteraction/touchinteraction.qmlproject create mode 100644 examples/declarative/qtquick1/toys/README create mode 100644 examples/declarative/qtquick1/toys/clocks/clocks.qml create mode 100644 examples/declarative/qtquick1/toys/clocks/clocks.qmlproject create mode 100644 examples/declarative/qtquick1/toys/clocks/content/Clock.qml create mode 100644 examples/declarative/qtquick1/toys/clocks/content/QuitButton.qml create mode 100644 examples/declarative/qtquick1/toys/clocks/content/background.png create mode 100644 examples/declarative/qtquick1/toys/clocks/content/center.png create mode 100644 examples/declarative/qtquick1/toys/clocks/content/clock-night.png create mode 100644 examples/declarative/qtquick1/toys/clocks/content/clock.png create mode 100644 examples/declarative/qtquick1/toys/clocks/content/hour.png create mode 100644 examples/declarative/qtquick1/toys/clocks/content/minute.png create mode 100644 examples/declarative/qtquick1/toys/clocks/content/quit.png create mode 100644 examples/declarative/qtquick1/toys/clocks/content/second.png create mode 100644 examples/declarative/qtquick1/toys/corkboards/Day.qml create mode 100644 examples/declarative/qtquick1/toys/corkboards/cork.jpg create mode 100644 examples/declarative/qtquick1/toys/corkboards/corkboards.qml create mode 100644 examples/declarative/qtquick1/toys/corkboards/corkboards.qmlproject create mode 100644 examples/declarative/qtquick1/toys/corkboards/note-yellow.png create mode 100644 examples/declarative/qtquick1/toys/corkboards/tack.png create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qml create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qmlproject create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/images/NOTE create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/images/face-smile.png create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/images/moon.png create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/images/rabbit_brown.png create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/images/rabbit_bw.png create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/images/star.png create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/images/sun.png create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/images/tree_s.png create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/qml/Button.qml create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/qml/GenericSceneItem.qml create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/qml/PaletteItem.qml create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/qml/PerspectiveItem.qml create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/qml/Sun.qml create mode 100644 examples/declarative/qtquick1/toys/dynamicscene/qml/itemCreation.js create mode 100644 examples/declarative/qtquick1/toys/tic-tac-toe/content/Button.qml create mode 100644 examples/declarative/qtquick1/toys/tic-tac-toe/content/TicTac.qml create mode 100644 examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/board.png create mode 100644 examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/o.png create mode 100644 examples/declarative/qtquick1/toys/tic-tac-toe/content/pics/x.png create mode 100644 examples/declarative/qtquick1/toys/tic-tac-toe/content/tic-tac-toe.js create mode 100644 examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qml create mode 100644 examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qmlproject create mode 100644 examples/declarative/qtquick1/toys/toys.qmlproject create mode 100644 examples/declarative/qtquick1/toys/tvtennis/tvtennis.qml create mode 100644 examples/declarative/qtquick1/toys/tvtennis/tvtennis.qmlproject create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter1-basics/app.qml create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter1-basics/chapter1-basics.pro create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter1-basics/main.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter2-methods/app.qml create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter2-methods/chapter2-methods.pro create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter2-methods/main.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/app.qml create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/chapter3-bindings.pro create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/main.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/app.qml create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/main.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/app.qml create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/chapter5-listproperties.pro create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/main.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/app.qml create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chapter6-plugins.pro create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.cpp create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.h create mode 100644 examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/qmldir create mode 100644 examples/declarative/qtquick1/tutorials/extending/extending.pro create mode 100644 examples/declarative/qtquick1/tutorials/helloworld/Cell.qml create mode 100644 examples/declarative/qtquick1/tutorials/helloworld/tutorial1.qml create mode 100644 examples/declarative/qtquick1/tutorials/helloworld/tutorial2.qml create mode 100644 examples/declarative/qtquick1/tutorials/helloworld/tutorial3.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame1/Block.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame1/Button.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame1.qmlproject create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame2/Block.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame2/Button.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.js create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame2.qmlproject create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame3/Block.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame3/Button.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame3/Dialog.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.js create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame3.qmlproject create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame4/content/BoomBlock.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Button.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Dialog.qml create mode 100755 examples/declarative/qtquick1/tutorials/samegame/samegame4/content/samegame.js create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/README create mode 100755 examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_data.xml create mode 100755 examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_style.xsl create mode 100755 examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/scores.php create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame.qml create mode 100644 examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame4.qmlproject create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/background.jpg create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/blueStar.png create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/blueStone.png create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/greenStar.png create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/greenStone.png create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/redStar.png create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/redStone.png create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/star.png create mode 100644 examples/declarative/qtquick1/tutorials/samegame/shared/pics/yellowStone.png create mode 100644 examples/declarative/qtquick1/tutorials/tutorials.pro create mode 100644 examples/declarative/qtquick1/tutorials/tutorials.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/README create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/content/Dial.qml create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/content/QuitButton.qml create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/content/background.png create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/content/needle.png create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/content/needle_shadow.png create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/content/overlay.png create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/content/quit.png create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qml create mode 100644 examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/flipable/content/5_heart.png create mode 100644 examples/declarative/qtquick1/ui-components/flipable/content/9_club.png create mode 100644 examples/declarative/qtquick1/ui-components/flipable/content/Card.qml create mode 100644 examples/declarative/qtquick1/ui-components/flipable/content/back.png create mode 100644 examples/declarative/qtquick1/ui-components/flipable/flipable.qml create mode 100644 examples/declarative/qtquick1/ui-components/flipable/flipable.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/progressbar/content/ProgressBar.qml create mode 100644 examples/declarative/qtquick1/ui-components/progressbar/content/background.png create mode 100644 examples/declarative/qtquick1/ui-components/progressbar/main.qml create mode 100644 examples/declarative/qtquick1/ui-components/progressbar/progressbar.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/scrollbar/ScrollBar.qml create mode 100644 examples/declarative/qtquick1/ui-components/scrollbar/main.qml create mode 100644 examples/declarative/qtquick1/ui-components/scrollbar/pics/niagara_falls.jpg create mode 100644 examples/declarative/qtquick1/ui-components/scrollbar/scrollbar.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/searchbox/SearchBox.qml create mode 100644 examples/declarative/qtquick1/ui-components/searchbox/images/clear.png create mode 100644 examples/declarative/qtquick1/ui-components/searchbox/images/lineedit-bg-focus.png create mode 100644 examples/declarative/qtquick1/ui-components/searchbox/images/lineedit-bg.png create mode 100644 examples/declarative/qtquick1/ui-components/searchbox/main.qml create mode 100644 examples/declarative/qtquick1/ui-components/searchbox/searchbox.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/slideswitch/content/Switch.qml create mode 100644 examples/declarative/qtquick1/ui-components/slideswitch/content/background.svg create mode 100644 examples/declarative/qtquick1/ui-components/slideswitch/content/knob.svg create mode 100644 examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qml create mode 100644 examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/spinner/content/Spinner.qml create mode 100644 examples/declarative/qtquick1/ui-components/spinner/content/spinner-bg.png create mode 100644 examples/declarative/qtquick1/ui-components/spinner/content/spinner-select.png create mode 100644 examples/declarative/qtquick1/ui-components/spinner/main.qml create mode 100644 examples/declarative/qtquick1/ui-components/spinner/spinner.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/tabwidget/TabWidget.qml create mode 100644 examples/declarative/qtquick1/ui-components/tabwidget/main.qml create mode 100644 examples/declarative/qtquick1/ui-components/tabwidget/tab.png create mode 100644 examples/declarative/qtquick1/ui-components/tabwidget/tabwidget.qmlproject create mode 100644 examples/declarative/qtquick1/ui-components/ui-components.qmlproject create mode 100644 examples/declarative/qtquick1/xml/xml.qmlproject create mode 100644 examples/declarative/qtquick1/xml/xmlhttprequest/data.xml create mode 100644 examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest-example.qml create mode 100644 examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest.qmlproject create mode 100644 tests/auto/qtquick1/examples/data/dummytest.qml create mode 100644 tests/auto/qtquick1/examples/data/webbrowser/webbrowser.qml create mode 100644 tests/auto/qtquick1/examples/examples.pro create mode 100644 tests/auto/qtquick1/examples/tst_examples.cpp diff --git a/examples/declarative/cppextensions/cppextensions.pro b/examples/declarative/cppextensions/cppextensions.pro index 33762fe..cde19b5 100644 --- a/examples/declarative/cppextensions/cppextensions.pro +++ b/examples/declarative/cppextensions/cppextensions.pro @@ -4,7 +4,5 @@ SUBDIRS += \ imageprovider \ plugins \ networkaccessmanagerfactory \ - qwidgets \ - qgraphicslayouts \ referenceexamples diff --git a/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.pro b/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.pro deleted file mode 100644 index 32e81fe..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.pro +++ /dev/null @@ -1,8 +0,0 @@ -TEMPLATE = app -TARGET = -DEPENDPATH += . -INCLUDEPATH += . -QT += declarative qtquick1 - -SOURCES += main.cpp -RESOURCES += layoutitem.qrc diff --git a/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qml b/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qml deleted file mode 100644 index de4d161..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** 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 - -LayoutItem { //Sized by the layout - id: resizable - - minimumSize: "100x100" - maximumSize: "300x300" - preferredSize: "100x100" - - Rectangle { color: "yellow"; anchors.fill: parent } - - Rectangle { - width: 100; height: 100 - anchors.top: parent.top; anchors.right: parent.right - color: "green" - } -} diff --git a/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject b/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject deleted file mode 100644 index d4909f8..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject +++ /dev/null @@ -1,16 +0,0 @@ -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/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qrc b/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qrc deleted file mode 100644 index 2e52578..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qrc +++ /dev/null @@ -1,5 +0,0 @@ - - - layoutitem.qml - - diff --git a/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/main.cpp b/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/main.cpp deleted file mode 100644 index db94dea..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/layoutitem/main.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** 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 -#include -#include -#include -#include -#include -#include - -/* This example demonstrates using a LayoutItem to let QML snippets integrate - nicely with existing QGraphicsView applications designed with GraphicsLayouts -*/ -int main(int argc, char* argv[]) -{ - QApplication app(argc, argv); - - //Set up a graphics scene with a QGraphicsWidget and Layout - QGraphicsView view; - QGraphicsScene scene; - QGraphicsWidget *widget = new QGraphicsWidget(); - QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(); - widget->setLayout(layout); - scene.addItem(widget); - view.setScene(&scene); - - //Add the QML snippet into the layout - QDeclarativeEngine engine; - QDeclarativeComponent c(&engine, QUrl(":layoutitem.qml")); - QGraphicsLayoutItem* obj = qobject_cast(c.create()); - layout->addItem(obj); - - widget->setGeometry(QRectF(0,0, 400,400)); - view.show(); - return app.exec(); -} diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.cpp b/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.cpp deleted file mode 100644 index 3a073d0..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.cpp +++ /dev/null @@ -1,188 +0,0 @@ -/**************************************************************************** -** -** 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 "gridlayout.h" - -#include -#include - -GridLayoutAttached::GridLayoutAttached(QObject *parent) -: QObject(parent), m_row(-1), m_column(-1), m_rowspan(1), m_colspan(1), m_alignment(-1), m_rowStretch(-1), - m_colStretch(-1), m_rowSpacing(-1), m_colSpacing(-1), m_rowPrefHeight(-1), m_rowMaxHeight(-1), m_rowMinHeight(-1), - m_rowFixHeight(-1), m_colPrefwidth(-1), m_colMaxwidth(-1), m_colMinwidth(-1), m_colFixwidth(-1) -{ -} - -void GridLayoutAttached::setAlignment(Qt::Alignment a) -{ - if (m_alignment != a) { - m_alignment = a; - emit alignmentChanged(reinterpret_cast(parent()), m_alignment); - } -} - -QHash GraphicsGridLayoutObject::attachedProperties; - -GraphicsGridLayoutObject::GraphicsGridLayoutObject(QObject *parent) -: QObject(parent) -{ -} - -GraphicsGridLayoutObject::~GraphicsGridLayoutObject() -{ -} - -void GraphicsGridLayoutObject::addWidget(QGraphicsWidget *widget) -{ - //use attached properties - if (QObject *obj = attachedProperties.value(qobject_cast(widget))) { - int row = static_cast(obj)->row(); - int column = static_cast(obj)->column(); - int rowSpan = static_cast(obj)->rowSpan(); - int columnSpan = static_cast(obj)->columnSpan(); - if (row == -1 || column == -1) { - qWarning() << "Must set row and column for an item in a grid layout"; - return; - } - addItem(widget, row, column, rowSpan, columnSpan); - } -} - -void GraphicsGridLayoutObject::addLayoutItem(QGraphicsLayoutItem *item) -{ - //use attached properties - if (GridLayoutAttached *obj = attachedProperties.value(item)) { - int row = obj->row(); - int column = obj->column(); - int rowSpan = obj->rowSpan(); - int columnSpan = obj->columnSpan(); - Qt::Alignment alignment = obj->alignment(); - - if (row == -1 || column == -1) { - qWarning() << "Must set row and column for an item in a grid layout"; - return; - } - - if (obj->rowSpacing() != -1) - setRowSpacing(row, obj->rowSpacing()); - if (obj->columnSpacing() != -1) - setColumnSpacing(column, obj->columnSpacing()); - if (obj->rowStretchFactor() != -1) - setRowStretchFactor(row, obj->rowStretchFactor()); - if (obj->columnStretchFactor() != -1) - setColumnStretchFactor(column, obj->columnStretchFactor()); - if (obj->rowPreferredHeight() != -1) - setRowPreferredHeight(row, obj->rowPreferredHeight()); - if (obj->rowMaximumHeight() != -1) - setRowMaximumHeight(row, obj->rowMaximumHeight()); - if (obj->rowMinimumHeight() != -1) - setRowMinimumHeight(row, obj->rowMinimumHeight()); - if (obj->rowFixedHeight() != -1) - setRowFixedHeight(row, obj->rowFixedHeight()); - if (obj->columnPreferredWidth() != -1) - setColumnPreferredWidth(row, obj->columnPreferredWidth()); - if (obj->columnMaximumWidth() != -1) - setColumnMaximumWidth(row, obj->columnMaximumWidth()); - if (obj->columnMinimumWidth() != -1) - setColumnMinimumWidth(row, obj->columnMinimumWidth()); - if (obj->columnFixedWidth() != -1) - setColumnFixedWidth(row, obj->columnFixedWidth()); - - addItem(item, row, column, rowSpan, columnSpan); - - if (alignment != -1) - setAlignment(item, alignment); - QObject::connect(obj, SIGNAL(alignmentChanged(QGraphicsLayoutItem*, Qt::Alignment)), - this, SLOT(updateAlignment(QGraphicsLayoutItem*, Qt::Alignment))); - } -} - -void GraphicsGridLayoutObject::removeAt(int index) -{ - QGraphicsLayoutItem *item = itemAt(index); - if (item) { - GridLayoutAttached *obj = attachedProperties.value(item); - obj->disconnect(this); - attachedProperties.remove(item); - } - QGraphicsGridLayout::removeAt(index); -} - -void GraphicsGridLayoutObject::clearChildren() -{ - // do not delete the removed items; they will be deleted by the QML engine - while (count() > 0) - removeAt(count()-1); -} - -qreal GraphicsGridLayoutObject::spacing() const -{ - if (verticalSpacing() == horizontalSpacing()) - return verticalSpacing(); - return -1; -} - -qreal GraphicsGridLayoutObject::contentsMargin() const -{ - qreal a, b, c, d; - getContentsMargins(&a, &b, &c, &d); - if (a == b && a == c && a == d) - return a; - return -1; -} - -void GraphicsGridLayoutObject::setContentsMargin(qreal m) -{ - setContentsMargins(m, m, m, m); -} - -void GraphicsGridLayoutObject::updateAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment) -{ - QGraphicsGridLayout::setAlignment(item, alignment); -} - -GridLayoutAttached *GraphicsGridLayoutObject::qmlAttachedProperties(QObject *obj) -{ - GridLayoutAttached *rv = new GridLayoutAttached(obj); - if (qobject_cast(obj)) - attachedProperties.insert(qobject_cast(obj), rv); - return rv; -} - diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.h b/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.h deleted file mode 100644 index 905f2f2..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.h +++ /dev/null @@ -1,217 +0,0 @@ -/**************************************************************************** -** -** 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 GRIDLAYOUT_H -#define GRIDLAYOUT_H - -#include - -#include -#include - -class GridLayoutAttached; -class GraphicsGridLayoutObject : public QObject, public QGraphicsGridLayout -{ - Q_OBJECT - Q_INTERFACES(QGraphicsLayout QGraphicsLayoutItem) - - Q_PROPERTY(QDeclarativeListProperty children READ children) - Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing) - Q_PROPERTY(qreal contentsMargin READ contentsMargin WRITE setContentsMargin) - Q_PROPERTY(qreal verticalSpacing READ verticalSpacing WRITE setVerticalSpacing) - Q_PROPERTY(qreal horizontalSpacing READ horizontalSpacing WRITE setHorizontalSpacing) - Q_CLASSINFO("DefaultProperty", "children") - -public: - GraphicsGridLayoutObject(QObject * = 0); - ~GraphicsGridLayoutObject(); - - QDeclarativeListProperty children() { return QDeclarativeListProperty(this, 0, children_append, children_count, children_at, children_clear); } - - qreal spacing() const; - qreal contentsMargin() const; - void setContentsMargin(qreal); - - void removeAt(int index); - - static GridLayoutAttached *qmlAttachedProperties(QObject *); - -private slots: - void updateAlignment(QGraphicsLayoutItem*,Qt::Alignment); - -private: - friend class GraphicsLayoutAttached; - - void addWidget(QGraphicsWidget *); - void clearChildren(); - void addLayoutItem(QGraphicsLayoutItem *); - - static void children_append(QDeclarativeListProperty *prop, QGraphicsLayoutItem *item) { - static_cast(prop->object)->addLayoutItem(item); - } - - static void children_clear(QDeclarativeListProperty *prop) { - static_cast(prop->object)->clearChildren(); - } - - static int children_count(QDeclarativeListProperty *prop) { - return static_cast(prop->object)->count(); - } - - static QGraphicsLayoutItem *children_at(QDeclarativeListProperty *prop, int index) { - return static_cast(prop->object)->itemAt(index); - } - - static QHash attachedProperties; -}; - - -class GridLayoutAttached : public QObject -{ - Q_OBJECT - - Q_PROPERTY(int row READ row WRITE setRow) - Q_PROPERTY(int column READ column WRITE setColumn) - - Q_PROPERTY(int rowSpan READ rowSpan WRITE setRowSpan) - Q_PROPERTY(int columnSpan READ columnSpan WRITE setColumnSpan) - Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment) - - Q_PROPERTY(int rowStretchFactor READ rowStretchFactor WRITE setRowStretchFactor) - Q_PROPERTY(int columnStretchFactor READ columnStretchFactor WRITE setColumnStretchFactor) - Q_PROPERTY(int rowSpacing READ rowSpacing WRITE setRowSpacing) - Q_PROPERTY(int columnSpacing READ columnSpacing WRITE setColumnSpacing) - - Q_PROPERTY(int rowPreferredHeight READ rowPreferredHeight WRITE setRowPreferredHeight) - Q_PROPERTY(int rowMinimumHeight READ rowMinimumHeight WRITE setRowMinimumHeight) - Q_PROPERTY(int rowMaximumHeight READ rowMaximumHeight WRITE setRowMaximumHeight) - Q_PROPERTY(int rowFixedHeight READ rowFixedHeight WRITE setRowFixedHeight) - - Q_PROPERTY(int columnPreferredWidth READ columnPreferredWidth WRITE setColumnPreferredWidth) - Q_PROPERTY(int columnMaximumWidth READ columnMaximumWidth WRITE setColumnMaximumWidth) - Q_PROPERTY(int columnMinimumWidth READ columnMinimumWidth WRITE setColumnMinimumWidth) - Q_PROPERTY(int columnFixedWidth READ columnFixedWidth WRITE setColumnFixedWidth) - -public: - GridLayoutAttached(QObject *parent); - - int row() const { return m_row; } - void setRow(int r) { m_row = r; } - - int column() const { return m_column; } - void setColumn(int c) { m_column = c; } - - int rowSpan() const { return m_rowspan; } - void setRowSpan(int rs) { m_rowspan = rs; } - - int columnSpan() const { return m_colspan; } - void setColumnSpan(int cs) { m_colspan = cs; } - - Qt::Alignment alignment() const { return m_alignment; } - void setAlignment(Qt::Alignment a); - - int rowStretchFactor() const { return m_rowStretch; } - void setRowStretchFactor(int f) { m_rowStretch = f; } - int columnStretchFactor() const { return m_colStretch; } - void setColumnStretchFactor(int f) { m_colStretch = f; } - - int rowSpacing() const { return m_rowSpacing; } - void setRowSpacing(int s) { m_rowSpacing = s; } - int columnSpacing() const { return m_colSpacing; } - void setColumnSpacing(int s) { m_colSpacing = s; } - - int rowPreferredHeight() const { return m_rowPrefHeight; } - void setRowPreferredHeight(int s) { m_rowPrefHeight = s; } - - int rowMaximumHeight() const { return m_rowMaxHeight; } - void setRowMaximumHeight(int s) { m_rowMaxHeight = s; } - - int rowMinimumHeight() const { return m_rowMinHeight; } - void setRowMinimumHeight(int s) { m_rowMinHeight = s; } - - int rowFixedHeight() const { return m_rowFixHeight; } - void setRowFixedHeight(int s) { m_rowFixHeight = s; } - - int columnPreferredWidth() const { return m_colPrefwidth; } - void setColumnPreferredWidth(int s) { m_colPrefwidth = s; } - - int columnMaximumWidth() const { return m_colMaxwidth; } - void setColumnMaximumWidth(int s) { m_colMaxwidth = s; } - - int columnMinimumWidth() const { return m_colMinwidth; } - void setColumnMinimumWidth(int s) { m_colMinwidth = s; } - - int columnFixedWidth() const { return m_colFixwidth; } - void setColumnFixedWidth(int s) { m_colFixwidth = s; } - -signals: - void alignmentChanged(QGraphicsLayoutItem*, Qt::Alignment); - -private: - int m_row; - int m_column; - - int m_rowspan; - int m_colspan; - Qt::Alignment m_alignment; - - int m_rowStretch; - int m_colStretch; - int m_rowSpacing; - int m_colSpacing; - - int m_rowPrefHeight; - int m_rowMaxHeight; - int m_rowMinHeight; - int m_rowFixHeight; - - int m_colPrefwidth; - int m_colMaxwidth; - int m_colMinwidth; - int m_colFixwidth; -}; - -QML_DECLARE_INTERFACE(QGraphicsLayoutItem) -QML_DECLARE_INTERFACE(QGraphicsLayout) -QML_DECLARE_TYPE(GraphicsGridLayoutObject) -QML_DECLARE_TYPEINFO(GraphicsGridLayoutObject, QML_HAS_ATTACHED_PROPERTIES) - -#endif - diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.qrc b/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.qrc deleted file mode 100644 index bdf8312..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.qrc +++ /dev/null @@ -1,6 +0,0 @@ - - - qgraphicsgridlayout.qml - - - diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp b/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp deleted file mode 100644 index 6525cb3..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins 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 "gridlayout.h" - -#include -#include - -#include - -int main(int argc, char* argv[]) -{ - QApplication app(argc, argv); - - qmlRegisterInterface("QGraphicsLayoutItem"); - qmlRegisterInterface("QGraphicsLayout"); - qmlRegisterType("GridLayouts", 4, 7, "GraphicsGridLayout"); - - QDeclarativeView view; - view.setSource(QUrl(":qgraphicsgridlayout.qml")); - view.show(); - - return app.exec(); -}; - - diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.pro b/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.pro deleted file mode 100644 index 2d9e7bc..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.pro +++ /dev/null @@ -1,15 +0,0 @@ -TEMPLATE = app -TARGET = qgraphicsgridlayout -QT += declarative qtquick1 - -SOURCES += \ - gridlayout.cpp \ - main.cpp - -HEADERS += \ - gridlayout.h - -RESOURCES += \ - gridlayout.qrc - - diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.qml b/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.qml deleted file mode 100644 index 6780a5a..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.qml +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************** -** -** 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 GridLayouts 4.7 - -Item { - width: 400 - height: 400 - - QGraphicsWidget { - size.width: parent.width - size.height: parent.height - - /* - Below we create a grid layout using the GraphicsGridLayout item - (defined by the GraphicsGridLayoutObject class in gridlayout.h). - - The row, column etc. are set through attached properties on - GraphicsGridLayout, using the properties defined in the - GridLayoutAttached class (also defined in gridlayout.h). - */ - - layout: GraphicsGridLayout { - LayoutItem { - GraphicsGridLayout.row: 0 - GraphicsGridLayout.column: 0 - minimumSize: "100x100" - maximumSize: "300x300" - preferredSize: "200x200" - Rectangle { color: "red"; anchors.fill: parent } - } - LayoutItem { - GraphicsGridLayout.row: 0 - GraphicsGridLayout.column: 1 - minimumSize: "100x100" - maximumSize: "200x200" - preferredSize: "200x200" - Rectangle { color: "orange"; anchors.fill: parent } - } - LayoutItem { - GraphicsGridLayout.row: 1 - GraphicsGridLayout.column: 0 - GraphicsGridLayout.columnSpan: 2 - minimumSize: "100x100" - Rectangle { color: "yellow"; anchors.fill: parent } - } - LayoutItem { - GraphicsGridLayout.row: 2 - GraphicsGridLayout.column: 0 - preferredSize: "200x200" - Rectangle { color: "green"; anchors.fill: parent } - } - LayoutItem { - GraphicsGridLayout.row: 2 - GraphicsGridLayout.column: 1 - preferredSize: "200x200" - Rectangle { color: "blue"; anchors.fill: parent } - } - } - } -} - diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslayouts.pro b/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslayouts.pro deleted file mode 100644 index 672120a..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslayouts.pro +++ /dev/null @@ -1,6 +0,0 @@ -TEMPLATE = subdirs - -SUBDIRS += \ - layoutitem \ - qgraphicsgridlayout \ - qgraphicslinearlayout diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject b/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject deleted file mode 100644 index d4909f8..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject +++ /dev/null @@ -1,16 +0,0 @@ -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/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.cpp b/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.cpp deleted file mode 100644 index 75f43ca..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.cpp +++ /dev/null @@ -1,175 +0,0 @@ -/**************************************************************************** -** -** 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 "linearlayout.h" - -#include -#include - -LinearLayoutAttached::LinearLayoutAttached(QObject *parent) -: QObject(parent), m_stretch(1), m_alignment(Qt::AlignTop), m_spacing(0) -{ -} - -void LinearLayoutAttached::setStretchFactor(int f) -{ - if (m_stretch != f) { - m_stretch = f; - emit stretchChanged(reinterpret_cast(parent()), m_stretch); - } -} - -void LinearLayoutAttached::setSpacing(int s) -{ - if (m_spacing != s) { - m_spacing = s; - emit spacingChanged(reinterpret_cast(parent()), m_spacing); - } -} - -void LinearLayoutAttached::setAlignment(Qt::Alignment a) -{ - if (m_alignment != a) { - m_alignment = a; - emit alignmentChanged(reinterpret_cast(parent()), m_alignment); - } -} - -GraphicsLinearLayoutStretchItemObject::GraphicsLinearLayoutStretchItemObject(QObject *parent) - : QObject(parent) -{ -} - -QSizeF GraphicsLinearLayoutStretchItemObject::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const -{ - Q_UNUSED(which); - Q_UNUSED(constraint); - return QSizeF(); -} - - -GraphicsLinearLayoutObject::GraphicsLinearLayoutObject(QObject *parent) -: QObject(parent) -{ -} - -GraphicsLinearLayoutObject::~GraphicsLinearLayoutObject() -{ -} - -void GraphicsLinearLayoutObject::insertLayoutItem(int index, QGraphicsLayoutItem *item) -{ - insertItem(index, item); - - if (LinearLayoutAttached *obj = attachedProperties.value(item)) { - setStretchFactor(item, obj->stretchFactor()); - setAlignment(item, obj->alignment()); - updateSpacing(item, obj->spacing()); - QObject::connect(obj, SIGNAL(stretchChanged(QGraphicsLayoutItem*,int)), - this, SLOT(updateStretch(QGraphicsLayoutItem*,int))); - QObject::connect(obj, SIGNAL(alignmentChanged(QGraphicsLayoutItem*,Qt::Alignment)), - this, SLOT(updateAlignment(QGraphicsLayoutItem*,Qt::Alignment))); - QObject::connect(obj, SIGNAL(spacingChanged(QGraphicsLayoutItem*,int)), - this, SLOT(updateSpacing(QGraphicsLayoutItem*,int))); - } -} - -void GraphicsLinearLayoutObject::removeAt(int index) -{ - QGraphicsLayoutItem *item = itemAt(index); - if (item) { - LinearLayoutAttached *obj = attachedProperties.value(item); - obj->disconnect(this); - attachedProperties.remove(item); - } - QGraphicsLinearLayout::removeAt(index); -} - -void GraphicsLinearLayoutObject::clearChildren() -{ - // do not delete the removed items; they will be deleted by the QML engine - while (count() > 0) - removeAt(count()-1); -} - -qreal GraphicsLinearLayoutObject::contentsMargin() const -{ - qreal a, b, c, d; - getContentsMargins(&a, &b, &c, &d); - if (a == b && a == c && a == d) - return a; - return -1; -} - -void GraphicsLinearLayoutObject::setContentsMargin(qreal m) -{ - setContentsMargins(m, m, m, m); -} - -void GraphicsLinearLayoutObject::updateStretch(QGraphicsLayoutItem *item, int stretch) -{ - QGraphicsLinearLayout::setStretchFactor(item, stretch); -} - -void GraphicsLinearLayoutObject::updateSpacing(QGraphicsLayoutItem* item, int spacing) -{ - for (int i=0; i < count(); i++){ - if (itemAt(i) == item) { - QGraphicsLinearLayout::setItemSpacing(i, spacing); - return; - } - } -} - -void GraphicsLinearLayoutObject::updateAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment) -{ - QGraphicsLinearLayout::setAlignment(item, alignment); -} - -QHash GraphicsLinearLayoutObject::attachedProperties; -LinearLayoutAttached *GraphicsLinearLayoutObject::qmlAttachedProperties(QObject *obj) -{ - LinearLayoutAttached *rv = new LinearLayoutAttached(obj); - if (qobject_cast(obj)) - attachedProperties.insert(qobject_cast(obj), rv); - return rv; -} - - diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.h b/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.h deleted file mode 100644 index e423bd0..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.h +++ /dev/null @@ -1,152 +0,0 @@ -/**************************************************************************** -** -** 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 LINEARLAYOUT_H -#define LINEARLAYOUT_H - -#include - -#include -#include - -class GraphicsLinearLayoutStretchItemObject : public QObject, public QGraphicsLayoutItem -{ - Q_OBJECT - Q_INTERFACES(QGraphicsLayoutItem) -public: - GraphicsLinearLayoutStretchItemObject(QObject *parent = 0); - - virtual QSizeF sizeHint(Qt::SizeHint, const QSizeF &) const; -}; - - -class LinearLayoutAttached; -class GraphicsLinearLayoutObject : public QObject, public QGraphicsLinearLayout -{ - Q_OBJECT - Q_INTERFACES(QGraphicsLayout QGraphicsLayoutItem) - - Q_PROPERTY(QDeclarativeListProperty children READ children) - Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation) - Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing) - Q_PROPERTY(qreal contentsMargin READ contentsMargin WRITE setContentsMargin) - Q_CLASSINFO("DefaultProperty", "children") -public: - GraphicsLinearLayoutObject(QObject * = 0); - ~GraphicsLinearLayoutObject(); - - QDeclarativeListProperty children() { return QDeclarativeListProperty(this, 0, children_append, children_count, children_at, children_clear); } - - qreal contentsMargin() const; - void setContentsMargin(qreal); - - void removeAt(int index); - - static LinearLayoutAttached *qmlAttachedProperties(QObject *); - -private slots: - void updateStretch(QGraphicsLayoutItem*,int); - void updateSpacing(QGraphicsLayoutItem*,int); - void updateAlignment(QGraphicsLayoutItem*,Qt::Alignment); - -private: - friend class LinearLayoutAttached; - - void clearChildren(); - void insertLayoutItem(int, QGraphicsLayoutItem *); - - static void children_append(QDeclarativeListProperty *prop, QGraphicsLayoutItem *item) { - static_cast(prop->object)->insertLayoutItem(-1, item); - } - - static void children_clear(QDeclarativeListProperty *prop) { - static_cast(prop->object)->clearChildren(); - } - - static int children_count(QDeclarativeListProperty *prop) { - return static_cast(prop->object)->count(); - } - - static QGraphicsLayoutItem *children_at(QDeclarativeListProperty *prop, int index) { - return static_cast(prop->object)->itemAt(index); - } - - static QHash attachedProperties; -}; - - -class LinearLayoutAttached : public QObject -{ - Q_OBJECT - - Q_PROPERTY(int stretchFactor READ stretchFactor WRITE setStretchFactor NOTIFY stretchChanged) - Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment NOTIFY alignmentChanged) - Q_PROPERTY(int spacing READ spacing WRITE setSpacing NOTIFY spacingChanged) - -public: - LinearLayoutAttached(QObject *parent); - - int stretchFactor() const { return m_stretch; } - void setStretchFactor(int f); - Qt::Alignment alignment() const { return m_alignment; } - void setAlignment(Qt::Alignment a); - int spacing() const { return m_spacing; } - void setSpacing(int s); - -signals: - void stretchChanged(QGraphicsLayoutItem*, int); - void alignmentChanged(QGraphicsLayoutItem*, Qt::Alignment); - void spacingChanged(QGraphicsLayoutItem*, int); - -private: - int m_stretch; - Qt::Alignment m_alignment; - int m_spacing; -}; - -QML_DECLARE_INTERFACE(QGraphicsLayoutItem) -QML_DECLARE_INTERFACE(QGraphicsLayout) -QML_DECLARE_TYPE(GraphicsLinearLayoutStretchItemObject) -QML_DECLARE_TYPE(GraphicsLinearLayoutObject) -QML_DECLARE_TYPEINFO(GraphicsLinearLayoutObject, QML_HAS_ATTACHED_PROPERTIES) - -#endif - - diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.qrc b/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.qrc deleted file mode 100644 index 93a3533..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.qrc +++ /dev/null @@ -1,6 +0,0 @@ - - - qgraphicslinearlayout.qml - - - diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp b/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp deleted file mode 100644 index f8d08c2..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins 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 "linearlayout.h" - -#include -#include - -#include - -int main(int argc, char* argv[]) -{ - QApplication app(argc, argv); - - qmlRegisterInterface("QGraphicsLayoutItem"); - qmlRegisterInterface("QGraphicsLayout"); - qmlRegisterType("LinearLayouts", 4, 7, "GraphicsLinearLayoutStretchItem"); - qmlRegisterType("LinearLayouts", 4, 7, "GraphicsLinearLayout"); - - QDeclarativeView view; - view.setSource(QUrl(":qgraphicslinearlayout.qml")); - view.show(); - - return app.exec(); -}; - - diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.pro b/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.pro deleted file mode 100644 index c2e9b57..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.pro +++ /dev/null @@ -1,15 +0,0 @@ -TEMPLATE = app -TARGET = qgraphicslinearlayout -QT += declarative qtquick1 - -SOURCES += \ - linearlayout.cpp \ - main.cpp - -HEADERS += \ - linearlayout.h - -RESOURCES += \ - linearlayout.qrc - - diff --git a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.qml b/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.qml deleted file mode 100644 index a7d79e5..0000000 --- a/examples/declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.qml +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** 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 LinearLayouts 4.7 - -Item { - width: 400 - height: 400 - - QGraphicsWidget { - size.width: parent.width - size.height: parent.height - - /* - Below we create a linear layout using the GraphicsLinearLayout item - (defined by the GraphicsLinearLayoutObject class in linearlayout.h). - - The first LayoutItem uses 'GraphicsLinearLayout.spacing' to set the - item's spacing: this is an attached property, set using the - properties defined in the LinearLayoutAttached class (also defined - in linearlayout.h). - */ - - layout: GraphicsLinearLayout { - LayoutItem { - GraphicsLinearLayout.spacing: 50 - minimumSize: "100x100" - maximumSize: "200x200" - preferredSize: "100x100" - Rectangle { color: "yellow"; anchors.fill: parent } - } - LayoutItem { - minimumSize: "100x100" - maximumSize: "400x400" - preferredSize: "300x300" - Rectangle { color: "green"; anchors.fill: parent } - } - } - } -} - diff --git a/examples/declarative/cppextensions/qwidgets/QWidgets/qmldir b/examples/declarative/cppextensions/qwidgets/QWidgets/qmldir deleted file mode 100644 index a7c1d95..0000000 --- a/examples/declarative/cppextensions/qwidgets/QWidgets/qmldir +++ /dev/null @@ -1 +0,0 @@ -plugin qmlqwidgetsplugin diff --git a/examples/declarative/cppextensions/qwidgets/README b/examples/declarative/cppextensions/qwidgets/README deleted file mode 100644 index e2f1b2b..0000000 --- a/examples/declarative/cppextensions/qwidgets/README +++ /dev/null @@ -1,6 +0,0 @@ -This example shows how to embed QWidget-based objects into QML. - -To run: - - make install - qml qwidgets.qml diff --git a/examples/declarative/cppextensions/qwidgets/qwidgets.cpp b/examples/declarative/cppextensions/qwidgets/qwidgets.cpp deleted file mode 100644 index 843ac0f..0000000 --- a/examples/declarative/cppextensions/qwidgets/qwidgets.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -** -** 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 -#include -#include -#include -#include - -class MyPushButton : public QGraphicsProxyWidget -{ - Q_OBJECT - Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged) - -public: - MyPushButton(QGraphicsItem* parent = 0) - : QGraphicsProxyWidget(parent) - { - widget = new QPushButton("MyPushButton"); - widget->setAttribute(Qt::WA_NoSystemBackground); - setWidget(widget); - - QObject::connect(widget, SIGNAL(clicked(bool)), this, SIGNAL(clicked(bool))); - } - - QString text() const - { - return widget->text(); - } - - void setText(const QString& text) - { - if (text != widget->text()) { - widget->setText(text); - emit textChanged(); - } - } - -Q_SIGNALS: - void clicked(bool); - void textChanged(); - -private: - QPushButton *widget; -}; - -class QWidgetsPlugin : public QDeclarativeExtensionPlugin -{ - Q_OBJECT -public: - void registerTypes(const char *uri) - { - qmlRegisterType(uri, 1, 0, "MyPushButton"); - } -}; - -#include "qwidgets.moc" - -Q_EXPORT_PLUGIN2(qmlqwidgetsplugin, QWidgetsPlugin); diff --git a/examples/declarative/cppextensions/qwidgets/qwidgets.pro b/examples/declarative/cppextensions/qwidgets/qwidgets.pro deleted file mode 100644 index d7e6f93..0000000 --- a/examples/declarative/cppextensions/qwidgets/qwidgets.pro +++ /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/cppextensions/qwidgets/qwidgets.qml b/examples/declarative/cppextensions/qwidgets/qwidgets.qml deleted file mode 100644 index 5046dd7..0000000 --- a/examples/declarative/cppextensions/qwidgets/qwidgets.qml +++ /dev/null @@ -1,110 +0,0 @@ -/**************************************************************************** -** -** 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 "QWidgets" 1.0 - -Rectangle { - id: window - - property int margin: 30 - - width: 640; height: 480 - color: palette.window - - SystemPalette { id: palette } - - MyPushButton { - id: button1 - x: margin; y: margin - text: "Right" - transformOriginPoint: Qt.point(width / 2, height / 2) - - onClicked: window.state = "right" - } - - MyPushButton { - id: button2 - x: margin; y: margin + 30 - text: "Bottom" - transformOriginPoint: Qt.point(width / 2, height / 2) - - onClicked: window.state = "bottom" - } - - MyPushButton { - id: button3 - x: margin; y: margin + 60 - text: "Quit" - transformOriginPoint: Qt.point(width / 2, height / 2) - - onClicked: Qt.quit() - } - - states: [ - State { - name: "right" - PropertyChanges { target: button1; x: window.width - width - margin; text: "Left"; onClicked: window.state = "" } - PropertyChanges { target: button2; x: window.width - width - margin } - PropertyChanges { target: button3; x: window.width - width - margin } - PropertyChanges { target: window; color: Qt.darker(palette.window) } - }, - State { - name: "bottom" - PropertyChanges { target: button1; y: window.height - height - margin; rotation: 180 } - PropertyChanges { - target: button2 - x: button1.x + button1.width + 10; y: window.height - height - margin - rotation: 180 - text: "Top" - onClicked: window.state = "" - } - PropertyChanges { target: button3; x: button2.x + button2.width + 10; y: window.height - height - margin; rotation: 180 } - PropertyChanges { target: window; color: Qt.lighter(palette.window) } - } - ] - - transitions: Transition { - ParallelAnimation { - NumberAnimation { properties: "x,y,rotation"; duration: 600; easing.type: Easing.OutQuad } - ColorAnimation { target: window; duration: 600 } - } - } -} diff --git a/examples/declarative/cppextensions/qwidgets/qwidgets.qmlproject b/examples/declarative/cppextensions/qwidgets/qwidgets.qmlproject deleted file mode 100644 index d4909f8..0000000 --- a/examples/declarative/cppextensions/qwidgets/qwidgets.qmlproject +++ /dev/null @@ -1,16 +0,0 @@ -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.pro b/examples/declarative/qtquick1.pro new file mode 100644 index 0000000..e441d85 --- /dev/null +++ b/examples/declarative/qtquick1.pro @@ -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 index 0000000..578c245 --- /dev/null +++ b/examples/declarative/qtquick1/README @@ -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/animation.qmlproject b/examples/declarative/qtquick1/animation/animation.qmlproject new file mode 100644 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/animation/animation.qmlproject @@ -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/basics/basics.qmlproject b/examples/declarative/qtquick1/animation/basics/basics.qmlproject new file mode 100644 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/animation/basics/basics.qmlproject @@ -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/basics/color-animation.qml b/examples/declarative/qtquick1/animation/basics/color-animation.qml new file mode 100644 index 0000000..2609166 --- /dev/null +++ b/examples/declarative/qtquick1/animation/basics/color-animation.qml @@ -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 index 0000000000000000000000000000000000000000..3d66d725781730c7a9376a25113164f8882d9795 GIT binary patch literal 15408 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 SNxgs4ATkn);&q}%LH`e8$k9yz literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/animation/basics/images/moon.png b/examples/declarative/qtquick1/animation/basics/images/moon.png new file mode 100644 index 0000000000000000000000000000000000000000..9407b2b4f012de17999fb3695ddc14fb5787289e GIT binary patch literal 2433 zcmV-{34Zp8P)Px#32;bRa{vGvuK)lWuK`{fksJU300(qQO+^RT2NVkw8~1$KVgLXD0%A)?L;(MX zkIcUS00{+2L_t(&-tE|F$ff652k_thY-fGXyUt{pOvqU4l8PpwVhOc1)R=;_9|WyZ zLM+ira0?<9W5h3Q6)l1vgo?IG)nXN?A!$i1)j~*dr5Y0rW^pnz$;@Ql{k&&+c0bH9 zQk_ZOi79@W>*0KP4)=ZipX>VH%m2^SxEfdEYWzP(cs+yKi{rxAylP+HWZ?=E6V>s# z^8@BP@r**r9t&l0^#@8gdjd+HBvJdsN@Dnago1GTwE ztyC(sA_t}-joMtHHF2PndD9^L&M)0AeKjIPmuLP{qlZ2^xFu7VqqbwuOsz((QmGWE za zEYnpBT9KY(?|a~TrR^0}AnbJ?`N__;b5o_r8X~1!xqwkC95HfKY-T35uTd$@&AlX* zX#{h%9 z3TI`8-~C6&KR8w$t_AU*9qZnfixy8(0TmbP0}8w1ugMoZ(ojA78QuJA{~9PYQgQ;#DN22U-hqE@RHLSrN)MJJ?wbd zIa^A{6iR!dcV6gRstK2`NhGd0Q_$bgtJ+Gb7RfEdU4Xv>=^5BU#{IbFJex^mL5vBT^$W zbiuM)_4U&yjvTTA^CTWJUl8!(WZM#@b%|Og5!C1_>=>x^t!vE^Dm(NSpZ%B|T@N)2#UY*}B>SW{TBsn%FA(MWBXiA07rvqSC! zNt4Ygt-gsywmADEjm%u5BNIv8U@DVpwNkmD<65guc|ql7bGy!{G@fgL1M{uHYFk*>?&mj`nF|SsYbA-)f!7wA|0iG%uwybw)QY2Y&)f$QfkT2 znvRaqVzRMDWNM;SIjfc1lSyqDiN#hFHVq9#60NRQ(2<%I-+AG10CdXuxzb$idILSz zxzRDL%v>gu$_@4O&=aXlP0a;;y9PG&WO`N&b+r1fk%>+pJvd|q2Ia~>j2&pzI+i55 zQp-9LBkTIu6;$@kq&oVxM2iiF4eNqaw)OQaS+*wDK6}mdPyhn;osUhbj#w(SV$GJh z3LTlLMk+|vhL#QV1*;OwHTpJ0#&T1!8(fQhQyyQ+57`3ET`y)|&GifoB@Vn`SFkKK zGt?D}q=t@LM%Suct)RtNs!?bS9B9S5YV+z_z7WcA$O}nx-K6*MzFZ>F*EKNL*iovL z5ibLbmUDDM38V)K+ObBWBF%z;Q>Drm$K ziAdkvH3s@d5<#xj)6=@fH%O&AR`d+@KCwPIG=M<;qo?|x-nX|9U^hAHhz&uH| zpk06{%;e@Ojanr&GPPrN>Xrvb`te)^uz^ro-dAGqidl-VDD(_j5oxZ_5N){@kko~~t$pv10XA=z4upfy(+pSk}2 zyC3b%{!b3cMF^6AUjNMx_3pdAvnnyyml_zNkh9Rs7uUi?@xIv(9=Z9!yZ${ZUfU}> zoJ$s;?tkjL_I@$FV=Z(AvA!FWUeX96g<6YRD^)((|Jb`9IkvAljA?mjpRi7z9{uS% z+V`h-4Tp)yH8Q&*UBRv#Lv>kyIs3!!`Qr7vN%02yg#YcCh&Ov*I)3twmdPx#0%A)?L;(MXkIcUS000SaNLh0L01egv01egwkZ*aM00007bV*G`2iXc00xlLP z#V}X^00AvYL_t(2&sCDmNl}EMEjCrA2w=vc5!OUM!FuD-_qwCu z^ZIk5D1g1};DjS(oC+vrU?eAsfYNG&Q)L-!!IU*zr^u&;}%JHDzo8btuQ^bBfVmTJZVFZXTRuy2CrP* zT!PphT5-)`(2H-=@k)Vt<;gk3%#kNYmKlWzY$75$v}x%FIigLAuX-!tj^E%PUE_#&1J>;Bn(m#0}>+tzhKNaRv)bo>$a@~7Ni*txp8b$W75xsJQ)&K2Nfd>P4e_{{OW z(~I@y#8eivb^SXekx4GghgWPVlaP+9 zNOe3isi&#jPHSy0`-1#=FN)3@_pe!NQI(jQonrCMFf2u6*?}!tHM6v??l8Obck?;Z rp!JTQUY&A`>woHd{mlRRh4lbP0l+XkKyuFM8 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/animation/basics/images/sun.png b/examples/declarative/qtquick1/animation/basics/images/sun.png new file mode 100644 index 0000000000000000000000000000000000000000..7713ca5ce7d1223430594e4d79632a70257dce05 GIT binary patch literal 8153 zcmV;~A12_5P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iOM@ z5+^2qR+x?e03TUNL_t(|+U%LxlO@M>-oKMeRo%LK-+Q~KyJtmX8w?hL08COc1&gAM zut6)R2+EG|1H%uF@S7g&(6i}3!45z9$uD+eiCWarIqh0fr!GQVN8^r~8YOT{Tfz`J2phPG;f%+o!~S@AoG9i1DAD6!&;--lRg z-5&@aKy*3?s#Wmc3LrS&(|r9DvcCY!eh~5ZI)s_=9{^sU+E{^FUIzGImwKZum}mF@ z^tVLeWe7k5pJE`)5X_&n$4-EBMXmfc;57xH2NdR3e?}77YQ;k%1Msyc3HG$cYoDFI z=SrcaR&`|XM4w_HSTEIw=0660E|{?jvE2z70E|?q1`+1g=qhG}2%ymfP?ZF(Y2+dJ zphcDkHBv>u0rGqQL%#7T1F{Ma35|0I@L!%2<<$R(@xLkcKLF2;nZ`AI^ARaT0Mv`x zodBB#AQu%mBp8HYGX%l_XW#M3TTg0V9aSyC$qW`Vk&e2Q}P;#H+D}^DSaq#}SZA5b#+YWCQ%9 zqpHvgRNJg*%?Z`PnA5Yz;FGwM2Z-I#eIxlc?Q>BT@Zg`KYX1eqb2|kLJ_mAPP1qgGg8z0Rk^x~V&3Gaf( zyIov3?FnYc-CMEObZT+?bW;l#z*p-fB*9LsvBx5*ahpYYoGD*|cdJBn9MT?#N_s%r zlestsVasc27nHQvs5Jz`MYXRpH?|rflsC`T1h|3pM;ZSo5Ch*0Q%fB2f@b1(ekwrL*WCsUn!6Yfc>_IIMiTP z%*gP)Re|cs3VuhW$oF=9(K;s%Pp-T8Y9{MD8vW`+KCcQXOw5{`(1%q(o(7G(B+z7- z1nj$|1c*Z~5E0ZWyx(OuB|PqvcXeprBg-2=-V~CREKby%bv+SZyNMbU-dOY)pQ@sf zX8zjpqF0ENb~|ZyQR$U>ti&*-Gw{DMApF|XgnpCF`RkO8Pow_a<)|oU%~D zK3zq8D*?oasqq;xSlQ&(&4O#&ZIQ%ZV4dv|%a~PCVH=+<@+>rCaUxH0@4Rali9gF; zgi;r*D>9JEMPX$ubu9K(AQB>1Ctqwac$Iu;*hUY@VCxN5gTUu8%ludsVP0U|jRc`5 zIKO~O8tZ1#5|r)Z)n^R9n-G!@2!Ay8^o?H($UK$avE8m1x9e*65{iY`dR+Xhq}3}8 z(b~?EerD@vw2`)2qOzUAbV8)@-vu=`sNN?oBI@La&V6!~y}ZFu97h1?kgEihWI_;p*cMl^Q@EfCGr{>Utllw$KfZI_y zLIR5_3L=1i{FMM+oB-Kf(7^N2%Ixet1X~m+0?pQTNGF;^(e^fccCepx_pXi~48#*l zjdNck)m{XsC}k!h;bu_yL!Aq7De|iH8t?&Ze+Pq$f9M^*cXMIQe5cmX>*SgNd%Z

b<3iL|%8C*7t4{PmZnxpJ}Z9PFOkp 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 Vh5vkKWu5>4002ovPDHLkV1nYy`N{wQ literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/animation/easing/easing.qml b/examples/declarative/qtquick1/animation/easing/easing.qml new file mode 100644 index 0000000..1092ee5 --- /dev/null +++ b/examples/declarative/qtquick1/animation/easing/easing.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/animation/easing/easing.qmlproject @@ -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 index 0000000000000000000000000000000000000000..14ddf2a0289e64c686b34712b8754bc4baac2726 GIT binary patch literal 5149 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/animation/states/states.qml b/examples/declarative/qtquick1/animation/states/states.qml new file mode 100644 index 0000000..9af1e12 --- /dev/null +++ b/examples/declarative/qtquick1/animation/states/states.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/animation/states/states.qmlproject @@ -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 index 0000000..3051c85 --- /dev/null +++ b/examples/declarative/qtquick1/animation/states/transitions.qml @@ -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 index 0000000..33762fe --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/cppextensions.pro @@ -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 index 0000000..6b36284 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/cppextensions.qmlproject @@ -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 index 0000000..6be88bc --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/imageprovider/ImageProviderCore/qmldir @@ -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 index 0000000..e25b420 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider-example.qml @@ -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 index 0000000..7f52aa1 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.cpp @@ -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 + +#include +#include +#include +#include +#include +#include +#include + +//![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 index 0000000..6f317b4 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.pro @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/imageprovider/imageprovider.qmlproject @@ -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 index 0000000..1be3379 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/main.cpp @@ -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 +#include +#include + +#include +#include +#include + + +/* + This example illustrates using a QDeclarativeNetworkAccessManagerFactory to + create a QNetworkAccessManager with a proxy. + + Usage: + networkaccessmanagerfactory [-host -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 -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 index 0000000..4eebdd2 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.pro @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qmlproject @@ -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 index 0000000..17e9301 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/networkaccessmanagerfactory.qrc @@ -0,0 +1,5 @@ + + + view.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/view.qml b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/view.qml new file mode 100644 index 0000000..e002ef6 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/networkaccessmanagerfactory/view.qml @@ -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 index 0000000..95e0eea --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/plugins/README @@ -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 index 0000000..465f164 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/Clock.qml @@ -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 index 0000000000000000000000000000000000000000..7fbd802a44e4242cb2ce11fd78efa0e2e9123591 GIT binary patch literal 765 zcmVwm?cmZyN`*KT0&&bzT5WB7@L(auxOrlE<9L|IL z&i8)L&uf>4S*T)OE8F->35(24d5sX5GeKScQ1}Zk0{U)AOeg56F@@r z9&i_k$@vIi#IHYN1sVpTz-?fBeSQ6DCX;#L`@V5q_xHlW!biXb&PAI*M>7u%0F42O z&CSilY&QEQkw`q(Y+9|>+rz`dd@7ZCCyf6B4GRvyQa(U#F>=uz;8CGacvY|0gJD{& zR*!%=;GskpvRQC?*oNeXsg;$Lg75nb(|9~ScW`jV&hDzY)D;F81#ZpE%q)7I$4wLnZ)|KVO0gq?V>GZMsffhm@h95(I@ZZ# z@|p5Cm%2j9NTbnchQr~}K4*QUR;xAXnTaa{0<=q|(&w9`!7|R}a-RSX+iE?)KF|i5 zdwY9dZUWrtbf{D+rE0Z$O1Fn?9|syZpgTcsu~% z2a54IaFR}^*UIJc*Fkx8UH5EjYin(1XXi+K>f-M$<%5e|vAb&Q;)&8-GE=~VTrQWI zpPx@oPftIdoSeL0E|vh*lr=Z!!jm-Q2}+N`W?w>U9_n|b&dh-G77}8A*@a$++Si(L{Cv$O@m%xtVMFJ vUl6^??F-^D;CUJdtS*47?_QuH>?{8O-DBHcK9x2C00000NkvXXu0mjfY~)gG literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..462edacc0eaae9f2789ba6ae2c92ed533bba7207 GIT binary patch literal 20653 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�$@7S8U3ymd7s7tyOHWAvUm z!t8j;y?C2<2}e`&NBs zk|RSR9_R4Kg=Z_uc_R(0ACjxF<KbE$Lo&3+4H z^-oQ4`H5?8exV)c>u1Dr0kTvFTg+)a8?8bsZwpqqX4r2oz8QT40DQmj`P6*QrBm>V7YV%01x_JADEx%^ zYr);e3s%p$=CZLzuClr$rRa0A`ju}-P<7iI{`Q`4)24ZEZqVnxG9SyXV&z_!Wd`%z zcVvG&ybwli^(yJ@>A{_Ob>)%J!=DGKNXOy1Jtb*^m!xa}Mzho4i2eXqq#bjk9FMd^ z8V^ntW~3cz#40NrK_b|AKh5Pl@X5^Qj`XWG zg1NcPnfY(~#SJg#&X_g6_1DAEkoGm=6g)pmB&Gv`&Ugwe?Xb-v3K2s;3O&vdUn>)6 zNbhzTNrphVr~;_n>$V{lZjvIRlU&TIiaBFql|r3%7EpzD`Zl=;nN&^^4*{)Byzpbgy7Ztu1Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iXc9 z05S=eKQo^I00HqyL_t(o!|j;6j?+LChQH(WKrRH9n~*5B+Xf+}qoCp?QbhDr+aW4C zdL)WeG|*73Qt}2#5GYa#8lHeyT5%Jx6^|Vs3TCpi3#*N^(5!rAP(?i zpbcDdi`#BafhF)0_yH_{<^G;j-Z65HSAi?QwQje2qu=lE8e?QQ9DbTiCZB$!PRzWG#b6g^IYfixlNKp zlO)mkd~WkR*XeZn9N2LsMIPI@O}e#MEZ(MRdQ(+f!4V-MX{XaUXti1ofGWn%B2ph!ja_4( zllQqksv7%D*vIGV-L8MJ_1E)%V^D@!@0!USLDI&%-Tf!(+)zhuk*v@?gELHWx3HVl3-#ZiS4OG{=?eVR(k3}SQ z4HfIgcM*xLwNJwSkc5pTA8#HNca1U6fcp;rT~QQIAHFmn!*#y^s*t+D3$g`_00000 LNkvXXu0mjfjzPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iXc9 z05TtA>xRw%00HqyL_t(o!{wO0j?+L8fWO%|770J$s8EVS0#RN|$77_WqdO@D#YwzF zQsph6q@&?ABGEeN5LNhz?tJXf%o=NP@WtU|M~t+J=8lH8w8rzgYVaAXtQF)NbbYoOc(p3G*mm#fw4({j1|oMqYhd_F$|o&k?c z$4P0>0C<>X+1vGceG&pR8jU`V$Kw~kIq(Jeo)AfzrjMnt82bJGIM#9eDMGar2~Dbc z%cPR{zmaMssiJHlu@`A?^Q0;eRi?UYgu2B*)FwBg`kN!&oKJD|>hjcx)N9wLMxs9`<{e7>)D_3?Qbu$pY$hFJ3sqOT zr3pU0HwA!=s=hNTe7MaiqGvBO&o5r3X?iIl&sFt9p69OvA?W@B51fzRJAdej00000 LNkvXXu0mjfJuMrm literal 0 HcmV?d00001 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 index 0000000..e1288cf --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/plugins/com/nokia/TimeExample/qmldir @@ -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 index 0000000..056e093 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/plugins/plugin.cpp @@ -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 +#include +#include +#include +#include +#include + +// 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(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 index 0000000..b7610a8 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/plugins/plugins.pro @@ -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 index 0000000..a61af15 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/plugins/plugins.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/plugins/plugins.qmlproject @@ -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.pro b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.pro new file mode 100644 index 0000000..77c6b2a --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.pro @@ -0,0 +1,8 @@ +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . +QT += declarative + +SOURCES += main.cpp +RESOURCES += layoutitem.qrc diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qml b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qml new file mode 100644 index 0000000..de4d161 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qml @@ -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 + +LayoutItem { //Sized by the layout + id: resizable + + minimumSize: "100x100" + maximumSize: "300x300" + preferredSize: "100x100" + + Rectangle { color: "yellow"; anchors.fill: parent } + + Rectangle { + width: 100; height: 100 + anchors.top: parent.top; anchors.right: parent.right + color: "green" + } +} diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject new file mode 100644 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qmlproject @@ -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.qrc b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qrc new file mode 100644 index 0000000..2e52578 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/layoutitem.qrc @@ -0,0 +1,5 @@ + + + layoutitem.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/main.cpp b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/main.cpp new file mode 100644 index 0000000..db94dea --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/layoutitem/main.cpp @@ -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$ +** +****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include + +/* This example demonstrates using a LayoutItem to let QML snippets integrate + nicely with existing QGraphicsView applications designed with GraphicsLayouts +*/ +int main(int argc, char* argv[]) +{ + QApplication app(argc, argv); + + //Set up a graphics scene with a QGraphicsWidget and Layout + QGraphicsView view; + QGraphicsScene scene; + QGraphicsWidget *widget = new QGraphicsWidget(); + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(); + widget->setLayout(layout); + scene.addItem(widget); + view.setScene(&scene); + + //Add the QML snippet into the layout + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl(":layoutitem.qml")); + QGraphicsLayoutItem* obj = qobject_cast(c.create()); + layout->addItem(obj); + + widget->setGeometry(QRectF(0,0, 400,400)); + view.show(); + return app.exec(); +} diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.cpp b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.cpp new file mode 100644 index 0000000..3a073d0 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.cpp @@ -0,0 +1,188 @@ +/**************************************************************************** +** +** 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 "gridlayout.h" + +#include +#include + +GridLayoutAttached::GridLayoutAttached(QObject *parent) +: QObject(parent), m_row(-1), m_column(-1), m_rowspan(1), m_colspan(1), m_alignment(-1), m_rowStretch(-1), + m_colStretch(-1), m_rowSpacing(-1), m_colSpacing(-1), m_rowPrefHeight(-1), m_rowMaxHeight(-1), m_rowMinHeight(-1), + m_rowFixHeight(-1), m_colPrefwidth(-1), m_colMaxwidth(-1), m_colMinwidth(-1), m_colFixwidth(-1) +{ +} + +void GridLayoutAttached::setAlignment(Qt::Alignment a) +{ + if (m_alignment != a) { + m_alignment = a; + emit alignmentChanged(reinterpret_cast(parent()), m_alignment); + } +} + +QHash GraphicsGridLayoutObject::attachedProperties; + +GraphicsGridLayoutObject::GraphicsGridLayoutObject(QObject *parent) +: QObject(parent) +{ +} + +GraphicsGridLayoutObject::~GraphicsGridLayoutObject() +{ +} + +void GraphicsGridLayoutObject::addWidget(QGraphicsWidget *widget) +{ + //use attached properties + if (QObject *obj = attachedProperties.value(qobject_cast(widget))) { + int row = static_cast(obj)->row(); + int column = static_cast(obj)->column(); + int rowSpan = static_cast(obj)->rowSpan(); + int columnSpan = static_cast(obj)->columnSpan(); + if (row == -1 || column == -1) { + qWarning() << "Must set row and column for an item in a grid layout"; + return; + } + addItem(widget, row, column, rowSpan, columnSpan); + } +} + +void GraphicsGridLayoutObject::addLayoutItem(QGraphicsLayoutItem *item) +{ + //use attached properties + if (GridLayoutAttached *obj = attachedProperties.value(item)) { + int row = obj->row(); + int column = obj->column(); + int rowSpan = obj->rowSpan(); + int columnSpan = obj->columnSpan(); + Qt::Alignment alignment = obj->alignment(); + + if (row == -1 || column == -1) { + qWarning() << "Must set row and column for an item in a grid layout"; + return; + } + + if (obj->rowSpacing() != -1) + setRowSpacing(row, obj->rowSpacing()); + if (obj->columnSpacing() != -1) + setColumnSpacing(column, obj->columnSpacing()); + if (obj->rowStretchFactor() != -1) + setRowStretchFactor(row, obj->rowStretchFactor()); + if (obj->columnStretchFactor() != -1) + setColumnStretchFactor(column, obj->columnStretchFactor()); + if (obj->rowPreferredHeight() != -1) + setRowPreferredHeight(row, obj->rowPreferredHeight()); + if (obj->rowMaximumHeight() != -1) + setRowMaximumHeight(row, obj->rowMaximumHeight()); + if (obj->rowMinimumHeight() != -1) + setRowMinimumHeight(row, obj->rowMinimumHeight()); + if (obj->rowFixedHeight() != -1) + setRowFixedHeight(row, obj->rowFixedHeight()); + if (obj->columnPreferredWidth() != -1) + setColumnPreferredWidth(row, obj->columnPreferredWidth()); + if (obj->columnMaximumWidth() != -1) + setColumnMaximumWidth(row, obj->columnMaximumWidth()); + if (obj->columnMinimumWidth() != -1) + setColumnMinimumWidth(row, obj->columnMinimumWidth()); + if (obj->columnFixedWidth() != -1) + setColumnFixedWidth(row, obj->columnFixedWidth()); + + addItem(item, row, column, rowSpan, columnSpan); + + if (alignment != -1) + setAlignment(item, alignment); + QObject::connect(obj, SIGNAL(alignmentChanged(QGraphicsLayoutItem*, Qt::Alignment)), + this, SLOT(updateAlignment(QGraphicsLayoutItem*, Qt::Alignment))); + } +} + +void GraphicsGridLayoutObject::removeAt(int index) +{ + QGraphicsLayoutItem *item = itemAt(index); + if (item) { + GridLayoutAttached *obj = attachedProperties.value(item); + obj->disconnect(this); + attachedProperties.remove(item); + } + QGraphicsGridLayout::removeAt(index); +} + +void GraphicsGridLayoutObject::clearChildren() +{ + // do not delete the removed items; they will be deleted by the QML engine + while (count() > 0) + removeAt(count()-1); +} + +qreal GraphicsGridLayoutObject::spacing() const +{ + if (verticalSpacing() == horizontalSpacing()) + return verticalSpacing(); + return -1; +} + +qreal GraphicsGridLayoutObject::contentsMargin() const +{ + qreal a, b, c, d; + getContentsMargins(&a, &b, &c, &d); + if (a == b && a == c && a == d) + return a; + return -1; +} + +void GraphicsGridLayoutObject::setContentsMargin(qreal m) +{ + setContentsMargins(m, m, m, m); +} + +void GraphicsGridLayoutObject::updateAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment) +{ + QGraphicsGridLayout::setAlignment(item, alignment); +} + +GridLayoutAttached *GraphicsGridLayoutObject::qmlAttachedProperties(QObject *obj) +{ + GridLayoutAttached *rv = new GridLayoutAttached(obj); + if (qobject_cast(obj)) + attachedProperties.insert(qobject_cast(obj), rv); + return rv; +} + diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.h b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.h new file mode 100644 index 0000000..905f2f2 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.h @@ -0,0 +1,217 @@ +/**************************************************************************** +** +** 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 GRIDLAYOUT_H +#define GRIDLAYOUT_H + +#include + +#include +#include + +class GridLayoutAttached; +class GraphicsGridLayoutObject : public QObject, public QGraphicsGridLayout +{ + Q_OBJECT + Q_INTERFACES(QGraphicsLayout QGraphicsLayoutItem) + + Q_PROPERTY(QDeclarativeListProperty children READ children) + Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing) + Q_PROPERTY(qreal contentsMargin READ contentsMargin WRITE setContentsMargin) + Q_PROPERTY(qreal verticalSpacing READ verticalSpacing WRITE setVerticalSpacing) + Q_PROPERTY(qreal horizontalSpacing READ horizontalSpacing WRITE setHorizontalSpacing) + Q_CLASSINFO("DefaultProperty", "children") + +public: + GraphicsGridLayoutObject(QObject * = 0); + ~GraphicsGridLayoutObject(); + + QDeclarativeListProperty children() { return QDeclarativeListProperty(this, 0, children_append, children_count, children_at, children_clear); } + + qreal spacing() const; + qreal contentsMargin() const; + void setContentsMargin(qreal); + + void removeAt(int index); + + static GridLayoutAttached *qmlAttachedProperties(QObject *); + +private slots: + void updateAlignment(QGraphicsLayoutItem*,Qt::Alignment); + +private: + friend class GraphicsLayoutAttached; + + void addWidget(QGraphicsWidget *); + void clearChildren(); + void addLayoutItem(QGraphicsLayoutItem *); + + static void children_append(QDeclarativeListProperty *prop, QGraphicsLayoutItem *item) { + static_cast(prop->object)->addLayoutItem(item); + } + + static void children_clear(QDeclarativeListProperty *prop) { + static_cast(prop->object)->clearChildren(); + } + + static int children_count(QDeclarativeListProperty *prop) { + return static_cast(prop->object)->count(); + } + + static QGraphicsLayoutItem *children_at(QDeclarativeListProperty *prop, int index) { + return static_cast(prop->object)->itemAt(index); + } + + static QHash attachedProperties; +}; + + +class GridLayoutAttached : public QObject +{ + Q_OBJECT + + Q_PROPERTY(int row READ row WRITE setRow) + Q_PROPERTY(int column READ column WRITE setColumn) + + Q_PROPERTY(int rowSpan READ rowSpan WRITE setRowSpan) + Q_PROPERTY(int columnSpan READ columnSpan WRITE setColumnSpan) + Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment) + + Q_PROPERTY(int rowStretchFactor READ rowStretchFactor WRITE setRowStretchFactor) + Q_PROPERTY(int columnStretchFactor READ columnStretchFactor WRITE setColumnStretchFactor) + Q_PROPERTY(int rowSpacing READ rowSpacing WRITE setRowSpacing) + Q_PROPERTY(int columnSpacing READ columnSpacing WRITE setColumnSpacing) + + Q_PROPERTY(int rowPreferredHeight READ rowPreferredHeight WRITE setRowPreferredHeight) + Q_PROPERTY(int rowMinimumHeight READ rowMinimumHeight WRITE setRowMinimumHeight) + Q_PROPERTY(int rowMaximumHeight READ rowMaximumHeight WRITE setRowMaximumHeight) + Q_PROPERTY(int rowFixedHeight READ rowFixedHeight WRITE setRowFixedHeight) + + Q_PROPERTY(int columnPreferredWidth READ columnPreferredWidth WRITE setColumnPreferredWidth) + Q_PROPERTY(int columnMaximumWidth READ columnMaximumWidth WRITE setColumnMaximumWidth) + Q_PROPERTY(int columnMinimumWidth READ columnMinimumWidth WRITE setColumnMinimumWidth) + Q_PROPERTY(int columnFixedWidth READ columnFixedWidth WRITE setColumnFixedWidth) + +public: + GridLayoutAttached(QObject *parent); + + int row() const { return m_row; } + void setRow(int r) { m_row = r; } + + int column() const { return m_column; } + void setColumn(int c) { m_column = c; } + + int rowSpan() const { return m_rowspan; } + void setRowSpan(int rs) { m_rowspan = rs; } + + int columnSpan() const { return m_colspan; } + void setColumnSpan(int cs) { m_colspan = cs; } + + Qt::Alignment alignment() const { return m_alignment; } + void setAlignment(Qt::Alignment a); + + int rowStretchFactor() const { return m_rowStretch; } + void setRowStretchFactor(int f) { m_rowStretch = f; } + int columnStretchFactor() const { return m_colStretch; } + void setColumnStretchFactor(int f) { m_colStretch = f; } + + int rowSpacing() const { return m_rowSpacing; } + void setRowSpacing(int s) { m_rowSpacing = s; } + int columnSpacing() const { return m_colSpacing; } + void setColumnSpacing(int s) { m_colSpacing = s; } + + int rowPreferredHeight() const { return m_rowPrefHeight; } + void setRowPreferredHeight(int s) { m_rowPrefHeight = s; } + + int rowMaximumHeight() const { return m_rowMaxHeight; } + void setRowMaximumHeight(int s) { m_rowMaxHeight = s; } + + int rowMinimumHeight() const { return m_rowMinHeight; } + void setRowMinimumHeight(int s) { m_rowMinHeight = s; } + + int rowFixedHeight() const { return m_rowFixHeight; } + void setRowFixedHeight(int s) { m_rowFixHeight = s; } + + int columnPreferredWidth() const { return m_colPrefwidth; } + void setColumnPreferredWidth(int s) { m_colPrefwidth = s; } + + int columnMaximumWidth() const { return m_colMaxwidth; } + void setColumnMaximumWidth(int s) { m_colMaxwidth = s; } + + int columnMinimumWidth() const { return m_colMinwidth; } + void setColumnMinimumWidth(int s) { m_colMinwidth = s; } + + int columnFixedWidth() const { return m_colFixwidth; } + void setColumnFixedWidth(int s) { m_colFixwidth = s; } + +signals: + void alignmentChanged(QGraphicsLayoutItem*, Qt::Alignment); + +private: + int m_row; + int m_column; + + int m_rowspan; + int m_colspan; + Qt::Alignment m_alignment; + + int m_rowStretch; + int m_colStretch; + int m_rowSpacing; + int m_colSpacing; + + int m_rowPrefHeight; + int m_rowMaxHeight; + int m_rowMinHeight; + int m_rowFixHeight; + + int m_colPrefwidth; + int m_colMaxwidth; + int m_colMinwidth; + int m_colFixwidth; +}; + +QML_DECLARE_INTERFACE(QGraphicsLayoutItem) +QML_DECLARE_INTERFACE(QGraphicsLayout) +QML_DECLARE_TYPE(GraphicsGridLayoutObject) +QML_DECLARE_TYPEINFO(GraphicsGridLayoutObject, QML_HAS_ATTACHED_PROPERTIES) + +#endif + diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.qrc b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.qrc new file mode 100644 index 0000000..bdf8312 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/gridlayout.qrc @@ -0,0 +1,6 @@ + + + qgraphicsgridlayout.qml + + + diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp new file mode 100644 index 0000000..b1fe621 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/main.cpp @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 "gridlayout.h" + +#include +#include + +#include + +int main(int argc, char* argv[]) +{ + QApplication app(argc, argv); + + qmlRegisterInterface("QGraphicsLayoutItem"); + qmlRegisterInterface("QGraphicsLayout"); + qmlRegisterType("GridLayouts", 4, 7, "GraphicsGridLayout"); + + QDeclarativeView view; + view.setSource(QUrl(":qgraphicsgridlayout.qml")); + view.show(); + + return app.exec(); +}; + + diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.pro b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.pro new file mode 100644 index 0000000..2d9e7bc --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.pro @@ -0,0 +1,15 @@ +TEMPLATE = app +TARGET = qgraphicsgridlayout +QT += declarative qtquick1 + +SOURCES += \ + gridlayout.cpp \ + main.cpp + +HEADERS += \ + gridlayout.h + +RESOURCES += \ + gridlayout.qrc + + diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.qml b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.qml new file mode 100644 index 0000000..6780a5a --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicsgridlayout/qgraphicsgridlayout.qml @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** 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 GridLayouts 4.7 + +Item { + width: 400 + height: 400 + + QGraphicsWidget { + size.width: parent.width + size.height: parent.height + + /* + Below we create a grid layout using the GraphicsGridLayout item + (defined by the GraphicsGridLayoutObject class in gridlayout.h). + + The row, column etc. are set through attached properties on + GraphicsGridLayout, using the properties defined in the + GridLayoutAttached class (also defined in gridlayout.h). + */ + + layout: GraphicsGridLayout { + LayoutItem { + GraphicsGridLayout.row: 0 + GraphicsGridLayout.column: 0 + minimumSize: "100x100" + maximumSize: "300x300" + preferredSize: "200x200" + Rectangle { color: "red"; anchors.fill: parent } + } + LayoutItem { + GraphicsGridLayout.row: 0 + GraphicsGridLayout.column: 1 + minimumSize: "100x100" + maximumSize: "200x200" + preferredSize: "200x200" + Rectangle { color: "orange"; anchors.fill: parent } + } + LayoutItem { + GraphicsGridLayout.row: 1 + GraphicsGridLayout.column: 0 + GraphicsGridLayout.columnSpan: 2 + minimumSize: "100x100" + Rectangle { color: "yellow"; anchors.fill: parent } + } + LayoutItem { + GraphicsGridLayout.row: 2 + GraphicsGridLayout.column: 0 + preferredSize: "200x200" + Rectangle { color: "green"; anchors.fill: parent } + } + LayoutItem { + GraphicsGridLayout.row: 2 + GraphicsGridLayout.column: 1 + preferredSize: "200x200" + Rectangle { color: "blue"; anchors.fill: parent } + } + } + } +} + diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.pro b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.pro new file mode 100644 index 0000000..672120a --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.pro @@ -0,0 +1,6 @@ +TEMPLATE = subdirs + +SUBDIRS += \ + layoutitem \ + qgraphicsgridlayout \ + qgraphicslinearlayout diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject new file mode 100644 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslayouts.qmlproject @@ -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/qgraphicslinearlayout/linearlayout.cpp b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.cpp new file mode 100644 index 0000000..75f43ca --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.cpp @@ -0,0 +1,175 @@ +/**************************************************************************** +** +** 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 "linearlayout.h" + +#include +#include + +LinearLayoutAttached::LinearLayoutAttached(QObject *parent) +: QObject(parent), m_stretch(1), m_alignment(Qt::AlignTop), m_spacing(0) +{ +} + +void LinearLayoutAttached::setStretchFactor(int f) +{ + if (m_stretch != f) { + m_stretch = f; + emit stretchChanged(reinterpret_cast(parent()), m_stretch); + } +} + +void LinearLayoutAttached::setSpacing(int s) +{ + if (m_spacing != s) { + m_spacing = s; + emit spacingChanged(reinterpret_cast(parent()), m_spacing); + } +} + +void LinearLayoutAttached::setAlignment(Qt::Alignment a) +{ + if (m_alignment != a) { + m_alignment = a; + emit alignmentChanged(reinterpret_cast(parent()), m_alignment); + } +} + +GraphicsLinearLayoutStretchItemObject::GraphicsLinearLayoutStretchItemObject(QObject *parent) + : QObject(parent) +{ +} + +QSizeF GraphicsLinearLayoutStretchItemObject::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const +{ + Q_UNUSED(which); + Q_UNUSED(constraint); + return QSizeF(); +} + + +GraphicsLinearLayoutObject::GraphicsLinearLayoutObject(QObject *parent) +: QObject(parent) +{ +} + +GraphicsLinearLayoutObject::~GraphicsLinearLayoutObject() +{ +} + +void GraphicsLinearLayoutObject::insertLayoutItem(int index, QGraphicsLayoutItem *item) +{ + insertItem(index, item); + + if (LinearLayoutAttached *obj = attachedProperties.value(item)) { + setStretchFactor(item, obj->stretchFactor()); + setAlignment(item, obj->alignment()); + updateSpacing(item, obj->spacing()); + QObject::connect(obj, SIGNAL(stretchChanged(QGraphicsLayoutItem*,int)), + this, SLOT(updateStretch(QGraphicsLayoutItem*,int))); + QObject::connect(obj, SIGNAL(alignmentChanged(QGraphicsLayoutItem*,Qt::Alignment)), + this, SLOT(updateAlignment(QGraphicsLayoutItem*,Qt::Alignment))); + QObject::connect(obj, SIGNAL(spacingChanged(QGraphicsLayoutItem*,int)), + this, SLOT(updateSpacing(QGraphicsLayoutItem*,int))); + } +} + +void GraphicsLinearLayoutObject::removeAt(int index) +{ + QGraphicsLayoutItem *item = itemAt(index); + if (item) { + LinearLayoutAttached *obj = attachedProperties.value(item); + obj->disconnect(this); + attachedProperties.remove(item); + } + QGraphicsLinearLayout::removeAt(index); +} + +void GraphicsLinearLayoutObject::clearChildren() +{ + // do not delete the removed items; they will be deleted by the QML engine + while (count() > 0) + removeAt(count()-1); +} + +qreal GraphicsLinearLayoutObject::contentsMargin() const +{ + qreal a, b, c, d; + getContentsMargins(&a, &b, &c, &d); + if (a == b && a == c && a == d) + return a; + return -1; +} + +void GraphicsLinearLayoutObject::setContentsMargin(qreal m) +{ + setContentsMargins(m, m, m, m); +} + +void GraphicsLinearLayoutObject::updateStretch(QGraphicsLayoutItem *item, int stretch) +{ + QGraphicsLinearLayout::setStretchFactor(item, stretch); +} + +void GraphicsLinearLayoutObject::updateSpacing(QGraphicsLayoutItem* item, int spacing) +{ + for (int i=0; i < count(); i++){ + if (itemAt(i) == item) { + QGraphicsLinearLayout::setItemSpacing(i, spacing); + return; + } + } +} + +void GraphicsLinearLayoutObject::updateAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment) +{ + QGraphicsLinearLayout::setAlignment(item, alignment); +} + +QHash GraphicsLinearLayoutObject::attachedProperties; +LinearLayoutAttached *GraphicsLinearLayoutObject::qmlAttachedProperties(QObject *obj) +{ + LinearLayoutAttached *rv = new LinearLayoutAttached(obj); + if (qobject_cast(obj)) + attachedProperties.insert(qobject_cast(obj), rv); + return rv; +} + + diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.h b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.h new file mode 100644 index 0000000..e423bd0 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.h @@ -0,0 +1,152 @@ +/**************************************************************************** +** +** 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 LINEARLAYOUT_H +#define LINEARLAYOUT_H + +#include + +#include +#include + +class GraphicsLinearLayoutStretchItemObject : public QObject, public QGraphicsLayoutItem +{ + Q_OBJECT + Q_INTERFACES(QGraphicsLayoutItem) +public: + GraphicsLinearLayoutStretchItemObject(QObject *parent = 0); + + virtual QSizeF sizeHint(Qt::SizeHint, const QSizeF &) const; +}; + + +class LinearLayoutAttached; +class GraphicsLinearLayoutObject : public QObject, public QGraphicsLinearLayout +{ + Q_OBJECT + Q_INTERFACES(QGraphicsLayout QGraphicsLayoutItem) + + Q_PROPERTY(QDeclarativeListProperty children READ children) + Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation) + Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing) + Q_PROPERTY(qreal contentsMargin READ contentsMargin WRITE setContentsMargin) + Q_CLASSINFO("DefaultProperty", "children") +public: + GraphicsLinearLayoutObject(QObject * = 0); + ~GraphicsLinearLayoutObject(); + + QDeclarativeListProperty children() { return QDeclarativeListProperty(this, 0, children_append, children_count, children_at, children_clear); } + + qreal contentsMargin() const; + void setContentsMargin(qreal); + + void removeAt(int index); + + static LinearLayoutAttached *qmlAttachedProperties(QObject *); + +private slots: + void updateStretch(QGraphicsLayoutItem*,int); + void updateSpacing(QGraphicsLayoutItem*,int); + void updateAlignment(QGraphicsLayoutItem*,Qt::Alignment); + +private: + friend class LinearLayoutAttached; + + void clearChildren(); + void insertLayoutItem(int, QGraphicsLayoutItem *); + + static void children_append(QDeclarativeListProperty *prop, QGraphicsLayoutItem *item) { + static_cast(prop->object)->insertLayoutItem(-1, item); + } + + static void children_clear(QDeclarativeListProperty *prop) { + static_cast(prop->object)->clearChildren(); + } + + static int children_count(QDeclarativeListProperty *prop) { + return static_cast(prop->object)->count(); + } + + static QGraphicsLayoutItem *children_at(QDeclarativeListProperty *prop, int index) { + return static_cast(prop->object)->itemAt(index); + } + + static QHash attachedProperties; +}; + + +class LinearLayoutAttached : public QObject +{ + Q_OBJECT + + Q_PROPERTY(int stretchFactor READ stretchFactor WRITE setStretchFactor NOTIFY stretchChanged) + Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment NOTIFY alignmentChanged) + Q_PROPERTY(int spacing READ spacing WRITE setSpacing NOTIFY spacingChanged) + +public: + LinearLayoutAttached(QObject *parent); + + int stretchFactor() const { return m_stretch; } + void setStretchFactor(int f); + Qt::Alignment alignment() const { return m_alignment; } + void setAlignment(Qt::Alignment a); + int spacing() const { return m_spacing; } + void setSpacing(int s); + +signals: + void stretchChanged(QGraphicsLayoutItem*, int); + void alignmentChanged(QGraphicsLayoutItem*, Qt::Alignment); + void spacingChanged(QGraphicsLayoutItem*, int); + +private: + int m_stretch; + Qt::Alignment m_alignment; + int m_spacing; +}; + +QML_DECLARE_INTERFACE(QGraphicsLayoutItem) +QML_DECLARE_INTERFACE(QGraphicsLayout) +QML_DECLARE_TYPE(GraphicsLinearLayoutStretchItemObject) +QML_DECLARE_TYPE(GraphicsLinearLayoutObject) +QML_DECLARE_TYPEINFO(GraphicsLinearLayoutObject, QML_HAS_ATTACHED_PROPERTIES) + +#endif + + diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.qrc b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.qrc new file mode 100644 index 0000000..93a3533 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/linearlayout.qrc @@ -0,0 +1,6 @@ + + + qgraphicslinearlayout.qml + + + diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp new file mode 100644 index 0000000..d310dae --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/main.cpp @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 "linearlayout.h" + +#include +#include + +#include + +int main(int argc, char* argv[]) +{ + QApplication app(argc, argv); + + qmlRegisterInterface("QGraphicsLayoutItem"); + qmlRegisterInterface("QGraphicsLayout"); + qmlRegisterType("LinearLayouts", 4, 7, "GraphicsLinearLayoutStretchItem"); + qmlRegisterType("LinearLayouts", 4, 7, "GraphicsLinearLayout"); + + QDeclarativeView view; + view.setSource(QUrl(":qgraphicslinearlayout.qml")); + view.show(); + + return app.exec(); +}; + + diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.pro b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.pro new file mode 100644 index 0000000..c2e9b57 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.pro @@ -0,0 +1,15 @@ +TEMPLATE = app +TARGET = qgraphicslinearlayout +QT += declarative qtquick1 + +SOURCES += \ + linearlayout.cpp \ + main.cpp + +HEADERS += \ + linearlayout.h + +RESOURCES += \ + linearlayout.qrc + + diff --git a/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.qml b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.qml new file mode 100644 index 0000000..a7d79e5 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qgraphicslayouts/qgraphicslinearlayout/qgraphicslinearlayout.qml @@ -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 +import LinearLayouts 4.7 + +Item { + width: 400 + height: 400 + + QGraphicsWidget { + size.width: parent.width + size.height: parent.height + + /* + Below we create a linear layout using the GraphicsLinearLayout item + (defined by the GraphicsLinearLayoutObject class in linearlayout.h). + + The first LayoutItem uses 'GraphicsLinearLayout.spacing' to set the + item's spacing: this is an attached property, set using the + properties defined in the LinearLayoutAttached class (also defined + in linearlayout.h). + */ + + layout: GraphicsLinearLayout { + LayoutItem { + GraphicsLinearLayout.spacing: 50 + minimumSize: "100x100" + maximumSize: "200x200" + preferredSize: "100x100" + Rectangle { color: "yellow"; anchors.fill: parent } + } + LayoutItem { + minimumSize: "100x100" + maximumSize: "400x400" + preferredSize: "300x300" + Rectangle { color: "green"; anchors.fill: parent } + } + } + } +} + diff --git a/examples/declarative/qtquick1/cppextensions/qwidgets/QWidgets/qmldir b/examples/declarative/qtquick1/cppextensions/qwidgets/QWidgets/qmldir new file mode 100644 index 0000000..a7c1d95 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qwidgets/QWidgets/qmldir @@ -0,0 +1 @@ +plugin qmlqwidgetsplugin diff --git a/examples/declarative/qtquick1/cppextensions/qwidgets/README b/examples/declarative/qtquick1/cppextensions/qwidgets/README new file mode 100644 index 0000000..e2f1b2b --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qwidgets/README @@ -0,0 +1,6 @@ +This example shows how to embed QWidget-based objects into QML. + +To run: + + make install + qml qwidgets.qml diff --git a/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.cpp b/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.cpp new file mode 100644 index 0000000..843ac0f --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.cpp @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** 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 +#include +#include +#include +#include + +class MyPushButton : public QGraphicsProxyWidget +{ + Q_OBJECT + Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged) + +public: + MyPushButton(QGraphicsItem* parent = 0) + : QGraphicsProxyWidget(parent) + { + widget = new QPushButton("MyPushButton"); + widget->setAttribute(Qt::WA_NoSystemBackground); + setWidget(widget); + + QObject::connect(widget, SIGNAL(clicked(bool)), this, SIGNAL(clicked(bool))); + } + + QString text() const + { + return widget->text(); + } + + void setText(const QString& text) + { + if (text != widget->text()) { + widget->setText(text); + emit textChanged(); + } + } + +Q_SIGNALS: + void clicked(bool); + void textChanged(); + +private: + QPushButton *widget; +}; + +class QWidgetsPlugin : public QDeclarativeExtensionPlugin +{ + Q_OBJECT +public: + void registerTypes(const char *uri) + { + qmlRegisterType(uri, 1, 0, "MyPushButton"); + } +}; + +#include "qwidgets.moc" + +Q_EXPORT_PLUGIN2(qmlqwidgetsplugin, QWidgetsPlugin); diff --git a/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.pro b/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.pro new file mode 100644 index 0000000..2e610f9 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.pro @@ -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.qml b/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qml new file mode 100644 index 0000000..5046dd7 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qml @@ -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 "QWidgets" 1.0 + +Rectangle { + id: window + + property int margin: 30 + + width: 640; height: 480 + color: palette.window + + SystemPalette { id: palette } + + MyPushButton { + id: button1 + x: margin; y: margin + text: "Right" + transformOriginPoint: Qt.point(width / 2, height / 2) + + onClicked: window.state = "right" + } + + MyPushButton { + id: button2 + x: margin; y: margin + 30 + text: "Bottom" + transformOriginPoint: Qt.point(width / 2, height / 2) + + onClicked: window.state = "bottom" + } + + MyPushButton { + id: button3 + x: margin; y: margin + 60 + text: "Quit" + transformOriginPoint: Qt.point(width / 2, height / 2) + + onClicked: Qt.quit() + } + + states: [ + State { + name: "right" + PropertyChanges { target: button1; x: window.width - width - margin; text: "Left"; onClicked: window.state = "" } + PropertyChanges { target: button2; x: window.width - width - margin } + PropertyChanges { target: button3; x: window.width - width - margin } + PropertyChanges { target: window; color: Qt.darker(palette.window) } + }, + State { + name: "bottom" + PropertyChanges { target: button1; y: window.height - height - margin; rotation: 180 } + PropertyChanges { + target: button2 + x: button1.x + button1.width + 10; y: window.height - height - margin + rotation: 180 + text: "Top" + onClicked: window.state = "" + } + PropertyChanges { target: button3; x: button2.x + button2.width + 10; y: window.height - height - margin; rotation: 180 } + PropertyChanges { target: window; color: Qt.lighter(palette.window) } + } + ] + + transitions: Transition { + ParallelAnimation { + NumberAnimation { properties: "x,y,rotation"; duration: 600; easing.type: Easing.OutQuad } + ColorAnimation { target: window; duration: 600 } + } + } +} diff --git a/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qmlproject b/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qmlproject new file mode 100644 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/qwidgets/qwidgets.qmlproject @@ -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 index 0000000..b830a88 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.pro @@ -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 index 0000000..e2fa01d --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/adding.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/example.qml new file mode 100644 index 0000000..65819b2 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/example.qml @@ -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 index 0000000..3a32c65 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/main.cpp @@ -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 +#include +#include +#include +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); +//![0] + qmlRegisterType("People", 1,0, "Person"); +//![0] + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + Person *person = qobject_cast(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 index 0000000..a6b47aa --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.cpp @@ -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 index 0000000..b85c601 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/adding/person.h @@ -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 +// ![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 index 0000000..3843528 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.pro @@ -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 index 0000000..e2fa01d --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/attached.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.cpp new file mode 100644 index 0000000..b1239c0 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.cpp @@ -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 BirthdayParty::guests() +{ + return QDeclarativeListProperty(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 index 0000000..eaec771 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/birthdayparty.h @@ -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 +#include +#include +#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 guests READ guests) + Q_CLASSINFO("DefaultProperty", "guests") +public: + BirthdayParty(QObject *parent = 0); + + Person *host() const; + void setHost(Person *); + + QDeclarativeListProperty guests(); + int guestCount() const; + Person *guest(int) const; + + static BirthdayPartyAttached *qmlAttachedProperties(QObject *); +private: + Person *m_host; + QList 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 index 0000000..600678c --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/example.qml @@ -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 index 0000000..228157c --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/main.cpp @@ -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 +#include +#include +#include +#include "birthdayparty.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + + qmlRegisterType(); + qmlRegisterType("People", 1,0, "BirthdayParty"); + qmlRegisterType(); + qmlRegisterType(); + qmlRegisterType("People", 1,0, "Boy"); + qmlRegisterType("People", 1,0, "Girl"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(component.create()); + + if (party && party->host()) { + qWarning() << party->host()->name() << "is having a birthday!"; + + if (qobject_cast(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(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 index 0000000..3be06bd --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.cpp @@ -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 index 0000000..5db160f --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/attached/person.h @@ -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 +#include + +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 index 0000000..f1e38a9 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.pro @@ -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 index 0000000..e2fa01d --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/binding.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.cpp new file mode 100644 index 0000000..3120f81 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.cpp @@ -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 BirthdayParty::guests() +{ + return QDeclarativeListProperty(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 index 0000000..59249df --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/birthdayparty.h @@ -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 +#include +#include +#include +#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 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 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 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 index 0000000..e2e7cb3 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/example.qml @@ -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 index 0000000..47bcf71 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.cpp @@ -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 + +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 index 0000000..e288d75 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/happybirthdaysong.h @@ -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 +#include + +#include + +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 index 0000000..ac8d0ca --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/main.cpp @@ -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 +#include +#include +#include +#include "birthdayparty.h" +#include "happybirthdaysong.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + qmlRegisterType(); + qmlRegisterType("People", 1,0, "BirthdayParty"); + qmlRegisterType("People", 1,0, "HappyBirthdaySong"); + qmlRegisterType(); + qmlRegisterType(); + qmlRegisterType("People", 1,0, "Boy"); + qmlRegisterType("People", 1,0, "Girl"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(component.create()); + + if (party && party->host()) { + qWarning() << party->host()->name() << "is having a birthday!"; + + if (qobject_cast(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(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 index 0000000..28a5e6d --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.cpp @@ -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 index 0000000..94d3eb4 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/binding/person.h @@ -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 +#include + +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 index 0000000..cde8d41 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.cpp @@ -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 BirthdayParty::guests() +{ + return QDeclarativeListProperty(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 index 0000000..d1aaee8 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/birthdayparty.h @@ -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 +#include +#include "person.h" + +class BirthdayParty : public QObject +{ + Q_OBJECT +// ![0] + Q_PROPERTY(Person *host READ host WRITE setHost) + Q_PROPERTY(QDeclarativeListProperty guests READ guests) +// ![0] +public: + BirthdayParty(QObject *parent = 0); + + Person *host() const; + void setHost(Person *); + + QDeclarativeListProperty guests(); + int guestCount() const; + Person *guest(int) const; + +private: + Person *m_host; + QList 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 index 0000000..d85a308 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.pro @@ -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 index 0000000..e2fa01d --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/coercion.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/example.qml new file mode 100644 index 0000000..c12b95f --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/example.qml @@ -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 index 0000000..01b39a3 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/main.cpp @@ -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 +#include +#include +#include +#include "birthdayparty.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + + qmlRegisterType("People", 1,0, "BirthdayParty"); +// ![0] + qmlRegisterType(); +// ![0] + qmlRegisterType("People", 1,0, "Boy"); + qmlRegisterType("People", 1,0, "Girl"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(component.create()); + + if (party && party->host()) { + qWarning() << party->host()->name() << "is having a birthday!"; + + if (qobject_cast(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 index 0000000..add92f0 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.cpp @@ -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 index 0000000..db314a3 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/coercion/person.h @@ -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 + +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 index 0000000..cde8d41 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.cpp @@ -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 BirthdayParty::guests() +{ + return QDeclarativeListProperty(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 index 0000000..2392ff0 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/birthdayparty.h @@ -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 +#include +#include "person.h" + +// ![0] +class BirthdayParty : public QObject +{ + Q_OBJECT + Q_PROPERTY(Person *host READ host WRITE setHost) + Q_PROPERTY(QDeclarativeListProperty guests READ guests) + Q_CLASSINFO("DefaultProperty", "guests") +public: + BirthdayParty(QObject *parent = 0); + + Person *host() const; + void setHost(Person *); + + QDeclarativeListProperty guests(); + int guestCount() const; + Person *guest(int) const; + +private: + Person *m_host; + QList 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 index 0000000..d5519f4 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.pro @@ -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 index 0000000..e2fa01d --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/default.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/default/example.qml b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/example.qml new file mode 100644 index 0000000..b5895ae --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/example.qml @@ -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 index 0000000..4823291 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/main.cpp @@ -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 +#include +#include +#include +#include "birthdayparty.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + + qmlRegisterType("People", 1,0, "BirthdayParty"); + qmlRegisterType(); + qmlRegisterType("People", 1,0, "Boy"); + qmlRegisterType("People", 1,0, "Girl"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(component.create()); + + if (party && party->host()) { + qWarning() << party->host()->name() << "is having a birthday!"; + + if (qobject_cast(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 index 0000000..2d1005d --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.cpp @@ -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 index 0000000..9006fca --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/default/person.h @@ -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 + +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 index 0000000..21dad36 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/example.qml @@ -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 index 0000000..f3e4284 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.pro @@ -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 index 0000000..e2fa01d --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/extended.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.cpp new file mode 100644 index 0000000..42354c5 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.cpp @@ -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(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 index 0000000..f7a0827 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/lineedit.h @@ -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 + +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 index 0000000..414106c --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/extended/main.cpp @@ -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 +#include +#include +#include +#include +#include "lineedit.h" + +int main(int argc, char ** argv) +{ + QApplication app(argc, argv); + + qmlRegisterExtendedType("People", 1,0, "QLineEdit"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + QLineEdit *edit = qobject_cast(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 index 0000000..cde8d41 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.cpp @@ -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 BirthdayParty::guests() +{ + return QDeclarativeListProperty(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 index 0000000..47ed8f5 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/birthdayparty.h @@ -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 +#include +#include "person.h" + +class BirthdayParty : public QObject +{ + Q_OBJECT + Q_PROPERTY(Person *host READ host WRITE setHost) + Q_PROPERTY(QDeclarativeListProperty guests READ guests) + Q_CLASSINFO("DefaultProperty", "guests") +public: + BirthdayParty(QObject *parent = 0); + + Person *host() const; + void setHost(Person *); + + QDeclarativeListProperty guests(); + int guestCount() const; + Person *guest(int) const; + +private: + Person *m_host; + QList 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 index 0000000..d97c9a4 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/example.qml @@ -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 index 0000000..ca6deea --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.pro @@ -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 index 0000000..e2fa01d --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/grouped.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/main.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/main.cpp new file mode 100644 index 0000000..ea7d0ae --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/main.cpp @@ -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 +#include +#include +#include +#include "birthdayparty.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + + qmlRegisterType("People", 1,0, "BirthdayParty"); + qmlRegisterType(); + qmlRegisterType(); + qmlRegisterType("People", 1,0, "Boy"); + qmlRegisterType("People", 1,0, "Girl"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(component.create()); + + if (party && party->host()) { + qWarning() << party->host()->name() << "is having a birthday!"; + + if (qobject_cast(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 index 0000000..3be06bd --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.cpp @@ -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 index 0000000..5efbd80 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/grouped/person.h @@ -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 +#include + +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 index 0000000..51343cf --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.cpp @@ -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 BirthdayParty::guests() +{ + return QDeclarativeListProperty(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 index 0000000..e49bffd --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/birthdayparty.h @@ -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 +#include +#include "person.h" + +class BirthdayParty : public QObject +{ + Q_OBJECT + Q_PROPERTY(Person *host READ host WRITE setHost) + Q_PROPERTY(QDeclarativeListProperty guests READ guests) +public: + BirthdayParty(QObject *parent = 0); + + Person *host() const; + void setHost(Person *); + + QDeclarativeListProperty guests(); + int guestCount() const; + Person *guest(int) const; + +// ![0] + Q_INVOKABLE void invite(const QString &name); +// ![0] + +private: + Person *m_host; + QList 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 index 0000000..868473a --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/example.qml @@ -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 index 0000000..90e1fad --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/main.cpp @@ -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 +#include +#include +#include +#include "birthdayparty.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + + qmlRegisterType("People", 1,0, "BirthdayParty"); + qmlRegisterType("People", 1,0, "Person"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(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 index 0000000..c516049 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.pro @@ -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 index 0000000..e2fa01d --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/methods.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.cpp new file mode 100644 index 0000000..600b05f --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.cpp @@ -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 index 0000000..8545a3e --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/methods/person.h @@ -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 + +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 index 0000000..bdd0105 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.cpp @@ -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 BirthdayParty::guests() +{ + return QDeclarativeListProperty(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 index 0000000..0227bb6 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/birthdayparty.h @@ -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 +#include +#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 guests READ guests) +// ![2] +// ![3] +public: + BirthdayParty(QObject *parent = 0); + + Person *host() const; + void setHost(Person *); + + QDeclarativeListProperty guests(); + int guestCount() const; + Person *guest(int) const; + +private: + Person *m_host; + QList 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 index 0000000..200492e --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/example.qml @@ -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 index 0000000..90e1fad --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/main.cpp @@ -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 +#include +#include +#include +#include "birthdayparty.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + + qmlRegisterType("People", 1,0, "BirthdayParty"); + qmlRegisterType("People", 1,0, "Person"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(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 index 0000000..600b05f --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.cpp @@ -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 index 0000000..8545a3e --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/person.h @@ -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 + +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 index 0000000..4f0ff88 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.pro @@ -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 index 0000000..e2fa01d --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/properties/properties.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.pro b/examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.pro new file mode 100644 index 0000000..505cefd --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.pro @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/referenceexamples.qmlproject @@ -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 index 0000000..8f904bb --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.cpp @@ -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 BirthdayParty::guests() +{ + return QDeclarativeListProperty(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 index 0000000..51972fc --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/birthdayparty.h @@ -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 +#include +#include +#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 guests READ guests) + Q_CLASSINFO("DefaultProperty", "guests") +public: + BirthdayParty(QObject *parent = 0); + + Person *host() const; + void setHost(Person *); + + QDeclarativeListProperty 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 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 index 0000000..5b03798 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/example.qml @@ -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 index 0000000..f1a8f1c --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/main.cpp @@ -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 +#include +#include +#include +#include "birthdayparty.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + + qmlRegisterType(); + qmlRegisterType("People", 1,0, "BirthdayParty"); + qmlRegisterType(); + qmlRegisterType(); + qmlRegisterType("People", 1,0, "Boy"); + qmlRegisterType("People", 1,0, "Girl"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(component.create()); + + if (party && party->host()) { + qWarning() << party->host()->name() << "is having a birthday!"; + + if (qobject_cast(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(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 index 0000000..3be06bd --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.cpp @@ -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 index 0000000..5db160f --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/person.h @@ -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 +#include + +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 index 0000000..7feed89 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.pro @@ -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 index 0000000..e2fa01d --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/signal/signal.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.cpp b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.cpp new file mode 100644 index 0000000..a9df5ba --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.cpp @@ -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 BirthdayParty::guests() +{ + return QDeclarativeListProperty(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 index 0000000..dfe3bd6 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/birthdayparty.h @@ -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 +#include +#include +#include +#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 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 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 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 index 0000000..9c63aa4 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/example.qml @@ -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 index 0000000..e3f0222 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.cpp @@ -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 + +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 index 0000000..b3cd3f4 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/happybirthdaysong.h @@ -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 +#include +#include + +#include + +// ![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 index 0000000..3515f51 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/main.cpp @@ -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 +#include +#include +#include +#include "birthdayparty.h" +#include "happybirthdaysong.h" +#include "person.h" + +int main(int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + + qmlRegisterType(); + qmlRegisterType("People", 1,0, "BirthdayParty"); + qmlRegisterType("People", 1,0, "HappyBirthdaySong"); + qmlRegisterType(); + qmlRegisterType(); + qmlRegisterType("People", 1,0, "Boy"); + qmlRegisterType("People", 1,0, "Girl"); + + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl("qrc:example.qml")); + BirthdayParty *party = qobject_cast(component.create()); + + if (party && party->host()) { + qWarning() << party->host()->name() << "is having a birthday!"; + + if (qobject_cast(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(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 index 0000000..3be06bd --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.cpp @@ -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 index 0000000..5db160f --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/person.h @@ -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 +#include + +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 index 0000000..64034a1 --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.pro @@ -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 index 0000000..e2fa01d --- /dev/null +++ b/examples/declarative/qtquick1/cppextensions/referenceexamples/valuesource/valuesource.qrc @@ -0,0 +1,5 @@ + + + example.qml + + diff --git a/examples/declarative/qtquick1/examples.qmlproject b/examples/declarative/qtquick1/examples.qmlproject new file mode 100644 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/examples.qmlproject @@ -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 index 0000000..86eafa2 --- /dev/null +++ b/examples/declarative/qtquick1/i18n/i18n.qml @@ -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_.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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/i18n/i18n.qmlproject @@ -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 index 0000000..82547a1 --- /dev/null +++ b/examples/declarative/qtquick1/i18n/i18n/base.ts @@ -0,0 +1,12 @@ + + + + + i18n + + + Hello + + + + 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 index 0000000..e991aff --- /dev/null +++ b/examples/declarative/qtquick1/i18n/i18n/qml_en_AU.ts @@ -0,0 +1,12 @@ + + + + + i18n + + + Hello + G'day + + + diff --git a/examples/declarative/qtquick1/i18n/i18n/qml_fr.ts b/examples/declarative/qtquick1/i18n/i18n/qml_fr.ts new file mode 100644 index 0000000..365abd9 --- /dev/null +++ b/examples/declarative/qtquick1/i18n/i18n/qml_fr.ts @@ -0,0 +1,12 @@ + + + + + i18n + + + Hello + Bonjour + + + diff --git a/examples/declarative/qtquick1/imageelements/borderimage/borderimage.qml b/examples/declarative/qtquick1/imageelements/borderimage/borderimage.qml new file mode 100644 index 0000000..2ff18c8 --- /dev/null +++ b/examples/declarative/qtquick1/imageelements/borderimage/borderimage.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/imageelements/borderimage/borderimage.qmlproject @@ -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 index 0000000..8ace6e1 --- /dev/null +++ b/examples/declarative/qtquick1/imageelements/borderimage/content/MyBorderImage.qml @@ -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 index 0000000..722beae --- /dev/null +++ b/examples/declarative/qtquick1/imageelements/borderimage/content/ShadowRectangle.qml @@ -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 index 0000000000000000000000000000000000000000..486eaae96ee3a1842fb842ad1927636431f5d147 GIT binary patch literal 1357 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 a%X|Sp(8DzP)HQkl0000rmu!N<$&1)9p}{ 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/imageelements/imageelements.qmlproject b/examples/declarative/qtquick1/imageelements/imageelements.qmlproject new file mode 100644 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/imageelements/imageelements.qmlproject @@ -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 index 0000000..76dc076 --- /dev/null +++ b/examples/declarative/qtquick1/keyinteraction/focus/Core/ContextMenu.qml @@ -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 index 0000000..d199cbc --- /dev/null +++ b/examples/declarative/qtquick1/keyinteraction/focus/Core/GridMenu.qml @@ -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 index 0000000..4a2c89c --- /dev/null +++ b/examples/declarative/qtquick1/keyinteraction/focus/Core/ListMenu.qml @@ -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 index 0000000..88c3624 --- /dev/null +++ b/examples/declarative/qtquick1/keyinteraction/focus/Core/ListViewDelegate.qml @@ -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 index 0000000000000000000000000000000000000000..14978c2e56e55e8e4fc8b7d944bef836d1d68ab7 GIT binary patch literal 583 zcmV-N0=WH&P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igM} z12+tgH>GL-001I%MObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakAa8CUVIWOmV~41B zLjV8)nMp)JR2b7u%RfjPVHgMC-+PS-8SabWdoQ1Nf{snWPza(!=;GYPv4eX{kO~>Z zK{`lR(MbZ5u~?i7j%}!Qse@S>gj5m;G>{5M$Z+J(uanScf8_bv8keI8nM?-5;SlZn zdw8BF03aeDDF7%UT#h1yVTepRjlYkNK(SQfS-sBDXvE(S5BzX+MBiE()rGusFsflL z2>5z?n_rtvPN!4;YPVV2-zR))Q?ItR`1$gZBsmxiczk+Fqe`Q?U{qP&+~l`rlk@qU zcdZuRR;$cANBGu?QI(BKh3Ab1NivROo;MoQDB?z?!XGy`Op=8CexL7aHRhdTE(ioh z6-HHzYNk{!^Z4Y1B$*@$&+2vddOc1i6Lz~@zT4epxVp;4LLtlr0bo?&TPwb`Fskx$ zeVv~!E=ZEI*^DIF>2&yJXNOBGE6h8W&O3+2Lcx2M&SvpML?n*mk3Vm350{+7i((Of z1_M<0_VE4s8cC9fh|EZWWJ-K%Jpl8kOfn@RlWaE2!-E5Sxw^t#tA+7+?1>2RpMSRy V(!rmu!N<$&1)9p}{ zB4Nu$ZdoUtI47Bj@}o*F=KPcmj>6qGCAev)eP6c0F1K!*~v#PA@JlX2R~Y=}_`S*&(e=hq9+< z#S_)cTQm5iz-KI3k1<}Nki###+S zwV$Fid8zK0>jZVsn`K$XxPUOD>b?u%sW1HVfK@b ziIKy5`gw;a@31}oNCrIzg5YA5awwM-jq^`1=rD`{16zZs#Zn)M5W)f&@(IW5IMZEQ1l#uUU8qMk{bN zm`B)}$5eQXVw7aoV|g|*2Y9jS;mB#N4H=V_ZrC#!J1onnH775$jo*Z+`_Zst^tAq> z5623dSF~bQd9xhW(BB}<(%L=Sex`o8`TcTbyV@*M3$aU9c*L-=uCY^n zcLLp|EaQJ8nUDV3A7pZy#!@HeBPhNViWT>`^gLqaZj0=FYj1AB*kbIf8VZCm3peuE zOe3|_DR?p=qWbF)JZptva^>er@4s6)e`4<(jXs_w-TAgH!KElIQBRIIO0IOR`g7Xj}I2X2NKW&`d(CzV`n=DisAGZCefL+t9JgcksQzk!9P&6ks?-xhC z%5s~HtHRBWTKH+H-rw#o`~~yKPCZc8;$9`3!iyJIHUAeN;)tPAvA9I(LZ;wb=S%3| zk^eyvo7|!H`wXa3%^bi5L6J!p2(-D04V)+ao6!$iTwaL2i#H?VLfo%krVxpQ8=M}DS(QP-)I5HSm1PD`P@nu1y#{)) zAA>(mUoMZVC(R<~1Cz@RWmF+|$;FM6E9Fg=tTcR#AJ$qD;*z=4dpa*8OK9$$CF z&S@#CoVRAWtseRwf8%k_PwOC6b%RoOZws}!y)xHSpiYb9sy0Be`kIiB6sc-tL|mVNd@DM`VG^O2|u@?V!th35wGiX3Pq#)MyMYi5BO$39eek| zvFw^{zm0F}hv~P4l$5}Sm2+#0X*;=NGU9-VO5)U34v`7Thi4Y^+uV2rHY0t{wJ|}f zr*qM=>YZpMg)?v3VM2*W!nLnx$ULMKYRjHiVr2t(YhCK8cIq|J|+ajr$0pa;SlOgl$} zbYzsH6B7A}4&8ZhBSy3}K4Tn#1j8>7$2gO>fDUe}LvJ1X2c=L*wNE=+tg$0Cqiu<9 zi}94vTX?T)9Mm|+m$JLnWCR4tWTMeSEcq+8D6iNva?hm{ z9mx2VQTh+K^nuj=ko#lkXOmg00oN_%QFDmYBYNJjo zEE#tmmUDKkMJifp|LetDo< zD_f;=ow2bkB*fEGC+GEaeEbvq8Ch0#jJLf+q+zTPgA=qJ3#3cAz=VTGlD)}{sqIGC zFOAKqp6TI*s`rG+YD*y`UiAZni`rd2zbh+1%nIL}IvbAMhXLCol$S|4wbXP;M}*j{&P(QqZLmt_RV(B zE~b0>H9+SWXjf$YgVHt_K3u&D`XovFnp!qd5eF=@a45Aa^+e5Hv@zvPq@ zRqJmkGhKLo)&T(oH%*RasfEwY&`!Q{g{s3)g~ zc;~leM<%J>-bezj*g-g@!0E4=N55EK}Q&P8ryf-aZK6vtsZg?f4hy3a4IVSZ!`1}sXV5CQ^5 zD9-0UVmW^t&b#@u(?00}AAo+n$_@I_%LQU75cE!m@mO{-&rOW z_nqLhOAgF^Z^OXIq|$3C#Zx96-U(mm&SiIk=II%7!0&-k5;5S*jTUgU4?Hvftw_J+nj86=!{yLRo+$$M!wr}jQ71?DpOpIwwmTL)4i$ z+wMRu!F*KnazR0gK+J=ol~`No-B&DhHRwIccUvy%*l9a-5@MvidY0X7~~=A zL*Tv7TFr+AqnYS1l)F6fC1(7X9ccep;9znFQxq>vE!umA*IISIuDxICc_j3T8F#2W zr5MzZQiYe(fuxiOTsZfD=o?Br-_GvpVZ1r0zUWZ&=ybl6*U`ZiO^(x%VS5sg^&W!= zDGXXaDiwpf?lMy(_%zRg_Ww%8(ZXE3x=#PHRw0H>I53=F_=8iKWc1^4#>Aa2R9RAE zH@mY7VIq^kzWISE<#-tEag8Hr2yvim1i!sDYuD)c!OK+g z>r8qlD>$;~MU@V-h9P7X=@A^{=<) z?c9P!qXW+Eq`k+0rgS+KfAv<2`x_6s?;JYn?KX9EuW@r1bz*2Wa;N3`j%0(n1f92C zF=G&JFUsUYOPk^%EZz6v;~&Fw)Kfs#GBtX9|QY z7Pv9VPqH<#;T!$tU;DE12)6zeaqwD6_qnQ6s1Bwq*IG)|Imv;mTGV~B3wRFC1e_e$ zN3wAuDb1l@B8DAi0rDt1EPW*z=bM0w6VqQK226EjTi9lB=#}tKPc0s{p7x1o`>U{N z#r8c7w>F4=(`+UKq(E!NR+7ag5wF0!D@P5JS#C2dvQ#gqF#>`gFrNw)2n=drmR5N~YR zwt=C3(#*H1_^<@>SC*0}V$QgIq~B_@w~Ey_NY%%MMd^;NxnSO97ayK_SkMS=SGIxM zl~VJ;H{$sn=@EjH!=P7W!kieBMpR0{G~TetEPUDYzkRG1_P6Zg`r2%+oeE?AsqjJu zfh!$H^AJ_J9L}8PMRu$J$$HbQgWJn~)h_<|$}ZiNscskhEzYif=p*Xl>yH&Z+N9ySX6ArZnx{E2fbaytHcOt#{$I9(^MZ&*WXYa54{u6w#kOvYQ zRy=@e2tA7jl47TUpr~czi$AEl3J(iPobzOUfpPbKkbP;TtU k$RPHf;lDR%sY}KXDsCH$Zlgx;mMQ=H?D60Iz>ARjf1dU2GXMYp literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/keyinteraction/focus/focus.qml b/examples/declarative/qtquick1/keyinteraction/focus/focus.qml new file mode 100644 index 0000000..ab28260 --- /dev/null +++ b/examples/declarative/qtquick1/keyinteraction/focus/focus.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/keyinteraction/focus/focus.qmlproject @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/keyinteraction/keyinteraction.qmlproject @@ -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 index 0000000..760a8dc --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.pro @@ -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 index 0000000..4ae861c --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/abstractitemmodel/abstractitemmodel.qrc @@ -0,0 +1,6 @@ + + + view.qml + + + diff --git a/examples/declarative/qtquick1/modelviews/abstractitemmodel/main.cpp b/examples/declarative/qtquick1/modelviews/abstractitemmodel/main.cpp new file mode 100644 index 0000000..611f512 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/abstractitemmodel/main.cpp @@ -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 +#include + +#include + +//![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 index 0000000..9da0729 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/abstractitemmodel/model.cpp @@ -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 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 index 0000000..d9fcebf --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/abstractitemmodel/model.h @@ -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 +#include + +//![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 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 index 0000000..0363e9a --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/abstractitemmodel/view.qml @@ -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 index 0000000..85bd2f1 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/gridview/gridview-example.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/gridview/gridview.qmlproject @@ -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 index 0000000000000000000000000000000000000000..1ab7c8eec1381756de32b5f863a6e794c5e8e90f GIT binary patch literal 3350 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 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..f4b8689f87c0cf8a46de9782229c2282d5fe2cf5 GIT binary patch literal 3806 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 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..c76b52494597802fdf1dc0840a31510f64169b70 GIT binary patch literal 3540 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 U;C)}W8UO$Q07*qoM6N<$f*gVFyZ`_I literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..d6d84a61be6ea9470a792b3435d2a4f9ffc58050 GIT binary patch literal 3655 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 q30&9O+Bht^LrRuPDe;6v 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 +

    +
  • 1 cup (150g) self-raising flour +
  • 1 tbs caster sugar +
  • 3/4 cup (185ml) milk +
  • 1 egg +
+ " + method: " +
    +
  1. Sift flour and sugar together into a bowl. Add a pinch of salt. +
  2. Beat milk and egg together, then add to dry ingredients. Beat until smooth. +
  3. Pour mixture into a pan on medium heat and cook until bubbles appear on the surface. +
  4. Turn over and cook other side until golden. +
+ " + } + 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: " +
    +
  • 1 onion +
  • 1 turnip +
  • 1 potato +
  • 1 carrot +
  • 1 head of celery +
  • 1 1/2 litres of water +
+ " + method: " +
    +
  1. Chop vegetables. +
  2. Boil in water until vegetables soften. +
  3. Season with salt and pepper to taste. +
+ " + } + ListElement { + title: "Hamburger" + picture: "content/pics/hamburger.jpg" + ingredients: " +
    +
  • 500g minced beef +
  • Seasoning +
  • lettuce, tomato, onion, cheese +
  • 1 hamburger bun for each burger +
+ " + method: " +
    +
  1. Mix the beef, together with seasoning, in a food processor. +
  2. Shape the beef into burgers. +
  3. Grill the burgers for about 5 mins on each side (until cooked through) +
  4. Serve each burger on a bun with ketchup, cheese, lettuce, tomato and onion. +
+ " + } + ListElement { + title: "Lemonade" + picture: "content/pics/lemonade.jpg" + ingredients: " +
    +
  • 1 cup Lemon Juice +
  • 1 cup Sugar +
  • 6 Cups of Water (2 cups warm water, 4 cups cold water) +
+ " + method: " +
    +
  1. Pour 2 cups of warm water into a pitcher and stir in sugar until it dissolves. +
  2. Pour in lemon juice, stir again, and add 4 cups of cold water. +
  3. Chill or serve over ice cubes. +
+ " + } +} diff --git a/examples/declarative/qtquick1/modelviews/listview/content/TextButton.qml b/examples/declarative/qtquick1/modelviews/listview/content/TextButton.qml new file mode 100644 index 0000000..9eef671 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/listview/content/TextButton.qml @@ -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 index 0000000000000000000000000000000000000000..29d1d4439a139c662aecca94b6f43a465cfb9cc6 GIT binary patch literal 594 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
    Xa0J+Cqb@y0X@UA1qxbVygysgL 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

    FZF`jvSR<4M^u{n>eZ4w{*(QWa@(hp~>) z;}xi9k7xHuaSGuaId=0Iv~xcEh{g;#B0ZqoAL$P^T2)Y67wJx3o~#RVnP~{5j==Ze z52v}0^VypxyRG78*+*w-X1<%^1E*N#G7;p2WtNGZqV{--+%^s-_FdN}Mu_2sh$t0! z5Evzyb#jC$+0oN_^<~ALG%#bF%rVg%J0d@FnYl}*f@s8@#tuYu*wqs~XO#V1Ux=~r z^CMsL{b8N{&&cNn(EEv0_)T{Zg&?WzQ47XMrODMvyns11Luw)oFIwFQe_Ho^auj$v zQm@V@U`27VmiD&tpK_&;X9wq8x%UCsw;0c^sjKV7>DGUKg00?>nch`q)lT_5Yhn27 zeJQ;mB)H!Y!E4pTB!!mwPX}rqRlg`#y-|r38z?gNcp%kY7@_Pf#(P}Y8;RiOslIOu zefP}AU#Z|O1HQavM=k$lmIUc6@2m;Pso&yT2u2s^dn(7&F`wg>)MK~iVrRw2qGlZx zCpq|aLt3CStWZs0(-_Y#_sHf^m&zIYm9St{+>;fBR7dhL;|u*H&b#_9S}rqRoefb2 zEd{IGjy;iAMi|Wcjtwsy`EZks1pSXf5v~#96wEr`;&QAtc}?$CPdTxnEx@8{Ss@*} z7%DwVPxwq)zPJR02bHj|Dn^1Sk52wng&7$99YlIUt-i)}_%s-~^_6`y%X`fo&(ylN zkQqH7|9}kTUNlvcX5-T4Hw1gqqmL$2V!qfNiETw_zc_z@hI2#bs|l z1cob=-2l#=b)>p;^{yx2CqtRip>6|p%b!4c)p}kCSiF*AMzvD~A0@k^e2tEGJ!T<= zGkn!6vxZi__VVZe5-Yq#lh57xMg2-h`}*~5E~#RPy8(!wvE~L~jMW5H5KlHxR9Z<9 z(*CN;_NF+|c&HWCatkbbUp)A0H-%>F$sva9`oo4FO-9ve!o;{#d1+!uR7QoPe4Bfm z240;?{TfP9`I9ujTVyd=!E{(*#nSygKX%D>zBDzLxQ?x;_N88L?>FCt{~nWmoi3-A%+dc8^B)rfz?cd!41IIenRT|hM9B8BnkNwG5es?p0pP^kC z;8-rRnzX8I&$G(0c67|Oh`f)E9&*(WVER0B_(dYw9`!tJEE(s8f>`4+=@*wQbQfSs z*G<}w8x{Fu58?_$nLSs<;85wUY^`6lj1{>xIaH zDd*CBuY}F>Q`Fwc+}3^xsA337ck)_%Gb(?(ioWIdRJb%G@1n*#EK zYReB^oMPNe-W#;u{sha0Qf4DOvtWuH@w552Tmp%Nc`f$r8T60d+8amlU*3X2-$UWW TjHpMXLJ%Uz{||!d&CLG-28JV1 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..db445c9ac876ccfb959d8e3c0219e89a1cb2aafd GIT binary patch literal 6645 zcmbW5cT^MI*YAfeMUY+uq7*^8Ql&nkfXV}i5JHa#h=37MkQP9s2QW%iq$nK%gdS?> zpaLRYKmtiXMl7doq*rYpMd{|(a|$7o<@0wm5u#$K>ay@o{oWm{xtqmfYZ^Tr}qIy zZYG|KSFSVjTDq`E`0`zic>C#$q+xX@|Gg2ClFw+P{N?ND*!aZc)Q{;IJb}2lw7jzVYmL0~dv|aD zfO7cfA1*q8;lE@3C)xkT#eK>}e<}+j%RgLn^Z}>Nz|F{X@d`7~bxRf(UtWo;5oh=e z-+rp@WR+CCN8*3*Y=lifN)0bf{s-;9k^SF+z54$m`%kd{#We$PFwmWf$G{C307ps) z*^l%HxysU#Uw^JXE65uOP>qE zF5~3SO-b>?k6hMyD9?a>`=V^0QcuiNXFJEfnoeC#@oVQ2V{AmvnFPzy4;h8{!`wa9 zmzH{LCcj@ywkv!ZFG80**#8n(Ou08TjMHq!QYOgszdL5&Xi$V2dtt0yvdo3Gse~Af z&e&V|TJvjxyOKz;*M$)u*TK_%_6@jr=?P4pQkLk_*Mv-D&$ck!c-&(Y%Q-u1w@SW( z@Zt9o*p#@{fsZbbIeut>r2)z;KeFbzsd5ybg=20ij2vl?B})%VF*i>ti7yqrZ8qW) zo=%yj&!U?GGTX_5wq(v+qMjxm(*0r9f>YPtcHG|#{CLy`6B+bc_CgZ&FWb^JEl2KQ zD2ReC30&#MNsLsqnpHXm)+ov?dS^;a*^u)cgYFp3p_l++MvtK+q**!hZ2(@|ckIeX z`tdav>-#K82*Y1LnmW-`@CUU+1N^s+_+^BicZOgvnpB37P5q0WGmky)esA|^gZbG; zylB1*gZWnZyJNl)`!75VOT!Suh2ZDIIRZn#;Vh1UpIR-S{QfnmA#%s@=YUAWvH;{F z_~V6HEmFoTaq;m zV8m#r^}IZW*IPoB(>?00Xo)_QISvG>mH?9lyZ{?eZw6hpVg6Ioum<_k6;aVFPwg%H@iIhbUqYw>-VBQ;gZ4j>O%S%B>oBFw%uD(oB!8!dxvo3c z7lnNd=P>%*N|rj2Bs)#nWPm3`7iqw(UaWXe=59C#T!G?)&yKx8(vR?z2%U~j)@?r^ zNBB&>)Hfv^QuvGzxg@Z-D7!cG$Gn1XWZ^F6|HwT(mWHdWu|7`t#$ z^S0zIu}-ALR=Z`~2`M za^K9FVuYVNkI(HIaK|=d>Kdx+uR7x_E=?#N6s7&30YL}iq0!Ih>v= z;Cip?c-bYQaaNh#6WoCLugeZY+17bK6)-8Lf2drVln-PFlN3TQ{3gi?#~y-`8k5q- zWlI<3mK8ktCNi^115my#!f9X?)y$a*bsE4)btbho^CyjGf)dKVLOu7VUYhvAo`Z%& zOM-Ze!&~1oIq14U?9h}We0D`@x=1?$uCc%IL8{)nq>w4R*_DyJi8v$@#L(TQB{?(z zUwD!q`2AYOk@t4n*;DE@b@#I2d{ zMOmr$W-eFow`uC#xr!2jrq-hhrb{KawA?Qp$H1-KM|8esk&Bs`2wQSU0IsXF(=zZ z9jLqq;{vyiDk*C)YF?T+Sg^s z_31zT7l<_AAzyksS^c<8X|`mfRiHH2aO^U}&bz61ff)Qdl0m<6l)XDT5pGuT!)d*U zAg^b?{msFZ;pS`#0GMxIAFWrLkI#fgg~P(n*`n`xh zT7=0kG9Y0nA&}FE5#P&yEv3l0Go4}mcpAV=NsDj@gw{$xjL2P~ zmp~DjTcxPLux==(YAk8g&e;TeDUI2>YW-!9)&-*OlnGhBYZ9wL;>6%h`&b2vJ*4Oj zRhODTl0@tz+kAA;aOc^86JF(5?cA4eSHZOMU%!-MD;%o7C|BjH41?dAlY&LF{Lq4e zT6o{x^ouj|D`bB}T zv|_xns4Z24v^oDu|Dtnff&;1fI8$0K!0SZ^0q1bKjnhA5cr83TbFE+N_c8BZQ(@|G zaN{`D0VZ9Ukbiq=*v*zO-&o6X5-cwAa81i1qcF_-^2)Q`$D)zYr_9X2EWLXu0wUs`B=z=tC9HH?9>MC4-q>bL2< zWtYs~Ikq>R5-yhC2v#b$pmVpm%Ys8c7zy`;#tPb8#a5_qr3CS0PY%&#>9`g=GitIp z-B9u~3RZW>PokIB?ZIjIdk>l$nj_r7Z~TSs8|xgO4VFXRqr{H+jWvlnjyVtv2Q^+6zv~opX+@f z+eJ>BdOsdEjMXM-#^`geiJ;?JVfX|^iyrN?EsT2n#79pTRm|7u8y-)=_l&QyUPwd` zvGj0X3KVY;UENLK;yDy)8`@mj>@Bk!mW)Xba2K|gPj0br-jnH5j>+XbnJc2mcjj=8 zek3!u8KjAIkOiRLXuIWTL+T&RvxkX#s>~KC4K8iVR1yINX{X zQ?{X=86k4DY4!#j5Q&Y$0PnAV!e^Vs{T(W#u`7cos+4IMG50l=Vd}I9vv8PN{%$n= zy3hJteNXZwx_gBrRNWORPP$){ty7j`a0me{VoHFX)75zKXBg>H-8za-tva%NC{uKu z8^y;WMO_gy4=ZTmo(r4ScocC@QL;~Z#!k|C}~Os9W>ya z35MlRWKU%6LFkbYpEbw7W(WCxeYHSd$67KQ)shn6vl58FsVCTscEijbP6R90eby)X zcl7JB?Q6?(n2V&#rIt)45v3m@60@LJf9_bYQZSwEe02u(3O4zWYA!x2oZUt2sM0M- zh1cvR5}0eEJla#KaAmSm5{YOMi9dLqZos~7^Y>Dv(yTypj$_JmzLlk?(~OI+xWuaT ziU}5-$LzhC{Zy%Dr(+rr-D(|Q?H{W6s`aCv9nnBxU@T?@;2<=bnR6v-GkvNeLtgqp z<1(#1mYc_<5^t>^uheDTZxS;U4Tf~B1Tkx1g#_)c~K z6G#5p7)HMf+>R?7xzF*_C+v^RPxvR)&5S2a;|ly@ZoAB_=y1@#2%U61T5f~u^F;s6 zFL!R`RYCGW-q`HcFO*rnFgUsNvX0JS4r*bJ{^;%qVSM-afth-o#?EJ0WW~5|mWeEf zG3R`S{=_%R+ELd$=bjJdI?TU<(hYg(@R#6K91bv-ObTDh3R-*vEO=u&GW`g})(ZRajNrvYblxk@~FodUaicch0C{B64i`IdFgsHQa} z{P2IEo$KiKN8RJFCOouV+fpr`GURCzr&4#nwCjVVy;Mb>gtgn;tgaXu-j1XJf_oid zPM|K-IUkFkQn7nC4k4^0+<-{?#(a_MvZhGI5z_HXo5f-pN{{Shu%9sHRO9wmZONzj zJu8T^GqD}J-x8(+KQnfRxFLQn{nyk;K|?Bt8jOvd?Yd)tn-Kc(=L8{JL}$cz_um|< zdD8p!F`S>!&Z)^_Oa?ENp%1JX``4SXZ_ruo9t(c+uc0D!0*BV#zFueA_vVLQ7?e$k z>p3TcB4SpW!D1HM7x&eJt97kVo-?+Qn;1HA!<)Wk8E;PzA5#t?gT(Mi<@M6m06~O2 z$cU_jM1B5lKNsC(BRBc`@@w#gg{0yfy=I%j@jP}<4?Ri4ev&Ynez`bGDXFNN)Ze$c z_&$FMZs?xvt`n8CER~xcVuOxVeA^C#iHxd)&15>y8*AsfScd9H)OYO^^duI6&N`7*Yc|=;UYMmYkD(|J zwg$8oTAls!X@L8&d@di__{Qs%8mQBkmC)D2-j3WE53W{oS#7V%Mek+Vtkyi28ZPLPrN8a|$X<(O#H8%CYt5&A>U!0`+N%KCgCcKd~i8jMR3xbnff< z=|Wx9PY}yvCkC+WCopr>qwz(q{o~J*OANWaNNu-vcW_+|md(Ruz&h%dYuxA_u-+78PNs1zZhD5 zc{_IsW@I$P93fs>gp|0wVIgk1l^ERj6FKmfa?cw?-fG{b0XOb>eIBW^kGf;q{q};G zz3SA?!U=PAt5Z39$Qk0;NA2j1O2)f=-J+4dRsFyR=+vIm`q9Mj=ch`q$!4RP0sTX% zw++`BUHwuF+%0jf+r58YU|jIZmk5Lzolrw6sH)6uR`3BH+}Zi-bD!#HO9ih{pptoM z**9f>J3;2ZT`oemjCGXTt;YAtk#Y0wXJt3C?8n6ofy)ph+^Qj5Bx+0h2 zhxa)*Y}^sPlsSAH7dztziqrnG9zvAw&b=#e`YKNknRvP?p~)5yEO>`FwuMhO%{uN) zx+TjJ`lG*yZXX4$vVI)Kcz#95`}pD3!co@g;loD#Zk8q}IDhx}Z*M=nKL}ZLnaaN{ z{y&0{(X$Zqlab>OaLfAV(p8v73mArbiw5+YLTaY;$jaT^fnyya+tHV@W-CkGrE3NS z15yX|A$`VAe`tOFcI7Y8j7X|QI03}wDfq|ijbBssD_7lqHdEsQ;^{f*I#`)+6)TA} zO51Ju@iDuIliUGF1+bZ4+hvT{lK%n+ku`fkjD8*KV-w;ip0f6G?17Y#KwC8?*!V~KfvY`&SmSg2BPp8bD7@AzdS#xLi zM-LaTIGGm`wqr7*7>;iA>hm@x1u;7rGtcfyHa-Z!T15r29r&$J=%8ox7 z>oIzDVg2u-^dtpN{+?O=g6vIs6s(D;FWp5Ijrm_{N|&Dyy*P7pT|8@V7;S&LoDV{v zH77&j{GYqc_Ddbe%^9GN{6y>pN-Uv0abHlJjbea5f2g2rJu|P;SMXGTiI!9*s(kIffHagJrkapU@XB#gzts(5|8S=y zJJ0-dQ04vkt|2+B&hjrI_MQRsoaB{1+xm%Y!Bz^J=_ uTZbc9Eh3J3I=xQgMFj55!Ye6+?6`!4EEp^b0IN*;2w5QSzd8eL`ab~gaP&n0 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..df2a147d246ef62d628d73db36b0b24af98a2ab9 GIT binary patch literal 831 zcmV-F1Hk-=P)R5;6h zl}l(-K@^6Q=FtdACA#^NDs^{Lp)6)L zgDB5eX;UdG_4H6F7*yIgXmIAu0!5NyOCtSU7G=!;6%|3j{gliox-!pOK?G(o&X({YLK$5)lC7F{VZbo703UCXA=&? zO>Nu>w#%A8Rp;5oKacEBBT*BGX+{#I_yE%2i8f!~SeeejbP6SvLH5VQ-~o6A-hwe1 z-+)oOG3-#N-p|7H3rxph%DcJ`E`ihFDtIo2X&L#)9#wa!-__Ey=>18UreVqnx(m*O z14e_~1JA$~|`2HhU^Ra!WRl)GgiU zYU$BXh#q3R4$gpm?mF#|Br$YH!gK>%1c$VCx82fBJaI+hxwpFb)g=^Dbv{zQc<7+k z9t8>W67osVx3S=)K2n#oseNr$I`ov*vgsc2h}xyrpv>h+JHeJUF8ZjWkj` zH1UE>PMpf&iLCQ!iioCJ)~Hi?YjvJaK8_pg59Au!plIt&?SDO~mzDzYD;xj-002ov JPDHLkV1h`%ho%4k literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..d6f233d7399c4c07c6c66775f7806acac84b1870 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6P60k4u0Wb3;FYqWamwl0TmSYg zzPEV)f9L4=uDMg50*&A=3GxeOV9U{Bm1EIh)b!)dNY8G|=4l2>MR>Y6hE&9zJ@3ia zpuppBkxMsqLg3#2p{{ow4y^sCTR&@AtNcZ-!c0XiUIF(fS@*p4-Mvkxubuwr)McGB zHm7G5zmh%w<-tAQYwQ=f{_Q#1|%O$WD@{VjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cxg@$ctjR6FmMZlFeAgPITAoY_7YEDSN5AMVr*h!Q?HqR018Q#xJHyX=jZ08 z=9Mrw7o{eaq^2m8XO?6rxO@5rgg5eu0~MKgx;TbNTux3{AeNAlknp4bh#UKVNeKyw z85dYLe3aa%k>K*&_>m!J9*44?cEJw8^_?w@3@_9;nLjU4H38~p@O1TaS?83{1OTR# BJd^+c literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..fefb9c9098a4550c504c900edb15808788812e5a GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cxg@$ctjR6FmMZlFeAgPITAoY_7YEDSN5AMVr-)N5C6Th1`0`*xJHyX=jZ08 z=9Mrw7o{eaq^2m8XO?6rxO@5rgg5eu0~P6ex;TbNTux3<5dPyXo^WJwgW&8%|08@- tQxbsSP&$*(oQV^dQYLTM**~%I6;S;)cJ@c9k@`Tb44$rjF6*2UngHSdJrV!_ literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..60c439638e4d183e483a18542fcb2ee6443051bf GIT binary patch literal 9163 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 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..40df1134f8472f399adfa5c8c66c50a98d3bacc0 GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6y#YQUu0Wa$(6{&=P?uNAhRG|R zPhIi|$63?4Gdn(WDhGy5?S*zvKV>UH^L*-tUX z$Jv{I&ffC7bM{5Qj4e}Ezbj}vVjnSc;_|19_y1onFfAQuu24ykUoZnB3o9G9teS?7 zt9NpGMrLu#@0UVzfU@^IT^vIy;%X<}%xf{=arHKHYQL~@ZfotgwYUG*$MH^!I&%2V z@)sJL`rl4pesV%`$+ja*^=&3!b{Hmgs`72G$lh?~sgSmhV3T|L)#5pvnp5W$R3F&x zq^-&N)%9FO2FOm@bA*rKR&a{^p(h(SexKRzobg)f!S5Tb z0(ReeejodN_$Ob%pPGvI-{X5McZ=;}w|{;sE!Zmj;a8K;+WTSWrcUlO+qsq1zw`F> zL$~g{I69@}|MDjqpAy@zuKLv`b1gzCeQUnq?;S;@b8|k;l-+S#KOj|nW)fHH0-#SB NJYD@<);T3K0RYVY#HauO literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..9dce33204181c919fd2dcd83bb0df18f456cca52 GIT binary patch literal 8639 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 + +//![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 index 0000000..ba49f40 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/objectlistmodel/main.cpp @@ -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 + +#include +#include +#include +#include + +#include "dataobject.h" + +/* + This example illustrates exposing a QList as a + model in QML +*/ + +//![0] +int main(int argc, char ** argv) +{ + QApplication app(argc, argv); + + QList 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 index 0000000..f67a981 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.pro @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qmlproject @@ -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 index 0000000..17e9301 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/objectlistmodel/objectlistmodel.qrc @@ -0,0 +1,5 @@ + + + view.qml + + diff --git a/examples/declarative/qtquick1/modelviews/objectlistmodel/view.qml b/examples/declarative/qtquick1/modelviews/objectlistmodel/view.qml new file mode 100644 index 0000000..264289f --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/objectlistmodel/view.qml @@ -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 index 0000000..24abc5d --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/package/Delegate.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/package/package.qmlproject @@ -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 index 0000000..1715ba1 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/package/view.qml @@ -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 index 0000000..1287271 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/parallax/parallax.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/parallax/parallax.qmlproject @@ -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 index 0000000000000000000000000000000000000000..61cca2f1382f1ce448f4e96bab621a9ae0cb658d GIT binary patch literal 209814 zcmbTc2UJtf_BMP{APKz_FhJ-K0qKOEP!nosR#Y$`MM~%(y@S%5jV4V%Mf8UhK?GEq zN)Z&KNC_A~k*0L;i~qaUz4v?9df%^1lCz%7*)y}xw6phq=Fj+_S%AaLglGbQKp>!j z{sI2X0er@x9#;Xt(h|S`005`|=;_Zq%UPnK;boGowF%L}m|g$?SO^v#KE7ZM0Pyw+ z^tUxNK%YH#9t|4+zyJbZ1e5^4nH)f|v@@~)TLaP95FJ1l`iuXQwm$>(ngC!#o$zxnHQ%yZ@1Ukrx+#r|{!=@|JJyZsBx z{g2GQFzzpQ@%C|{%ly@u;^OV{7r&w7l;9v&I)+%#aZ<2{YX}{W(y@eBkhcdN@6s`k zx2tmi06QeZ4K#Ihu)nmZvTa^{1*;%4W;V|0EWJlFn

    _dv7^ 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≥|ybC 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 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..3d66d725781730c7a9376a25113164f8882d9795 GIT binary patch literal 15408 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 SNxgs4ATkn);&q}%LH`e8$k9yz literal 0 HcmV?d00001 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 index 0000000..4f16958 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/parallax/pics/home-page.svg @@ -0,0 +1,445 @@ + +image/svg+xmlGo HomeJakub Steinerhttp://jimmac.musichall.czhomereturngodefaultuserdirectoryTuomas Kuosmanen + + + + + + + + + + + + + + + + + \ 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 index 0000000000000000000000000000000000000000..8270565e87b9cc64d940a8829c57790c05fe6862 GIT binary patch literal 425 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 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..7712180a3b35d8f409df2c07921d2ee67c6c0797 GIT binary patch literal 3769 zcmV;q4o2~bP)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00006 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/modelviews/parallax/qml/ParallaxView.qml b/examples/declarative/qtquick1/modelviews/parallax/qml/ParallaxView.qml new file mode 100644 index 0000000..9ad636f --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/parallax/qml/ParallaxView.qml @@ -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 index 0000000..c964f50 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/parallax/qml/Smiley.qml @@ -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 index 0000000..bddab8f --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/pathview/pathview-example.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/pathview/pathview.qmlproject @@ -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 index 0000000000000000000000000000000000000000..1ab7c8eec1381756de32b5f863a6e794c5e8e90f GIT binary patch literal 3350 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 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..f4b8689f87c0cf8a46de9782229c2282d5fe2cf5 GIT binary patch literal 3806 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 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..c76b52494597802fdf1dc0840a31510f64169b70 GIT binary patch literal 3540 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 U;C)}W8UO$Q07*qoM6N<$f*gVFyZ`_I literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..d6d84a61be6ea9470a792b3435d2a4f9ffc58050 GIT binary patch literal 3655 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 q30&9O+Bht^LrRuPDe;6v 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 + +#include +#include +#include +#include + + +/* + 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 index 0000000..3078e5b --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.pro @@ -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 index 0000000..17e9301 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/stringlistmodel/stringlistmodel.qrc @@ -0,0 +1,5 @@ + + + view.qml + + diff --git a/examples/declarative/qtquick1/modelviews/stringlistmodel/view.qml b/examples/declarative/qtquick1/modelviews/stringlistmodel/view.qml new file mode 100644 index 0000000..9c65d80 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/stringlistmodel/view.qml @@ -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 index 0000000..4ea7e5b --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/modelviews/visualitemmodel/visualitemmodel.qmlproject @@ -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 index 0000000..25907c0 --- /dev/null +++ b/examples/declarative/qtquick1/positioners/Button.qml @@ -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 index 0000000000000000000000000000000000000000..1ee45423e3958221bd545ee6f122d989302cab3f GIT binary patch literal 810 zcmV+_1J(SAP)B<|3F)+>u<}zfuZe7)NT=Ybf%p@9RIu@KocNNrs{{OFYs@fvL zX^u9hJWdQiy;9GCE&}Y4r^W#*azk#i!X z0tQeD-}3nENIJp}&;hlob6(uM5O*#)UjX|Y5+K#c2tsS zZMN$5yBRrqOa_ap_a;nIVsn9|z+v%N9CfB%If8gRp1^qXR>?32 z*3w6Ivpw-?m;j)qg+kXMEtJw|G)lG5(gLLcMIhjghO{k_bu#)CdcjL^)(HV4rIl#l9 z`bJLq*V>D~Rp82RirDxVP5}7Rn~Yjj!U$|-YlH0pxKM8{H$~096rTrE8Kjh7nlCq5 ziUE@h66K&=O}1m34oT2-J2r6&15LJLTiV(KGC9`_1Eo1-3Ch!yU=dz^csbc-8xNq17Gynhq07*qoM6N<$f^&^p>Hq)$ literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/positioners/del.png b/examples/declarative/qtquick1/positioners/del.png new file mode 100644 index 0000000000000000000000000000000000000000..8d2eaed523fec15dd31cf7285ea50f2f17435fe3 GIT binary patch literal 488 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@;M7UB8wRq zn9D$zvG!`y8K9tKiEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$QVa}?sh%#5 zArXh)PP6u7HWX;H&o5(55f&_B&{&xvC_2UaxS@df;>8XoPuMz?Y|Rw{0vjgv+B!ch zy;dm_ut20@$;9K+a_T>ye{*<+*6l4ly3tG?44ev#Dh)O)`svI2yTab}@8^|GHkfho zNeOTfAYE#xV zTYdQ2V(!{EY<(cpv1OlC|Mk$nFJwxr5_&M{ssYb!Y!6iMT-Lnu z^%LX6O%qa2gs^lmow~IC?DKoCclAn#7p^FN%^<|Ei6_mNUm#sTTOc~pY5nu>t=(d~ zq~A~M3_fyFjkTusWO04OyzP?5OwSte2Tr^2{`Z+?r;S>P_p|Ifa>5t{+wz6q>78?A zjm)yTU*U1P=G*Jdx;OcCUKB)#cx$;a{ezuM^;+MJ)Bq-|n aKk(|Y38wz&&UFFC3WKMspUXO@geCxP=D{TZ literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/positioners/positioners.qml b/examples/declarative/qtquick1/positioners/positioners.qml new file mode 100644 index 0000000..e5c632b --- /dev/null +++ b/examples/declarative/qtquick1/positioners/positioners.qml @@ -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 index 0000000..e526217 --- /dev/null +++ b/examples/declarative/qtquick1/positioners/positioners.qmlproject @@ -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 index 0000000..0618705 --- /dev/null +++ b/examples/declarative/qtquick1/qtquick1.pro @@ -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 index 0000000..197ea39 --- /dev/null +++ b/examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qml @@ -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 index 0000000..e526217 --- /dev/null +++ b/examples/declarative/qtquick1/righttoleft/layoutdirection/layoutdirection.qmlproject @@ -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 index 0000000..0d1b871 --- /dev/null +++ b/examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qml @@ -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 index 0000000..e526217 --- /dev/null +++ b/examples/declarative/qtquick1/righttoleft/layoutmirroring/layoutmirroring.qmlproject @@ -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 index 0000000..4c40c3c --- /dev/null +++ b/examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qml @@ -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: "" + root.text[index] + "" + 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: "" + 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: 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 index 0000000..e526217 --- /dev/null +++ b/examples/declarative/qtquick1/righttoleft/textalignment/textalignment.qmlproject @@ -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 index 0000000..3ada7df --- /dev/null +++ b/examples/declarative/qtquick1/screenorientation/Core/Bubble.qml @@ -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 index 0000000..8fefe0c --- /dev/null +++ b/examples/declarative/qtquick1/screenorientation/Core/Button.qml @@ -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 index 0000000..842846b --- /dev/null +++ b/examples/declarative/qtquick1/screenorientation/Core/screenorientation.js @@ -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 index 0000000..b9db83e --- /dev/null +++ b/examples/declarative/qtquick1/screenorientation/screenorientation.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/screenorientation/screenorientation.qmlproject @@ -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 index 0000000..55a04c3 --- /dev/null +++ b/examples/declarative/qtquick1/sqllocalstorage/hello.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/sqllocalstorage/sqllocalstorage.qmlproject @@ -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 index 0000000..58073ac --- /dev/null +++ b/examples/declarative/qtquick1/text/fonts/availableFonts.qml @@ -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 index 0000000..7d5ce2e --- /dev/null +++ b/examples/declarative/qtquick1/text/fonts/banner.qml @@ -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 index 0000000..8dd6b19 --- /dev/null +++ b/examples/declarative/qtquick1/text/fonts/fonts.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/text/fonts/fonts.qmlproject @@ -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 index 0000000000000000000000000000000000000000..cf93f9651fc0988d55a8df32f131a8125ff3fe99 GIT binary patch literal 24544 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 R)C$zi;OXk;vd$@?2>_6oGzI_w literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/text/textselection/pics/startHandle.sci b/examples/declarative/qtquick1/text/textselection/pics/startHandle.sci new file mode 100644 index 0000000..f9eae20 --- /dev/null +++ b/examples/declarative/qtquick1/text/textselection/pics/startHandle.sci @@ -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 index 0000000..26073f4 --- /dev/null +++ b/examples/declarative/qtquick1/text/textselection/textselection.qml @@ -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: "

    Text Selection

    " + +"

    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." + +"

    Press-and-hold to select a word, then drag the selection handles." + +"

    Drag outside the selection to scroll the text." + +"

    Click inside the selection to cut/copy/paste/cancel selection." + +"

    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.y+flick.contentY && y= 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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/text/textselection/textselection.qmlproject @@ -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 index 0000000..dffcd56 --- /dev/null +++ b/examples/declarative/qtquick1/threading/threadedlistmodel/dataloader.js @@ -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 index 0000000..fe2dc29 --- /dev/null +++ b/examples/declarative/qtquick1/threading/threadedlistmodel/threadedlistmodel.qmlproject @@ -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 index 0000000..42d1345 --- /dev/null +++ b/examples/declarative/qtquick1/threading/threadedlistmodel/timedisplay.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/threading/threading.qmlproject @@ -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 index 0000000..f76471f --- /dev/null +++ b/examples/declarative/qtquick1/threading/workerscript/workerscript.js @@ -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 index 0000000..9581123 --- /dev/null +++ b/examples/declarative/qtquick1/threading/workerscript/workerscript.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/threading/workerscript/workerscript.qmlproject @@ -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 index 0000000..c607194 --- /dev/null +++ b/examples/declarative/qtquick1/touchinteraction/gestures/experimental-gestures.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/touchinteraction/gestures/gestures.qmlproject @@ -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 index 0000000..9bca78f --- /dev/null +++ b/examples/declarative/qtquick1/touchinteraction/mousearea/mousearea-example.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/touchinteraction/mousearea/mousearea.qmlproject @@ -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 index 0000000..9439ace --- /dev/null +++ b/examples/declarative/qtquick1/touchinteraction/pincharea/flickresize.qml @@ -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 index 0000000..e526217 --- /dev/null +++ b/examples/declarative/qtquick1/touchinteraction/pincharea/pincharea.qmlproject @@ -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 index 0000000000000000000000000000000000000000..4014b4659c1100c4a07cb562a3647fcfbb5f1cdd GIT binary patch literal 40886 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 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 index 0000000..39f8f77 --- /dev/null +++ b/examples/declarative/qtquick1/toys/clocks/content/QuitButton.qml @@ -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 index 0000000000000000000000000000000000000000..a885950862ff9d709c70209d44d8af063939ae95 GIT binary patch literal 46895 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 LNkvXXu0mjflDQJ; literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/clocks/content/center.png b/examples/declarative/qtquick1/toys/clocks/content/center.png new file mode 100644 index 0000000000000000000000000000000000000000..7fbd802a44e4242cb2ce11fd78efa0e2e9123591 GIT binary patch literal 765 zcmVwm?cmZyN`*KT0&&bzT5WB7@L(auxOrlE<9L|IL z&i8)L&uf>4S*T)OE8F->35(24d5sX5GeKScQ1}Zk0{U)AOeg56F@@r z9&i_k$@vIi#IHYN1sVpTz-?fBeSQ6DCX;#L`@V5q_xHlW!biXb&PAI*M>7u%0F42O z&CSilY&QEQkw`q(Y+9|>+rz`dd@7ZCCyf6B4GRvyQa(U#F>=uz;8CGacvY|0gJD{& zR*!%=;GskpvRQC?*oNeXsg;$Lg75nb(|9~ScW`jV&hDzY)D;F81#ZpE%q)7I$4wLnZ)|KVO0gq?V>GZMsffhm@h95(I@ZZ# z@|p5Cm%2j9NTbnchQr~}K4*QUR;xAXnTaa{0<=q|(&w9`!7|R}a-RSX+iE?)KF|i5 zdwY9dZUWrtbf{D+rE0Z$O1Fn?9|syZpgTcsu~% z2a54IaFR}^*UIJc*Fkx8UH5EjYin(1XXi+K>f-M$<%5e|vAb&Q;)&8-GE=~VTrQWI zpPx@oPftIdoSeL0E|vh*lr=Z!!jm-Q2}+N`W?w>U9_n|b&dh-G77}8A*@a$++Si(L{Cv$O@m%xtVMFJ vUl6^??F-^D;CUJdtS*47?_QuH>?{8O-DBHcK9x2C00000NkvXXu0mjfY~)gG literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..cc7151a397e16b6d6e2bbe6b1a59d43d09d76a89 GIT binary patch literal 23359 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/clocks/content/clock.png b/examples/declarative/qtquick1/toys/clocks/content/clock.png new file mode 100644 index 0000000000000000000000000000000000000000..462edacc0eaae9f2789ba6ae2c92ed533bba7207 GIT binary patch literal 20653 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�$@7S8U3ymd7s7tyOHWAvUm z!t8j;y?C2<2}e`&NBs zk|RSR9_R4Kg=Z_uc_R(0ACjxF<KbE$Lo&3+4H z^-oQ4`H5?8exV)c>u1Dr0kTvFTg+)a8?8bsZwpqqX4r2oz8QT40DQmj`P6*QrBm>V7YV%01x_JADEx%^ zYr);e3s%p$=CZLzuClr$rRa0A`ju}-P<7iI{`Q`4)24ZEZqVnxG9SyXV&z_!Wd`%z zcVvG&ybwli^(yJ@>A{_Ob>)%J!=DGKNXOy1Jtb*^m!xa}Mzho4i2eXqq#bjk9FMd^ z8V^ntW~3cz#40NrK_b|AKh5Pl@X5^Qj`XWG zg1NcPnfY(~#SJg#&X_g6_1DAEkoGm=6g)pmB&Gv`&Ugwe?Xb-v3K2s;3O&vdUn>)6 zNbhzTNrphVr~;_n>$V{lZjvIRlU&TIiaBFql|r3%7EpzD`Zl=;nN&^^4*{)Byzpbgy7Ztu1Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iXc9 z05S=eKQo^I00HqyL_t(o!|j;6j?+LChQH(WKrRH9n~*5B+Xf+}qoCp?QbhDr+aW4C zdL)WeG|*73Qt}2#5GYa#8lHeyT5%Jx6^|Vs3TCpi3#*N^(5!rAP(?i zpbcDdi`#BafhF)0_yH_{<^G;j-Z65HSAi?QwQje2qu=lE8e?QQ9DbTiCZB$!PRzWG#b6g^IYfixlNKp zlO)mkd~WkR*XeZn9N2LsMIPI@O}e#MEZ(MRdQ(+f!4V-MX{XaUXti1ofGWn%B2ph!ja_4( zllQqksv7%D*vIGV-L8MJ_1E)%V^D@!@0!USLDI&%-Tf!(+)zhuk*v@?gELHWx3HVl3-#ZiS4OG{=?eVR(k3}SQ z4HfIgcM*xLwNJwSkc5pTA8#HNca1U6fcp;rT~QQIAHFmn!*#y^s*t+D3$g`_00000 LNkvXXu0mjfjzPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iXc9 z05TtA>xRw%00HqyL_t(o!{wO0j?+L8fWO%|770J$s8EVS0#RN|$77_WqdO@D#YwzF zQsph6q@&?ABGEeN5LNhz?tJXf%o=NP@WtU|M~t+J=8lH8w8rzgYVaAXtQF)NbbYoOc(p3G*mm#fw4({j1|oMqYhd_F$|o&k?c z$4P0>0C<>X+1vGceG&pR8jU`V$Kw~kIq(Jeo)AfzrjMnt82bJGIM#9eDMGar2~Dbc z%cPR{zmaMssiJHlu@`A?^Q0;eRi?UYgu2B*)FwBg`kN!&oKJD|>hjcx)N9wLMxs9`<{e7>)D_3?Qbu$pY$hFJ3sqOT zr3pU0HwA!=s=hNTe7MaiqGvBO&o5r3X?iIl&sFt9p69OvA?W@B51fzRJAdej00000 LNkvXXu0mjfJuMrm literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/clocks/content/quit.png b/examples/declarative/qtquick1/toys/clocks/content/quit.png new file mode 100644 index 0000000000000000000000000000000000000000..b822057d4e6a6ac5ed2b7d20fb27d5368b0e831b GIT binary patch literal 583 zcmV-N0=WH&P)iLVjkLUbqUBm)|aiE*K3 zcJA~s1Q&7dB@h+jHEskYS%e6>@m-Yfs4;jc7hOGcW~w{mf!>^|^Q)qYI!%m`7$cH` zr2CS3Wp1xe(q&0^tGO!nNK%yaN7CX5*sP>qsb;Cn2X_y^1E5C{0eI-{H>e4BzXYrT z?UcIh?n?kIN%w$TnYzC~&&*Z^u#3PmU_4WECjcwJm&{-Qmfih&1)FKWz5#DrF-F{d z0@wf!*X(o=aNv0j_8piqvk$EpW4ZdVgdWNi!~~DkVAE!{1<(f*Iti@Tpt;zEL2*v~ zFtg9V8Q|*(*bksv#fElR+39g$6F69d?EoD!+Z-GS!*c;RLjLf}7zd8#28KX)?*gy( z00Z#Y-4_}`cb`t!z6Pv}G2n^2U&(^*J_Wo6_GgNBC@vv~K6Ur`U0}l2YOrmf3!Dbj zfX+ejmOH?k2JF04~q4ZzJB>?d%c!~o3f6VRb}hJ(=tW&^O0R?T7S zgH>ksu?Bq!Tq~R90ZH#tv)q<+c7z6dQj({d7n0ijj$J|5B%S+@U%)9z%Ow_L3 Vh5vkKWu5>4002ovPDHLkV1nYy`N{wQ literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/clocks/content/second.png b/examples/declarative/qtquick1/toys/clocks/content/second.png new file mode 100644 index 0000000000000000000000000000000000000000..4aa9fb5e8ee10bceed60233801f6cafbbc601362 GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^tUw&f!3HE7ALAcI9 z%{-)-#I>01eJJ1I*m*ivo;z>;fApF7?nmi?*OJbCk6Ba6-}}@5-m_hw^uNY#bn7wL uw$wt4`T4tTa)qAq@q#bR-xN5-FuuQc`KERIYhIw!89ZJ6T-G@yGywn$272fK literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/corkboards/Day.qml b/examples/declarative/qtquick1/toys/corkboards/Day.qml new file mode 100644 index 0000000..ca95182 --- /dev/null +++ b/examples/declarative/qtquick1/toys/corkboards/Day.qml @@ -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 index 0000000000000000000000000000000000000000..160bc002bf9d03a3d8b95c1ef3ade4a9d02c4fb2 GIT binary patch literal 149337 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 D%H)6b literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/corkboards/tack.png b/examples/declarative/qtquick1/toys/corkboards/tack.png new file mode 100644 index 0000000000000000000000000000000000000000..cef2d1cd23dcf6508486b654f2594f3b312cea95 GIT binary patch literal 7282 zcmV-&9F60NP)7VNJ^>_ZN z>JEtrzEc*L3q-2`{x*Pj063M@;{Y}QTuJKx1n}R_iEO^o=h1fn*;_6U9R=_{0DlL- z4-()E0E)G*NURLh0$c>}NdW)(oXGa=Jo`I6}P?m_B?5kXSAdJqF-k67YJ9M)=yM>@YpoN~bCyVYmH10{r81B2OOF zkJmgP7lmq;$OWPm0KY-N z!xn(UJRm7UUI`$92-)e=m|nh&x~kv-1mH;l{@x_xOW3)586JQKz9hhdeW1K10f}nr(*!)6VHb=pAPNTc(IhR3 zL~Mn3?S}_oPo2W*V~=6$%U{Ozr=CLH9RH*MKh{-WeKzW~Q2q@852rwA&5~*jKpB9% zrxvlM`*EAH#!uG!$dxOYe&Gvv-Mij}JKy&{#E;-nYCN#H@|t1DMWVqDaEgKV1NdjD z@Lkd>JLY!!j7eJd7>`(^e)0g=TC9HXgIId-LA?0!kK^hmKA}u`_c@UZdaG}1Kt4%y z+5zuIQy&D72^#sPOh^H-lX$Gdx9F<_UZ=Y zNut*ef!`P4KLWU8zjFoic6rV$7|h#@6qwX*^tr!%$5LQA{xlh&e)d^RzW7C;EHV0? z@6oeg%!TZp$KnvF~GUKkC#Dq`)jnV)gY_ zfzS>Zw8HO#0Siz7!o~)sfAmL?$wd3&2>6k23Lp!FPjSERHPii6&hp#9FA(sv-9Pl5 ztT$3)-lu8y=rOHb5cUJ5uOoVnMdN*Sz68TSxxNlLdNl3R4}QY{=@EWP{H`+C@B0H{ zV&cC6?a+(-p+>gx(f z7lfpCyVU&_7l}e&kAD$(pa6b36?nI%#|aIJ`tXG^O_A!3LiN>dq@LQ1^jP}09`Sve&O)&&K0%7DC90C?AbRg@_E8 zxd1RAqTE`WhY&IVc?e-qVxsN(hk%C*;JaJl6E#^15in8HVmE7{r2`jTI3 zx&1WZ#%%+V0yJ zMF4OIFuD(TM6e4)o4ZqBh??Z8$lPRuDH>2Tzc)aS&FS+5((OKPs{3Vk@3E*X@;>Iv zmD>VD!MOka`|XP_zG%y`v}lAp@ZJxda{~Y)W*&;jFoZAwFcgv87?U$|2EZ)}CUF2ElcGtjlMj4aS z4-ZHL!<;#D#>{3jCnDL)FTY$6(aIzkhx^5|8`?-ADb`0Nw(=Q(g zNTQtcC8o=hs9_#8Zz^knaAGy5i^e>7=?%wB9b$6CL)U_a&%eI#A?Qv zzbo<%0$dA*0-#l-9dZcCOLgsr0N6=hJe7+8puT}6?d>9Cjn1+CKuPJHJiJSq_@|5e z0+Onzt5>hu)z#Jf#*G`r($dn3;Jt(m&6-H{_l^2uZ}7z_qOG^%MSgfNb*7Yq$Y$v>mOdmB^#}G3vtt8kS@|vKIy@nK;!BE-9B&WK&hujYIYWBOO5ufXH5q z7-kz2ihC^Od9*38DnhFe`-&8@WqA{sOExUTClfUz-Vq;74DGt^Ev?De9$YN{JR z+lC&7{<_GUg$PWvFxHs+;uHI!$J%#^`?mlbNkB_eOs)%tM@NY!11BwTj=ZO

    q|>+b<$ zHv?{r1z?ECzTTLnW6Z|`5hQ{!S33ZJsL=tK4-DIP!me%ke*oT)fRU0ROIgtsbgKVk z!8zK2lx;nLq+leVeE1QO$sRx=7&gyyYpu zo%O{T3z?zYcZnR82nK)#6rCBP4qpO_%A@Or_LY~=uw+q!*C{CJjgxVV{^SnksoCd! zB-4R<09g;fNA;1dhSWG?d3o7XRpp2%ch0pDH#6rVk`s|rFhU46gs{h3>ae5Fo9a#z zFhpdHG42?!+zP(i_6S=~@9%71;A$S-#81gGq{e*L;}&RJ`1=Dp7WOayObh=A!?WtS(M5tou8nfXp#|_m*cZ&R&A=F>YiGmSu_{|AgL`WV~zV# zH|NySYeG_o>!Tic=n;`wA0Y1H#f#?j>C*;)y>;uBbIv&tu|(v&_m+s16>|VY*A|HE zU}h2#GRC0CsCSvuWs1rho4~B^q;71X9cp^es5L?J)oVH>4I*7~jdnx;yb$Gj3jGdK zZx*y;%F^q4G*`=z0{G$&iTr~;AX-4)@|L&I)vH&@IcEohfkhKxySlE8wU)}VoV!2; zu3+dfEggoWrBC~UnaLQVn#A0QfIy^WK%(0~A`MGKTJI~3O>~Z08nG)&($qlOsh7}z zat9iH*%!_CX)7&#>MjMv09a}I_4ESSw8cFC{PT3;#0eWhu+BM+Ey!9+B0|>My%+5Q z(Dp@-rQj?mt$G4L#+bSHydg5}bIVKw$Ex~D_oMn!p%s`{UCNRgds(K}OaS~}G;Z+( zuguf!RzYKVFlmM22+h zqN1#V-sjImc5VVYE5O)9VJkQ(7`Ew93xY%yCegMiODGDrGhjEzoOCL0UuGm=7d(ds zpdlJ{H0%h!JMfg$n-2KHg8(tJ*^CB*L2Hb&ENg|Y0*|1y+xjjk7;#%|Nf(GdyEk`? znITQmik~66Od@D20Hek{3MREBmZ&|ZHbu8bL>NUO>X)1fx|;{=rtnP!L1$>FIy%|` zV*v=MAU=KnA%4xllx2zWc#OfI(YjGpv9(r02vGH8t(ER}1b~e(bA9SF`aK|Z&uQ=R z1(7RBkb-<=Wfzpl5(B_>fUqe*iQO4SPzKmto7p!|qpdO_UCTK@ zNL2*^W;yVg!vNCevZ|^QYpvvY9%7n=MTD~~696HEV5901Yb}QmSoake03sq?JEAIB zf$EF%bUy$fFXF!nT)7W8ZJ4oq_uW{z`)+K0^{db%BN4UR>9|RXzHXCV69tcGXHq9X zVzc07GXm);A&dFpKbf@Gdy|X`QV78ik!5BhB5lfD_km`3MYpjxIPOcSw5^EXx-qkRM3(OWR%chP zfXfnYG(vU#dOUMCiboO@rU9c(x8vVj0+6maD~RTP3qV)1rCt|su+Ck;l283Lk$-Vm zK+MX@ii8k&Fc@%_Wl|Ic1K`LE&huRIJZI;e+6i{fF%bplTtH+-Y=dt1_ie843ns|4 zjt_qX_)-uFB!Z2np9X~hV{OZjmKlkCNf$s_%rm21P#XbA7uTk1I~9bkTi8vB>~}0) z#{~S7!-4?-_MPv1rvqRnlZhcB6GAZ7T0=ypuIqM4RuhOJgf_BI)A4b@isImvvLwyq z?w4>(TL6tQ+61b*i1If8Cka5gvC*VvV&FMYG?tXI4M;{RR)!PBY-MV#40PyniGEb*dCL#_Ya9!8zoMRDb8IxsMh^mW4Bsk|< zP^`7VIcJzT7-L8Wt&(ju+}+Z5tbMnSi2U*WL~mSbrmD6JTugEjbqw@e8`(pVQQDda zLf8FG)f2F5_!f0=k?I0)lbZGNw^i)9bLXtJ)>KucU%AnAin4;4iHO=`&3nn7R`XH1 zd@b7Kw(Yz#&<{o`519e}&w;CNCwjAO#!KRrNhY{6qL{K|PMxWmOTg%kH81MSA~q}l zBn05m9}xND{l&kx*n982*H~+5b90ljEF&~uwW;fxj4?*X&%O6;zavO$#8vn$D?|hl zpswob%grrfNGppgz@!E?zaMy0SJ$N}`ra{O?1G|pr&Vdno&_CiI}o?~)Y1Y#e)8=i zzkY!1dyBpAzWa=Gj*c8TLf(7QVcD2yG$}){%LtPQxan*IPCL;~uTdK!B8a1nhw0az zfbxF>FW&*+jli9A9#)cGLDHf2>rpU}fVK}1U6pl^H`Vj^UwOO8&mZO``-(et>Xf|n z(o4Ltu|da=ALkH4@ZKBe9EnIMih}C8Ze8Jc+$)2Ki1Zi$s;bH`Gdbss_a4qU%^0U( zbW!QPmj;V-a{ITy7fu34zE9*Hy+{+E(gR9&TW78GMW}Nlko(+2I@=xKKI4IZgs-94 z6DLkk%=98cx+Wqr z%uL?K7;uc>w&$WmuXua%w_NXC*Fz%K!x zdjYuqHwB>j`B8@)J9-y>w_WVTix=ta*|T!; z{t3M+Cl6{SaCyuN8c&(8wWh*(8U6vvuDp@eSIBuU85)p z0)P+#dGFhaamE;g5Y$+!Zjy*mItv9r)NPHctOHymIy4(=ydI4f++$x39AU z%Xa|gF9CO$`H3Za%3<7z!>B9i>RaH6fz4P8@Wm!6A&b;?-Hk-K+g44g(b?vuN~OZ@e{)IJ$m%06A|aVcazB^qh?8htLs`-RaTZ|drn!FHma|T znQdLyHer;FY_ZI2leB)j=%*(|(}EJcwA5bd7!Cl0M(eRR#+1xFLGyKQJ_a0n8?f?S zz{(PEyl4`ZcSPY|1#pF$l}uL%c>WK8|Ml}t9`Bo4_AJLqsIc^L8qc_uc^z=bTQk(=>l@&ROSNh#psv zX6XZk5Ofr>%@`;U9Y6vR1!k_L(eqO@U~C&>ww!ZYWm!(qfT6Q}M7p~ATcjNLOAa?~ z+~C#KRkO9V#iP-PLI@#dhGC46EXz<;6^IDa=~RZpAwmeO#yZYKfryAsoY1lNnD1h1 zt%(ySOb8)ZYjvpD0!`vl=Z(covPSwWBA%IRW6X?*rpB0wi0p{Sb_ii-Hk(b+OhAl3 zi}KC43%64i0-`Jt5qZyh-ovY_tFYFJb52%PRuI(=fM)toRaKJbIlT93L!>AQ;b!hG z8)MXVv=h7Qy0*?aj>*gr$L@^+AWTtGbSQ3m1cIwB!n=X&1R~i zbZGcnz8vbe-_sbSC<-cy!rr=d%Puc3yXkalr_-sU=3hX#5Q3ddChAQ&5m7J80??IM z>S>wycU`mCPP70(aWql^X>F1BK8Q#yBDMFvwAN0&_frv>GV?5iFwOJ4dimv-+sTOE zsw%2m4*hFDYin!r*0;WuKl|Cw8USHBouViTDT;!tsuDySF`LaK&vS`h6VGNdHyjRm zI-N2zt0CvAssft0BN$^WGaK){iRud>1kIHJkrfe$77PGomSwZLu4f^HnfJcTvaH(P z-qzor(X`X6rW^_oRbK$){Q2{|wzfu>E?vTKIF#XVh%C$CoRgiM9nSNdtE#f`=lggt z7%(&2;c)1pKy6*umWWJMRfdRcRaKfv)@Z$TYwNlOGppeaBI1jpr~p)TU6*B9Rw0CH zd3m{d;e{7;b(*@sc(pJ?%b^*fFGfUITU(Rqbc$1_PRaWEItGIQ4~Ih@4u@QpB_BI> zEL2q$wzsz}Gdt&;Wo92+{n-th=ec2KDvH9SBaF-}Ap{8_NS0;H%%QI9kmq>~z?WrN z1E{REbx{<4GMNPDoB|Qj{=VAEZU6s}bOb83E6zDnmZh0YCU!g?n-D^qr1aif5iw<1 z8UUuMDoaFWI-TmeM5?Nah)BHm@ZKYYz-3u-^vpsWk@O*iAR={DRbgjmCk%%}e(t&F z(& M07*qoM6N<$f|zx+ssI20 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qml b/examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qml new file mode 100644 index 0000000..d2be3b6 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/dynamicscene.qmlproject @@ -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 index 0000000..fcd87f9 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/images/NOTE @@ -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 index 0000000000000000000000000000000000000000..3d66d725781730c7a9376a25113164f8882d9795 GIT binary patch literal 15408 zcmYMbb95%Y6E|Ahwrv|vZF6g5>!-GD+qP|Q+pV|l*0$~T?)P`^eczljnVe+)NHU*H zCNn3I%8F8maCmSaARve`(&DQBIN(1*f%;d!z1HUbW3Z0WKb-%KFaJlN2@ak)|8=@K zidg<9`9C_le=+*kfHIMj694{Rfz^KA00H5Tl@S+F_gK5|aaY$^Y5Niibv_~Fmk==p z9gMDuJY++PoKeDz83)Z#h@j-W!-*=Sk#x*rK=eNb?Z96DrGgE5W)$&Af_=f4 z^2-$--`@Yc@q6X*(Gx-zs{f`L5RN%f4PK0be_JbeY1vOqq>eHa#1dp?AX0wVnUB-?vc{F*MRr)e&iAX}*`2Q) zka~xcYr0qDO6uz~WMgC&KKLkXNaFO&3lZ|X9o%*76}d_(Sbm3#o)wg>|Hj#(pV(Bj zkY#D{aU9FC_?cNy{HB4p@qp6 z0;gZ6fT@dy96XI8;lY3pasU;8#lqgB=LqHA`sqO9phs|R>p9--xJ6FfUxX+H$4*oS zTh;7Pabnwv-Sjeym)^P6obAhJQg!@0Y&pU%_uV@m!Mj{6e}{Cd&JMjO-P_Z1Ix6PG zY1F##xlqx%_x#Ld%Z9)9dK1A>zC`YMHV4a#vLzP>6K?j$@S5u!H1cf%er_zzW@rBt z1Mzs-l$3mG*^y9)?$AVV6&cj8{4C9m|b~Qj?dIluTkV| z=SRSob`=omsy5IO*dgS2=G7dRMM=(I(`yuZ*v_+-9zhQ*z$ui`Qn$-sEn z>uk6_@0(x3HqVT&O@dYPTafSqU}ydqXB)=V@$To=`hD&O`*};o+aUaZHzM2UrGgmo z;@S~1cEEf2I0(6T(Td%EMbYw1CWK|tx)$`(vUpAk4rS0{0k*@o#f zMF#N%;BfBSUYXx5wU#IERDDQ&Onr)d_Ds-B>EF$81vL2OAOff%V>?8y-hdLdK{}#9 zT?C8}sL~;xL5T?4-iy*BYrE$c@k*L^m2RlcQ+`CuFs|4n$>TR^2YCm|*OptH^((7< zIg&179Y*|B&=JoTr&=cwzy|iCZp<4&asBp42M|!3Zuz`j@chFb815T@mtKu(jgy*N z#@P?|61!i;eZ-a{zEaNBEjybF6Au~VP9Ht;Y~T&ISzXY7*f+Z`V0?srwnQihGNy~G z$7v5v^DC{vm7H%#Hm&8g@|jiS=I6Zp%H(W$>@9z}A^s(P?mL^XAxuVgU$e{f{UDKI zB$^?$A$K}>I(+(Ke-7A(E4KfcoVG2!2+TX|$zAC86|4y!w9K-0Lj;OiG@QHXK4^44 z^d|dC=FO?Ion@gRAR4ya*Pf#fBk>~d5^wFzCx72)Ubx+Zw+KAym;bFYi9G-KyUc81 zhq3b}Dk>7WuSpC-iGUvQ-eOqVQ??BaNJT&~`YvNQW5_m7PkEbbHY~mC&v*3j$e-(u ziH<$RuFVCFCA!+rmL?;ixv45WHVRHm`+z?fLXOe`W9(vHowV=;`ai{Nh&MwCfyMH>W~0 zR4?nu5063oBv{*mLn`KlBplZdcj?E5ou4eP$CHbc_h(~uRr{=kPjzF?LC+nzur?^E z&}1*2qbs-h0Y=>`+eFz&=ynG}ZNr-K#WBx#apQ!Y_RW@DsIFTqF<}N}pJCIaaU^1H z)B^PRW!0EKKI15kG!{J}v6DdQ6?9k!+4Ixh@jJvJav+GV9^9ux(@`Z~ofFfHSpWDv z!_3qzaE>9Pyxm(}O1rYI>gwZfDMnD+*!ZxJu~UZb3U1I&W0hh*irP)yS#PP>nW47E z@zO;Q*)wml{}FH(xCh(^9sobnH3GiND-As>My7TWV)F<6#cJ+tY6{fOQI;P^=Qq-~ z5~KAFAmlXl>t)<~i-Y1?aV#z_IVk_Mmc!m37DRy>IdyRh+PgIjtUKV5e;T6h_IJim z3|^zLX_$<<(gi+&heTag$<|zg8i(|DdTmQy!|pzzhXlG|r)n?vSu>NySgZ^;3ZJ?2 zpVzY+C)DP>^-X7P`b&F=2c;G{%&G4Pv>NhU1J*gY9+3f~j~(+)m|<~H{LnFD8zrMp zdGr9(HEzC@i>k(UwzaJagK!!5=!aKGp~z^xj+~B-4uVd-&YW*Z!GX$Nmcg(fhza0!9!5r-JwMLvXok>-2mj zOX02JVvz7aMvcS%TSVHL!i+L(o4iB{`ZTeMx9xO#NF*m@2rlP4Of$nh46^Q1HH1z! zdR%iJ$?q0dGK7}zBD4vXC81cy;8@zYR-#?pbMqnmqk5|kgyzgO8BXWbm&6dc>1U7t z-E+Sz_YfesGlG7@l!&%gk6LrWdc#a?AAK?U0K0(0Mltr>`IDTq&lI?5!mWNduj`bT z0$o@3d#B;|VeS7}uQ>)l#f=EM15yRq`TROj^cS!<)jg$LH2mljj`^VNIZ_8WXT|EH zy^dq;biOu6FF@FQkKVv1(=kDA(|$Mcv0hDN_M;V98^>bvMs2xG5d!)>?H;3#p%`Q&FEcy%fSKGJDHd4 z|c~0(#pcLP0F?nAiD&Vw+=GwtJ%L zkgHx()jy#Q@Qsy>6kn9<6hq^9-p-GU?V$vN-yeR z8@vVP6D^jtn`be=dD|3jZ>5XJAy<9h<1t66er}T5&1;f?!>cP&`Z+Y0WW8x;BG-K<5o;ZS*QQKvzy2N31<^Ufy6hew=27d9C(n(Eq48;b% z!AF=+T}4G2>gOgDbbEJv0bAH^)Rj;_JNy(Fk+%4%#oin=fvV*+LY6Q|dcCV0=$R>D z1yCz|QO=7M7CS<5W5E*pE6W2NU?K|cLYs;EF7GVXB6jB=SBKN)Z5(SH9e44?R~CT# zHE+fTjMH0N9k@~9L>3G#Y#oYvG(Xw#AA<1n{ezJzu7kV7pTcO$NuD^yQLVwU6_2KA zo9U zIuC+pigsW`vxjBx7~8mGzg9pgnFY6V`ojL9dcbp6;1gY7U@=>p0u^Erh0d5s74YGz znflx3DLQ+6{qiCEk$ppcP$*8#Hy>Iryz=9Sn?f7f!IowD$qS)Fu3MK_bV9k*o=Z_h ztx_Upkpdo89g~>44pJZ*Yew%veMp-kBqC1{XC~s-=n{~(Ydy z)6LM=pplRL;#b{@xy+8}^0s;z&iaq+$8oU;UySbU_-Q#p>bPlYEX-(N_>s5^uTED& zX-IT&WD$(H;KZQZJL3*dtmHH3uhX2TH1M!V`C<6_TfiK2pF^naP*m|Ykw5H(Z%SY0 zyX9cl!V@I=#{IVaxaUrfW8RnXKi860zL@9@tQJrSY6a{zj&1a`-2&c4nI5Ybk3721KXL$B# zmk`JS-)Po2FN-jGB0m`XBZC^f$HZo4F4O#VBS?w`>>VwwGGvlhlfL!7Mk|Bt1F*8l z5O84J#)du9{7J0+E~J)V5wcqI4P5pwa9t-p7Lm47HFMp9-8s$LUo0T`1c`^qL<<2) zLYSmhysvHKo;V~NCkw!#VfjQ@!54{pK%JboF1hyBetkF%w2W1p7GUe)h6`d`PC4uH zmxehGydU!1>-hv10JLM_WbV#;vPgRucDo>(%x-C=1-0u1@0rHz$28|ycExkz2qgWq z3xu6@(>)Hy`w({^+e^0|KY!#k{q~NIp1C{%F!OL*e-4nF;l+2`IuYwKVRdya zMaA#_Q$CNwHwdKT3m7@t@&O52Zc9IkJG=vQ$||smn5X`dee|}&nY!JE<rGIQ~@?&k%71^_U5og`}-q;8cgYf!UN1GC)$0wvTtU zW5KZEfVR6zP+a`z4wYTnDynEJT#yf79;@Ino+flo`OR?H%Xia|)!R55U@y~}3 zr6_~>#46eEphL&10uAYNdi{>#Yx_3A=F!o*! zHrvGw{2d;*vW6R6l82)(!&;!mZ3QDqH0yV4Bw5OAQYu z#ML=xPXIAlEM4Nt6eQPWn84e6w(^Fq^E7Aak?%P2e$4X&o@gg_)dL9C){CPji*DV4 zkm_!jeE4M3yMK~l7S3;UI=pkGHvT$8Dc$pBN12nT5Bt>d`cXx!4vQ(N_42P>^d;nqUW7uCP#Ww8cpId z9ED7ien1M8rkfbX=$^@%SPi2iAh@BPvE((PuoMxbiL(6;ZUCb4@Vq>Lwtxglx^!5U zlGtwDsZY(&$f9&t454({pbS;f)g*~mDTjMz-%uIE8H%WMNVIR1-Nr`DyOO2j3T#y( zhK>_k72wf^{pDdW&^qUP)Z5j4+-_Hxhj%l~_c}D*yJ5!l>zU1YXZ0%Jsmss{hCP zVH}lSLO1$&BQu@4zW>{~rP$ahe0P}?*DGrdobz8FR(zRO1~*(@((e^X&=f0_+BAy{ ziyJM=kOC$ZrO*<8`W-4*cY6FA4LM%IY7YgRws_+GML=_=PNH*N?|fda6U*$)XT~xM znYx%cDn&Yg72WtKiEq>Sq-MzWZc=~fDQ5a#`Y7~UIOd4$1lB1>m|T|xtw zYoE)&hL}EYe>6qpmad>2rY%9r2MlMHR)OilrA-Qgqe@`mmq5rG7rgq~tzRk|(sbQ5 zN#OojxaR2eejSAA5YiB+C?Makch~ehmm+W6wZbHG}=~o$n(XY9rBZ>r9 z4ULdSvqTDM$rt!A3#tLR3k;Mt86osujxI}WHrFXvaBO`wISNiTU!!t^>H87N2+%7~ zP(No@DV3zmDWxjhsyHoEl9;+m6+tCLq35`yC^%Fc!VHabB$@@^iTtY?cToz0O9{i*3{x$mzth5== zeF31scL?;~xXLLH4{Np$#Kb1EIrkMcU<=O=cTUF|`(pc`Cv*nBpXrONj1*c2S-~kF zcOXF=ZB@{_dz0!9AbS)4Mkdf!()PwEWO62cengg$R-6LF8PQ;{mn_xJ_r>f^dla$YT@_*FU$sxJ`m>zP^x@qX>)QiHRd2MrcoCP&%`g zE~=lK;5Jo6J1x)z+cC!RyUcHPq%-3C{Rb2;%5x3z)!j)itD&8!4sm z1yH$aQqTh0yV_Ko4bbD=jg!;K4T`~}vQ`mJND1qB!|Z-=ksI$W{QW6xD<`LLa<_26 zUKW{Rwh0nVp6*~T3&#QjDVnw!P1uZwbE{A>jY$!OiW5KtSd@*c3%T4{sDp1u1P}7{ zyE8<~g>3W$OzR;_b8Yo^{53~B@pr`kR$JbUIeGpeoZpl%EZ1_mbiPEd5mXgExdqjYgrrD%+}a{mYw|gQHf?iAKcfK+^DY7hFmfl{zg~#FyW$}_9kkDE5tMh z=W$%?>8+yh&b2vnE|=;-+rY%B#LfuBGc3CSz^f|BN9FVixpqw&O~hc%@ZwO&cMZ zLw!N6qkPL9mh%D1t6hB`b=>1b#9Qw#3aZmT&T+`1d3~`dF-Np76%?OTLCb*`sx%!=pl!puYOL4@M@4oD7(X`LfYSzK4t!N6LNst#i}Ml6Z`e9JApwZ?u$HL=(mQ} zrQxEst|4Tr=Vd@Q>^b*-t@_SFws{=olE{*??25j;lyTq$#gKD`WQ2mjSA%5>E>tji zpzU2L+rkkbDk(&tN{j`a1X`OO;6djUJNmvuUqs6>i?%@M_1|@zv(n#QHwm#)nB$j zGpGnL1#1F+2O+b-ndHEWhb7@n@luvhMsq-VmkQuuNbrv1L-IUec;Qa-Q&Fa+38Fr} zWKIdP@hT(~8^;?EFi!yUqLPV%Y3z^wYp7DNl@8~Aqb{7l!KxKW8taC=!&sutu9({Z z0#j~?D+=Kmp-w3$h%_21u&%yCLKHMK**T>!&#sN79req!gvNAf-*6H$f(MJAmX-o^ z);x_rvVkCpi42A@8|FRb#}0}lgnl}YiZ};tP$WIXFr8aJ>-n+1W51z&owh6xmO=~-V4vv%mnHl3 zhI9An!NHMm;F08>rW{B^s9IqJK}15(pcko}RQYi)Zw)EH`ahit7lLpv@44(cu)wKw zE5T2Mv}W!x{7t1_MwjJ6NR{WjZ-f&{rDUWWTBP7kwIcDsWu!?}Rvxn!DkMVZ*q$?1 z%z=Uf2rG1SNrR=gP2R1V$>ZfSd2eaj%X|%s@yau?{Ia(sc3~jXn-%($H4A5mT!su$ zsew43!6^H!7mcd=3*!VaOft)Vq z1p|CeF^^?jC<$XbScpU>K!6CN@1%O~@`Z2!I-46?yI`ALMR*%ktZ^s!j&#U0ME?YK zVAh^wN^zb9t^lQyhL~3$Jsg;lo+N6UK*=FMDc4C#0n&$JPlH`U&Et?GHFKV?9ALo} zLw{C2zTo=u3q}>AS*4G$hq1k;CPgiU0gpz3PK~hdpv*cn3q}g__)onjXQtV!OaM&) z1t@kJXkehwS;+a#M)nk+4q?^pxXNQ&aj{N*N~SHXXx5>?boR*$05ypwBqTWCghl2j z0EgyDE0H!L+&3$V3)?N@PMPs`O|ilGgC4=(j3=m94d<1PQ@iG?uIMlq@WTX!^n;Wx~LwO+%lxC1F&loVY-!TjO+mH{D~BY!UC*je5=XPXV2GUUJ>lrhR+^fL-1 zKo~N6%ph{e)JF_)m`r$NCA{Io9y6tOFPR8dA7^SVC+qK@aq2V@V~N@F~< zQawH-5=-mtNK0mhS_mr<=h<^szV6Vrb)Af#+F!)d-;iyP7e8gM6ZHnpia}2~lpi5P zqX0nlq=vn63c2u>O_)#4=GzdFG*)pCX2wKp>%b%ZO8ZmLf6fo8=VvmJkt)R*sY@&3 z7ZRVD31;P_)Uu7_#1^FYAv?eqX#*nu{^l@3oqRh>Z4zmM<;)O|f0;6o51Z$MiEelguN5 z1k8z-;$;>Wbp;0$des#Zv*TN8&w_PU&FE6O4&WaQjeA9cfc9;nH&=PyCchA)-K71djkH?D16t0HRLk`Qrv)p6hnoo z$ZqCcBzO%=(->lUGm3ukBr7O^-JAwYToit2=+HyRUI7(M)#A$Dd9T zNwV2}T5{{dU_1-(OeGRgJ2OyQ!**T5KEI`Dnje6-6vJvCul*VrVc;F2w_llH1R&BH z0;Os=c6M5r8OO_&?_q^O4;?HP7Ke=5 z1gfEqfR+zO4irkYh~=^BZrUW%mY3)w-Jv(W6lWBVAjyG*ejmvRs$hy1r8(YJp)U6L zf3c5)o-e}n0X&D_9*7ei=`~DqJuWUSu|1!m9`b%9{+5hbN^-#m9P-Qutm3w1JZkPD zg4@gBbgX+iwTcP`ElMiEgXkWl#r4b_9;wPg?NgE!DP z=D7KDCkIl&1vjzvv@SB_r^q|Yh4E#R*l?#v&XXtX|AjkvklgU%EAy`Ezz_Z&Nn@`z zhCAL^yPuPl_WPP&(Vn)X(2M;9joP6qF9?+jf5@IIDg|ZXP<$!$Lt-?dWh@Yd{c}Yn z0VBSLi4hRSz#BmuM&=`Syi-m$0EXre!$&gM!tGU`MGXJR|LnYG!4SmIC3d?a{c@*( zzt<43Ai3R6^yOkZq}$9@w9{XeoEkK-nVdm=JTF>0UsU}kR6v<`^rTswqtGL1SImtN zR=7xr`dtp1_0{L;s9BKABc|rA*t@YPGo{yx(f)c(;)yu4PLR`6zYfw37jlXDXd>J= zZ#tI`Zx_MXc|E>-G)O7~m2ZfQi)6}I{Z(9p26zb@V1Tm^%E=>q1UnPtmGb1uIY zY4@b~0;%rG*`-&G&VnpmTU12m9V%iETsXYhmBALNpXz4tJ1hOlDop4z1?lQSy?t%D zBDdY-RzWhu$;*oUNhkpg6Anl+h=(H01A64ofQ{jJnYJ;9{tQ;RTEO`bmp_9OKmg;v zu0OS{bYJ~15#U7hZ4WtTMfI%FEIG`FV_#4m&rX419tb2J2TtAJQLg#xsBlgh2p= zZQmwr`XRQbKBSNO7;l~J#Y4- zKW+Cuca=W$t-8H7@l4teXV4S15I3wg0O)64>YwU37$(VIXCaF>!V5qlQ9}!0f}pc2 zREi{vBR$3|eiY06p&_b3(TjhSnjR@*3OM`-CF}-~FM|tuOsV9|@n~f+Qhr_|I1YgfNQzZf=>wL(( zy%@Wrt&)6W8s+-FrV@;&%VOwBs4P-7Kcba*xzUeDZnx@-bc5E{n;9U!1 zThg)3iL9P!?US<2cyKxV%zT1mip$I|(e!d@v@+P&6a{>KJq$gJJUro-gj%K-d;<3w zb~@G_ylvfrB~nl1^qB_@He=~^AN?c?Rf>rnQt&2O;g>tsGXh_44`9J)6cY|vg21rn zpU_XuHp7^pY5(AwJLfX^3;8>ilj=3b4FYgV1JUEoDya63f~BO(dBcha0}lE0WkAM` zDGb63sGoN`!*bDf^o(S(cOZX{fjfvZK*KQ!*E7mrBUVS)c$&_51<^ALd`~Hf83VcQ zPwsqK!hdu>IZhJcoO5T+UcG<{EC$Z6l9n66NN;MJb|S&?3ed895ZY=ou6EKPDzQF) zPVB#RI`h;f{pK~1#IBE~DZTu04>x(Vi4e%bgzE?o`HMs*4LZV`>||H^_OzuhfA+cj z4ln!NMcP+9oo(-w+?)9f;7wR$ZJ!!*3?&~o_L#9|K`{4)Gs}8HAKN(w_vvAW?HA{E zl3FXzEUzT*@a+J;18h$a3oD*r(^KTh!SX?J)B0oADVKCOX&U)p;N9cqV&8GA;SHzQ z7t{UF%t~bs$2G(0FW-2E^8UE2fRw(K^4c_57!csenQNK9*eO3Uppku#O~2LW`ro&r#?9AtXCa$N0-Xi^DEaOn)z!@lH2 zd{AeN-l?^8nzXs+oG+?ElHY8hY)$rf{*M#W?m6|edrUlQf{j2)e!(a1joZ6vjG64h zTD)u&#?TV6 zfU$*u3%`Nx0C+yZVUD*?UNoCqi4wtP2t@=`ZS%C<1Y_VF%$y^_F}?tZnCoyD5EYo!#^7j_X>$o}CNU55se*AD#16l`Wac@}yg@4M&lUcx1Fb zeo|bxR){oyfv#6zz#@Sqns!RK^+2Flw?#s=77Vz|?cmdt^excRvO3)HTyq0Ojygrx40uU^?G`Kt42f5?D}Ne> zBQ63(7)FxhwlCwXH0g{H$${6PsXXau&$vng^s3p9rO4vStqFA@I7eB__^}Dvt$q;9 z)yk9o3L~}=hO=Ex8t75drjrCqnn@XN(rie)qAO=zU7cmx3;V^RRq1k+H9_B_wgf+= z2OLRHbj~^^9PMCpqCP0H;#&1q#N5uS7&P@NrA4L1>fhdHsc$$-n;5kFxu=1rp{J+r zKEeaPjY`6^ry+0GDTP+N0sW|t%}VaS+1g5}Ruq>;s?v@bI2e|g=e>X!VeTBlvfM^q zt@de2(V6}h)VdpEuDf)b<%_3(tsO>_jbrXML?B)}LX*QCfg9o@3WbGWnr>~PI+8@# zze$2`4&TvtSA8hhP%%>F;AF_bcN2zcqI6)Sp-ee301qUqC%iD^jaxH7H+{qn>|q21 z0O;ew9cG>y0u0n(c32n`Fa}h}c@Xxid|wD}UD!EWa@OhTBcv;3 zU3VM3%Wb%D)`Y1+0{gn)e&m@FhpNgyp%yx<-(D91mLe*PHS1b^i5LD-$Ti2VMq0tV zhh31R_hW`R!YD7`EegRhQ{O=>e%I<9a^^NvVl!G`Gydb#PAq-{wY#dAqkF0gr|YL_ zYN*j*dx{$VY*0mbD-ojx#>5%ri5%I*^)jNfh6lAb(s)*9;ueQ>i?&yR2p});T@dgW z!)Z&rf4g-XQ5t%7Ld?xMd<4 z&7+>+Tdl9ayr~m!injG6izqA~iJlart^UFvt(cx{0)H5X1`n`>?1x1j4E-;Tfwa z&29DXR=;XegZokfjEa?ZzLm;?!FGFak-pOuSYIx4hY(P^UPGMTem2UR`?smPrgaF(5-#P#4Vbl+n-Q+=8Lnl z$SMtO*G2;(AKre|kuQuwLI=2-p6iRx`+`VG;;lqnCn_D^j)n>fzg+|0I*UE+XJ(dx z1i`0v5{w9yA8;xAt^$_uv>C@up^BGS-Svgr<)XbOd*06;Ffd}V?c6GJ>(n6!I+yJU zTQ~Fd_54TY>wgnAf+5J5!7uN(M;UyZf7CnJ3@6J)iQBgOh3gqaQs+=rTu+b`P-)Ue zYeO>3aamH5d?V56?Gi`vDxxvD;Uz1yN6x3 z4d1IX7p3A&T76e=mrW*;b9;nB7W7KEK(}#a%PJjZ9D-@ghPB=F?UNIO59Xe}! zB{cQ&jQ3iQG&;{EY+E?-Fs zMKHZYz&PB9^8^AjR{iOvG9U=z?u7b3CQDCTyI<)Y0owSQ^E*ya2 z(%X++G~H2fAE0Y%@${YINI;sp_{hA=C$0m@4v6w6n43ka6HU~u1h*6^Vx1xz$u zw7jb)Zr6ge5z0u?pt&cet{tfc=DYKW6Z3bh`wRu}%{tMn;`pq5%2^ST{ z^lxk9+4@F9TkiIZ&rPXEP>lEOzJF?15dI3q_ z>k~X8if&<)bw;SeE<4A$Q%$=|4F*$D9^bSpr)S8!fip<7t>x<*7+p8R6EjrJr79MR z)Qg)D?Idi*2+CBqDDS5qc-`>3+uO>%dtqzdXOKg0+Fru&HTZ0ydFhR%9yty|#)Gx3 z7L!%L`$NC9TQ5og=`2_$eF5QXEO!)e=RG#9ijU>b(LvhZH1M;VkLe=fQW3u}fUb&3%FEC3NnPWBcUi6@h{}&3b zPMjET-E;h|tK*t6^45xqkw;8t;1PM(qDR?0hZd@uKk|FYg99aBf*5t*Hw=PUy5X_k zx6rS0%v>)t#BKZ%?730;u2v}SDFx?zUm7BM8+wM{!b{pr*cVOiSiJ99W0x~V0xSkN zN-^AH`~IKbkdB@7NMJ8__jIO#WAQ!&xkiWuaKwTP>flpZeqv?NH#~d$y}Dl6g6mxl zFnz8~d~!`R*2m7pFCpp%R4KEm?haX2dR5V>c!t7|*j|P{T?HU8+Xnc_-k6S7j};fk zfF3(WW+~VxPu-SJ5%(N@ZYY7yh^cA|v0ILTei?Sz5r9*-i@i1eZj&l0Jv4*ERn*Gq z_X5hTI@05BEd42m;l=S*d)~T-oYYk;kFR!4YM_7U^~xwEq{RTc>N^}uNgC!|ox;{w z>8x8+4+ZjMNPAUv4`onEF5~g<6&Fl=NrW#F0Q@Dv$lA1rQ4dSrm((|FNLwbhZaX#g z!x$sxasEaqpxyE0hd)V?(^Chp7@4tA{6+n<^T7?87H8cG_Gw>4_pQH;!FIB}G{O|G zuCGWF@3*6n%WCL$i zRq|2*mBTxJcaUz4$H^P03ur53ngAfKiH4K~Gr;L_vYYzmt?S`~VxWG6XjZq-PpNW+ z9(H64>DTj~vmrDWlQmOv{4YYi$4E2juc`CZdT5z#1q2&}dFs=kJ^Kc?2De7HCO38> z9A^KhZ-loMQj-uu#xw$A#^H}#1E22Mz@ztKAT$7?zs@6w7wk`>1|}1X^f3m3Bm2rK z0c(Y+TpnHa8-01boD9E?TiL7aLL9<6ob%$Z8ac?mR_`o9y5Ol`ye^KsWXmXVh3jbS zcE+UIWQZl+>|gV zLMA2-EG~^MO)kwYEd)MJzd2*3He-~B5B)*{mo#_7#+_NNOWWO%g;20ro-Ut>b`PxX zlHCVLu^EW}r2vexQ}m5rKZ|%nx4#uSru{N+f9t4hD%f>AEk{+9SC!SLaysSxOZ1x_ zj@fA~=A|MfV_e8dC#LvpKhRhYWp3<6j5SV7fp(MUF}J4~^68wB%50`5?CM=Ir`vbG zJ*Y0Sm}}-(ZerD#RfFq4}?^cavS9`#I5ljLH~NrWVKtqsV_Kwm5+)FsQeq+c|A+$ zgLW65)<;eV!VmNAGog*f`$I+cdgkcvQ5bu3rMh}M?{9}9g z_g0AA7`4q_^}`$Pq!3Xh&bg&w#&0kowfX$7Zw-+qvp14AQ*!Xc<59lYwh~0rq9TLz(iF2SGziyUC~XwA SNxgs4ATkn);&q}%LH`e8$k9yz literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/dynamicscene/images/moon.png b/examples/declarative/qtquick1/toys/dynamicscene/images/moon.png new file mode 100644 index 0000000000000000000000000000000000000000..1c0d6066a84bfd6c1ebb1ddd67cf29ef2493783e GIT binary patch literal 1757 zcmV<31|s>1P)N3!|q}& zyY24G|KEiF(yk=mZVHc z?UGs~wMPE7NNP1kEs~B(YMwcBMt8z1b%2JFuCA`jkhDTlsib1b6i6URk_rD27-J+U zGG8&L!%c*w(~@>d+Aisf>C-Rm96?_ohICa`b(*A7V^k*T8cE~-k}$F$J#hXxNtKd5 zlJr?&;k1(@D!psho;*qGB;6q?eb7d_k{&qSE2-KTZM^v6f;y+tJ9k!2lXSPF+ayhh zvymeqtw=i*uKZ*9`BQ&%A#H%Az)e7kixqfeB@k+9X??o2^;ov;a8p`(?Ka>>;4PrX z_6mG39(VvaaO~KL`;Q+#G0s---#W6&%C9b!RH1N3Hk!Nlp!r4;-%GkPFE96qRp}_Z zch{5|qh}BX9s-W~Sl$Kcz_znz|Hv7tk!R^EuUyauJP7o9&2YpF;N7mSuDBhWpGs3w zQXB$a@RQ+)6@-6S#l)9%gy(_%7IJL!L|50jF|pq8ExmAIaWC+s-y8?b0@lQO!$zf9 zu%M^`_}oU8WghA7?!MsUh!yDw&l0>&tq{0(@Jwsc#l`cQf%k3YS)`(;rzd^j44ah( z*bJProavV-guhzPV^wDSNT40Cmo^5alRLv zOaJCL-wV#A+Z^Y6;eTlt{4X64@?1-|JI?pQ@2;g&9p`)DsB7sVuPKcZ&ZV;)=X>E- z*V5KU`&r;WS?Lzn(z%ZFz2Lmka~$V;!TD#p*l~WcbOT46NgqCZWHONND&HejlDrKw zOpy5wv%T^mxIHl#v|SrUKzfP8Y%eq!V}1fh(oId@P6n2_$o9cU(Fs?TE(c-`av4QF zj83?czS&W(SB?So(HGXG4;}hu8c@BZru)@c46ggeuONLsqSzM%+siSXU6LEtd3 zHa$J9Z`hU*l9CRE8VZ3ofQd5S$;->_vJrTJbX8ULEs`E) z^sg;<6FxNDIAuzn)j@dYrFZSxlP~EBNy{1i>V6Dtm^$^MW*6ZDD=lCj;frpwT&!#u zdVp$RQ$ay~t;-d~d!o%OV^l7wTvB1YM{ihoY0@gnv z7Elb4e`3Uhhng54D_BiPG=V3hiC{=f2r4`RMuLO~DFR{|O)!{>MuKgH7Menj_N2YL zy}jL?86TiXxxJI>?`bo?`F%1wJ2N|^l)}Ho=BLB8jn&$#oMS0~Iz}i>rqmA~9!;(B z>#r5VHZ_Nvo91eVmdw?v(zXO#fHOejY~=c|c%x7q6&mUGb+FQ0G2>>)sD2ecN*A?%jkB_BWih;gpO{K1vm9W=C z20=)G2#Cjc`llYZ{&1&tq8K(Fd2`y*XgpsUWz|XnW{6>`$c754t^*;>gJJO7; ztZ;x}ISS=dI2fbkx!-aJ9~PW2QX-=E4d&*CYJKaqVPQ{=Fe9B+USC4ApYL`?CXEsi z?bvMYSvucnqx+IVLQiLvH5m}N`}*70o3Aaa4YifdYQnVH%kL#Q1I?Vqn*S3zr<}jd zXS{%fT8Qw}stFwojn?ek68nOPe3zeJ&{GSI`P-cl8 z`}z59XV(++jE(UaTd8xziJ)a2b>Z@WcjU8<%=h=u)|KH^>y`yiO>fwWc;y`Qbnb8hDN-8w)P$oF@E-|4`PhakW4FWFe!&m zU(B6bGEc7y>QwXu^NW%&s|x7!oz`4y9D1_WcyThfeYRI`@k)Z!n64Oz(U=s)g*Sb{@9kW!H9qF`&-aRg718#`pKV=knlUXs z)CDOVm}QMnN)fZ9yPye1qyk2y5=L|uGQ+?7qP;i0{k=C_ zH}C7exyC%OqTXl?2YhxGaYW*E$c|isloRh0{kKG4+y2oSrIg4Usg&wiUqVD1k?zD{_=#%Bu3?l@te!vnReV?>7lre00000NkvXX Hu0mjfFpfap literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..7bff9b92cac597223a3e8633e2803def4a6aceee GIT binary patch literal 1759 zcmV<51|a!~P)Zb6hg@BjIp;=RsD0YF4(`(xL7Qn2#3NyFbw09Yx_PF7=WegI!x2- z;GF-`jF>Oh8Wc6HLC$%a6596v0v8!$=FJXI1})RFQVoqqeP0sNS?hmYsCC`YQuU2zEYrGb7{*~mQ7ix;gdp9Lp7`RI zzA(CP-_sO;J2f>`v5Q0^;0k{(9*ge@2173@iqh!!5y1Peii5#Wdn6n=tLu6XA*9ky z2*H-j=82Qv`F2KCRrX}hleqA!3uBX$lO0V>O;A-8AONK_WSZ76qimHz3Ah_74j6Tx z(NyjCilX#X4$*5`;)ErHu&=#y4YqA#d1?7SPATPUIE)ao zD!LQ^R8{L!6y*Y?v|%k201h90{{4779`ig8wr#_49PHY)t3I2}-n4BSBX5sj=GM$w zQ2>C)9)I*^zzC!s-1*?yYB;5ohAE}55kkybhFy<8_LrWXo({)xP%4#R+cs?5hU>cM z>go#n6BI(!1m~CY?)Scb`c5)Y|G7sVe&p3E#pD-YZEYoM?TW=B5{V>cZcRdp^7i#y!AqqQLZJ}f)ZDbx(2&|o0XbX? ztm&En;NQQM2~^i?HfvNLG=3x$svv5m;JRg7#+XAXg%ARnOlG+*P}fJLl&=GFU3T8h z-(|j|YNx(hAq0AQdICE?y0g~2K`E`+ws*A8FvcLIME~dex2IduZBz&`Erh(d)^Kia zE>OLm)sFnIbIx(_;6b5jT1_|rgu~(6Lqjjb{C`zd*{64XDnRdr@D(XntIpldCGz>a zLn#GgtWy2M!f_n9u8Z#OZn|&(K49Hy1Ic7^`bR(hp^{7{&+~p( z-RXIrF*Y{#Hy_M72j?7=QdDoTy1F{--MbgPy}hfTsiubMSI)d_`q1f-5&UCf0);}s zo}Zt8xpHnSeU zY6|&$9?@tNqobqG4GawYeEsUzc=~+v_@S?vbq4i>jFk#DEx0Qv7M$Wsr(e2r(|*^moGir zoQ#~(bv@)b9+gr!QaDR*T>f4Eg#&1J>;Bn(m#0}>+tzhKNaRv)bo>$a@~7Ni*txp8b$W75xsJQ)&K2Nfd>P4e_{{OW z(~I@y#8eivb^SXekx4GghgWPVlaP+9 zNOe3isi&#jPHSy0`-1#=FN)3@_pe!NQI(jQonrCMFf2u6*?}!tHM6v??l8Obck?;Z rp!JTQUY&A`>woHd{mlRRh4lbP0l+XkKyuFM8 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/dynamicscene/images/sun.png b/examples/declarative/qtquick1/toys/dynamicscene/images/sun.png new file mode 100644 index 0000000000000000000000000000000000000000..7713ca5ce7d1223430594e4d79632a70257dce05 GIT binary patch literal 8153 zcmV;~A12_5P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iOM@ z5+^2qR+x?e03TUNL_t(|+U%LxlO@M>-oKMeRo%LK-+Q~KyJtmX8w?hL08COc1&gAM zut6)R2+EG|1H%uF@S7g&(6i}3!45z9$uD+eiCWarIqh0fr!GQVN8^r~8YOT{Tfz`J2phPG;f%+o!~S@AoG9i1DAD6!&;--lRg z-5&@aKy*3?s#Wmc3LrS&(|r9DvcCY!eh~5ZI)s_=9{^sU+E{^FUIzGImwKZum}mF@ z^tVLeWe7k5pJE`)5X_&n$4-EBMXmfc;57xH2NdR3e?}77YQ;k%1Msyc3HG$cYoDFI z=SrcaR&`|XM4w_HSTEIw=0660E|{?jvE2z70E|?q1`+1g=qhG}2%ymfP?ZF(Y2+dJ zphcDkHBv>u0rGqQL%#7T1F{Ma35|0I@L!%2<<$R(@xLkcKLF2;nZ`AI^ARaT0Mv`x zodBB#AQu%mBp8HYGX%l_XW#M3TTg0V9aSyC$qW`Vk&e2Q}P;#H+D}^DSaq#}SZA5b#+YWCQ%9 zqpHvgRNJg*%?Z`PnA5Yz;FGwM2Z-I#eIxlc?Q>BT@Zg`KYX1eqb2|kLJ_mAPP1qgGg8z0Rk^x~V&3Gaf( zyIov3?FnYc-CMEObZT+?bW;l#z*p-fB*9LsvBx5*ahpYYoGD*|cdJBn9MT?#N_s%r zlestsVasc27nHQvs5Jz`MYXRpH?|rflsC`T1h|3pM;ZSo5Ch*0Q%fB2f@b1(ekwrL*WCsUn!6Yfc>_IIMiTP z%*gP)Re|cs3VuhW$oF=9(K;s%Pp-T8Y9{MD8vW`+KCcQXOw5{`(1%q(o(7G(B+z7- z1nj$|1c*Z~5E0ZWyx(OuB|PqvcXeprBg-2=-V~CREKby%bv+SZyNMbU-dOY)pQ@sf zX8zjpqF0ENb~|ZyQR$U>ti&*-Gw{DMApF|XgnpCF`RkO8Pow_a<)|oU%~D zK3zq8D*?oasqq;xSlQ&(&4O#&ZIQ%ZV4dv|%a~PCVH=+<@+>rCaUxH0@4Rali9gF; zgi;r*D>9JEMPX$ubu9K(AQB>1Ctqwac$Iu;*hUY@VCxN5gTUu8%ludsVP0U|jRc`5 zIKO~O8tZ1#5|r)Z)n^R9n-G!@2!Ay8^o?H($UK$avE8m1x9e*65{iY`dR+Xhq}3}8 z(b~?EerD@vw2`)2qOzUAbV8)@-vu=`sNN?oBI@La&V6!~y}ZFu97h1?kgEihWI_;p*cMl^Q@EfCGr{>Utllw$KfZI_y zLIR5_3L=1i{FMM+oB-Kf(7^N2%Ixet1X~m+0?pQTNGF;^(e^fccCepx_pXi~48#*l zjdNck)m{XsC}k!h;bu_yL!Aq7De|iH8t?&Ze+Pq$f9M^*cXMIQe5cmX>*SgNd%Z

    b<3iL|%8C*7t4{PmZnxpJ}Z9PFOkp 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 literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/toys/dynamicscene/qml/Button.qml b/examples/declarative/qtquick1/toys/dynamicscene/qml/Button.qml new file mode 100644 index 0000000..8cb9b58 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/qml/Button.qml @@ -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 index 0000000..26db159 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/qml/GenericSceneItem.qml @@ -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 index 0000000..df94cc8 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/qml/PaletteItem.qml @@ -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 index 0000000..9c905d8 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/qml/PerspectiveItem.qml @@ -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 index 0000000..3ae4305 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/qml/Sun.qml @@ -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 index 0000000..b96f3a5 --- /dev/null +++ b/examples/declarative/qtquick1/toys/dynamicscene/qml/itemCreation.js @@ -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 index 0000000..afc89f4 --- /dev/null +++ b/examples/declarative/qtquick1/toys/tic-tac-toe/content/Button.qml @@ -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 index 0000000..dd4de5e --- /dev/null +++ b/examples/declarative/qtquick1/toys/tic-tac-toe/content/TicTac.qml @@ -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 index 0000000000000000000000000000000000000000..7e5b7ba27c23a2e61575ccfaeeb768f8df2a57cb GIT binary patch literal 12258 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 WTji6~{0wf}qm<-Tuajg=AO0`)&u+5- literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..abc7ee020b7e4fddbb3d79f2b3e999a3b2b319fe GIT binary patch literal 1470 zcmV;v1ws0WP)Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RU3m5@37FDE$w*UYD8FWQhbVF}# zZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b1uIEJK~#9!?VDX_990y@e^Yf!lT;@t zF~(}PkoHMqksvA!ine_yY5Pz=zz19K!B40!im0Fuf-izrup*+U5fyDKVznsxpkkGh zU}@1}<44+Puxes7X+D}Z*N6EB*QME+Gdr_8A$wq8Np|nO=YP*V_kTXdbI!4lWf2Qp zY5>##r~yy|U_r~-X;0vJo)6@K4xk-4AGiRR)aSo|rNGa?2=FOz1n76polJdwN%MdL zg|C&;R{$+ivfeP%OTb&sxliT=08;#NU<=R*ECcEi7XVoNdP?0s|T(F?gnlE zmH=MD>--wn4h#cV0T%r7pfvw^wWl`ZS z;N}DtHL1IN7#IM~1^xzB02c}9B&89!5BMI~8=D6J-7(GZw3IynybRm}tSUB3?bccm zo)alJ#V>)@SUy0WKhDJcz>B~&QSN1d&;dLR94_)VziJnM5UAF*jEhp|isucb!k*`C z26h_EZUT5;4yeyLcOqsmwF+p}pN|TJ9B?bJNyo<`$AHbwxt_>JKnvM#MElt&*H0M~ zyb*Xb1{awYf%79D0pNPzHzNy6P5B}a9tTbuK^O!&Edab~oS-{x<%@jN+af&{g7jLU z6@)pZUc=yj0$r5?Kx^!fvyE*9rHD`-xYFQc1{JPWQVs&o$ni#%CSc1fIVuIfO5GjmGtST!|#+89+D+JR#l?RhB7dSrPyX??3FE>#HK~ z{|flXU zpA9Ib7Mc<2lrOL(9F76EVJuUZQKEkcd%5nes3|dDDI`k?e72UqLm8V~iU4dRDA8M# zp8(ca>H?j_D^{GAnZ2UiLVd!@uNL>Wu4@-?p#=b6dHy&BiP=Qts4_;IPzfx7gy^mq zYdQryP`DXUCtNQjl4@Z17I>YY3e=_aTQ1_6Uk`j9bM8IBa#Llfz|%fV&>xU=Z{e`+ zu_7J=q&|mgiYOl^NaH#=M17Ly6 YzXcUc)Y}lW;Q#;t07*qoM6N<$g7v0;f&c&j literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..ddc65c83b8e35f408e050a2729987b2f768ec613 GIT binary patch literal 1331 zcmV-31Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RU3m5@3D-F!arT_o{8FWQhbVF}# zZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b1fWSoK~#9!?VDd{)>RnCKSyMQR=g=p zS(yf1h>*Re7iztiixx-|if&hkfmcR`2!hTV2VQs)5Mu4-x@8$fe=>j2H zv=#UOSYZG#3=9Il0EdAgt@U^f1zrWb2{ZvY;JLEtw}Bqud!Xxo5VY16Nfv4Y`T<>m z9sx&yW}uYX(jNPdpiU zAl{|XSYH8)L{&lwJSHJUqQN0cWZS z{ESSFez^er>IuRquou_>^aVKaZs99Y?BNrfybOGoFb+p#0aogk@Zih-#UIMlQ*HQw&N#COZV1V$U`1*;6!ncP? zvVsC2AT&r-=3sz$p`41o`W_ts1BgcP^J9U89|5+77Cu@!thK%goB-|ySndY!1@Lu@ z;_K|t3rhaJUao6nARb?hR#}Zuw%Q_BHl+R!hj4kZy+A3AEk;aZ-z$~!XA}UD)7TO{ z0sfH0NzE7ljFV3*3hV^EUMUOmKs*0UrYkYVZ`;t(0o1+3T=UN&zjv z+m1_Il8W(w2mc*PsX|TMpp>u%JoNY-qZ;(5N9cUZ$2<7w{yr&fB`uMk1eP0X%@P3y z@T&{7xPXwh%j-0SpW+>0*aL(f7Z;hP%d48k%G%pJJxV9AC<*|^DY-mYT(JpbWsg>w z?*hOhF|4^502HJQ6KnDC}81%7q};SSIm6aYDyP6wl>fpfr82V1ie_{$Ll>pg9m zX?DE&BS}u90tkP{ymhu!-=hxig2fP398tX<$Lui|0)Vx^Wd{a=)$f3}fT4u@-zzJ`MhvmdXfS#j zQ)`vI5%T2AZb4DP?+a=73inD&>~v!c=#rMySYrq{B+qcujq5_*01N`>E#{p8_Q&iS z*8f?=W56kk>HSs*XZhN*2Kcdx#XX)@tE^Fls+K+Wm$$-HB4zW{m{O`if|7TEb@F>j zJ${mAiQcrDrOO()^U^SlJkFk$Zq+WE+o)_mn-dUT0OrY0q~GT*@SujB;!^=&-NLW3 p?*{99WB_CUWB_CUWB}CjcnXD=7dL0_XAS@W002ovPDHLkV1nXIO78#w literal 0 HcmV?d00001 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 index 0000000..5a166b7 --- /dev/null +++ b/examples/declarative/qtquick1/toys/tic-tac-toe/content/tic-tac-toe.js @@ -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 index 0000000..87e3e2e --- /dev/null +++ b/examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/toys/tic-tac-toe/tic-tac-toe.qmlproject @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/toys/toys.qmlproject @@ -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 index 0000000..2e4d81d --- /dev/null +++ b/examples/declarative/qtquick1/toys/tvtennis/tvtennis.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/toys/tvtennis/tvtennis.qmlproject @@ -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 index 0000000..f42ec1e --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/app.qml @@ -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 index 0000000..77cc4cd --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/chapter1-basics.pro @@ -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 index 0000000..f0cf371 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/main.cpp @@ -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 +#include + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + qmlRegisterType("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 index 0000000..bfc1645 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.cpp @@ -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 + +//![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 index 0000000..06b49ba --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter1-basics/piechart.h @@ -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 +#include + +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 index 0000000..e2f34c7 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/app.qml @@ -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 index 0000000..77cc4cd --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/chapter2-methods.pro @@ -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 index 0000000..f0cf371 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/main.cpp @@ -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 +#include + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + qmlRegisterType("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 index 0000000..78970e5 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.cpp @@ -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 +#include + +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 index 0000000..5aebecc --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter2-methods/piechart.h @@ -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 +#include + +//![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 index 0000000..b4ad5ef --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/app.qml @@ -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 index 0000000..77cc4cd --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/chapter3-bindings.pro @@ -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 index 0000000..f0cf371 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/main.cpp @@ -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 +#include + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + qmlRegisterType("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 index 0000000..375025e --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.cpp @@ -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 +#include + +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 index 0000000..4fd41d4 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter3-bindings/piechart.h @@ -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 +#include + +//![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 index 0000000..8fee245 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/app.qml @@ -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 index 0000000..f5dc31a --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro @@ -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 index 0000000..9fb548c --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/main.cpp @@ -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 +#include + +//![0] +int main(int argc, char *argv[]) +{ +//![0] + QApplication app(argc, argv); + + qmlRegisterType("Charts", 1, 0, "PieChart"); + +//![1] + qmlRegisterType("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 index 0000000..b1f4278 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.cpp @@ -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 index 0000000..ec9e61c --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/piechart.h @@ -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 + +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 index 0000000..f36c8ce --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.cpp @@ -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 + +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 index 0000000..3e7fcba --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter4-customPropertyTypes/pieslice.h @@ -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 +#include + +//![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 index 0000000..cb46ebf --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/app.qml @@ -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 index 0000000..f5dc31a --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/chapter5-listproperties.pro @@ -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 index 0000000..2832e85 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/main.cpp @@ -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 +#include + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + qmlRegisterType("Charts", 1, 0, "PieChart"); + qmlRegisterType("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 index 0000000..1719c0f --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.cpp @@ -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 PieChart::slices() +{ + return QDeclarativeListProperty(this, 0, &PieChart::append_slice); +} + +void PieChart::append_slice(QDeclarativeListProperty *list, PieSlice *slice) +{ + PieChart *chart = qobject_cast(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 index 0000000..aba695c --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/piechart.h @@ -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 + +class PieSlice; + +//![0] +class PieChart : public QDeclarativeItem +{ + Q_OBJECT + Q_PROPERTY(QDeclarativeListProperty 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 slices(); + +private: + static void append_slice(QDeclarativeListProperty *list, PieSlice *slice); + + QString m_name; + QList 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 index 0000000..16f4bae --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.cpp @@ -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 + +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 index 0000000..40e4f8a --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter5-listproperties/pieslice.h @@ -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 +#include + +//![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 index 0000000..fded8f3 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/app.qml @@ -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 index 0000000..3533096 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chapter6-plugins.pro @@ -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 index 0000000..08ffbe4 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.cpp @@ -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(uri, 1, 0, "PieChart"); + qmlRegisterType(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 index 0000000..8cb6ded --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/chartsplugin.h @@ -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 + +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 index 0000000..c1ea448 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.cpp @@ -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 PieChart::slices() +{ + return QDeclarativeListProperty(this, 0, &PieChart::append_slice); +} + +void PieChart::append_slice(QDeclarativeListProperty *list, PieSlice *slice) +{ + PieChart *chart = qobject_cast(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 index 0000000..2f86d22 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/piechart.h @@ -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 + +class PieSlice; + +class PieChart : public QDeclarativeItem +{ + Q_OBJECT + Q_PROPERTY(QDeclarativeListProperty 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 slices(); + +private: + static void append_slice(QDeclarativeListProperty *list, PieSlice *slice); + + QString m_name; + QList 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 index 0000000..16f4bae --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.cpp @@ -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 + +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 index 0000000..f1f1e89 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/pieslice.h @@ -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 +#include + +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 index 0000000..a83bf85 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/chapter6-plugins/qmldir @@ -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 index 0000000..a665975 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/extending/extending.pro @@ -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 index 0000000..39f8591 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/helloworld/Cell.qml @@ -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 index 0000000..de70995 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/helloworld/tutorial1.qml @@ -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 index 0000000..88f347a --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/helloworld/tutorial2.qml @@ -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 index 0000000..282af9c --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/helloworld/tutorial3.qml @@ -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 index 0000000..645e2f0 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame1/Block.qml @@ -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 index 0000000..a9aa938 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame1/Button.qml @@ -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 index 0000000..d82a33c --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame1/samegame1.qmlproject @@ -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 index 0000000..9da8267 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame2/Block.qml @@ -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 index 0000000..aef0a1e --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame2/Button.qml @@ -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 index 0000000..c749dc1 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.js @@ -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 index 0000000..24391e5 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame2/samegame2.qmlproject @@ -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 index 0000000..86c2f70 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame3/Block.qml @@ -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 index 0000000..aef0a1e --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame3/Button.qml @@ -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 index 0000000..0af4e2c --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame3/Dialog.qml @@ -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 index 0000000..01edc5b --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.js @@ -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 index 0000000..068fa8b --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame3/samegame3.qmlproject @@ -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 index 0000000..08ee0ef --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/BoomBlock.qml @@ -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 index 0000000..aef0a1e --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Button.qml @@ -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 index 0000000..6276fcf --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/Dialog.qml @@ -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 index 0000000..59ac446 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/content/samegame.js @@ -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 index 0000000..eaa00fa --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/README @@ -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 index 0000000..c3fd90d --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_data.xml @@ -0,0 +1,2 @@ +1000000Alan the Tester0x00 +6213Alan12x1751 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 index 0000000..670354c --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/score_style.xsl @@ -0,0 +1,28 @@ + + + + + SameGame High Scores + +

    SameGame High Scores

    + + + + + + + + + + + + + + + + +
    NameScoreGrid SizeTime, s
    + + + + 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 index 0000000..f2ccb8e --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/highscores/scores.php @@ -0,0 +1,31 @@ +"; + echo "SameGame High Scores"; + 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, "". $score . "" + . $name . "" . $grid . "" + . $time . "\n"); + echo "Your score has been recorded. Thanks for playing!"; + if($ret == False) + echo "
    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, '' . "\n" + . '' . "\n" + . "\n" . file_get_contents("score_data.xml") . "\n"); + if($ret == False) + echo "There was an internal error. Sorry."; + else + echo ''; + } + echo ""; +?> diff --git a/examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame.qml b/examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame.qml new file mode 100644 index 0000000..157cd13 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/tutorials/samegame/samegame4/samegame4.qmlproject @@ -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 index 0000000000000000000000000000000000000000..903d395c8d04c9c1f3ceec8e38aadaccf073ff01 GIT binary patch literal 36473 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 S~YJ6cAChryNrla?vKGSWGwlkT#oISh*m6) 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 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..cd068547198be068e337176857026a1f29e7202b GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPggab^#V~1tp6FFQCvwPZ!4!i_>>6 zDe@f(5Ma5$-lVWVe1(364BO$vTLp5L;#iJ*DopiVaV*qihCT;lonzV4H|O4+Ns%lM z^__VvZP~R&3OOyosb zjPAsJJGb#bZ2+6U*f&P2$Dj1t6&0^#)N=_kJ(Q{`|8EzR^ye!>B##b9*@MOLK*uq7 My85}Sb4q9e09G(v)c^nh literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..b568a1900c3c656039afe3e6271a469b4b2f7603 GIT binary patch literal 2932 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 #?4kbOf9x1)YLbkap0(F02g!D* zNh8ESh>>OnrU^{jZ#ii}H7&R+u#|v*Mk6a$xTk1Bh%(oE@`oW+|iT*c{{0V7nB@H8qA=~0&Zj%(lA#??VLfuOL{M99CdTwbIWc=!NS5O%Bs~g zc{T%-1lVoE&~24D}GV>B>dkWrFyo>twqwp7{Z7;euz z;(cZ|C|8=8v^VyC$Q|WGa5hWs+2t_nfyV3}YT7C$1|&3yugQFkgk~2GXxiJ(nPZd- z2F9}u#N{&QVwBgbkdjt3wSrlgX9Z(zhGbpHI^a6sW`Oti!33CkA;uyiSfCS|oinpcB3}^$e@Pax`G)06Ty)7UOcrx{&u;$eD_ZfIjWV*6p|) zql)v9Jca}(sfeON8KLlmT=)k&?`G!rIxF1pk*^LtpK4r6B|EEX0b^YP%3Hu4$ZR(c z(boRY)NA)>Rfqu-J(-4`PJyP-jy#ls^SN+&-eI|X-fpFq@X}_@r^XI^dlqtl6_fIA z2G?DJPCu!cyr~F>W5bpDX1G`{Y4d1RK ze|e|j(`yF2ZO;eBrsZVa1lH*%$eD^eAT6M;!By#*>_Uq#kx(Hq5`ZGYMgwK!wH3!J ziw4@g`tJP?_GfUo!{@Rke)$p0p~C{vkN|cR>_Vrv3!1lKmbM;ehSl2Ls`d>uvwSs# zkZji-4>xNj*T;Nz8qfzU|M!M_o|!hDI%t3MSQh^N2-rip&=ZR_HcjC2q*~sEP78dW zr z?x+haHRbf+JEh*bx^(oihYv5^au(O{-GUR^S_`D=4SvbV5^%nNBB+CS$gS zTfDuw$ye@_7ykH`{lcYf|F59E7Ra~W;Q`3^QZR2J`=Kfaw}+GFjo80>iQZ^Z`~A7E z_hqENWqee8@c5>osisuZg0dJh9uK*mTXu8yx>YFFSp@?@pdw?j1Tl=yz9pJ(D{p zs*$R$_3mU6u5FK}=eH)eE)L5p?-cbVt?KJ&*aS9#EnpiM0b`(Sf&DzByoZ7_pV|lZ zwfAxhx+>NkRp*WwV~*v*p-f}|nyD&LwW@=Tnh-aL@dg@hpn4m)+ky>Ss4-BqaMhfO zx)P~5SOHcMIoLkS+c7Fs$1Tj=Ik1^p(-vx`+PrcP4e?^DnOAdm z&ja`7l-<{YXYKEs7Gk`IQhVjyV(vW@a53DnpsJnAQ#a?tX1;b-bfE>P<`in?R0<1f z>0T}7y#N>A%O2on4{%}OOf&})_W*f7vBm5E0IhF_Ml((E_5c6?07*qoM6N<$g6)ir A8~^|S literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..defbde53ca489900adbd2eb6b6c83a97cab11e80 GIT binary patch literal 262 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
    5>3iwi@r29@E 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 ST^L&c0000 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..3860a7b59092048eeb1e0ffe3b2ee87af95f5177 GIT binary patch literal 3564 zcmVKXt503CEi zSad^gZEa<4bO1wgWnpw>WFU8GbZ8({Xk{QrNlj4iWF>9@01Z${L_t(|+U=cdkQ`MN z$A8^3v$LDci`_gRAt8|UL5ULG5_zbA6ezI(!AAu26IEzQS!Jn|RidN-tNZ{eUzD;0 zRD4k&Dp*uN9tw&;1eI43LwF=4%kE|$A+xhHw;%WVp>Gepot}M6b~n>K_g{5udL}cw zv)#X(bMCq4p0<=y7$wREjsiM>BG49jj2`T;5lADZ)TN&?Z8XG zZa^8Jn!}B~7dRPMmEymn3~bYI?MVY%Spq5tyhB6u&RL9qnnhz8t`~tf3{Z2Yl|V0W zlD15(pc3#5uvO0_4N$Y7RlrAqceU^gRcNT50>%wcjcKh0X}!sK)Z_yH0-n^a(Ev3K zouENF&hS%L9`JAA3E-dsDp|{bje5#&G(GvibHLx2=j3TK169x#=`=lqGn%=oz+Zs> zv^r4l20lUaCn3|K*MR$&hb(-v0d*8`K0!XoX!Zm5NA#>vwE|G@*Dw{#wVzY%1?~lg zvI-zM$hKqvq8!z?MdX_4xv7nTE+ED$}7? zfxBs-G-f`4Iu^K$)~Qv>iiUt+GQ;YHxdy5S_?(%^rB;K$&u3z(=CVw7EwIVJlxnR2 zE}zLYwCC`PT#DKEmjxZG4TF88fLfvh@OE=8GNbjtC4e>GKy_%C7MW|1IlYHq&2`>@ z%4;`g*5$IRUf`Vh0_xMi8gtGwuMY#K&NWb{6I59mwT8~CXFO&DsAH!xgGQN?r9Dz{ zwt?yZK124leH%@0Hh)1>c`I5^JPHS41ezV1f5}qq4Bl6 zRlpU-)lFL^eZu2olv%Fno&^;MRytP3#$<`=e&ANXZv-d{xDq(paB_$o{lE2%2s9)5 z^|Who0%YA0qw*B+U?VQ?g9fIWTn*1_!0SL?6Iz_v(m_36uz03Gbpju2 zVSqdh(CZqaeHjL5I`Xx<>u)qDKQAfwknt0?Hv-UJTBt>IBbo_N#{utak(t*k!1KTk z?beKD87P}+tTd-weHx+{nZ=Ed2B>89>fkGDIsm+&K^ihR%nwjDa7Kpy<|;v(=I8Yk z-)NqJI+^q@uSnp38lsm?V149(vIy#5(khpr=j1;*LOmx9P!n|$Ghf?j22}_eYdx)x zjhY0gkEHDHDG{_*ewJ)3cVr5v6H_#^8zyL_{Je>enir^3Q}F%YBkU**I)nS-FM$DHB>4JSeD@myRTdXY?#HLyPe>^wjv84J@n8+9UC@m zxXQNeuS+RcN-3FY_`W|lK0f}V`|rR1C!05Ku7qHPBdbt_KwUx5D|0sV6v2Jh(r%S3 zz}mZa@5O~e;fG48HBw4K4m{7paU5LNMF@fCd3c_OZQJDYd2HJb!Fr=qDt+^ubI!R} z&vI4dF>}@`?CmpK+gO%`Wmzbt z@O__hxy<0;AOiyfR4NsO5Nq=J{GD62Y`J#Ts#OJj&ck6%72Ky0s0AGUt;eLE#XXS) zn0kAAbGP4q`!A%F-xWewxm=DFD^}3a(LvJnkH2PF7D5OH1_n5I@E}46%d)I*-*U?> zx2;^cvOv&R$qubxmY}j{As}}N?yUV>M%v`Vgj^ohT*~!wSOYwal-}edK zUVKDmbG7GEN=8RV*}s23)oK;r_dkE*jW>RWw;QTv4ywZiszPv+zL&EC)7Gt9FHuTe zQ>|8MZ*QkiDB!woEnf0GuLf4qNCHg=!SL`fLI`rX+_!GN`R0ogpvsJeYV<}wZvnRv zbaBf>0Dj$d*Dc8B^EU}0EPz}thvPU1A#faL0#r$0#bJv6n-GGru`z@YR%d7D_fI+H zl+GAbb{4FZ4YW1zxj_xna8_o!fPMDaXI~|RSmQVj#bOcHb!*lsgerV31S;wZqsK{r zmCNNYP(Sv<3ora~7F}N>Ktb2f1nZOpRMhoF zUEow;xvop4Qo(VY<(oEb`jEC#c2=xZeg+om1>lclWXpHdIstZDTiXR;Anv*@Qc7~U zTrJlW&fucf#`pb0psEK}94aX#ixw@~NRSB5>C}tO+u8Kg0yP~A^@`3jWo@~j29@vo zACOYkVy6%U+n#u{h`0-@2U8rZ=m_1V@B1g~YvAhF-CgY7sV;fTjo^(2_aBQ;kqtL zsYBN4CIc#Nsgl5o!X>2)Gv_3LlxpScSRYqgrV+BO+J&rCD*ZrDwOXaEt!)BOQN@9( z7ogXJDy&k_6$*oOtW&0dk~(JUqlHwdR0eF@?in8+4+5)c05zGFn#}bHA;LuI{utaz z$EgSEK44c1v19>OsZ@HdSS+4#;J|@ec}nQ+qEIC*t4s%|=qQy+RI63W50s}zSS zl|gy5s`3$1UNz9D_U+sE!0Oejzv6iwix)3W1S(oZFjFfPb%6&C90(VTAI;*FIkZq) zY0dp|3Q+glbI&u?YISIAY>eUI;R%`Xh>M!AP#n*k$449{*L4{k9i>z%QK?jhw{6?@ z--PdybeuYuw~e5wSIcUAeB2)z8v1ExXXiD0_UvK(`t=kFg}O1+WNxpXr4mB0XU`rS z$Dv#<|BAOufm59wpAbJNrFsbZ3$#oxrpU5Oc-Qa(P+Y!z`I3zrH$JA6TD54=BG#>2 z7ruW=pps&#I8?iK?P6qP1kdyOckbMIk?Xo8f_2fV4m|`x`$rFuX-#bIYBg)5l!|U^ zs*U~o_gD7q+xNY$uC5=CkB?jJ?d^1RbsZ8zO$L;d@{mlq=Xnec4$|M>kCalCN~IsT zu3Oa>D!Orjv|B2xMK`#HRw`WfC=jd|6oK}0&pr1W?d|PXS(e4xwQK3_?w&MtFqM@W z7#LvJu3b2eL$zAHwXd)579DDcn00crb@EB+R;yMA%8t0b5U3*1e&(5H-jvVhFOX8Q zbm`JsOqDd#3)lAIKvk<%cJAC6S|&Wt+tT0PzgdG52g)HxD0`vRGC-v_j>>7ECP3BO z+xyjGvG^q^rIpL&=;`U9ySsbRI4XpyzrUaD+qYA#R*_OF*L80n85#Lm1RN2wOitS4 zrG^nPXXn*QsiUQow70j@-Q7)BR~Kz z)7RI>*w|PI*nkk?=5o3GsD{Oj0p%oECj(T<-JY$1%Ev5K8_-rL6c(&rz5233q3}g1 zW!EIz&!f*rT-W_wrBb;|yEQKYlv4*LKh5sW02SFj6@jV{3DUz6zE)VWWXXnNv3RCZ z>O`f~GNsfq4bYJ9`$N9(@9;eDao2TU;O)XWKLV5!1IdZOB-6Y-y`_OlfGU>&RUtAa zYBTtJ<=cI@MkOWBhZ}D9!NtFRI_8Bi0Ke>_D{K)%L z-<751fr^16CwbkU1Sl)=-sorIK*fh2d0!@4{1~7nS}9^s#li4nF3+CC<;6ee$3V&) zOa`c_p^CzhiveX#0aVno#lezUgvkIkc{~+`!;U~PRmrYOh@+B5COg@+{48%8v%lyp z(5eGdQVbP^N^xkZN+#PP8la|ziWorkN_LZi`FO2U?KtZ_HjSnaRvaX&4opdpnQt#` mfNC5r5};D`VzX8`KmP}QHXXe3RQjL*0000iLVjkLUbqUBm)|aiE*K3 zcJA~s1Q&7dB@h+jHEskYS%e6>@m-Yfs4;jc7hOGcW~w{mf!>^|^Q)qYI!%m`7$cH` zr2CS3Wp1xe(q&0^tGO!nNK%yaN7CX5*sP>qsb;Cn2X_y^1E5C{0eI-{H>e4BzXYrT z?UcIh?n?kIN%w$TnYzC~&&*Z^u#3PmU_4WECjcwJm&{-Qmfih&1)FKWz5#DrF-F{d z0@wf!*X(o=aNv0j_8piqvk$EpW4ZdVgdWNi!~~DkVAE!{1<(f*Iti@Tpt;zEL2*v~ zFtg9V8Q|*(*bksv#fElR+39g$6F69d?EoD!+Z-GS!*c;RLjLf}7zd8#28KX)?*gy( z00Z#Y-4_}`cb`t!z6Pv}G2n^2U&(^*J_Wo6_GgNBC@vv~K6Ur`U0}l2YOrmf3!Dbj zfX+ejmOH?k2JF04~q4ZzJB>?d%c!~o3f6VRb}hJ(=tW&^O0R?T7S zgH>ksu?Bq!Tq~R90ZH#tv)q<+c7z6dQj({d7n0ijj$J|5B%S+@U%)9z%Ow_L3 Vh5vkKWu5>4002ovPDHLkV1nYy`N{wQ literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qml b/examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qml new file mode 100644 index 0000000..9168f81 --- /dev/null +++ b/examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/ui-components/dialcontrol/dialcontrol.qmlproject @@ -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 index 0000000000000000000000000000000000000000..fb59d81453affcf40f5925a63bda3a8d4b40d646 GIT binary patch literal 3872 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

  1. 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¬*4@bB4>T8KgjTKVsU+dBO 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
  2. pAlc`H}@r^ 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

    ~a!-gFM~SrS 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

    H36`LR)y(yk4@m`m%X;Rxfu{4`VCpkICO7*cA zZ(}vg(vs=1=X2h6wYu2+@$trk3|jTg%n?Q-dG{fR9z9QAdi5UzYBpAOivuuQn4%~8Ql$)x`PKB&jmrA<#zNFH+0JGqgJnU4e8+tRxI3JnWG zwJS7{8KqL}?tl(Q8B^2g&2&c%TNwEww_Zxt{7#7~F42zHx#B)Hw6(vzX{@D*)W|_F z{J;^(!0DQ`;f+c?90=|ej>Q`!b_#QY`SVkbgz8dJZ&lM#Rm4$r)wFvabMXdyonugG zp$;P?<%dS~$E|7jQ^ScplFM*Z%40t^&Dayuxw@!IA$7>p-KfIJQLj>n|%N+jz_04xejYS7Ow_2|*f>iMe8ar#h=y9i8 zYj-~?7~6Kj$_@{%d-K|)wecjz;qB5!mvaKb(!I-87%MBh>_0hqD%Gaap-G~RTN`ur|Y@3IeSaTc6VB| zS2yvbLMa&-kfq#b>(i%R_2-w~7Il#3BCPBO%)5qj&qKvJ5p%MA7t8#J=27^ToxiT+ z@ac(WfHW;DuIxH;+rFQzGISEOX(?#Sa(+ROM>zaytJJ9`n%@47!R4ew=qXua&i>yj@8y9prUD8PLh{=kuVCF`L8MQUzZ_xB2Cc=#(sWyZ(8WVP@AOGt#e`lrrB7ofZc_gM#4*~4!5kMZz~eRMzBTy$@Tb65*3S@Gl$w-=DLF zg>QK_pW>_CZd*Ve(mP!?MKdu{KXc|PuP6AJjyekRjWhlVckn9i#{T~RRIu@dlO=#? z^i{Kp>PwrS?inL&C~sCE4AoG>Wn8mWF%eQ;t$d$zXG;+5`CX3(@z?wn4^FuV-URq$ zZ9dVbvfWAIop0r~pFbm{afaS8@5OjMpZpaw;^a5mF1#`D_gIGB@BJR$hI2;UOxx26UC`aubCEkzXoomMWU94J2WsgRO!?6DVWDvmT%(p|C zSRR|0kzQo@%PplSMwS&j-$^^&KRY9`IaNMhX-&2AR%e0yMEJMyJNAb0iTIE44&pst z^50E{!%Gp^HkW5-rKVf=HiK{l+bqlo-^O|h@m*(7lUgrlYp7|qQ~jkxHva%Nv_l)d zLw&LJ4Y3eMB<^pR`uf)csdyG7)8y0b^(ZFP?st8f+R!XxIUmK5lkVJB8Ad8g67=Tg z-M#E*h@~z`Imuaef9I*^x`%`Hn+)f-<(&T>OKzf zRGPG!{%w6m{t^;8~_Xn*(b!N^aLn<@vW{8u3P0&Bj;Zi)Q>iZ>q3K7YuUQHdiA>)OVE6AYp`HUVr*Q8iM9G1&*YjS2XoJ67`pb^(O z^!nFyWT8sQE%h_BsmEW(b3a1#<)@M+f`hD;OIhyUZl_Km@Rf&Ulrh-sJxX(_Zh1RwcGOr^ zDMpi4OQp{eb`QM23UVXemJN?md-3^HF|4=KL#Er>`S&sc%&6PRJ$N7IrG2!Ul^e;g zPOR~LoNC21_3hRC&vNj7r452<`dz)xg>-A?fsc%Z6>}Y(`EPfKWhFT`18SEwdcY;S5o+YcjE64SV^fpo!fZBMDlLz zZ{Y#VATbLf41ig3EAWH<3X9+`i+>I6{2$@{LiRmp!Ei-A#M;+}uVo1|&fo~Hq9IlG za7NW_yZJoV!QyIZq@q<5QLHSXV+`~qzr$?oKM z%E>G<$Tza{$oI{9<@bT~{X*+Tw9z2cEG=*C;Xw|oe3BQO@bBheVKc}bN2#na7|1I_ zO(JW_s<^ng>22Bi!}}lb2;9%sZQC1#&aReSLrb00jQjemC7g;vE7@8SU2MdzkeF)Gh8{^5S;F2@vGF z5Wpbk>0SnDgvDU$DazBns@pFosnD?Ty{&Hg{{UJan4h%w>|d$;4)Ly?p?KTHo*lN- zd`iON!$|PGUI{BQW{@dDSyS|+W3 zYd3+s51{H%SXy0>EN>;VhfMyb8b{hjcOY`SoMU<94@&g^0JEyqY14eqt;&;e_`d_-T~qe8_;29f6#Pun z{Aux@P1d{-9Da9&J{#EE$*k(Sl*T?SY^|YY2`e^!X(Tu&CukM?&G`QSTGqTnW{D`{;A2We?rb1oaIC;^3V_Y11{@8S-*;-4IRMbmV~ z@g}1Bw!7jr*JZwKLgHVT2p0vIfL1j{UH}7tE2_3-TQZW9NwlqdD_hU4$ZgZ9Yx};3 zyzAPXhll0v+r_HHjNfgQ##!=%X$NU4Pb6ltwI7E1 zwyWXU{5`E}&3|nyi9WkFkKx#E50o2-p^=+;8E=|JAmiG+YH3w=g_>`DRlJV7>vsPD zFSzpkW8yc4d@(ki;Xj8uE{i0ZBoo6ntES9mxVO3ufMp=C+CE}J<%t8D@c#f5d_3`X zrE#XUt<9IjFBJHRWS${tk358fmT?QhdPG?Z3?LHGdjk>C$RCP1c>^ z`<+hlA&y;k^2kdioFRT>gK6^j=lJkQ?N#)z7wKLdyqfnz(O1Pfqgs@>)%;JUdC}Ur z{{WVj@C>PO+i^Vhrqw@YrF%yDruFi-krgUFT_W%OedfG&U)x%Ix`v|#{r!fZ588ZH z;`Li*iBI215d6Rf$BCxb^Aan%njvR&rkOt;F z0!}%u97C;&#I+ia@3rhz8^!A%Tkdc$d_eH`g>^WePP%O-IN73-<4M$h(RFhkf7V=? z4i#`Zch6e&&xal=vA%h=Nj2>g!QKy#RNn=K!v(m$Dt8bNE0kB~pa9o&aL|<-x6L>9 zdwITw)YPY|)2;3OYCFU_c9|}}H;#NI@fXAP`UU=?B-0;M))Lv_^4sROS!TCTRFJ^! z13Zk@PmSf#tQ$?%F1&1-+xVVo8qdRC4)J6c`dz-n+$6bG8Hn#Aw>>jneHwW7pEW%% zYufAc(CKQFY3TLswx+o&BE1UR!1_(RZza^f+E)la za|A;VfN_^_G1zAZp|3_?S;f_p*OvEBsmSQKIZ9f2Zgdb>hqs2x)-<#7pD7DUSOoqo zZsh(X)}*lj2SND0!J`Q+>~2I+JVn3K%Egn6@^U!uTx;7`lTugLeV_D(xgwle-&>p< zy4A$+CFQl8(#v&l(ZO|fBf|~BPBM?2k)J`xtm}22_U7YdmBr=E&_^87Ph*sJCoUo< zfr2mzIU>4~rxz&7Nwuqg*HdPosb76H=xXVf7P^M7HJ#esi>MPe$*068{r>>)q=9-2 z;B$-~wbFQtP`B_lgAM+=ZFLQ6P%j0xp9ZZQw;NA$YJ>rjah4>Gwa)o#H5e<$`K_v7 zpq%5(uWeSHcO}wR`&G~^wFJ{7j#&^zZKl~qUR~WuIKVt$0qabf!&K8R62k7v=G#+t z4;*@~pXJROV?7Bc@-?cfN;ju9e%jf;>(sBSs&HF3-^lH>ofgVlWYn)7H*+I>n$F?Y zGV+h^2I0RWOrJx7>L_nCyTN~VscOaxtrcyBu|)v#st#OaV?UwAWeDPF!MH~E{JZ&_ z(xo_0nY&-lPq`cv9wX57&le95!D)E2#OLig-j3U)jsF1WoNJxMgL{H{*JOMooOzm3$l%=jG(aBFDNqe==YTD@Afw=SJWXE`NpuJ-ggO%KA; z+UnZAm;Hxzs%n-~Iy7D$)Lut@i;%(N2eGOQqwv5J>){(<>Ga4C) zWmX+Y1FlYes{O)WOAWkM>uY(eMjx)|q zE3%w${_N_%>2yYMs~&D%T^WUSrm|bxl+^yytK9}SHxu0x=8OVdwNyv58_9U zJSlT{wt8QNbx8%kmX_MSk{aG8IokPG86zVhi3YA%j0Ps0y{dj%+W!E9{EPN7l$^P( zrkhygZ1p{M@_3tF)h%zejUoyBxNY>L^3=OCu<60eoF1TH4wYB?CK>MKxVJWt$isca zVnA~3#?}J_Hcoq*#+@fsy2?67qTbyu+a;>=r>4s0)9JcYHge1Ms9})D2uUs_+|o+G zgTk-Mpo|QjMRVH5qYGS3ZKMlbXI#Ix7P7%TgpX%!xpBBLU^kCJoOP*}w~Tr3f1liv z930dy51xmWc&|gc@aDOs*y|oBy1PqT5c67TvNx3rFu_oy^MXcj1!L+{*=YJ?_O=&> z=Ic{nF7J{(gv0&Nr@v0U=ub4nMM6uJM_tXSMm1oiO*eh-_?h}VmO6aelN(2#>McB! zz4G^jU^CS5pMP4OJE+@6NvD)=p4W7n&iM?Ri6b4c$Kzb}9cfXPtDCy({{REXO{Tr= zCGsh1*9oyf^AbymGjiTgP#15?tVeq0WrjH$3bxA#$C!42%m-uN@vNx1wa)cTZRhA` z%N}KD^2(@i7D?;|7UEu7)9dI4Fi zJQSrX-=2YS;czOv<;7ufn$T$cl4!G z5sCI!wblBs&;9|^Nx52aXz4|Vl!z`6w94D0lyac;0>5;B;GB8{U$)om+51C(!83Iq z?3>RXYZ`3d62D|EYfztL`ge@9sEc3ew&a1eFYT3(s*nqO$2)Q}sa4ZTtX1b1b!Dn+ zvoylV#}?I>+9tme%h}&^{z;mhs!%!pxFJ_QrCA zqbn&=FbE?R^kjeVRnOZ!t%aYCd}ZLjixyEjy}if9uY?*VvnL%^NhP)>LGIZ(J!{sh ziOP6}9@8|!La$D5hJSirnT+dJqfxj^m8a3!U(mp~{{Vu5UHGvzD?f>UvR~|7;(a?< zWRaq^_%7Nb$m@_K52sHEQ^^E@pU6}%`#}E1TBhqy8-Kw(w9gG{Hj;?%H6Mdtw1%~( z%+e8@rM>)f#0CgBB8Wsl5{J^*t&SsZ^)Rrmmgr_xrrhqDRA|@kNw+PKl^^L*ZwGJS#iF2C3tOGFxeG zGncltRS&6ZuaX|=&|AT{q+Eh)<3HN3!sp@kl)e#?&s~E@(nx&)H3_6oK1m1fZd=T4 z%+fc_mS17TEEYOcv9Y5a6|H;T{p`9UTy7ovCpmTdzVqR29#-4sF>}UVHIU^_cp%_s zHMin@79rvL%c$jNxScp(FCY=g0F(a!>&<;$8q$rqRi2vZ{WIe42-mZASJ{7;Q}f@% zYcbUw7$U~f{LBdC=aEZqrmGF%V*n}LwSHnxPEB*ygyD!uEARgR40;i$;Vx_dR8t+1Y0p8o(*^fd+PlHU0(p~lB-vc|tKKAG)Mnw?jp^zKc3LU6x-KkGy2 zp9Mpzt(<>lwrQnx`D8~VjCB~tzf)eyEN(8Wi)t%42^l5J5t4mRd{)Y>Ds&Q!oVscF zdK|WKn`+;m_3}KMSc*Bd1E;Bt)uaTme6c=*J!`Jfz7?*kb#87g!4m+%l{XH(2TpzK zl2s)+xXNCN+j>66(VU$-x3BfkyYUy`<(-TPcWY;{h}>cTF7-I%l14CdUn}e0AGxt| z)@>pAw-)60^!keRa{NtN9J(jwbJVGa_KTZF*5^av-w^8haRz(#1zRqJ{{Rj-#(un1 z`rpK@P8Rb7lOWhaOlChY^v-(wS9B`-YSNUh*IT}aG@z946{lXO3w7gHzKqX12gg+e zmO1|b>(c3Z#Eozy91q}%;hUBtt}~HZ*QnzQMk&RuExD|4_k(+XTbqsI9YPtF93+G; zLoRdpXRT1w{6VWu%vwcw-YuKAouqmYan5RKSEEI4@6rDNUB$}^OPWs4ZohwWzKMMz z&W7edyG{ZE#Sgj3_4Tb^5k0%Z_KROVLWRkRf!*#;*1XHquRdq0Zue~FsU->W$5o@f z{{RD?z1E?7BtjQ3$C&)n)cSw=s`j0)6KUl_*_6Z!;RzsPf(NnUx>AifE3W%&?r%3; z)LNxyubI!?>0fJqv|MDVV#_11-ak@*T8T9#u||d+tc-CiL}dFF{*{GP>rFu`{{Ua1 z-BwVA_IF=*`3tA%Hy5|Y;I2>*au{PC_1-P4R`INBM2@eFZO3eN!Tj@Ag?M*a zrmrbp#CvKoioM(2KkIXVZCW2LSobPS$$*c?eCD~9jV`BRT^XKD+m{Y9dm8AEH9B^Z zv+1gTcvkk+D5-uMYF}>*t-xIDm|&HOPb=y``qhEq^sw9sSQ$w&XCRPAT%PsCEJaDT z32)c@jj2_n}yn#syVg*rg!20kioOb^JWt0hW8CVR*#%gQEnueCs zbocv(7}1QmoiSP%*y_F3-VwINFe*&9rAb$4>tBSM9LxNm+`YGjKS@NbmVp z_{Ysk?P^r6ss8}MvFNrMrJkc^QJoS<0+La1+rO#gSD`d;GtPf6^P`ABhrc5#nffC_CK7+p-5i&wr(HkZKnCtWpJvH6)Q3 zWzH~jo@=e|W}W(-)iG|2)MB^Z-Te%U%}(=7UnbDJBYx&p;4t*fDZiHT7~~ej=0XIk zmLr_>^!nDRP89hYw>O^scj!viDpHb5@45X~_{ZW0h`ej98@+QHt<|N!$u;HE%n)bg zF6_s5P6KtSHd^kvsY;Vw-duSCJ*I7dEMRfVbmNbud`@%3d5wI%LZwMc&r99v&!dhW zF1I{at)Ab3&tK{`OElLPcQ+cmGa*H3FCEDzxL!sDVrv(WTIp{#nQ6A=Z69LqVizOi zbCZ+E@7LPAybLS2r&4?LT4~tR7SvOA)&4z?n=U*<;+SJJMCc&4~9ui(3Y z$6m(0mrC(@xsD5qrC3?e7^72`X2-Af>0ah}^-M+8V{_dV<8 zaP*}Za=LqU{{V;7^qpE%Ah+fTU`@k}HUYACA0 zQPgvcfsThf*LM%a*2czCX{Gm`R%cGEsY=#L-k0*RtK%(JNbEHW*#wuGwbVoHGDUQv zSr~r`o-ybEua=qDyh2U1=8W3vF>CJcS2B`+8@d4tjO3y`?I2YI5J?)9c-z zGNAWw-Tt;bPgm9TE2u5+JjG$AT;ZN1$#{v%vk*tkxONXa4?+o`4$!(RA zCfw^MbF_Q*HQyg%sH;bo&+|EG)V+0f?QILYW4?0n-Onr$I2&#(fIEML0;Fe}+0S4C9Q^5g{{Z36#`)~zWyLeZj*~*|A~C^}9FJUe^sXDnlHbj3 z8GT@gV6K_y-a3+Rwom zQMewXt$o?9czgB@_(kyJ#9sh>E#bS5iGLh5YX-2_@AQ2kwf_JSEy`oeiqYd%jwap; z4T>?z$;NBv@zn76`cmYap~}~rD{7vxBigdpde$qeM zUJ>wB+s}KVd>>iAwzX^73}?xEp=z$y>X`>)vX)>08O?o#;;;B9-|W5cOH$z zjiR)_eLnNaQ}($1fc_!)Q&`jfFZ?d>kHh}}4C~sT_RXHRCxzs_)UNeOxA}}_vit;{vk$3;T3_%fA!h@#T+*ekI)eCiqG4??GJ);lGFV-w#7!cXuVkERCvKL=?Ku zZlRJjEu6mg$**FM1L7C7o))TVO7?QRlUuuPjFviYmNSLTpALTBzY47UF{6Ah{g`|= zs%sj5fvi$L4tR^j7Z&#ydV@j!zT!~s(ks6#WFZMGYx8g8F1g}wA8Xzx@dw12Nqdr&wN6*P{{XJX6-tqW+LV*@IPV31 z(E8_rZxQ2*MZNn?n@4#1{m7Ev9hp@ao&4jGkySO{h|o*@rLFjTUVFWF#L!C&`WBC% zc~3aA$-&GLozm8uF_4{8CU;g*u z?}5xv-dkEo+=&_}_J9E!zHyu$wXE^(HB{k6O*dxar!Q;tY;jJ_smCe17sX7Hba^#p@ZlXCo{&B5FWJp!Mtc%O&9* zz?u%Cq6lp+b%89;4%|GGysPqV>(FGL1uQf%p4w8yEgsQnJNdinT;&#=l037ME zY17+9;)X@J()7vt#A9g~2R(ju1OhACyhc1EWAQhLtvoAZ;|X_xeHE^m8{5ZkD}Ct? zR9@xAPoS;}?l_A6)@skL`h3q@4JwqVT58Df4-a^M;oY6xu+sF49~lctC%FE`n)W+2 zypfpV8)#(1N#(Cy&607&RrrJ9O+&_deX9i1yfvxahM!9Crik$+$r13PcTg2hFh2Hc zrQxB3tL-e?)2^TJe={21&ZBD9Pi1=_KHc~y;#Y`oj)~%=y|S~>?1M=tMXgX~y z*d+P@Nv`(a!~PKP&YPj!Xtw%Bui{N6@FW+K>hembKQoD-@|Gf?@wMFjE53N#MM);E zq2#Q+HQo9c)2Hm^uKm%`YJ)@Y-IeCQ<3A8xpAc%ESN2NjT8wt)8)pY_M1-uHaz5uz zTJrw@5$hJZlUi%q!|9W1aw5fJZ#0DiK%?X=0mkeco^zhHlBDAc&D)!zR(AbDPM@<* z`n#TCtOwMm+|oldR`c(~H$+5F@c=S#0LVS+j4f#%q-M28xwo1x-L3j*G*#&91Jg_HQC6Y%EyBuc)YLSObEA$j%AL$2hJZ zQPd;|lV4g-bt>-iVQCb<2b0%s)9QU{Ckl03lXmNUbsaufrj%9wy4L-j$ z&Z`Eh?{g{pZQ^M%+06G^zX+k0(eKI6m}S2~2cZS91UTv^zeE#PSi!Dyi40du+YyFGK7HGdRp zUK7xuztS)F-^lFHK(U69PRq2I(Uk1@PBY2owxw58{{RgVIpr^FTGCouN9I4__JgHp z`i+gn{*NZF;w@=D(K}yB<)y1R&Rqrz6Up2SbvlgJDLmG4>5=MlLwEL_I7@m>n)O}G z56)P&0Qrwk#t3Xvw1RV2eqWZKc-OLT-IvPRBbJp# z#%(Q?p}K?_KG$_N00d<14BbiWDmbBnDQsuH!rUl0zL0EufN_Fz#Z09-^^{xH@BUt% zrMyiiH60WCk&|^SvOJMMul=7YvzB7Jcju_bQhmi_lsbHgY#RE-e68|82@5bMo!RTj zsHw|@r=z>Rx@f=5%bKcs>i+;jC@wb0W|k+KWMnXTPo3&=0A9F1Ptv8gj2AZ=h>@dt zSSrajA8{ER_5;?b{_>h_>FBibDot5Q$u_!QxkTK?;}gcWete8>cin7e!QoZ^0EBVZ z2CJ&i8m<70pe_iUk%7qhuy`Ff>s=Juq_w=d+eDYmj!@=TZ%;1&0I75BEeb|%9Rk~K zkzNN@R0L-vfzLgO;;iYD*jmV%pNMp6{6T9p$2wG3i(+IA(pR0Egi({mN$e{+G^@!t z^EEPAunPuUR#URi1|xpbj~9~_fQ;r{p|CKuXk+&#b)*Qlv9qYUWR%l>X~(0Muzemh1ng_OT2(bDpc?fsUMwFywz+i;k>uLp6g97 zX5L-MvPqIzi5o^bl~514IIf5;YIf32`ltSA-f^`pb+=Bh{JjZRRGIUpp%x1qku=3& zVKj^&zWu{ zSmk$N%OMH!fTI~XIW?tOQ|FH|w3eE6^B**!Rw?ZD^*H-o7f93f2z4D=)+?(BFEaK` zb{=Wi0^2f9;4%lycs1u&wzs#>JIrJGr)T>urN0P;vJf#i^zT^Klp#&jcf7Q-Zr*Rt z(B2gzPB&8B?Y5^maTHM7U&!8bT)d!11WC#D=e8?){@V7>LDHHyAR_&M9$cH9Sw>Dr zZoN%#)tqX{H+I&)FU;wy$i3*k#B;T~+bog-^1O=htkRd=ARodqdCg+MFub{228uVm zyS!5iLNS4#o3DPNvZm)7xBmbPypBp=6LVK@Ya5z|oNYIYh}tWOV8qcY{_zo8BO|tR z+Nw;eXB)FZzFovQjp7Vs#~|Z9ee+qYMJ!DEr26_A)^~-Hv;52m^o>gB#*nv=kl@0z zk+}T_7{|UV)Vv=Clc&ZkJV~ehzTWwYi@0QH?qFlp(egtNRU`2f>eP-RpDZ_9Kk~oi zJUpBrto28A;y(#KfnlX;W=JnId)bib+Qp>aYy~=%lW99-1Na*TyU*F<<3EkRXK##O z4n8?}2KW0j#lH=FYiFx?YC$wKytKco?blDp-n|7XzR@jR zt~UF`8WftAgw|dixwO;lHnqez_a)`IxWMI^dLZmN^IZkrvktxX#J7DW+ikdQMoV^P zX%HWkIRgY70!L6qa#s4YoNC3nNomsG*O{F@nrR^{t)sRpZ!u;ie8(IS$-DQgI)$JG5-K)lq&1i%dNT|od_vM+DoF) z^)G_IvX6@XGyFlRJiLQ5Va*MH7 z#l>gX%*varr0LSxUqq7KrMJte^cZ>(R1_WL-nQxeA~lc4J{pGe#(pdKmGK|p)|xe2 zai#bl##7q(n@8~KNX~q=Yv`so6Sl#KqijYSC60Lb8}_@_b>A9KV{xzfEevuq+v+Dk z{>+}`LuFb-4p*EEVL-v)0bX`NnXJbj%<0D4MqdkQcS_6eL7l2}aEV>%y1nh_kB;=s z8Bl$uU!0r-V3-?6sQ$Fy7wZ~&cy8j_IYfiV`GXuWZh8Zrp1mvdT6BH0QHo1#Z`k-} z2~_KL_W2(J>xh?k&d|cHnK@)&Nj-8qRf`D^l2uXAqBhnkxPSWUaUZ^@>A7FaRImMa zJ2if`*QwfQn(e%Ch)&rRdV-kTeTN32)Gnd8)FQczMv4w34lqyC*102r#9`|;+kc6L zSW1_?yJ*k4{tV5bPohLFCbo=5q{<%zW3d?Sf5x|dAb5{SwvOu4PnslH;XgXcPI%)T z^IUXeRu!I`ZMMF8>JV;rvbuZ!0K*?AcwX*JXU47ehn=HW43V=2$sO~bTKjg}SJU(> zOD2+Un_y*)mvJP1Ij;JYs#nFNqP|5}uNP80x*~?N;_W-caDAW6nmi*nmhM8aC!xU^ z{Ojib025EA*}KNE+oG0l-lTbRpI+7J!w*$*#`-Ru{Z1m}@dHz-Ay3$B3UOB?Ld4m#%JBb}IKdnsV8Bdi*U+cI=t|7rFy*sX=_Y`whnrpGs*lbtQsx7ruK!hF_i@6`g)!#i&#``XqKD*09tw-6>(0aSG#BZ zbnJ81cd#y?jVkbt0TUCrbI-A^*I&KSXR~0YC1V=wXvPjlQOD!js-_;SaVaK~{0XZ* zX9hzjO6k$lUDx#v4)#6;ayk|31Ci0$vFIKF%ste-!swn z^7AT`p*gkx01k90E^eb+c^f-oK3mG*5ssV>=5tt)=$i{%-6Olk*^A}%KBJTP*CT$; zZAE<16PK}%HjRH;9VUfyBzH0-P)8`+fQt@yAH(Zi9QH=$P?MLpe3xcO_UAo-C!fZ$ zt14-$x6RtuU*>5Vl={8;e@N}LTa7nGkL?dDvDuPhK_+lG03MmFuNL^~!&9}EI80HM zOcwjUFF!B6UK`+aKDPNzHQ`x{NES--zzZRpqR(X+@~&1U(dZbs44w(jq3E?OMB%+4{FImf8_ zS1qbKl5cz6d7Sf%T)BCdbJn~yZ)!BxW{NmC++I=10CTso&%Jn0i}ee1)MkwViZya$ zVsp3=$Kz9%(wwVKv%7ZP+x{5djaa+1w%^awu>SxGu$pf^M#1g6HNXNhF`sG@*FQnO$|=FSt>uX*AZG@3yC%Y7t9dyJyK-5uX-;vi~Eb1 z-sVZ%IT=jjzIq?g4m{GczKZ>f-?QdzCFOIx(M67>Y7u6YCp)*Ph!gFKk-Rx| zVI+@jDUi6_xIFukF^>H!o)WK4SCyK7m#<=|$}?Iue$Pu4ZtO26Sq}3d^74%;cLS$2 zUqIB>-gJuLj`f&t`E$m53Uuo!zE$6A>G+X2K|{>`n$+LTr|LI1R}%|AISiI?uahx3 z`F>U-dW>}y%thie72L^XJ@uK1ORU~jaO1B8-M?Nn2ju@K;LozF4_5TjetLytRab1 zsxCye-@b-x+Ndi^^7G&1GUrOsrngI*y*eAiu%nn_-{m;qGv|Umg;BJyJN%TkQxZE1 zcQ62fPw?#-{cDamm@2YYd+B$x9Y|BCqrLk2cQUozLLUy?A1uI)EQ=kjt*xS!6K4f> zmK{AagIopW?y0J3vc+dQ+*xVx0f#`W^0zI(_dPRS>{U;y`$zM+!)lc(Hy^xX_>Nr( zE^cE!VYi5?7F?ufx{`hUD<3oFHMuto{MW^C}IJ#(CPuReKX zF;zXHwYs+UeqHW*@XRXV(u-Q@{{Rkq^^@yD%F@xb$YzbM0Mwv}x0I{hgB+G4*126` z`%wEyj@;SHXs*#g46?IaKR`=w7WShtzt$=J-SesXcnI{VinZ>PVCqbaA^UJI+I zAtMT5QgBEJrAcG-;~nZSnR}q!XwLHW(UB}&d9<7^mw)&j3{6`|(zFpRmFd)0{{Uk7 zmhfH(**N6B;fCit3}UZIZEvS&mVQ;trqfiA%@&b!XhVVj06jC%>i!#wbAvBTJu)2)pZR( zrQetpGdYc7Y=gK3IXEM!$**2Gs`yMiBCX7w{IxJtIj>V*U+Y8mH{r+ao$<~K4G#0f z7hWIno|WNLXr}ufn(^GulP=KGvPqF5a#V%EJwX-s$HFg*KLKR$-^D+TUIf#pzxbu0 z_+o4APeN}7T3Bk=m&pm)Z5-r=Wp-1zp(hGS$A0|BFT-YuVpLRTPgfUzy<2o=PF~M_ zpI6ZQG1dP7Z*SV`#n&D1);U~G=sIYR;=jYbq8A2B4i zHSxBg{jH>UgzMfj7Ct$@)$b*p?sZGqH5tt8cNUPVuq;X4lEnIvUcG!?61-`~5NTS@ zO3PCSzE<1TT{b$e4E#;-^LUm`H(U6WJR{+&!~2MAJT+}`6eX8zfmd)b0tp+kPd&|a zUMAA5Z@g1%{{R9e_0Ms|_0Sg24kdS~fR28aSFqE(4m?E^O%>O~9}$T)C5eeqGcZvcNKSYM103eLW17^&Rg{0_T2#=)c9w13?BSN`mWl&WB`je6Y=cPt-t!YWS?W)_!>L^ojPR(-m z>Hh!#>+FANO>@HfCAWvZ9zz_hb#Bn!O*e#NxxJk3`6DviJ%h^&`tp*L4rV{eMuii$>Be zf8igB_5n54wc>c52$tNAGWf}FYMe!R(u%5|GTkfd{{R4dwdy`cYiYOY_b>QUz&c-s zCBL(a#QG!}v_duWb)7Hmw$iZ&_lU~D#yRM7$gbXB0QfRsn$@?7^*iqpOKbkKOVO@8 zg$tiFhL8}TjNs#p^)=50j;j?~){MHjeipausa5dsl(`zeW#)As4Ln)!{{Tap=Fe34 zYoh!?e=tL*-1xs=xn;A3unSt+$Ay|)^lXMX=gJ8&44EULNye@b$)rp)IzP3?v*yZp)uHa8dil>ODGFfoK}%i=)={y$@2kp7#3t z&WSASuMBS-`)~>zfK_<;TO&PcC|7Y#oayS7uC>wSrZNmX2nM2{`hb*(4Fnv}P?Uxt?T?c2(mP?qD#@{}(H7r!9qJ!{W3Yo)u9 ztu(8t=bG6V&vua{sT9QEsxEThTmfA$Ql}={a<}xXXIhL@RNK{*Y~em@SzN_%WrztU zzi3q>2OMN%lkdP4VtbuF>dWkt!2}Xp%>HspyISDx`EWY{)OF9bZs6)G-SaI`$Ijrd z7yd^Re}6c?NVMH9-OQ-}0B5&#MrCu15xbCj)d6Ka$+`Z~w-QMV==TioyrUkdo!H~s z0R1akZ`x6^Z<+7ds8y$mT)S^~W23rElfI18cinOs9YImPrzt?j(&~{t5Ue9G@{1kbm7dAC+_#Qdu>F>GrmAy}WQAE;~zu=G+7GINpFAq>?e| zT?-DSN14fY@?Yf3rwPsvpLf##0FBJayfLj_Ut8Q+U*6d1(b_`cMf*h{Bx7RZs)4}d zlU*&AnSJ4VZIQGRMRjmvmUOvCk(v4obB}UzYnqlb+SIk~lkKJZ_hNNur)2g1zVlAb zORZ1)Pe{|2-7jL1)@@$OGbH(m@UN#nir3L6m&* z01qR9k>50%R`y-q{=cC!iiI}h?c1)Noi1)qe{XehCZVTU-a~CPXk|&X(vai$LdtSV zZTB2K&D>#b znn~rB!Zbd7pem`8J&rPS*jGKOPSe3{1-ku;ImryS6MV=!IXqw-_7&db<4vffmv1%a zbD=JH+ATlpu&`KK*{QOg?gzKDnYZc@%4I?^mN^`^wNcltbxQ?kwL3fg8q!;6rqY{I zwJ9vNtbSQg9(J4@deGU>~k+1x0cSrS#7Pifi!pb))b{%1UQEw7zp<(Z?GC8tBOFnWN!^O}WU$YPflk;d~yhMrK&+ke?y zew9?|(ZfDjUCH@h_0#S;@ZQcb)wg}LEZacWQG`@$mzLd>fC0mHVxaqUJu6n;*&a2F zg;i-4r$>u)gr`MK#N#Aqj@(uITi#QRn_6q5^FxC6i{Za!zf*0kEbd_?6f{xI=RLeo zmn4JJoCWL2B;ysBuOw0>y@jAQgumNmS;1!A=t$$9K9!Ux(P_1!zS_IK{--=?RIM!} zl3o7*;1zDI^*8b@H2E#=!cHYDUOhX|Y@}9(!prZb=I5#^03XQzwSbX}TAL zZv026>AC_%VH#YsG?7}cM~X0hc6D~f02$76*NSzMPa_1r2|%Bb@O@ zg{A4U&1I%X7O7?SrXSicS)VPok_c8U$lN;CD@N}Hs@u&4%=Xa$5-U?6QgfAH$^pkb zJPhg_Qho>dy@8#n@ziU_xw#GI&xm>*G+mFH&#aC^j+LDdDlzxm$>sWi~*8(AY!lH zXkx_6aplQ!(ITbX<$STvK)#*16^tVyFAwr}84VVz4GvxO=$ghBZ4OSr>lLx!ukI9@)-ow!A3Ss<~a&mX@~PGfGjZ zC}^zTr{}rUcwfd|An=5*_6 zEM;;@Udvz4MzN=BH}hQESVFp9kYf#beRwf4DC@jrmFBXPDZ^fE9;(M}PG^UUlWDC# z;2XLp!_O9Yuw3aLACpP9YX}|T)V1s1AYGMQ;u#9zzd`R>(tIhC;m3!3JK}wEOU++g z*RKJCOt#V_eI=sCU1q-FHy#Gm$p@VAisG+|gs)BstLo*YpOR*nDs^erRT8{=cfWq; z=!d}1f|~D&be&%B#@eNph4Aabz6-y))pV;{xa7RE)m03-b&b8EkjpHavSybGV=i*t zEA%_SzXdffjQ5^3`1$*Fc*{c3{u%fWL(^_NohLy{Cx!^^Ba2GW^!98-WVwxFZz3#% zmXY?3zajmhQx{p#ggyF?mMy(f`%L<8s;Y6kmWyAXW@Bo;GSq);4;px0+Rx#=ri<`* z;g^Oktb7@vcy?H>^v?mwPlv=@PmXw#V^D^iuZmVhTGvk!c9KEBdqGh+54-~_V07YFJ_9%O_C8IiT3bh10}r&sO0`N@@J1V z(*s;vB#!MVAp~j9-scPtJ@~J#z|(_#&By0`f6VYGQjC&a{J#^!{PA-mq^uF$m>>;? z$81%5E0+?ye7Hh)hTvm7fBLJQaiW~$y1$>uwFp8ox8Ky*kscx>2Mm$rofmgrhN6eh zy127dEa1!uc;e@$PEB-ErDWWbcGr6fQI(Tw>H6Bo*!~po{;U0o6F_CRe2wVHSB!8+ zUTVjRye)pZOp^~jZ{2+ImLP^b2RYAwYUje$#L$(mqwAy7qAn1RE!CH8w)vi2@cz!? z4Q5-HQWhx-4>5UW2a(S|m3Lk@*Yyc5ql!6S$tM9*3_5ks2iCn=)tu`}s%cqU=j3tC zQ?Fgk^wQ7p(CIuYZ#&qv)6c&+5eUZi$R3@#pIY)?8p$KyOB8bzSD5*U)RXOu56h)= z;ayq9^DDHvZ}%LLX-nC?9_`ykjGHZ8Z7t`4rv%EF2O0Ts-`}NhI?ePlO3KA@<7`16 zjMg6O*Hq=*Yvxw5Zu@!@Xi&(n{*Sau5acs|lUw?orPNConHw}s^Eb`6j>9$QPHL4| zS+7O-Gim!bB-6Ly{aod*^h?PUT|`Hh7tABvPB40sKd7!U;$2NumE>R$ovrtaXR)m? zm3idUmHeKc(>13~ik;JL-d%f<#bR!z21G!1oE(kE(~R(IrnJzRB8^TX3JHo%d-XXZ zwP#I9&sObyHU7S3SE*JK=IC_#29q_N%x~uxRvAZD2j)G-f0b$YhIJ1b0CJK5@`mb1 z831)P>CwZ|#L;hQFI${2arVwlcK-l}u?~>%`S8a(xK)!lnB#Fh20zBVQu9Z&p2|tA zTWs3~^)ds~(}9y-MOQjFzdL=$p+;D0aM!P0H}mRpHdYqa!g*wr1GT)#NjW|E&sxs8 z)*ub`Xl7CoPW3-2&u?*EDMiOyJ8OT?(-NFssb6*dY-MXrH}-GauvCIKx{`8xXP!^J zc?8;*pElQGL`=sea!C4B(Zy9!-(Quz45?LI-v0n!Ek6TWN@KJjOsgHy$f=xQoKcePgCmm8ngJb~|AHE+##rlVJsY?}1e-e!fql_jJK(5#XtEDNY@tyvbf*K*y- z%c7)&f(ASK)l!zSo3-}PDmXaZt6QRd4#G`l<4?3`l1%Ogf6fj8^d0%H7S`_Pp6#YC z?jmL(M{iO7O>I&$p-*4xN)rF0~_ zE4f$_`*2%>+tRoz`zIZ3eyhvN)N`R$QFgL+>$Sf-oM*&HV?q)YR%IDti}QQeHQ^YQ z^qMKTIf5AI_PftsBGMAB=ljgwd>Cb=ZTs-1S znM{6SF=ybAc?-~=NkQb#!%&RC@tlv>z+TAD1BR(PX7Rj)d=BLxzoRQx6J;Zb!+EUSJh;RZD5Fj6wIjZ zJrs{j`rG8gVe%gG>{)_WIj<@dBrK)BvhmLfu zLf~7;cQHBL0WQ0u9mh^N2aJmJ2uwGLa|^J&xsZ+0G=m{P$RPUT9XY7R;cMaK0aeo<0XuAm6Ro> zo=2e?DmXKa+Px!oq3BQG|b{3>q#HzfVz=~+`p;cYtBD@zR}t>#ww z9@WF;f%!=}8Tad6Jf(}Ni?n5B9r}I#r+2cU96EM@kfXf;%z?y&LszGTAm2( zSm!z9aZgs(4vg26!ycamZM6l-R5O)5P@Y(yt!askB%>JJ-(O$&B*t=$CgipC(H=A6 zdyQkm(Lt!)*DrR<~Q9DORL?t8$k$`~HVvEFKZR2=^W*xBk+#h<|5W-*Y>K?hbILJ&)mB zMg7VwcaZ}Q{r>

    LJSdV?BD&96l-$=BpNy+TB8w`KkN5r*Yahi*B@w)YA2+E~3!& zXqebs?`ILry>JQS6ZqD}-lA>ZXO4Edw+KbEO)kUFLI;1Pb;(hMH9C6TYV^^gD9I@` z+sjiX-&xe*RP)59DH{?vOsG-Gz~`QN){>d-APpo_i+7VST)H2dBPZxaI#(;RmooUe z>86Epx{3GvK1MHy?zJoZTHjRw-#{S0lHv7BsI3;>C%7JKc~Oii<%bG6#@>~Q;m;WO zqr&>-mF1?39-(-vh}L=Cq-en)q6Noe+ZZ36bzv*upxUV(ugK+yMX}*+3r}A@En+LHn?21Zkaw>=#{l!% ztG5Nt#)szz6d9z=jXg84t!UWv$j!#d14Rd2KZiXRL zr)Pcct#3h4t5R!yy1mSOQqNk`mrvE6!R)Lrq;D%$me8utGX3>I-x(Z=>8$k)M@xp& zS<|di?|XzVbrOXb^xf;zBavRk3E*o+4c*<@ulNN^75>WN+p|6E{u8-88K~$t+7730 zq3V}5QQd1Ab-t+bTDO_}9$PMC+m635=D7a=AAZmh{fav%^vx#gNtPFnRJyq>_Q_q2 zWFh$42;&&Yub`t&Dp#nQww&8LbVr-b8g0Ap_ZXKRDAStS6^_Ez);&hie%GhmStZ(- z+mr%EP0^JdLYy~x@Xbs95(|xIQ`0;daJSb<42COfNSY|2fQ;oB5tihP<0qwa)RUsz z?&Ti7o!T>%S@Qe4{{UC{9G`}*Z@eF>nYAAb>Aotsx`s%#3w=jUH)#Y<_uW(YTm$#W z%Gc0e5&j_F+{&64hwnU1r|I_^b+Ty}+FVHUqN)H>DTB0h$6r!;uBl6&QLPr7`#pUD zO1q`YC#R|9T93nj6TPLrt>b?m=+^5YB0Vcu*II2w;C`-P2jm=#hQ?|Q3AKL!TdcZn zg=u|#uG=xuudX2?WQ1wGR?}W45xn z@b#otHX42Ij-yt&wud1WTUZxr5&iZYlafwrD(e$kU%8xQp{?4px1742Q1)<(a&GUo zrnZTw=}`DO-q*vrPOY!#@{pGeZ>1=3od}Xhl)3|+b`{C(SUxEDN8_Iv>iT>dFTw|t zLYm$u(ynZLCidZiugtD8cM*=SgPu-n!OgMQEDbj)H01vPmhE5lHK#&Yhkl64J|2fqL3(8I zPN#C~s9ar}*O9{?G(3_?mD+L+&_E*@7$U0!h^bQr8kJ*a{eE79RO1%a)}2>V%lr$W zY1$UCcXM&BX_xxNl%)B0WWyp#qalk9Fb*(DC)Zb*Cj-n>;t@g8JeW}BBZ3TucXVt7B zNFlwGI4u+h0Iuv3bbxU7|9w3WGDP|H)KG(z%%XO;7ovx6SOna3iVROl? zV@fnvy7`h@HGh@-j3qc!n@QSFskh-ve;gkPY8uX;YvD^dbbEI#HT9%&-6xiLXcvca zGJfgL73F>z(L6EYonGqm#(MqSQ#w4e_=0H_H!||6<-S@&yQ1V`v7w2^PEv&>XXn?- z#MGzAld11?yFQQjaiMsBTVD|W0K(1qwP>CT)8VsE3RpI`{he=nxDz0jA%h@{fVm)o zPXoE{JWk&Mtc~QJ2+^m9Tf5VQN5uXRQmbwvz#e1G^2Dvk`6Jxkqpf-P{3bqARcby+ zEtgCBbvv-JqwKkD%>MvG$aD`1+-vui8g0Lb+gFr5%(^{<_pG+T6D_he!BuRA!5|Et zaaVQg8=X39drdaaPP?45HOzly`$&n~_|jMBap}eY^sOV0#8s%3MWfS2r{Vg8iluo& zM)uI;Zf|1qT+U^l<=8ADIYGf4KP+#ZA@_&?}a3s4wFICO#bg2y<{0XZI(+uB-Q zY0%F##79elTR|PQlony&?cQ`A$HT6HUO%{%R@E>&U6%`3YaHc-#1NSaI# z+}m5RGPT@GwRloX%5(PyFgfp8{u{T7eQ;YvC8o6@jnm4!Az}ry$TXic+anUA?!{p|$pJ_(rdMyB$gIt|dnEYizf6wl|isM-`&FOKlLBEO>E~v?%M(I42y} zZX=#FIb~-LTfIBI^e~l6Q*FI;vBs=ZYL;m&wf30_69eVW#ohY`MaL($YAMz$XqhDP zT6LU;xFj^8hX)|`{VN!{oYHXX)xAH+>RQ6-S$-xdeF7_lzrDFslGv8DDHwNV&+wDL zCj*+yzt=S#Yg%1Sd)uqi5@OjeZ#>B&WA_g1V;T-dhOaf?~=-E>hmoA_GWy%VeDA*b2$iVUB3lMNt9TTFsTV zZMg2ci21YFaa+ceYfZkk+kHNExs_CzEM{q|O`LIts4xaR>)aHz)?9$O+r>gF0hKuFZ{GPAVLuoZR;)C~5 z&LEExT?=T}d2I9ZamQXgD|RblcV9|w7Sc&G1QxLtWG5%)#(REQu6mPH;FXho`+67b zrR{9v{%n>X?9FFWw9+TJiq6Mzmf~xc@}YgBE9T9RI6Q^!eQKItNb%eYsI0_Za~KfG zu&ip_ax&Y<=b*?uS45!d)4r{4wbuQ2GONt$^GeBC>1|GC=1aYAQEQDpTP-r$!t4z_ zZSI&Dj($eV{Q1v9*ygI)X|PFmcO~wuZ?!XXDry>zs{xz$pb~$0?a*_Qe+te&Sd_I+ z+Gw4d`Sl`=DvB*Df5VwaRJpajk{vF}E4@BDaAdi&gcX`@pe{ORk(}{YCbvt-;&dtPbJ}5Dy#-_r-b@YO0kTpDmT0_x}KfEmLrd?Dw+?BaYH5xuUU_G8{aY z7FM7UIwm)Zr z-0C)geAk>Tj7iT-kC*A3=9`zblJ?W)OYM1ok_Hy3+xou@zi@T`4)KNh=*&a7J#xQfi$)^3DF0{3^ zCB3(Pcif0IIk`nPpKtRyd#@1MPb}+s406loBPdim*Xp1Ff;q<(e#=e1)f`Kv$9N)< zwgBj3B=yRU>-9WWJk&7unrWqdESpR9G_#bHR7&!5z)qOp&-HPRSZ^!NzhkkMXFhPOVsTLfo%?lYgleYF3N;wmLCs1-y)pYS(~8 zxUI6BXSpMs3P@v~b0n6r%psO6!6dfkLfAP0l#afK7_1bi(UWqsmYeJU00h#aviB9= zTW&?=-VoBv@}%+?W`g4BBUwf`89x27fmrb}#NKnOG*00f*b-w_?a1JcI`_?bl_Q6h zn`tiAv-|qn)KRBaQ@#Dw(Qb4X)>2w|vLnfAF4ar0K4BvnJoUzXxvN?|<<5(#Y4O_Y zi*Kr4+(x$XX}Wl2^Rfg{w8tVoSd!S|6_rUwr0-76TUPe@qn>pr)2_Lmy}NwR(=XXS z_S4h9V&B^<;ZMa)S}FX0;cp3ehCL_8-XL(PsA^gj>sptHG#zbT^G%M**Z^D0P}as* zA|TNYNg!9tX4O_wx&9>dYh=I49{vIgGNsFF+kZcqxBFatGWb#OoA!78ntlTK3*ipB zzqDSZ;l}YV?F;c4b-8S1iu+cHp2x#%vJ$dAwWC`+fU2sy9DU}-zwGJz6KXeJ6YxNP z?fWC~0vK(zj|*#8R@XXOYEe$&Se_Z3mG{JAka<8A`LaOi^7*zlo)amK9aVFcO_LyUl!`ywXE#iSe$VnGzug&;-7*368IOy_x>AS3;09Bk;kQYYr~T* z=AUIG5hQnwda@E`)owEqJclMU{oFu&&tE%(obZ@A)#STZN=>xx_w4>>rwGRrD8g6M ze&6t4dze4)k$8$LZA;-dz%3T-MkLVSPX1kL@jRi5`dG%@TGo-pQdx#DrvB{$=!lF$hFMoR2#t z!C|W>Qd0LRK4~jons4EXd%o=L%xilYDrn^|J?Q$})-S~?C03`WQ1q>lsSyCinz-Gbx!~LSQZ6+@qHjUvu3T+R= zUKv4Ur&wHGB+ktc!FG{JR@`#g2ERc;6|8riNOAO&pqqqUlnQ-T)U`51hE_A8P9$VdNoujPAOj9bUZ9KvZqZ{ z*6X&G@A5dGvRycGsNiQUx4HKGYg0J}tyQR| zt#S+44lwyQ6ah~Z@-M=|FF zb?f~r=%`_$`J0v7OTE5lJh^98H)i+K^(<-rBRXU*QBZJIs$Ty9axqeZcb8Xx>->&uR?+SfRGuQ_#-PgRgpB8@{{ZXP z87`XgNfeT<^^J+$#tG+~56Y@etxu0dYb}4vZ<$e)DoXEvTOOC;Xsx1qUpPVvxMng) z2GQ5QU#)vSr{V28RMLdjxMQ>eM0wrDavP!MxP7eQTJl?W)9&*sq#-J?yH+_1*tFX% zE=ySmc@``>B4CyS^XuQBuMgF?cGN)Cs#bC!-zs=dydT&kD7 zqQ1=LQY+Xdk1?Z2u1cxS3ii!RHMwHE2`VUM8;`23k|M8~(GAj&GJU%8Yd2EWZSGKn`K6UkO6@EgJqV|VaKfodoA;k{iQ)NbUQN5J z9KzjA428jP2n>-pcSXg=B<6~5%zF{O85Od zj^fKq@=_xrEKY=$SmeMf?Ve6Pm8T8ut1`e0MCG@YIRih|xh3p*c3bxTwH#!jX>9sj z?(S^jO&{${;Tds+d>zV1<(l%jHOm`oi4lQ2Nh(vQBhdG)AyrqRxm~ROM(>ua9Hn*V z(VRxVt;=;Xh@@E}d}AZ2=Kyh1>2_&63oXVNkTN70Ir;qRG}-U zeLJm=k{f8Cl~G(jAiBi7k=yy!<+amk_X`v+8%MPKo3Wo#LGSdhE1C*cw)gp(RhK$< zjqTX2t?0Km&>NpAjFJLM0gU}cP2f)s%JI(!6)!SW@5p9zQN-BWBji432o~`Pa^xwuyOXBCN>hORvtn0CS$6wNxEB zQc8RJ6Uy8jmEG6%=w&prTextH;O8!?N8?s*JWgh|TUi-mP^2hf)OP3Ay6MHno{2m3 zwe4e~ROJeHZF=rw+3K>}HW5e!{{XAspT{D#EG=Zz=1FEgQoNw60(TRi<(kRTqYLs% z?f(E_n5$OINhVWc635zNFM3F!q za-G039iflV3jA*mh^dN6Q+hr7`sriWlW?hNYEaa?A>qAB++OHBZ( zx&w{dw|Q<`&|vlB71!y~L8Ix=+1N!crRO2@)=BqB5BHCuJa8+!GpU%$io?zOt6pn# z^9P5e3cTtqY4SAx0JQH#oD$k;WId{~x0e?8Q`C8x=no@3GhEk(E-v*y7A~!=BydM@ zJDZqyiJT$=a_n)(LCEV~w+>Uo(Zf`dNy^P%q0LcBq~Uv{-ltcr>(SrbPkE)wCCbKI z$lEuTV;uACk6~PVFCK^HUEjkk%rYpEZPiSUGu5-(lh_h#%cB|nW0#uGyXk(+`We>t zR+j#EzMYKSbHrM|x&j!AZGN}aB(rsN@+V{};s(kLFl-AmLjl5Nu$>iF3MkFO!2g$## zfBju*eG^!myGMGA5-_<{P?9=ABj}DFp&JI3P z`BSM6$HltOj_)GV?=SB4 zt8F6F%NJVB;>@nhxkM1MpOtwTITc=S4d2hNSsj1Dx6x^KwHbT5==y!bp$fIBxTUFI#$ONgh^}G1&^4P0qP=+}ywYPXx7u$f5L^N= zyB#?@hASow2SU;GneOkU(O{B0a?3Wb?&L^vRdygON%~{fw8?4WohQt-Pkk)ca%ULP zgR{Jz`dq1`YIk>9Jo=@=Tuf!VSehFPKwP02RwyuWk@c-F33#f?<6D*+O$PGf=Grob z{zzFozIufus+{K=zomNB@Yrlr+mw>Ge!gCZ5_I8FUAyn9{EtHT&2`|<5MIG=p?I^! z+V!S^3Y)(Y_`*mnc4jX0A+q%Y&p&nm${>T^||c6Aox`^w})n*S%ys)P+dGT zx}$ksb7yFczq_7PHm-{}6ZK=yIf@1qwwprueVz`yg)R8iv zjO3HWW$m%ms>(35qb{!Yzh|w-Q`yc}o&5V8e~2{S4&6SBZKrsvTD#L`0j_PPXwv3k z(M(}SKry(n<2BWIUhzhqeWZ9x!j z?4OeEVyaS`ZY$o}-{x|k+8+xqw0E_)yzwuG{BacW3%zT?`lPOxPl6xJR$xdcvW$A> zyPX5zw}ZTKq&@!tg*49;ExcBX_U{{fN7s@waekvLENxKblpONMkJgn))WJ~Fs@*iK zxxFuKk)&}{s?@St+gE)J34Aqm@Y)L*^?e6Q)HDbQxVF@Fh;8M)mgAw=s?Q{@c-ja6 zbvPA|;%|#LdXBKRejD&Z_!ie#vhwb{ORMU3`i8xDn|^hT${6h;C!mZ6$5ToaF!=bo zm0RcjR-V3h{RHV%rtcP={LTLW2>3rnzdj%Ebl(*&JUOLm_c70@cwQ}bYj|X|FZ=em zxC8(|$qjQJUIW zPH&sx;Tn+r+Us=~{OxPASBg|8dwbqXe?pIqe{O%-?@ZEc#h$6+9~0_YW%Arx*?2$0 zZKlKLC?Ph;;T4wzj#mTF*Uerp{{VuJ>kcj<@Hc^ng=}sae$}XWi(G5VqJ;e3Tyd&K zT#Vt4aqnJ+ABVDBy>j8YjRSrm1JHMd8g? z#2zEmZZ~+2EBF#NF@_APmn=`rNF(I~gIRty_>khV(@;{X)#C20 zYb5#_)SXDwP>Ryp*uQmu;!AiQc_h~F?k9m@w2M<+&-Z?9st|m+^%=!_cf)^y-Z(xT zi^lq@YZ`ZibwmSE*DRriIX+->Zm!SfCQnhc5-YnEi^Ix1(UR9qoAlV{r-r)L>({C5 z`jY8h4)WyECz1~iuZIQxr{g)qkhCS3qT0nC(v0Q*0J=*Nlj~k97lynk;@v{yQJ2PX zK=NH}mfC4gnA&jd@x+|I5&GlYoRB?8W#--nbH17{;HoBw3Zn_PI z=7tGwm9D06I^~Jjr>_T|mC;*xivIvsH&8;cSy@ji8)$UZ%RG4dtj)*utnpT>O*+o) zE~eDyDjd)%q?1gRNac*m_F;g5_&8!P9k4;$k^${iE+@W!v#Uuh zgl@&>ia5b8@XI&G&5UGHXLIX6uu8~T_R7PcBM+ioXPbtRBG-O33}{{XYN z4F3Qs`KRJ+w;nFnSS%OfC@n$q?qn?xUNf|C6fx%ly;x9#)>2Q)sHI6yMzlHUWYV-- zEjLWi*OSn>gptEr8-hPL(ZMl$jzREo`>^1)mzPC?mHMPH2Y7p z+lFF{(gqVhQb+(Clb&-#YE+F>-m9lyzQxATeAN@~OuixVbgQW@!rx6Tv5jH-K|<$& zfZXG0{Ax`$&gWB}(i=NVJvdCQf{EuJI~=pI!RN0$S7k*GcR6(FxBNMDs#Bl5l3fZn zx(|va)UU0)I}FThtX$o_&DP6krCbI0Dz zU3?Zd4Mk3Jwf+@*-E_ZTbyp|5cGva&cRPzs2T-@LT}Ib^o|g&SG|5p?>Uf-dx&9_m zjz&9*I#uk3^2*BFwPo`2FsWvjCH&V8EL>C{iYJ97MRw6;4|m^~O6^CXp0T z`IiQJ$DKnq_mgr3W5y7UgB?3oa8Xor>-}ua<;yCrFJ_kC*Wyy12xOW&x0*<-BY)n= z@nzUI_eb@s(nqH6jckP8TdPWumH>H}#$4x;N9A1gsZ_ghd+%<(i0XwoMi!H@-%l>= z!&{5wx-mr*P6}{RM)Gst=E>*VAC+fc2_jUTT$y)CnFf7&9{oi*P@_hUk>|el-Irc8;@qwH>*{O)XwfaS7X$4xJ2d;| z%WNHYlfYg-I_ot3R{GY`?kKJ?4c1G>(WH(eUf>RWI-1f{wC0pkNpyRC-GvF>mFBej zto}wBX^Sw9c4-?DLo3F=x@=$&0pYsmimf%YcNZ-k-OMsW9f~QFQnwb)WIUI0zjU4k zdi(QP!gzSpwJ5E%cYl*O{hX^$x10Qmn&pm_Z6tBpE{%Kwtc!JGqD9}w2_PRaUVUp0 z+xv505i{w!d^V7{jp1uzAd*6OExYeA7$+oD)2|wJmD9ezeYzVd&a$-cbl$C4>8<=B zs@Ynl{;jEacG>PCk!+)rQ4p4BSd7Q8sZr^{8Sh-7)vccH>c?7>P`;5Z*uyk40}q+} zJ6*o`{C^tggsNFir?|Q|t^FOZa-gI2j(FL%z3=`;Eu_sqh;6JOdp#cBT*s_k>UYiL zM!&@-N6W`t^N)Jg)pZXATi{YtdYmQuO<_(Z42DELEvD<=bCIbWp#9w71jY)#EFrtjQ*$dkJQh;lba(ApG3` z#zqP2U1R)U@c#MX@Wzn$GA)UM!t&!w0isfHKYDrK0niMZ^Q&PaTJS;{mRs1SxFuqlm5`CZKnN!X zKc_X`+V~pvW7FkmEj&8~rNf(LySs^_nr{3yH+|o`gMrewuPS(_Wfv>-N!hP2^Cp+D zjWpGiZ|cvS{8g;@^7qBl{{U!71+;Kx8EkZU3~R?G}5 z`+)O#F$7qZ7s`oaTrnVKzRd8g)|ul8v@eF*X1AefKOFpPrD@kUnr-f;nvJ)B*4hBt zl<`C(TWe%^n(uIFauWpegI}6a{?g4eE_RZq6=h{_OW##<>!$Fy94?W3-#^InZ`!w9 z(mXftZ^I4nTUPji;$MZMaslU%uO=yJnOp%ZB>ITTQp*cwfbD+WW(w5cE5**{}9#@D8c) zui<^)iY#=!P7Nx+-1yVtE#36HZBtmih-D(0Qa0Gd`=$9+iR4x982lvGJ`X|hGxkgP zajWTfpA`IYqj)-Bi@L{w^|gt-IjTXZIl1ua-6Mv%#hkGT<4!!**fPhQ0CZ_;DoOcU{~SH!`PE*abk_Ux;2X)~$6NPguK_S#HFWyG1dKhLH3e z`u-L6ygfNjD~(2)sXuy6zOC%MlHB=>=5yy->F9jl;@h~Rv7C8oW%-YnBu75qH*=HF z3i*Fgwqxc>%KH?Y#@Q#YrFYj&RC2!WPQ5#vIBYyQ8%yuCnXRE)+g!x)ycn5!rF*^=Q)o}B&_KG*8h zqs;l8^wR$T*QvEd$lA9vzKgOwLr<|wt0~raTI3WY43E4z;1ka^#WtSFad8E@9C}7L zKDpw(DA9E=^H+=OZrA-x>GDdekJ#;PeQt0XgK8EROo(NHH~#Zt?&s3G?Jvgnx^|fB zFvLG+AOibNah?ZEe~oz6@Uy84$?K<|;n13H5La7zerFX2i9fe5SR}0>WWpaba69qe z>0M@pcV}%oTWScVH6(}fMmhfgIijU0%A{d6x64PsRX1SuIKl7MxQpExZlBIrn4E$)0l>#N{Og+$IbrMax4W|1=8E#7x!P{_FrF*8 zr4WAgqg&F~cj*$~wUfabwG$Kbk9k_3Be_HGI$;J|U^}e2Z8A@(6)vVW-_4po{ zuV@xgX<~IDAImuzTzalQ8u|WXbtJPQIC%_>v9eBh>rYw5%Gc_exz9>I>ubKB zO1iw1$1TPqJ=yYG{GaDuv18#QV!~O6oAPAg0U!~`KEJJbc#KM^Rx$6dRQ}`Cl^Ci@ zUxM7`yjyQ;8I7%wq7}#8>4Vqaw>%wTVJ^uoBu&GBc3|W2_N$7kH5DE2xyu(NH*48; zenzj0ZmcY#5L(Uzo?puu7+m$hJaLcCxSbv-uAl8MxtSag42K8XsIHon-3WWlDQwo_ zgy9sWuD$j~0@ z%g=tcGOSuRRWnAjY$W+);FH@u`2MwNZ;HOi2bMSV0OOOzQss2r5nC$cl$n}cR~c2pxk!0;xWn2dF}er>OK**(W9NMkyXFto8Ww>9WkB>uDlFq z8QH79K8winD!WO=tva{=008oP-9uEHQ%hNygnPbsW#r?vWBf+7wY1Xh%zi+8hC5@! zZat2FrF)X2&x(tuPVsAB_+tI6+K(&I_tWL(auyyIi&N8)*$I4Pd1I;d=dXIBr+gv4 z)GiwcSLY@#-GU8x6{`CVXMLabw^OEgha2>^%csc8)I1$?q2Boy5GEF0F#MDBKmB^$ zI(@UkzFGk)ZOIF?u+Q+WNlXDMKUVvhEQ0j$IFlgN<$GVN zeLvt6*jppsJS?ys$c!hB22>!9d0;s0ny&f-8}^dU;z&H!WsMP)kh1h~gP+qC7;3*) zr_P@>^w(3OlBnY2JKKE;bqjcG65mPj9=`UscWu8*irz*g#xlj(e(1^XSvrM{=Ax&= zz8<)>w!XTA%XfD--)I-_GZV>N@z?OLx}$}qPXMI_WcATo)oyupqc>Scd#%nw*)KdL zeIwrMQ4KEKlt~rJtv!4*QUJ|b{3NrlTo>ts+1$;P@l%f(zC5b zoPU0nmhG?JX-Z1YoVQ8U}Hv`jMbv` zR(l-Sx|6A2ol9fGbxTbsG#CE>ZCxVtrdn4URzutzgOSi#Ns7@+!{=iYM9T@TimY`ku9! zHKH5kR#6?vU9gEs+aMnO{{RkouQIJkQpEE2>)-wfuQa5SyS35fUN_%ssYH>-xo!|i zxdv4^=V|;pk6OFoOHEwG{imj0EyeY{!x*fL-|Hjy+;GPp+*hrJ=Al8>mD=<EY_qYj1mPE^g`e4pFY|Rw%8lZG$nIZNI!cC{o9k=Qskg?6gfgUAnum z@g>lSvQE+mQh3{|j_o}7Wfub!cZul1Id)VEjL?l*Lx=G%I8SL^0o)-GZ2 zRrZ^%cz49QUC@^h>RL8q7r9gWvm&X%&$s|r*`5TK!?MkyUi?P*wc+vMu>=>Fx*vk{ z!Kgi)?l&d1%;kVdRE)B!kO9U|HTBhSxU6OZF;wFz-q*TGK91U+RBBLF-1(oCj{gA1 zJ_+zoiZ3-k9O+*dJPWRPX7VWQ?ldhHc=YW`6StWz({O1AT(XQ;=ikN;5$L`i@m8;- zcvcHb-8#--mb%nR#yP-1cP{Qvah`^_FnLZtFRrQLX}EOW>A&)1%6!mrrqjOc<2*a! z%~M`yw|H!0irx=0^5renS7P!SO4hgW4W^-ZZS-47^r$riRn#6&m2Mbyaxgw$Kze7b zd+!TEl}F2??S0N#Zq28zr&k|_G<)qt+uo#CIvuPEma%C%8%-NNI^>)TAE)A z-|5<#UurUI`gezHrb+B3QhDuMpNo8Lq1sx%gY`XBO=GJg zwT`o;#G(s5M1QOEVhR>W$rwD60mwP6aWJP|JnKgHZ%udkU%8cAxY^yVmS2-yPbsj{ zv`d*aSNMtIYYz%ZZ5YGaXcB$8>M!obV_mBoWMz*&^%kw-{{R&Dw%bndR*A37o*B`; zT{_O&ON!PQUV#jKJhiIDtk1aDw64~{zHveMplydmYZ8oKIRJiC-DvDsr`+m zYC2u?tsrZg{TEqDV1$#&mQ^Ph?m^9Zb?1-uj}G`|4*==cdTjSvS$M85t!_fZ%7o)2 zx90y2&YZ|SW!yga)E%9H$yInWM7I(&d zBjO}_ci69GwQxy-QW1RhR_N!b;=B;*{vdA;zlLsg-6q3HNtNQ#ZR~B@>f%*AGfET9 z;F5W4epTCqmJQ)$?4c@=le$jpmG!o#J}25Id97B4)sKgK3!-RpYyKy^)wO%IWHISF zR*>^7hqB2cgR~RJBm-R4BI;EF{PM@dfYdwnU6Hnp|UfKwf5=zH5 z_fccci6Ptzz zahCaW)PO6%#7*MkX5|=5t-AE|N1&q!%GbNL&Hn&bIWLZ%1%3?pV@8wvAH;tVJaOVn z$(G+s(c;u)y0OycDU&3Z5-TV`Fg&o?JPP?oPlo>h!TR2jrZ%tR4~MS=a<-kROQkKF zT*|`?u%odoyq}qu71x!=6H61xIYx4QE&2C3JM?z{%Zb`f&XJch2hM>H?TW;O-J071_<~ z^)_|y_*h;Px|+|#{uqlzmRp9GONQd*XEVm6gppla4w(mq`c(~E$9mqn!hL0+hfRvW zBHC%vd2wzB{aYT~^Nyq5yD-wiVyMPZh2M5(IMt0;&1-Gyc|N=!$EItxG+K*?HRamdeDC-i?r@Du&KAF|nU!;>t@AXRvftmP@M23>1gj6? zEJr!?rrKR3lgTyt-qS;}1yU7J7nL9H9QCa!(2gdWyGqMm{tej;18`0a#b2^UH^=s91Ji|+e#NH;mmsd8{HX3@}DVEjlFv+|9P%*J3h#fh= zuKxQ}m%~0C`#qiPRvP45oKjfKmqBKTEADp5AOt-+j7)3mVBwnHm>bgz-slrrUYjV<27YH#5BQ%!8>vIV9t^L0Pwt9j)cC zx=V+GBFfM9eW9a2bYqT2dXvw!bk3@&PB403d;b8#9Q7wpn)Y|^ZTz(=T=<%A^;$lk zr^jy^zuIO?G*Yj?&zL`#JoT)95o%hE&5ekjNB+$>1}jLVaU4QoptqM2HXv!m>EG zj(HE*?eGMyG1mtKXWq3^on2J9pG5awf|MlRI!je;{{SL`$EYRE+;4T}+U{M57ZHy9 zXTQErG|3@Yq-EPHc|jY?Es=xC83&wu(JW3Lrm~i)YjvSq$~6*_-{<&$nVmK4lFvD^ zx4N>@VvzY)a{wolj;G~34D=k<60u(}%x7n~$yFS-!PK8h%Czvb;-MFH=hyE138_v= zr}lqemqVdj%WXQwDdUM6>1?Op7?*oQS%F3)2OKHn@y%m7Y3`vKa@le1tjXO@$QZx}-pY0t+J5@<# zosLU#K_Fx(_8#@QVGf^VquX4=1M=i{fF*sCFfz+D9afGCk zm8IAGlSYb_I6d2M$v>Zwpw_VIu}!Gnww-x(auH{a>5)sL9s(}XGBMLRtc^lTvlLS5 z4k1%7?k(bzbF$-w;B@ulrDX|wI>|qFO}{pmlY5-h9qKiHy8i%MjE4RzIPD%nV!DPw zEKx18nS@124U_VaPeJ#yRR*TlS5e&9G{WZY;zyq09fXo#WQ^bdr;(3b^sOnvii>Vn zUx}?sG-WHt;rws?bsKeaZF3w+c!?a35q7(l=VQh(l`6}|{NP~oT`rrZ>6(UtWA@o4 z)L&1TrqwiEE++F{G0y2_f8B-8e1dUXsLtB9m9KlJZ$;3`w5igMH`@Ex-?8Qzh28bp zicuZ4rH#AG6|DMnlADNB^gy{P5PFVD^{8#`lTQz0ZDeM-xGIP)?HekKjK1@X9;X8s z%~FMGm|0Fzx_ukf`RtIVR#jlXubHHpeT?qc7f)v`tg6U0E5}&U-c7k1k30+>-!b5I ztf;iRNi_S@9l6u2X2F`~D8zCecq$Jok~}p=2+&oyT5r7MkPGB71ky=9Y;CFI&oceF!O{Y zqa`QTn@_mi)9rg&>3Nl|W|naza+oEwwuvJ~hTS6xj_ZtNk9_2lU3{J#7QP&{*RHjj zJ9`_TMw@Qd9&0lw!vLeJ9)z9;tz%x4Xw4-ZAIja|nVczFE;5r(d+q-K4te@%_qXo4 zmDRLvtr`0bl$av}fyYC~Y}Kf2lGwB#w8XKD#jor_oIsL4rtqmIJ z_9*DLjTOVo5?MxVWoCwXW@g)t%6R8EHG4$Syi=%NpBLR-Sf-z4sXU+C-YK3qtfJlb zw)un%h2(@liZvOz+Q`USv;Li)gtJz&z-dcE;4O;Pq z-nTB8)5$A?xGjyCA)Msx%%m?l+H1Y>p1a|{6nJ}D(>x#W(!)fyWs=9m-w`}r;+b_@ zjVMCEnB$G(NbL)e%y6zq7|E}lbbs1qQoOljwo9-44(G8>KF%KQtE+#Z^>^%}`!0A} z;|GUy--^2J{{YxN8u)hJ?0BEYZQ6 z%j+4=X603`NL_W;<=FZhB_&RZPeGiR3Hh3TQg7{ziMSMv3VdBpj>QQ)4z&<9m zkHZ?yh2lihBJr-3cWy3pp=A_%Vi8=yDj8f5A_79~fr|1!iXR)K;a`Ryvd4_RD0stG@Rz`E2mA*=+7`YSe=A)0hpg*5 z!|D@h*5#O;uqTt|PRodi>$r@3DdGPB6?lur9}2uVr)&NowQq;N556_{o59}vXqW&M zd3nIc)t|EW!aoiE$Ql>MAC6xX^)Ci^gT;Ov@n7~%pW`?2a_X{Mc(V4}?H6#yB~~{# z*3wNGozSpZ89>S0N1c_>#Nw&P4<2T#NltdzCAIv#iOlgF^(8iwm6A=ZPt2c=UM%r< z#Qy*l_@*xtTm6E=PiMQ*?JvAWFYacRX$#4Js12|@P0G&F-x zd8J1=1bwN13^?pXe7|`ta$G+4MMVWxK%tnQQY+{wQJ1l5_xv^WJbX1-(oUW4Wd8pE zQk9gyXL%t9%W?DIju>_74Rv}qhh_0C%RGCP<7}!Pjh?%6fCWtHQ-{5Ocdz^o;ZpX! zPMa@Y%%!e)Vf5SOjnH|_Lk+S981J84pGv=`>GvtC*xLC=FEU|?1%8;v718XYMJc8C z{{WF#m_l^Zi(YG2`k%4i4K#Ms{vJSN$=zx<2?seiJv}StPZR35T1K&XGW^RNhh&>c zAa?nMabW94Q|V^^0I$4MWlA)qZC~}=@vjwl<@G7xg7R5qQ#z}WEnt8 zlgY?k>ng|dV2tziuIy68C`HFb+oz*PJ!wjvEA`(`>gUdWKGLmWxDnezg-~x*S0t7{ z#7XrXy{mV^mzJMnf*HW_(BpHWx5`FxLGPbh>%u`|=<{#Cm7kGnYILrwo$k(x^H$Si zis3B;Wy0iyPoH<=)9|h))5I3gPd}L>l_9pm?T07XbDn+c)575|N>P`WGjCF=xl@h$ zyXf@X;I(Z^*5_7K9$)W|E6SE%ahkoWXsLInyohsZk^H3boQ^x=+PSkvsLd!gakK3u)`8`LoJw^!c>=fc|5ljFw+4{zI?-09w6o!!{>V4d+fJxSZ~Ec=N_PfnIJU z;%VWwN>5vL{{V(NDZ+53lX`b(4w+RYS;vNFW9n|Bg@kJh!kSK(-Etzo;i zNRgR1VhC*W*0iZ4oi`_bo$NJD!f{iM{{SS9J-gN9xUg$^h~1x+RCFW1{{UXOKMPqy zeX5jWpD+*xGx;9>0R4L36&OO3Q2h4?ho>oXUdz`{_;c9rJUIrN<=t8NcpD3o3bqD1 z5HXXQ=rk9TS-gW!5tz|H1({TQ+~;;{&zqc=HMU-wo6Xfxyk468ik}sH7&Of`E59wW z!z!_E=3WGG1@5 zM0GwJy%)C&9rK9cw?b7P@8EXMYh%PZHMP_evL_C}De^$=pYm&-RVY)F>bi6iPK^Ec zchk@Q0pa(0G?v%JQMskD)@xJCC6x)yOD_TDG8Lo+V_04(m0etw)Dro9?<6$&Xu zrr!7e05)<~yeMdtucQ9AIBywgx=xjS9Fr_>AD_1jxGYb4@~;yMFA%yx5Oj_?50$Yu z9FCbMzZL0Gr&}(l>RXvLbhgyzjXH{=ZEMkV_0+fFdl6-Nwo<4Cqf#SabI3pby7$`~ zeKSk4H$GA_vSK!sequ*(a5=6>yiO+&)Ykt1ubI(8ZM}Q;JPXEhT3*jJ*x<&8$bR|f zKaNFsifdCWuWYQ+4>S_QWFCK?TIzUjWe3f=e{r8)zQdMFR6th3077ACxMo&%f5c2f|_9Y4ge7MRm3Q zXWLZ7Q|7c_v{uvl+_8CmsY`5b_03^*E8B6hb0w6EwR-@kli%r7wZ9ZMhO|Lmea|ea?)l?%+(NARVaaYCrHLi}4-Q>0Za--9N;7zMRq9YDZ4Bv6LA1rd~+-J5|X0x$ECOE9*NrXNNiJr)^8yTVN$NBDbgsmBVXSnBVV6>Pps`|7 zB#fy($})Em*10I-;VcsOZ+E5N;!C8Vh;eUjy$nk`Ulr>NmO4egp(&FrZspU4Umdy~ zy?W-ljWfYllEZN>t*u#J>IpJ|7_vyQwm-@e7iiZl7oP9FpgRWz62D zmyI=DJHgRf#R6E~nP5Y9@XzH!NgQKnB)37fzJ2ji{{X^FS#DA6qYC?N?d3AGco`eX z`MUP)T^`P_G;FNblCc!;Q7FH5`@QaY{-fb3E_8y|&vQM~%0x*cbLt4(er5e@$dx9y z)Rx{5Ma(m(F)%93dww5=Yr8MT;+0uzwwBXx%kDYq()LQ}>hyPKwrMdIw@0|Ww}y0& zmfA~_dnorKt#p?9bXv8svbb-wx?JwJ)GeheCUM^fu6yKtDsevKQ&zs}`u_mKBWf{D z7JEA_4r|4J18ay?U^Bhll5CN#qz+`s{u9oBm2i3vrFG$(>Eg7zkuI%?XeEXg5*|Kv z+IY_$$I`XHW?bCRoK%}%FSs#yUt?8D4^EfvcXM59TGiFP{j~P>ms7wDf+vq^`fdw> zyPo2^8wm9%n8wCA9yJBd?3V6G1HZWSt|`q@x|9|CuFY`t>bjScTJLR5ElPb#TUnYJ zNp*}#B3!mu{v_i+g&ID!scJA!sxF(X-9e?skxhPWJk6QOOyvB_$3+DFE6=6LT2G!y zS@zu95T`j(T$DpX+Cc*Uokf^2X+Qe z9M>z~V;bsFtX^4~R2x;}T$8(@Cm<7D^r`y_a!D(NP9B=<6rlB*ab5DyR)Tbsw!WP| zuBT4_02I7yspwCmTWdF#ULAz~>1=c~mROE>*(u8)$@S@7c8dm+{{RS{qV1x1r&gNc zcunVvyiKV`Zw~x6ZSC#B!-mKu$UOiR)mpZVK}MWiu99uPKO+?yl@f8f^6lKC7Nu>k zXcyKH>T74KX}2MC`%O047I{#N9s=RjagI*}*4Kc(1^jREIF|ds`tF})ZD@sIo5ebu zHpm&z?-mH$VaQRFocH6saMZ-h0Vir|qI#um@AxYn6r!q0HM;B2`V#B*Nzi;B;korc zjb9YBTm4e-B(_3pIIZn1$vph>GPH}6$We@RuPpGbrMHS^)^uGT!+#2XG2ZC5H(GtJ zz5SNjd>UMLISW0Vn*@qxh;XtiI?!8(9BjnKYjeCO^i26~*=hG=&dT5J+(8n&5p zrf5k!9X;=0l6l?phQp9EBMwJQX1l1@rCN%NouvA;ZF{@wVJTKsIb*BqbKUf>+8@K7 z6n!S|!hR3Fu+_Bb5tCWFxB_O62j*Cc5F4%zPu93^i(emgA0O)jU$^mJiS?V?i%9LJ zxA8>VZlefGD1aku5rR&0gI!B6g$jJs=A_&Czem{8FA-K;vP-ef9|m3coh`Lr68u!u zrkd$Xu9GoD_~Y!UKH^6hA!ZbRnojqsZFS_{7X^o#jVSaP^Daz z$?R*2SjzIms&y?D<$JF;&>jjhqN++-erL9PE%>?OkA#{>jO~0q7l&@N{{Rrh9iFSA z>ozjSbrJ?7ylv5)K|diF`H2-y&rjDib{eLib7K{rtqiyNZif}>Nh2^~yQM{K$%Bv% z1$h~^8w-oYuVWUZlID`Lzh`~TA#6OOcGBtC`d?1*@4^p+KMpLlbn$ML;y;L(#2*g)QSm3mEj!{(kHeo6>!R*$FT)ch z&AaMGZ4ZAvP9%T(Ig{sXI5+iA@AJ)^^av|owzpAOHV z>WQRJUgjL8=>{ z2Y6S)I(LM$3n|yZz90K@ES8r0nObO)5PZp`z%Awwdh=MCYWTlYziY{L4OdB;Xk=O1 z+VP`=$I+D+IRK3H>)yHJS>fL!)wR3U<=6I;cfY&%qj5Bb{{Tr_O=jNSVS>>+BfFna zS&3%)bf(-w(nQIq+sABWJ4+?Qi5Woq**?8+Fa>2z)Tw@d*YbUicN&pg&FN$1&)PFv zgHG1;&kb5kvd5=sanCwIF7UF-K?ud0ISK*i9c$RXW*uwchK1oT5RVglLDal4@h4rr zh4)b2hf zd{yx$i09M)0O2X|6h0%r(u2WeuGx5LEYehxLP?4R!k}Vvf$N-CkKCPF<>Gq?ZQfE3 zkrmC$0^oi9$Oi;gQ01k5XlUNcYn!K4+V}Fg=J#3-qj#!FsCb%5wOd~>n@dpMPf*NqN&JAWnpLBTtIH*B-I0}8`vu6= z+jrclV`*z|rHO5C@1IW7E(IQ|W&=Et$FDVRd)uP~2Tiw%Q#YCRM7Y}g zlh#9zn34Yg)~6UOI+AvhzWsjman_9D_R*Z}?yGYxwrf!J+Fjyj~G3L-O+130^M2VH*hog5P(Z;QPs|Uy7Ft8 zRK&VTt6jTqs`;_Mf!}BMn^!PfczPJ@ygv%2jca=pl1|sZYQDLV&k{(Skf023NCL2Q z?MF@4HC<2pLd9-$t9{0K?p%hFT;WxCB!EfCUP}?1Yk7hgcb9EZ{l$@$7z4$6Qs$a961hh3U8EZ|&)*w&H7u;&!)dn`rIY z08!=EKH)MRqq2OLz=_Ei<-dp$4ulTE6WoTQb! z$ZjNQA!$@IY>O)$#9x`@=Rbv2`O?-Kwks0{8F?52nFM|&vy`dH*~zw_Yp4GJ0Mgib zPWQX~E&gXcH}Bj<=1(fhgauj7Unj27$Ko+h)3nJoI4&<_l07=hPKP&h-!@fQe}o=c z-1GyHT602b)?CkIm7mBXds}F}oy;Y(n)>2>TTqf~dqTT~rZTe#NF z?QEsl1mFO`4ekf<bRpzRtHExO8+I+t= zEF~U!%2gfTr}eR$9lg${yvn91Bah}=rP%0Kx}4|y^G|6m6<*HKvAGdIn|I6!`L>L6 zz{oxGRHsf=oK!iY`t|&J8!Ndv?bFTr3d?_eB(PgqS;u16O5bj40*@>}V9C32!OnhM z3YSr_w1!gzX7Xi$34-J|oT}g501Wl#r`DpIp&hhepOKQ41@Sj@zpEn@nG(|WNi_?1 zpX|{jT4P+Ok$Z=0ZLaklBG&kMx{jT9I5zhZ#=jtJ9&!o5 zCzIN`CsoEycICfiqg}^7M@dGax_^PCsT7jYZl#jK-xxV4b~z`y4JBm^fUd-TbrDa9zkO|^Y4uYdBf%?fnhvGP8+Y+ z6*}QeY9f@NdkxJK~louWoNG1^cwqu0^e+Ze%eG^lmxoconj#R-G9^*{kVph2d*c zjP+XfI(scX7$J%|p61U`ZA2t5c_>JhFizsF)G!CB>DsGmx}}Alvn7qS=A)=vz9WwF zOL078l*l9MGOnzl3<9*wy$3ltquOpYm{xJA~t)YCJEDDm%%uk?sy zhryOwq;XnnCP!eF*JEL4ZOgwZJi-P6e72f)t`_`qBIH?#0}fhE?b_(`V+mJKjTGfno1?W7D|;^9e!Vwf`m!PxRK z;T|^dH;aF1O>e~i02H+iM_JS1)b%+UPGND9I8o$(vuEs|rF?Vo{{Vn~B7V?*EbxuipW{y* zK|jFH+1tW8;>myFSF^;jUTPD`8nvE}3`pl{s1m5!n8?b^vg~d*l~Y{&_T8&RE#CM1 z4y-kJ;jr@OT5OV9Gtz%*--2Hd{w(-|Rq>~Xu6_yl;t%*qwGZr14q5zM)3m!AEg-l0 z9loEZyx}5mB@~zu_wEIpWRiYH{hR&?S@`3}UO&9?W}m27dvmRk-7RUa$@OYD%F)b(VSM1S4}HyY zMm;h%j>GMw#T~*LEiF|^ zVfW()1mn>6`t+}iZta>gD`N&GVt0@ZM^Jrh?cp~~DK9-Of4`yga9qosJE!Di>C?$I z_m8Eq_XG0b?z6AKkEOdRhzm<(+HmW$MrMq>x@o$OsRlAXz%2Gg-jp(5=0p}+i*FmEA!%!A! zV(#)o8t~4<5~HttX1!{wk`YO3e_KD9HL5}KrmoI2#y58tA2=Hdu|90LIaAO9>-y6? zHD!5tk;H+Bk1ShmY=|+@j-uk`l_VclL>J+6L$tQl@4@AB2{I=FIn8T36bd34u z*B$HU-B#Y^@8w$=8zG1ZBjcZ`D8F<>DRW? z3yYv!qZ}3iPdt(aJ!{f5tx*M_N%p$O@)>4tl%DxL%|%M>ROVMn+fJ*<>y#%dE=t`t z-v0pB<~7aC5=!x+DmrADBMZSkr1hv*Qj<$mYZ*$+>UXLRdF#RcmB~0$ljd^fU7Ob3 zj49N;+}+WEs7AMY>t))Xy2N(mFDH(h#Z#1%dwn^;CW{xW4-wP`st#MCIT=Plxw&TVc6t_%aW=0nmm?7d0Srz<5$n&l>soe~lK6L9 zS(Z0wm5yI`Bb@ZEd17NW>CdXuUH<^c>T<-WI7@zvf5jh&Q0w+KwsFksEGm4&k%kK& zL7q=F?N?!Xajl0Pn#7bIN9%nc^eEl*Qo zHouri-jRYbKDe)Z(sUSZETVzq3|=xaFg>z*AOp7_Y&XX z_NQZdWwu0XchAaSf%u;F%=o%ny%msLt04>s4b-^l_}5)HPZ4O_-hb8C`~vCC)s>{J zF7NthHrEkqP&DWi$r@$UCpkWt`d3Tg8#R_-43VNFpSx#FvoZX5{HlGGsYz8&-SpHe z$wr;GJFgpuw$oz}%LtK24-<|LaDD5}{3UO!-d+cq@@Gx|05EoJ4150og-WSQ4}o&C zZTVT-znPS3LY^O&V^lnk|TqSlDJVIoZ4B>zvo9d?eSWk}{rTkUHT>WhX7| z>s%EoDwJa79dB!PUV#}?o*iGmrN0BV@wSB~vkB}W1i1^7#~#`KRqs{A)v1Awnyort)Wu>Y?H=vz==+~Wr-Q7nk#!4sBZzIu2 zMK+-K_L0x!No{cL=ExkGRfY+dga^xJr^b!lxyghZ=pT0F)q1ISli06jfx#>_F4@fd|oHrvz9 ze2<{Q(ReI6m-B2E+Mbk;2B|bt*e%QEEi%qPl1NW>en>q2J?o{u)I2Gq?bdJMSf?_d zE*qPVI%!)O49X7~rOe~`m?)^VdrxjWfl-;?%uSU*D`1it^tQQknUQJ`D z1#h!i!qOluk~W0|aC?*1xX%}B+J1|n#U`m|1d_996Kx869i!9Iy*t4EEbukg zkq)V=>RMg>(wMHKYgTw<$m1t>Kzig?)YHRa@z8OMlb1{ApUSlqy3{{Tk45aDF` zatLlRG29yP@L1U3ajKps30~`7{jPd4g-OzUwrP24Q1IrncXM@VGd#g98Peuhkqblq z(<$Y~ao)Xc65@Dlrh`x`8cDn7oI)HQyx)(ZHR$FyrxxOty`B9%PJBF+CuwOd{{W=_ z0O8GP@4VPz5XrDcq{TAe9y$#3o|VAs`em$o#(}76#zoVf;bYWh)9u8QZD!^6mI2N> z42tlnFK392?4_-p^!fQ6^<_G=ug!PUbE(rJ(=@y3H2W({neO0emvKR5_Y1v8FA^6 z#&KRlrrzt9GEEJ(t0lC?byU-dXK$GNyHsRwPBzzH3+6R(6{<=1w$@hb^E}L4Cn%>C zYjxE7FT*|)xYDg=zP+1H(Df)Zl9x9+_Lg7m4n|Bza*(+h#xN>R1blArg_fOh;oC2S z7rMoToy?}`{5K3QcP4)K?ua=;-lQID=y2FPw;9d#nvMzV)!N^!ni7>{*Dc#Sy$|E3 z!i{r4)_xxNd*N4!v|k(Qq2|)$)b4C-Y?kRcU$l_>l~Fvyh2@(A72(g}Uk_@~O|NQ@ z!!5R&(H&0BFWlTky}9#>oTBF>C>#S%6P8lI)&0#^IJ;|WFH5~hsZvTemg}edIqF{v zeiZma;})0V7(5HE=;`8p7AAvF@QnIw)1}f5eD)>PvyukxMh7*?-gwJZ_-P!!4{Urn zrpM#68%C4f*u^exS2&sNCS{2AwFxLJMGauqp}OKqQece2$zm(1dgDQnEM=)d8PFU2-qCf2-3CaL2IHET^oG;;WB z?V5NED&*~A1{HY5SZ5@0UtD}X*56C;mZziqWboFb;u}BgY2U+MAkyp>OWP~l6BhEU zP{ub7Tx1UBxp7r+xa>bITUq=sv+Qqz`Ol)vpdst9UC=`*rt(ub{ElBzSc#7sY-Rn(^a+E(FPQYCHBDSFV1-IK;7C8l_ zWoA=@fsA`qo4qFE!Povqv*C{u=(_tUlGjyB31z*TzU65K(h2HI00%)_&ZY@tojFU9 zy|=W!Z*j(*pxyNR7on4=-D+Cu-rPkraNj2iB!tT}(-EDjib!VQl16JfABDa*(d^;z z9mb)gE~~1ti>rI>Q|y;^@G-&z2_e{Ij@T8^gNn;)w@N1o4+h6UE0NAIB zX4D;SwJlcRuJth)Vi1d#3c-lMCyeLXyK!{CwJ@@j-z>LHD}Da}G8CYutn_8QU%`J5 zz8`CPmZhWEc$ZLy;SH>>VH7ssDHxD7+>-9fl0YhikSoAGE$W&b&ZVWT#+&1R6aN5a zXz3NMkp3uPXAD4LQGa*4f&3#GJ!_W_8PH3be5?`-7=}s4NM~Sn^jvzHyMJ?L_fc8sw^#Spmgqj+cXFtX zWdkjea2r0O09I8MFKXpU-YctH`UN@SB)#;n*Qse@Qf;q>j`tTXg#DlG2@xyx%U8Fa)|x}JZp-d{zjM%rsOu9{qv8%-+Nm|LUcK6KM?7-!Juk9zV56IHv8Tdi7S{h@Jw z)7;G*f;foITm<{g*A?sG>Qbi;USEH&TYtegWYpVjX!>9BI^7WJn#8wJTcX&bCd9Ub z5;UX&6~NB~j@6rbH9H%%w6cTGmq?Fv_Y6dvLjM2>0goV>Q?yk55d0EaVhf|FMK zUfzhWZybUtudbqRwaYkVHyq$Ia!4Kj071uEY}dBBw}@?gFQZ>wPjh)RVYMH!Wt=b@ z_9zFZuO79v7)G4mB3f&%?5Ij~XKPtKwMR|kX>9H1{>;%GA=7ke5h60&d9vJ0IA@Vb z$>%-mlJPIZ9}%aAbqyV2wqP{V1OgV?WoPS_KX>pPde*e4P`qa^ieH2D{caU7%B<9s zw>-y7gz8r|8U~EQ(@nEM{jaGf`Y4)WGW(@J!lxi-uU`1CaPYT+BD1=-lTViOQkL={ z6F_@cmTBF-?jr?GGlR}O>z@}=uR4yN@814@@Cf#fl{d|${{XFzYHx)4KZUftS6KLs z;+)0#5l%p`vi&%YG2FPS`+ zw${E(ix6o{Y@`E@S(_&u4wba=QAu;9)64Ma$*z>6cw1Mk{{TxBBZ^i>fhH$%knJ;k z?5C(L=~-WBNj$}Y49{$)F>M->h1c%xQ}=~w3M!l*I@5g~tV>sB-JebVMpgC1R#s1Q zt%;<#Nf2q4+H5?pma#3oZxD{+ z;&@a@EbW+Yjk|8ot~*yfDw3m7^Jt%2lV=(9SNZ-$0d~5b!+oj`-^Sr$fhJtXyZD%# z41Y6QHg=YfUNjnf4{9!OOvEUWeR&)cobg?Cxw%y1Ew^8hGuKqCy1xGaaGI{8r)gH# z{(b!S31Z2ofVO}vl)Pe$%F=?<#4eqOTbLHFHsRbTByM}ql&rE(a zMQARdmges7ZPYRC{?Ch1{q&4ZOH9hRRp%Q=BY{}W*7i5$v-JITXC+xTC8NH|_WR3r z7As|N*H<5AhDCu*w2dFhxsS|Q-{!^!FfmK2>Nld<5#HBTj9YJ#+RUSbLOCkA%Q4TV z108B6s!lIQZTr~K#&b#y-7fl($Zd=|f0AaiwKA!d?!rg}t@mSA`^uxgO6D~aGnbC$ z?qs!lmqu%6+O4;fw67zu!S$|XP2k_QjBjqb{=H2d3Y6D6TKRP=-dlqjT`iir!)SiY zk|tgdeLI%x&w9a|P)D$q#wlf3<#6UO*>XYQexsW1P=+hta!uO$_wqCLZxKoJzsF0N zkgUrj@-4TWGBERmvXaWcWPGDPH{eBVSkEWgqmzG^HN5_8a-E8sxW+*MjCyAkoLfoM zZ(Hks$!a;&=ELZ;@@B58XP#A;RFYZaSl&x;)2g%OiQCQz8;Rg#)-|2&#l8Eo+=xb@ z6Gd?y#48~& zwukuSV~!87=N)lEL34AcTBI{itod4poME0tLh&f%nE@FJdMG*ese-)qYwoxFIi)n5 z71i!^I_*qpT@xRfJQI|I`yg^FuAqxu^#bbUfiL%ae!9Y@3fE<8N;a)B-v^|$KMy&Ko z{{ZB_5kF~GGM0_+q4q!Qt6|{(00a$ZTk&H|$*;o}lzcdvRJRK7O_J9a5Tk?T?g}?J zV5IctHTK4b@VCL974iQ7h5S=vrD-}2kKsLYNWO2Vh2^Ow?_ zfxK(*{^!Qp7mvJWmi@Nj^b*yQ=e0ua?5U^?X z`c=Xe5#bT#z~>dbXy!4aO7dLOeA8)J#yhC|%+*Ot5aiX9(QCisx$#HA-`Qtc_|dI+ zuiJRNt6KXnzv$LaFTh103qG0ZlJcV~5$3@*=Z(VqW z{{UoP3jACBll~TIUMAOduL^ui)-B)1nxBKrT2-u8>uL5&mby^U-D?4)lG@TJNHK0M zs!OX6Hl8~dkH^ZsCT&oLscU!Jt&7Ia6{X1-r`G*XDfqMS58@xerqKLv;~hyn7vj&0 zx(=y-t$YKzOKaPY4(Ss(FzPzSqaiXI$-Jpp#}M3z0&e-3*XREL!HquB%f`BYi@a0t z%f*(uCWrBbZ+B;)$0HL{U} zH6)f?DeL^ILE~xU@ddt}6S74F;Kp*Na}L0cPoVEz_-g73Ue#X8-#=cZxN;}WucFuQ zK8MwOZ{j^O!|}!zL1^e0$m1s?vHt)$uZTQ(uioF!adq~ILrQl!ZZn+Yj^?+*;xPA* zvVQfo?SD`BCq$(c8!O%SdwN*%C~w|JTW0eBeo+t1dF|_7rJ;C!=-SJ9<+M(bDKZ=o zK^}*{wQDtaH==L8ug=FFBBWJa?Xv5CyyLa$=929#SVYQ_{_K_`C%!ZM`&X>^a@yX* zO8Z=I2yE|sjl`cqbI^ZU<#gvlqE71lzouN3D8?~+zw2`K=Zfs+w3-R=6Us1>Bb6hs zW6gPOtd{qBtckH+V<*Vyx!O-&3FPtD7_WKJ!(r(^XD>UND5_IRH(#&lLE`;2qf*u= zj0)wOY0mF{G5A-RK|RzA@LdT2XDyOBJadZk@h*y_s_T2LU-@<|IC8fqyZQbFcS&5w z_I6Swe3o;|0oc_WoB5%bNgD{p+%#(6f#NG3u z_Yg?!=17mrw1vK3L7#tW@BCY-$l4mL5QyEE_p?L6J$UDgeK2Zp(Wg$gHBHw~^VH&L z!n$&Im&ozo59^N&?9k7;Mch~o*g4NoYuznxqSmZ&ATKh;z{xX`NF5iS>s*+rMb2_f zF1CM-ywUB#T+f-UZPxz)@W&5yEp+ybEN3Mfg1l!u{NA-fYp2%Z`y_j}hXtJoAdK|u z^sYxJ(xR$O=>Gr{kCK$;uPr|>_$Sbw4DeD#rHh2#^RzjQ8A<#W|35x*M8_5Zb>=m*0L@vjDf&e zi!_;$bAiDB0QLLVRa$ey&iB2)Q+Fsvw=XX0`d*o1+GPS@}1bJssg z_FX4ejc?XKu!v)r5UD4Ar>;BKJe^ljxxSn3M6nR|t#bYEW9W?=TheB-6Hd14^9`{F z1gjC8n)%n`Mxmrh6oS*smPCK`s8qH;6JCY~3thp^o!@(o9IBr-t@b=y!qc-Pw*LS! zGY%wX;~jze*38#e`Y;k%%0@X-oc^Y+b!j%6R!@C5^wi3;jH+Gff9l44$BN{?C9gku zyNNdgf_=W8wchAD#5T}x*gVfDe90*!4%r`C=ETk2N1IO9*tpiGN}c5HuWM|Vk%4o2 zHod7mzni|@W!%cEyBQ~rO?_|h&%#mL>Cw+{rQiril(5{V)Muylt~|n|?vmYi)rKZ% zC1qvznO_mSNHnWiAc3M)jgDDH@=iJsYvbFm6x_|L3z!~LvO--0V4ivtU9|b5Mf0sz z&Hjc^g&JPk4Lpqonm(T*83%^+QQ(=0BbmPu4)l(MjHKVN&Cd`2UDMF`b@>uRGgtL64(9#h7yfBm6hK5c^!|5{CV~u zvuU>{Opj-m1Xhs~Wub=Dg0v8{Jhk8_Dk{mUf)W3f?NTZM!^-jCJi_35BIn z5{*|Cd-l}(98F4Ymm*hv&T`)0P_Vh4+9gYC>1HoBsd#cg1MaCk4?gwh*Y9@MH%oNJ zQ*7mFQMj*~sbl(8^6b>5}4j022FLBQ$wSDBq<*lcwx>lXTX_eXXPv!_LQ^=Hn0GqgGe zuQc{iUD{dPN#;hPUHeD(0}uhnsjHqE_<<}JamT1Yvs%8>+@r3F*kE582#rIDwrUHC6UT|7x=s@;{6Hr6Z>KRNFpW(HM=s^JdYkDQVT z2imf=-8)U!^_#f79j5q)!=4Q?r2ZZ7#;@Yt?-V;n%_9P$NedEwKsJMn91~t`JafR% zl}dANQg7Y2OK+!RuB(N4+Sgrgq4Y0Jl>)O|u;VaEkob{5jfuP580ksQe}1T|34)i1Bu@;Qs)$#bw}a zHp)#l%1e{O&8kd|zTo_!KrT4w22OliQ24X)PsesJXtuWg9Qb44YjL(66TsS6_DnPL z%bAq4ug9xb+thh}8GBhTdHgGMyzKh=oKsV)1e|QVy0eXK8Vh|=B+>3|?t=zvo12@T zwcN^7eESas5_)H!t$J10hwL=X9@kmF(KUY$t>v_BJ@&bFqU5%7wj@rfan5%hdBu5k zb1B!R>D~So*YZMCX+mkqFTeEs$*g46JYW9+2*tmF{uEr>_=`ckxc<@jgLC4WojTs) z)=U*yVpdUzxjTUYfx#SRxc>kb>N0pg#^+M-_K$0?c%Q=h)He;|X1F)@dW)PLh^#WZ zIZ#0$n)Ps)r5RJFI+B$*{oaZ81uFBLos#^|XPfq=_>bckNIt`*d^*z>COW3Eqe3pV z4dXmUCc+>m+dh@y-aYZ0-apo^QtH?Hdsgy?m*P!PH)=8k9F{6}V}ZhsmD`SZEK_o! z2BRID_`YvujHet-73QxlmeBIM88!RUK9Ql=Mq@WyZl#7bh^&Kx&mmI79XRM~)^x87 z{6+9xq1J9L>_wQi^CpVw26kbb4XwZ@Kb>N+G^y6)oO$Bby7l!r>C&sodFdtjoqvdL zwXJ``mOdw&O|Z4P((b@bW5gHF5tbGE@hon3k&c)d=ZdqY{7cbo^eg>W!MaA5qxhHX zzD?eb96xNZo+HD^a6*RU;g}!Bn!-?}P0csTp3i6Zb~dR}7gmyQwXW~#dH(=_^^X@^ z$Es;*;eQZodVZ@UyO%+VNMMI2=E+q9XzRBkzL)UF#jBr%z6kMGglxPiVd5K~9z*s^ zn=klDzqa+LVi*L*>nTfNkauS%rZG`kmJ1aZ8jY%bZK6-T!j$X6Do=N?{{V-uO?z#5 zES?tA^zC)dG(7^w@>p!Gl>o$-S6}klUB^2K$JVU;TllNt%fABOcx%KO--+*hK@3cm z_OMz?k=w`@YX!KUaWRvVwMZV7oUl}JH56kc;;hrRZ`9k`R;LbIUi+UQcmmH`(Pgpm zM6+s^K1JId4m~_9(s`g^ToykobNbVKN%0d?ywoplqqWtq{7VhN8m_gdTK%M!!Pu?< zDZj3B`Bg@;sa5M_yYJ_JFCv{4LkyggZTao!hUoqr*8EFkJYC`hmsYum5o2+yc#1g9 zvoAp%sN1nH4<{bgE|=mz7x)zG6L@~>Px}U-VwPAg9JH?MpP3i|j;EaWqIs?#4Ty}Y z#p|ZlR`T*WKCSJx(@&Y$XkQe5DeJaVEy3`%k>Q9gM9+1qXoBu$kafo(upIDCGeyse zb*~U=ORmFc_r4v|AXWQDg#z1KPjkrgSx?HNrvMmb1Y8KGMo@rs6rqC2)fq(}!!|VDL-nuNUFJ9$s?G?VxZ;zWU;&~- zndjXU%=~A`1p9UBO>tkD^F5ZADwdLKn@>X4y{u?jCx_cv)NbIlxoKJ(T`Fl=o)||a zX(9e2)Bs62uOHC3Zga<9ok|w|d@|pAU6iD^V7jWsZ#-7t|!bQcJwD ze(hsG0)diEdl_b33``{IRZ!}#o4f7*00fL=s`4cpJ(tMgY&=1yUg`FcY1)>hYo^@k z(Tnf2Aa6EgbDfI6!H_=j&U(>lpz2!n^sxoA(s4M}!M&vV zTdV7HmX%E|-oAT(!-t9P4~6bwwY$92658_7PIUQ_Swawb2tH*ews3i>I(b+vE#k4# zFKi@a%re~WTZuE-hg=>HJQG{c!^))(eYJ11YisHLV^EB0IZIU~Z%%oGbJmR9=W?Oo6Mbg*Hh0F%byxDHQTn(Xv(J=FG7 zSXo`En=stlUrdHiB@t^scjkn!VLG~FH~0`cxU%3}G3&D;*O_;lY7UPm1IwxknM(dC+5LiYZ7V~N@@ zNQjt-EZIMF<2|dHI{wZv-f8dE`Zi}Y?5?{109H3VJuaPjKCffq8_iotx+o;lBC}EU zb8hOTfsY|~upLPXp!Xn?=Q@KOLg+qG}L5_kjzyG z$x?7QB%fYtvdTbqHq+T#J8YKXNeM=7zbGRow+q0osN$rakEedUbRwNeIK3|4;pk>d zZt&j9@LhS(x{~<^a9ncVKR7h7+-X+UqwEi2lZcsaA!!-B$w?V<#AS~j*v)0lItz5Ex9>8dQ;N=IX6SOE!HbpBvgE>;2r}Wnf$q{b5nzqo4-r-?ebnn zJtazjw>2!ohr(ll5ShRzwpM5(}b0iwx^w3Lm!Cr z_`kL^y*BoHJEG7{V=RU^_UCMVSt=XfuUgTt3bvw4veClPZOH{hMyB43C@+{%-yxKZT|qkGo=c3D!H|FZ4C`VDCD}D z=I0a2$7>cMLyG6FFXRmraoXC)26oy?V+as7GNS`=9l7_ZqgslrTeII4VejT@__gpR?zR>|vHy%b6P+>_Mg(pjGiX>sbeek8vSHI26GZ7SPI znn^EZ&oPOV1&{sq1B%L3oTba~t=_tM>-i%6v}0FmBy*bXv2%ZSq}I?e!->6w6 zhLh}ij+b?5q@OrO_foX?7ZZK&B^(p-g&6?!uA1~QGo{u}`s%Fw*1wT8>Qswq>G^!0 zc4FW7s^0fcn%Om5y)N?N7@F_gw zEUO_xo4Rd5$r&DonskGFEu*%&nk$KJe5)@u>32iO=zfL6b*Qz;D|*@Mty_S@7?Iyg~azpASK$=o&Vuslb|V zf|YT)?&d&CTIoX#HzugS%H?cT4#w+ws z_Ob9jvExtKli(HBm*V|*!CJTM-SGFqS|7!K5?^V?c;nGE+cmov7A%YBI$7O37E`i< zRT=~LK{Yh7`Gz`m>ggFtX&16xFKx6raX!NjiKgO{k5Bk-Q(NGwduGWebQL4MIzIv#_2 zXMg8Po*uP6>@v;P2wG<{9H8}Sd~MzyGG zGQ+3Z>GE9MMPq3lte2BHkXzbXMyMhn2~ZY2STT%MYI#l}&b6GnE~)ISy7fCDMsjP( zX!iUMS@8b=$KQ%a;U|W)UkqsRUr9cJdErlu_dgNsH2AD_e-_v@i+w6iTh59LXyHK` zoHWfMouee5#NUbb!0Vd5+Z!jI;`T;qYylDV=%c1T3i}=#l^WDvvrW6FDO*PSdiozL zpUKKMz0!R(f08~}*L5kh`{E*JF-%VQe9VK}=03jNE1mHcnFga`W&>n_6z_~>vIjjn z*V9#$Ak{YCr|NkWs>MrPlH2|X!}uj_thM`WpE@5q1Ul^?pO;=pjeoOE&wGB^AwbAB`O%&od$l4SRI^!AQzFx3~ zNxV|G*4tz;PR2OAkTH|jn&`#Se$Cz4dcA^@ooP0{7rXrrt*>=Ayzr^Ec%4a)ks{{| z2Tx&|`TY1LwHPktolwqWB?O}?cFrKK=gym3vVlQ?R?Vhm(Pfd;XP; zO45pq8qq!8rnI4ll?%yTt*^iJ-0^=BcwXw==0-^wqC&eR1d+#~#d+SBZzMOX83Q}; z43YKcjyr!!>Z@K8h1KoVUrUuWN~JW@+3j<<)LuolR%sY~plxzCk_U6^#(x^~eO@_k zzjqWrBt0eMzI&Y2I`~?u_Pbtd_3PZ-I#Pt5oZh!yr%9k_K73JN13O2A0YQ*)+-9@< zMW7-`L}D>4fr|%B9mBEb*147)Sv7m^^s--h$MuL(sdkfpKfLF3=x5XJ6_CyhIbans z57o2l`cn9V#j)Q-C5s_h)DUM5PtEQR;3<7lg*WXJ{cddzIevKQ*Y&Qs zHmGy^H1BO%{Elk;ig$bN{zqYT;(Lt_Id|q%VYe(v;PmUwc$bJZ8;w%y?JUx?QxBYy z8Aoya>!yw=;jaE3Wo)V+8f<&2m+g=~Yd={{XGO%$Y(}V&9$DYYx*bj-9GPrU^GAlQXa$TVV7j z-oD82{{V{g`#mZ+B!w+Whj+{KU}KTN{{ZXOvY|=UQcmss?q@n`ola%9;Cbha>}|Y5 zXFc2|ARP;C2d@X}NzdV5D>sF1VV+chCAr${!Ib3WbnnG&RugnzGSh9eUq0s1YIK{` zuT4JkOKmPylWADQPx#0%A)?L;(MXkIcUS000SaNLh0L00FxI00FxJI_%@(00007bV*G`2iXb}1Pda- zWH)3000A*cL_t(2&#jO@O9BBH#(#F6+8;~|x>O`B4QVNF5u^`rH)JV+ZV^OdV;`Wk z#`d7S80M^`-gzT zH!XA^j3384Kq%W!5enG@s3UQa?U>NU4uOPc^vrC`_GqMjK2WkN1ArSi~8mEE^r@t^bq XAv9i>#+k9J00000NkvXXu0mjfEn}^) literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..bbfac38d2d2b85169894bdf1b5e800cd042e6c31 GIT binary patch literal 526 zcmV+p0`dKcP)X1^@s6sPETi00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01r9<01r9=mpR+Q00007bV*G`2iXb_ z02wGngYHrQ000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0004LNklZE0mJLLRJb3N#2FL46ncvI}0TgrK~K}ENs-E zkxZTnLmBRwxo0fILaZHif3M(Ew{tq*>pVZ@%TOlJnxfViW3Xi+g6H}8ehkL}1@KZR zaCCah*1;Lst4AxK$`zU$su&;aprwuHX2Ud2E86W9mHd&7=^5@vl7%p;m zEbpYLi`S59uR>|9S>MkvG1|}ca0fPRpev56TvoT!EY43N#u(18A4xXWV&jsHwPddz z5D^5R6dEf&{ZDg6D1{$~-cI3fw?l-Dun{)GM%V}&VI%Cn#wu3`Eo!gt#h_gIY%-xW zQA6(L-b!rl=AO2uIK~*1=le{JbhET^NLUJKv8=&1_tPxQ4WV^_^OVn*gW!!!?wPf{ zBQCDfia+ Q6951J07*qoM6N<$f^*c}CIA2c literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..9044226f855dbeb3d38a07aaa78639a229ae9171 GIT binary patch literal 426 zcmV;b0agBqP)X0ssI2CyhWc00001b5ch_0Itp) z=>Px#32;bRa{vGjIsgCLsrfwU$*#8Th-#N^{p9}{Hz*I;%krEL>ODLtLX<3#{2p9k`8jpLv-+F3t&NYl@ zjAgUg?efm*+Il84XGkf+FnI91>VB + + +]> + + + + + + + + + + + + + + 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 index 0000000..fb69337 --- /dev/null +++ b/examples/declarative/qtquick1/ui-components/slideswitch/content/knob.svg @@ -0,0 +1,867 @@ + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 index 0000000..0a869b5 --- /dev/null +++ b/examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/ui-components/slideswitch/slideswitch.qmlproject @@ -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 index 0000000..73b6431 --- /dev/null +++ b/examples/declarative/qtquick1/ui-components/spinner/content/Spinner.qml @@ -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 index 0000000000000000000000000000000000000000..b3556f1f9f7b43b467a6f6ca74a4927c310ee045 GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^fpNMot25*#A7;b=Kfg{% zt(+y8nY&GSueHMGJGKIK=Tyx(Cv(b|I_7np*tU1IWZ=~_w__5I8d-LFZt@8+Jy&8Q z@Kxd?hj9{b@b8eBD~?5aNu`M{Idx?9#-15VOZNL@)ATg7*1uPS`Sb)w_JgC|E!c^E&de7gFg`?1aW_s$)QrzGWg zT#1Tb-G9UN&Uf1|`HkHY$r92+#eT`oJ-nZ!8F%JPIL!toB&Abw0%ESG=5&AsHagZR zFL<$6TKbVWlaZN5(Yg6o-QOrhWfy-H++DHGEPx#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igM#0xunX zk)P23001I%MObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakAa8CUVIWOmV~41BLjV8) zQAtEWR4C7NlCe(1KoCUVuFpY%0wI9}9{>%4pWw@BsVPAM2`QA2ASKx6U5Y!~=frGj z&&8t~losM-cN@-niq88b?U;$p;JW5#-CCcp$RH8D~kwGbdc5 z@7xku58O174L7VX^oJuFl<7F27(2p-V|FMuS2oNM2@*$oBf&g6tc*gp$9~{RBKp0tGfOMdQvb)4i z;#K|<$buY{?Y)BJn39wCt14_%=wV)%RCELg-Jp=vTDqj*xq079p>$-7sFReF^bzc}rfIZsWCvmhAC x0;9ochfszPx!@6LykW%>!HQc%7MxO3^9RB*qNy5mp=SU9002ovPDHLkV1nx1%P{}| literal 0 HcmV?d00001 diff --git a/examples/declarative/qtquick1/ui-components/tabwidget/tabwidget.qmlproject b/examples/declarative/qtquick1/ui-components/tabwidget/tabwidget.qmlproject new file mode 100644 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/ui-components/tabwidget/tabwidget.qmlproject @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/ui-components/ui-components.qmlproject @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/xml/xml.qmlproject @@ -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 index 0000000..8b7f1e1 --- /dev/null +++ b/examples/declarative/qtquick1/xml/xmlhttprequest/data.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest-example.qml b/examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest-example.qml new file mode 100644 index 0000000..9cbdcaf --- /dev/null +++ b/examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest-example.qml @@ -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 index 0000000..d4909f8 --- /dev/null +++ b/examples/declarative/qtquick1/xml/xmlhttprequest/xmlhttprequest.qmlproject @@ -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/tests/auto/declarative/examples/tst_examples.cpp b/tests/auto/declarative/examples/tst_examples.cpp index 4a3a085..4df4e12 100644 --- a/tests/auto/declarative/examples/tst_examples.cpp +++ b/tests/auto/declarative/examples/tst_examples.cpp @@ -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 index 0000000..b20e907 --- /dev/null +++ b/tests/auto/qtquick1/examples/data/dummytest.qml @@ -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 index 0000000..d31787b --- /dev/null +++ b/tests/auto/qtquick1/examples/data/webbrowser/webbrowser.qml @@ -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 index 0000000..14756b9 --- /dev/null +++ b/tests/auto/qtquick1/examples/examples.pro @@ -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 index 0000000..c2859dc --- /dev/null +++ b/tests/auto/qtquick1/examples/tst_examples.cpp @@ -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 +#include +#include +#include +#include +#include "qmlruntime.h" +#include +#include + +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("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" diff --git a/tests/auto/qtquick1/qtquick1.pro b/tests/auto/qtquick1/qtquick1.pro index 0c3e249..489accb 100644 --- a/tests/auto/qtquick1/qtquick1.pro +++ b/tests/auto/qtquick1/qtquick1.pro @@ -43,6 +43,7 @@ contains(QT_CONFIG, private_tests) { qdeclarativetimer \ qdeclarativevisualdatamodel \ qdeclarativexmllistmodel \ + examples } -- 1.7.2.5

    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

  3. |<6ms#1*Pn^#(PK5OwszPWv)+}>+f%W&~rG-FYTL1$C|62qY6 z3hn+G>TzjWCZT-q6t~tI2unNC!dX>~%z5qdlBD$DX1pr&u+p^Kdbei#c0FoT9VqCx z*UJe+DD5XU++&* zvpu-3sn6Nv%_$_W*3WYXdE?gFqubIM^o<(+@m}8A;_5bNmRBUo+z-zL@t^RnPU_|> zY5v02ZJV@7R^s4fDFZw&em=FFTIEg->#3zh%`IK~c^^f18v9ea@XJ|9Zf)%(aPft*P3 z*Tc@6z3%@21F!KkI>n`?m#z8muB|1s(OnoolYEmBcOfGohU3p__}AiwiLPsp6mug9 zEpAQ3cR`Fmv}B)|x{^8V(!EGcMxt?k_Qb))Hq&3kukiitG}}KE>T;OwE#iT0V<-2U zViAzU{{VR8ntUQ7;w>-4HsKspoIkazr4Fq#pkOk9uni zf_XXX^{J~T8LRANB-W@n=N$JKrtk+j$?e}YT=Ki>g7R~_*p0{llafcjCZUP>!D2=@ z2mC6dXcX5YU5QI5@0@lXwHU@v9I(mmezd21JqhNs*YX&gu^oZyj&uEL#y02Iu6FmP zot4`&X+6l;bO2-1-k?7D&tI)&%^rJesVysNO&&oxC!Rp-PABCa=Ze`{_ul=+o02O( z`^O`x%|s4(%cVG#s+hb znq@G;^v6(7ddA8UPWOI9C$9Pz!4DWYB!SPZQkFIdTLho>d)HIu zaAQ$j$`U68@sd8g)bOq&Q`iqqYZVrhxmK3$MZMihmo2jcCmXr>X)b_~U{PwK55CBF_ zYIJeA68EF8Q&!#|-693xH%VONewn+eE1oBN(Y$?h2InP?sF;1S^mpj>aGVWND)bo?|tV@Pmk&U>? z>0I+kY4Z#Fw|a?anB3<(Na>EIscH{`NBcjGA7beQZS3xjGV#MP#{-|0tA*599m+V* zLWc)6P0Chlp@l^3q>;s6Ou&!<`T03uNj&!NT&3i!+leKEG5 zCn-BNweF67;DelP#yA^u$m#fTT$SUNBtGT?C4_8n-(SY6G}CsFq^GOfUsIpB0I5(3 zED6FfAXh(hvVf#3moB1TiS4_>_Xt`Ak3 zY?4(MYTyvZIQsXkWl=%h%SNqk{-$ZvUiP~FXD1}HO5koKdxOcQU9nqnwVk&i+@N!x zde53Ljjy3oeA9ZQa#tnglq8PHf(RMoj7^I%H`~ei8q%C>wAG&_c&^^!-&r!jGe+*i ze0kixc_+SWnbxdD)#Pgm{`FXSiV6Ftp1o>4uPaiG)3v@|iQi4GOY6~e*ZT840?W^W z3u{+`Mw&}$16(tPMFW*z(4WSx_fiP9G-qpD$fb``X2t^ zN0J0c6wa~WX9WDspFvk1T5T((-?@xuS9)s_pEs@I90lnKtPA%N02}^}z?yvNhde z86?y7TQ9S+y|G8P;f!oX-<@;U88|hqOgmDHwMpr(e#mZ7_HHk?dwxD<{+Tqe>38}i zobnlwV?~`sFR<+}p*eN+F#lB2CD|lhp8Vao?KhSZT$tK9>^AS0HDT?OrwG4I&8Ld_APY6Wr-qLR{*uim{|HGOi9sFSP)` z1CHJ6wk^_1HhONau;nchdavtlr-5p4sc7Z1jyP>q+06G5vMQiF_3lr$d9OnFOR7X; z&~(@>uOri6#Pi%-S;QC{fQokHjt*Ie865{+m8EG<>ep)R_t$SCIpbCy;&0cWy55Va zX?A-4onxoV2iQDu1-7GhU(9oRcPg`Gx{#5Q2 z^KGM2i7?CW8%9}y$p<;kc&;2$QlYEYwd~C)MiGAg&$*#%;2l%MdY$%{tk~H@d#-6x z>X!Z@l3k9rw!BFfk)A*-2f5>l<2)PSZ4*k@d~0Q>>l%!~G+{xrJ|>aHhquByXD^ybF`GV{sSltY9?B|s{Q4h6X}%)E;m$#JLZFo(t_jad#+6#M>NwQbPW^nl6uIg9t>3BO zKed*sy4;>K(Y!0IY8pnJ@q0?qV!n?1MQ?*RB_+UDZN;iiqKU-)N0d)6p4xgh&Ucom6l<$V50+RVMPUp?OF zcRvnO!s+0P`_B{UT91b<+e*8?@YTNIZ*dmk6u>su3%jllAao-&+ciSFRMc&I>Yv|r zXTRWWLVT-hCcC{)OYsMQ^m!BD$BbvzrnS^9v@v(C>H4$E_nMW2tXFcr3i+`IXxD%O zkzYLgCbiZ4SEX2Z7V}Hhtd_@FzqFrPx{qMLwh|VCBrl&fRp@qsfsaF2<0w-4tQ2AI zEgNt0MpWxdmFT~(#PzQZTxgg701a++UkP}cZxHyK!JaOLO;f_xHl|DKO+Mb>E!?b` z&yr(lF(4avU>fv&b6wH&_0nzpH!SyhEBI>0Y5Y-jZkNci$kG*o0x$+e7-D+l;0`N- z(uE|Tns;i~)p}{MFpWx5=5K$%;JyxccUO}C09N>cs(6mySG@Rvq{J?xx0PdSS#6{s zsK!HbNC4!4$;EviV`UHa=A&_8a<@0KSVF65X%UtLX%)cBC@NU(Il<58Qk5G?tLpD> zKQnbwa+h?jcn*=E=~Mly!8f*6T7AEZG_7LV>iP>JtfYr9$>p)izuIF9&Q8;j*1aOr z;$7E0rjYaE7j)ipW)`Z zp($3Xy{Fx`^|6cN{{RZ;*0!^0dbW`)dQO|-yUVQ>*4i@#)#MTaBW=g!Sk&-2&nKl~ z_&dTjS|8h@wwBIGVYFErPLgx(x}v~&1+u@={^zgOqxH5W4iGY?Yp?Xh8Q<0 zOv(&QvHt)TT$8ukJl02qG#~gwGXacJw*jJ64xZw!XL2WrE*P)pchV7ly@_87=m5QX-*1JBp5{ z(-r7GA-J^g4}-7ZjKynfXQPvOb!!qvWND6BKnHQ)DB3@%u6Wh1B^H0nt^D{J5U&d)&b*Y;+sHl&)3#j_P#iz}v=%ypC5dV-^; zA4=tQAlH`HPS-YCjphEb)5ROw1(rz%8<~&HP6s}io&8^lgE?e&rPpgS6 zq0-0}*0zx|5QzOtxhuQn=)4|l3><1xoUdl}x_y2{)Px#Qd;Q4qza8p_#=2G9dab)@ z)>>xPw6$g?1!i8j>dX(VdJpXDB%Tw3=U#%#OuLfvPx2E@w?c02R4~MYj1QP&IS10J zt$4hU_(;4CwdzKiMX{ z)h#Ywd!&+38sToClqgW=l_P);Q&wd0uA!i4Hy677#*~t1-f7jYEuk^WZHnV&(ZO@a zQ;Z(<%}WbQ+eOoDwWhm2k=;IjX59Avx*Q*Z<(J16dcTT%H5UH>3ix)~;^NoHObD-K z$&n@OB*qV3IIpbiJOyWK{{RS8q>;ll@5LJxw9^zsll_u2YP0VsK_@Stm~`jqUHEK5 zt%-FS==6K&d3cz=WUbZoU)JY|{7&#M{36zVB=F_Fr!CHt3|4oL+}+2PX1Njxl(7JA z5<+mRoGT3A*OL4_vzG6}9yEhTWJ}w@XAE~9R_BlR%h0#nC!TrEaqc+rw3O+tRqn~@ zt?lyv0D^mXc~y#PTIiCy)cO;~;!Q6_({3a|c=jt4Z5U(b2!jlkBah3aeCy!&ucEo} z=DOFj70WuQT3jx(tohQzBo;bS$!4rGAIg%V&NhsV`b0ErHCZwI3D%V+iTjK zT6c-GXteK{?^ao_;v>tDGjp`{To&iK;<3V1SY>5&@6_k4ompMKFYB@CO8zLn(dSuo zI~%AbmNR*%$XHDT2)y|U1`9KF&MV1o?CkX^b-gQ7luM@R+I87k&9U7dnHf-}LFK;p zL-?|UA~{?r_CBv!_=uwMQWb? z{#rJ^?~(qNY;%*r1m}*m5$~LF(2rXBon1cXlBLY`6$TH?eSZ^3*~h=ux+K)ssFL?} zBHTeaIOCsxdUkqpKb>Xn+xqB2YEiZIB9P@X$9iOck;XyAT|2n9-4>Iz*5aI#ka+ZJ zQUDx&CXaO_pU>3A%KQE#XfWTX8LLOz*MMs|#X&3e1lIeqCpb_zCp-^&fa3=wee9ol zpJwFl$(ww{(Qu`>!R`eQ!j4BLuYA_ri6z_;cHFMRIl(6ckx?-|xF1SMCmjitZL1+C zBP8Gv-ldG^1oMH{9Mve@-7okdqx3HkfVs%)$m>uxdComX4s%eSG_KI4cc|QMz~FbN zoM(bCx#y0iu5wYg_5T0_hp50X*%%oFp7k88P6j{++Xkh%P3y52l9s)UxtGue133Wq zt2U|8jtB!gz3D5$E?bd%KT-0Q8D2-J&m`7N&T@IiGv73F#YH!5e1_L5wa6M=uRnVo zO*Ki+EslLEIenh${{YwM9G=ZKk!B|&<=vhMT=z6QtdVCuPEH%GToY>FGdQPjGK-%v zPgNzk^{b^qDuCF^=LeqEcUEn$nA1(&_A_Mp-0}}UDaA)8%uxXt9`(&WSm@C=EX4a` zcI$zTy-jDiY?dSsMeCZW>m>Yy_q*85xtZe&jjCAZ2b!#^@?(0bd6G+z-FxxPRGXgT1#`*IH8F9IyuAjxz07-$mpLP;!K`TxTLAUX*14*4J#DzA zoK^QGP+~#HBb6^8LF!&w3^V;T2nYn=~!+f1mKVXt`_=kr0rJ8$ld&@ z$~T>&^!tu!&B?URM*2egNZGe%-p3#w=DB;YT9361(}dKu16&g{{UaDI7LSM%YVcdyBj^uW^z!l4jga!i|{l4HIH*NOsohS z+nw12oKm{xZ7cTdMB#Sg?EH>LRC1A#vm^LOIl-?#zdONkfDU(Y+xpe=!fGMn(od8qbx9G8ZqohH`onp2s-rSvc}s2H*Yi4f|`oHnrM23yb(!h43eY-LXG8SFk5i+`i}L75-UcjG%RimlCfyX zI6>-9*0{N3qs{ZZ&c`Zpjhp`fhcaxSgHCy8GC!9)9fCzXjQ$+T{`;TQMQ)i((WBKe#LogyIHo5oacfm({bl-TffWn zF@-j&S~v4JtuoV4)ipgz&DKZEFe!nrKNATrv5-;3K|2 zO7d?U>jo>S^y_qci7j^|S1{Y{jPsH~JfF_H6R8)-_TO7S!}J<-oOO3zUCwsTOt>}+ zsI<41(6RmHy`fVpf;dv=AwkA+4o_;rvDP0=*DQ5Oe7TcK)T5d!Mz}Hsl}Xwdo~O4w z9M=SWij$O9mhGkg0ItSV<9dzS%c<1MI{l{Vc8WNcRfb8V3X0&fg2w=K>-ble+uKZ+ z)}|@djm7MH+F0vO%)bt`zhO?eQXbc`K@ zn9rEt;~RQl^T@3^t>V2pdO~BdTQqrCn0&;Lha`t)BM0;Y-nnWeLZg(f+wJN7dYe<6 zXD8REV-~_~vAp+*3Pq^gdDGiV0So0X10y_+GvA8zy(2?Ku+gS~9UEQ)&7u%7znLj2qBr`&a(DcK)`bS2Xq$}hZ04EmH4s6g{d z;Fo74XOohBI(DvyQ}E}DJ}G=f*7RLkXf;0(>YouMvePHDk=EWHvfE~3ZV1PhghU>P zB-b@cN~Kjdy}s}BG~`Y`^L}U2`YxOOqC7Diej1-rjqIY)@BaX@^)jK|fL4(u3!T1T z-f_XlKDG1LjC5-shd*!8CX4%TMe$9F`FA(kqPC$O#4{3PjFH&j6&#V&jMlY1ohomd z&$HFF>X&jR)a2~9(^hlqs$EBMcN=}8-S445u(~J@9D_eL-WUDT&2W0Q?x3t6l5fJ@EFI;z^FHVPPG> zu(F!lg?EXRvFV5D&t3(2e!j5$8~vtr4Ka=6eiHHAX?tlEE@dM>@dD$Rw^f;`j z#x*F_jlJmEt82I9c41%clv>yDJ(lyq8Wp#U{wl7Ydu^p$TX-)^)NRtrA|V&k$os=K zIAajb)vp)Qb!#~P0Jk)|tA%Yk#?Ib(CSb*$Q^TW!$UisZnx!dXD|0ofwcF}u>BYp~ z{hz#P=4#`^6KN1A_;=zj?QagtcXU?eAudFbJS=eVo%kS;klm}R_}Lua4!j-Uj}UlO zEId!)?}mOXyRosgjt3|-tN7ftz0hKJqPfE7rUxdk2Wi!*P1$Rs>D<9WDeb3Tr^~+< zyi2C|c5ejySnv!F72KLUX|8GFJ<(3AGSN3)n8tC_75WL``yUf{H^7!!j9w*uZ%LoS zc3Ovp67i!qcluTHEb=dw1|98;jg}c96pW5*EJWjr<#MvWRo!T9?V~igQ++OcspHRx z9wzv=sl(xIU&8iQx@MQ-_-D|ypATv666r~7jF*Wp1etu!7&9C%QO7mwkMYC8x*zQk z`#Sj6PX_-0!Z#e6&BuiPB?<4BW}~A@QqgrQ(L$UIgsg-TRqDtCK3x7})C z&f!e&ekho}AZk7W@W+RBMzWcFJ9ndLnxwYL8_JSQ8C=Vr5HxGhWTDS$`HSF}kFR`L z;xgtdEAgW^97X&wmhv{r=OExZjNxojMHrM$uq8OJ%`W1^NL>)3?~-s;)uZES1J zNmS*P+h39M--7&8s{AnhnKU1WFj=s;y77&roD8xJnfqMLc^M=ev+YgT2Zi^q(I1Ct z;tz=Tml~~v7hV$3*Tb4+!^s1~BHqazh?4nH0o?8xpO6L=@!q_;m}y~BwVIXs@2Raw zxL#M&Qya(r7t-}xuL1bEG=Zn-@!Z9w+KY6UdFVrbr7%4hZf;5HE6TiCcj3(gPVv@{ zpm=euE_7`_Pg@v^%@o&cmnxT6O*jlZ$BBz%0HEf(XDmc@No{AMIDNgT#xYx-r}2Ns zz8#L!;dzHjoBbogk%(W;7bzXoQJwJ44-6fc9oZy)mE;}_(k6yoOlrEFjl{RwK)JQJ zjzT=3;E;-Q*zw0|@hjK%kX-$*Z@~3wROG0W*{#1*xX_|V{3WXCI?NJ9HlcBCD&EAc z8o7-~3=Vnw$EmKjO?@*;w;E2iUSAGr;wdz_B-GXkzSk;Ta zEb$$s?D}+(Nv*w(TG>W~3TM zhvL5y>Dq+iBV{6|*li&`Y7||~=WS*Io2Q@#yu0HbqomnrI%TcGtK0toX(q$KTv!^-B4ChIAy50QF$;xqpe7d#x7cOUqTsQE@VqH8mKWB;KVr5Q@3uJA^4SiGa z_rMp|{tShD8KzDybg~*b!-ZI3G8PRZxf~999ORBFDbtE^_MLTi)1ku^Co3&3wrA3M zb%mCP;jv+(t=N}Nw47T>aT3Im%`hf;k(Vu&IVU9ZUl7_NSl{2z;-9zN*=qWP>mzCi z?$=!4C}Z;E1JfBaxjn8Gw`<=^TlG8X)2C0~Tchaj0Qe@~Px!g0YhEDH?V_}Y!4OB` zYh5|^&F3-=kThWDEQ(v8#(MKy4X&Z$V|U;`ANZe7w$c1cuXw9i(cqnP zx_H%E5oz5geRlHOQlB%V)SJ8SKFFg1IAa)=L@}uLR$(6{JPgw8Z{>b;`Hsk#N2(VZL4g0{{V%x**s8wBUlJ! zv(xh&I&G6%7=*Dy!P}p_p}{+c2ew6V*Y+r$C)BPXVr*`-TNvV!c(yo^Pw#;2S8(8( zg-SAv`Ift_e@)D>E-u`f#{U3`?%L*^c=obtkRP!#Dzsr@!P?vmf_eV6v*C$lyVg82 zs7%p5k-Fm7#IFshUDFi{4*tpk!N+{{t}2mrsiu>=Ti>tD(xn+FxoKnUZ7Sk>T?52Z zX)he?)>6f0kTEd4fMX;B&3tKYny#av_{HMWo=sm-)MvM`(`19ob@J7VIXKA$kGD?X z*R7Y+_Vr+*_mb4j-BNB}(mqD`Z>LEvfpMx&YPLFRc&6z(|o4 zTUO96A`qi)1_>^49A%loQog6JuQl6?rT*CI)YVGqt#$9WkvK^;UM?@H)pz^P^nzo~ z2mp-ao^wp>PB`YirAjgQpUCpLuc0plWDE_bB=xA<+n)F$v`>>)t->w1>(qyC4?=O+ z_oZXTFn>Pv8cjZDp^9oP+^)xh4s(xQwIYr)$2sfPoFNw9VqlwKI*g7v!0S@C9Pj}B zXu9jFE$Hs|A_Yq+BLtuG{VHNW2fhz}^^q-)g61ktd z%XV0c?wpL{IKiZoCxSm5cdb+RuX47DSm&p=uUd`3JqOmaUd}H^u?|i3E4uJ8obpe6 z)Q}QboSwahdew5Z4 zn%41>z0BpesT(Lh*zKC9A=#dsgT^}6Zl^Ro{{T`SH#WN!F}=M8?uVMtjW(zNV~^If zl&U3t?o6)Va;3v$5!3ZGi6%a5=hWa=JGyS`MlGc7R>txa5^<7pc{HSzQOW1^t5TOE zZ|(=R*(@!SkDKK`FBGM|VvI=#qLJRSO~yC-!Re^Ph@6hW$>Ods`4I9(I^w#i^77~_ z=umOAmN^5l6`t+3L>r0Da1VOIqEpc!NyR-)1yZ)_yE$@680++``M3pu$;Lp(dW&*h zCEHOc##1vV`Pp!!p18#d%NQ%z^c_uCwvy_Baw?8Z?26L|Jg+@+eQSSB8*Km_e5AHd zB-PN5y4Cd^HF>tpt8s)~-^712^{ty=Fx~N_;H^n}f$e?^I@N z5)Y>ahMP(6=u_or#<)9x&U=yHHI|1ns^>p9Bo4LCuIj7mpXf_nNhc#GAc2pUBc3ap zy_0gV8S6@?y=Q#_qm*K`*P-XSq>PvcsbkJNR}*r~OSl;Wf=J|=eDO=mZ@ly6QA<~@ zyMMtso2M>IjqEoZ5-@S10N-e07*Tlsn155c1+FGQrml& za;oDi%7c)g=L6HIx{qKT}-syruX40PO7>{sW`H53p=!$p0zYr zGUm3o{0V7J2|fP+BducM)Pv=M6C-%%`PUDrO4}Kk4^mEe4OYFAo057y{{W@;H>BE5 zDV|N^komTjDB}ocU-g86fI&Z{d7P74#c;OkJ|r&9Y|;WlWZ;D$b^6y6lBrcIT^;l) zPI33F{S7(wE12zJf*&nfE3K_7oG4#x^*mOMt>a9FMrdP=c$l&s$31X!+~Tm8xhD`B;9VZ##?U~!jDo#BpP+T*vzq^xw;@W*z@x+7#Q`fqZqdB zb$*Bxxt^~>R!a!X7V;Zm5sG3}l;dz5bNJJ(?XB$Z-I4~C(!_~8z6&z)gFjX^ak`GJ zU3|%Kg|Ex#Xv?O@b)nssSfZ8Cw6OWRm=6A#HS>pv^kufZmdQ3-7mP^)hhvuY$sFYK ziX%}?+1=ZxpK(fB-rs-qa_zg`$)&7O%43b;9%&MN_5|mjax0ec6icOO=I-xMD(eUQ zO6=vCU1a(GWEtchy~Rx`t;wYAFT~25j8`&xb~5}cJ?wh^itsSES>us*DcmJcHwU~vOpwodYqmpjY!2^YbWy8{sC0#IW*p@?mU~s9wbYB zB{Z!cO}Vm=Pb2D?!$>(hKw+K;>IZuB8^au$e9XhlyNm{eJM+#)Huo7hJ#ku6omKJm z>$$%=rrKJV5W}rOrD`_6YL+VrF)jC*^KX#{?(h#Mh9lcGz}{OrOtM6X(*_LAsf7c+ zM@;%xZz`O*W1`)$S)bA~|IH1z5FQ?N)@)HtU$%&{0Q z19?7BU(*=pwNKV(8hh#8Eq>x9D7d88%ty998`ktqM)X@eSI;A^ZKo-ufLwNz|>Z5-B8$O?kZh?b^GD8@b8J9Xr!-x4$?@s7D|sOlydbjhrOURsA} z(a{eIJLj*tHRakDgVx5+Qnu1hlyzN4%x~=(en+&Ahg8WVIUrzk#d;IO#o<&W^zUs> zX~tDGz5f6|k?z`0g(vuprg%$7xM(9bdZn$#tEkI#c3UKJ?vo*aNb*COLcLiUR$ultu%$MXAapa&A>R|hBf6ZQ*cS@^;#C`s*rJd{{UZ~ne;!x zi>q0rkHmI&6W$vr<@-mSIYfp2XtJq|y%?Scy?hJtUefixAnLkGSx<2$iFtD^gI!GT z6w4v`jk}Hlk^ww|2(F51tmxi4G`8F4=4Z;H-P6<0Q`9^`XtH=q!I$#cX~ngTD9fug zyzA$|I=19d9KrbBBves;FgkM@tfLdCotTgE=@w07%# z&Z<3)c3E4v)Jpt9PrPGZY?8Q-x&BV-L7vPa^7N~4I3VQWy#~WKK0{%JNQR! z_U&#FWo97Mw2^adbs}vN%#Dzthp7WSg%}#qo0a*-p@l31M{v9`+TnI+8!)+zb^2HuVEmrc}u3)?2kS@mdagtxB^!%yT+0r|G4!rGQTUnS%^$*l2D~ygrm?v2B-)j(nrs_rzSHjtW;rA$Bu2r&UW0pj*G#6d zSX*-Scj;p}MwF#1erMJG7V!6ld^O{r32MG7(eLNcykV}{%Xg{SUP%i_0zk=iYTS_f z_l7wD;0zpQxWA4zFkkq#+QUQBQ&;eBhiyfRUfo&mYisDIat`h=j<{{al5_1`k*iVO zFjl(VZu_EXIH+>F{{UWR(>LBD@W+R|G4SujI&?lDxznz+I}5!t#g=-{+Ak!!3!8Rz67*>P2YCC$9vjqrAFAv2ei=8u35!P!ajVUKx3LLrT_eK> zF_}S5en!X@G;2;$jCQ_?+j>6C(ZkwP+Ur9PO7U-lBlw5#OGnnU8=XH-_?_^A>r(LE znX19EOKo@;caGtRB&pdd1S34BO8L*@gdPz1d82866h0W8Crt5sc$@4x)~}}zH*-vl zBgV0?CJ$jy4{rY@B^QK@%zqD#xTQ>LQzSNxBp{t|1is#^Rv@pXo!Z+mU5 z&k=aFTYUrZB!REa8;@60EZv}X#SkZKN?>s}{yZuQe)x12vJ1k;S%zyw{ zWI@j4#dvsHl$<2ne9bF)HT`NrkGGtixBkDY5q{FY4zy2)zYP8wX!g?TT35i0eHU7W z+6#}g+-Z8FD}A9+*pS4bE!T{YdRMA^2-b8R2mTQqD%M%Xk9!^ZBgR+08@8F6(%R}6e#9;e z@x&yPJns2GRL3~Yc$db%62qbR+r<7Lvv^^&)b#jt+hL+vB-Z{=E6l+``AFIs&I0b| ztz`^Cty*dIT7SbAI8&!i>iX(5YkZFbwntT7tGRP8OC za56G$knm56Qu@nC(r%)aZQH~%cz;n0`=pX}auCMNfr1G;e=6gi7QArx=D#hs>~=*) zN6$C}Q%thD)MVFgzR36G0|bgQ$#Qs8xGp_t)$R2-^xJr~y)#19uMNx= z@J)4R8{LDuF7XgPLBI#;&T25!)%nz|exK%5TB%0*-RLfnsvRd)@vYXMeDDtpNojj; zX?bR(K^)TUNaH;m?jxuSrGKcc%lU6EW-SUI znWH40fOg`&DipAMvgWeA_q)}0)Z%cbQflp|-1>tQ^l~b6V^9`W+6Cnzn`F{{Rn573KZTmwjaR+NHdbF@`A_at_knM?D68 z>lef~cY0Q#HmzxMk4@;)#e% zd1C-)AY;_jQB$c4IWKiB^xN|?ge>l?@ACfuhdBH10!wS~?tNK+Ql2&qV?{C2CRAUv-ZkE6G zvC&JT>(N-~dTYQmYmX6JDYm+wahGW%D-Z^Do=;u?=DykZZR0EN0em~s{4~}t;*DQk z)d%*LrxK5n-BqwbJye`^?nQFrs8y*-F8wrXdmNIfQB~$zw(Wk)*Rj<2r&^ZN!`E}S zm~VkE9-F@sfXaNe3=d#Wu&;*vDdGce)7#uzYI=>ur->t!pay1zosQz_*&Olnb-?dg z#+^vvqs_C^`t>(;As5Qu{1fSo8^sdsi2CZ@l#l8f`+$Th$`8yVM^+*E|<;*3rPqKY0X-T!%j~7-ktb!LB0j zP<<;_)~)JtCeg5fL1g544kvVD_(e(g(y8(7qn(nw69i_-{kE)NMRR zX&h}UT1Jw8q6U4~MR$;#kaNv=^Px*ftsURz`5x@6LZlMb%R=vtyhOG-E6ZgATU=Oe z4HC#3b`Dz%c)%X{=Dj=M{{W0UE8@F&E%iGOw5F*dLwfHj5Ed{c4!GoC`kd!KTAFpS z5w|YCfrce2a*fu<;figB-dslDtOtY@Y~U+V+R_3$$1|2ti=@G25Va_ z3|n5_M0~wQ_^aI#KIj9GsCYdyS(**rp$~<$T`KCwPPI20tg>nbS$DGmBA_|xyJ#fm z^R9n(KFujMmzU~F#kChs*IIP^k9GJpd1+&P<2^2TB~2#NR=B;>ZYEN!=zjj}lDX-C zrySQk;rrhY_=xy|Z4o?~hO>2V6~vI3^D^+o3C`ipGxe-6wJTxqDeng*s{a5pX}20& zsp`@Bqv1Jj^ym1krfSx){{UwAU&pe#>2uqKCNjXv7m&jz+pT(^iZ5Jg{u;cq8Xl9P z+v@SN!F_TBkgAZu6&&Y~cwyeXj9ogi%q1RmcHO@Yp_VsNv{dwW-=Y4Fx#`c;&`-;b zex9}UT#!ps#EsXWs(o>T{OOPH@5jAd?aW=T0gLlDB>V9}2acR}#(AWopv>%^yOpHv zlat?`;-`-rMlt{-fsD}a70iiE#gI43K?LLyd8hfC@Tc#eO3F%H_wEjA?)s7<;~682 z`}0cQbb{IAkwso*sV%g$A;&zOz4@s69uH22rY%WcTHJ|kzNLt`2M0X$T6rK~9Fc;3 zb5`LgJv9Em5Z1*uBP5SgkUG>1dUMV)Dq{;u?^1Pafmq;YI47~sH7o!YEWW3&THQNE zwXMmycc4;FI3y0asT1yGU=F7Pt!K*}?fylkmZKeZ^y8nd4MuVYUwj^Ur_QCO=56;O zU_dRAoO))nr8qw+$xD63_+Bfj=1&rt1fdA^v>RW&1j^gorSEmW_14m z>aoc@`_@nej_#)%4EL-bE1kN2UW86g$(s1v0xKM_9glj;x*+7Q1b!x}s%brM`PiOU zx-*$qB;=kCUJX-|3()WhKQZrExlJ^RoKl9Lh|t@YIPJhab6U1HayB7+5C9v1u876T z*Lw<_+?qPr7Xf?v;MSZ?fO!CCuleg+zv1e?Q&{Tt+>EwZo;d0&I^f`SZgbGqn(W;|B+D0ORoYu6E?Kqhm6wgYxs7 zj(Ymmv5iYID7Ysua_j>(4mC8stVq|+>$tJpfp*L@NZe_|BamugE2n2J_tzq3Z z-Rq664syKK6QeJ+b16AWE!gF6<&$w@xC4TWNn`cqvN`#;mzd!4_)%k&~ zT|i(}at;PT_RVn@#1?(WAZHtgB=^Q?Mk+L%e-tNrcINBbc6pbJt$x#_OS>y1aj}V& zxK_@7xi#WnJkY=-g|ifdAtZ+*u6ox!N-~R9x840*^r)yt4}ZASv$#lZOc$bj#&ZGL zzdU4uM}BK+?kItmsD?G(2y7Mak_~gq+Q&&+->K+APE@TW{{RkFhU{KLYPSVtF@|_{ zHe7&l(>&(26>Zn-s~k%lvP+bA&T;AV>+epZs~>jm+nBY^{pWN?uii`zrjn7fdD642 zVXzuB#^KM@8p*XqX4Ed?lHki6jD`RTfw@N*J;$w0xi0jxEo&OX`; zi-_*+P)1VBp;m?Y9FlT4@0zdTtr|HrlP(0U<(FV1R?J~@k?)b#w1k{1=)LRx#7c6h z*RO33Q^N~z!$sEPf)$?G%&4J`(HJ=7dxO%wk!Ao2LG`}3ist^_>DtfxQ$J;$RI;NE zRX{zz3aai6bA9@2xucS&9q#;(C%UlTuUj|SV;ka(_JPgJyPg63r``L~=uKu-kr0|)C-D0??$tNyNZ zsi@BKcSawKb*)ES*B4K}ks5tE<|yNcWk4H80eW=)b=-Jz(%sIZZ#qvL^XVteHtqYR zNSqZI>AOCiYHHMRrmnB*x_L1|5pw5kTl6w-!&}+iO0!KAmYcTRB)A2iB@vVnk&o81 zd@XOP9WMIH_*$*UpXV*m{^1!ai<8Ogn&+nCC`NTv$tNV^ujAUV=f2V|d_kvamgy{I^*CUkQjCC+Ha9af6Z|XJw=|`A z$z3P-=xI(-jQq}L;;)KyjVk(USoMgtL#3w8JX>6bf<(zKFuXA>-nj1wc*?_5o^_tg z>C$R?PuUXkJA#BbZNmezcFuZN9a?y$rLM1{@_t@HKX$8yx7EJ>NcP3euwU&Pcp`QwB*9EhN6dE-_elU?0&A7J zvaQP-YkgV2x2w-*YqQ`@FICet>nqJGQM$K}Sn&LV66KnC za&it%F`Qsj;xIJoRrb^*o8H&G`{~fZMb1u5`L5n)ulz69Y^A!^?V+=`xLf({(eBkb zmLSYBK^Q-KlbX)cv>igr;`fi?n!w4R+G&tH4S6p3q;SfG6?21-bB^F!Rql=vwH4DN9#f-&LdXZo>({P$&3LE9-va9z&w{o2 zigUxfq zp+jS(CWSwQFA~}txcBM%q732%k8apYZ)R2lB=M172l)5Esqi<)9yjr?gD)@jO;1Dd zG?Vz7;hR9o91LyM)mC`(jp2ji0e~Q!is-{HYlWN=PWq>PpG$wiE~QvCYh3RBBCfmQ zX#W6bAB>tOghaQV1lCi;TG_R@`$hJjVJo3hS@GtGn{hYRGUquX1BGxzfx^l zal9>WU5`%qZQv~v!`>0M@J5Y)f8xDA!rnBR{{X^z_M(zP@mNb9;S8~$&zKJ&jP@A8 zu6N>XmFN5y_MUlSlcOm)9ugQEO#DqIl!oX66qIK9ue03 zFZOFI-FL;hOIhhRDRRY;ARc69-H#}$04&^aJu9Eu!YUl`)m=WPHA<7EE?%$8L%Y}D z)xI9t_+P}nGM#l9yhOHMNVmE-4RN+Itt@f^L&dr_1E3Xx5eiGBh zt3Qsu8^iwq5{Ts+8Jc`d?pWo1Ra1e<+wWP_gdtJ5B$HZyz&l{$T{OOBe;%duaeO{| z7^X$C(MyYIE#1UdUn@`MN01d6hX*-7nXWfNw~NIZ&AzX1CANcQ;mvJtuI<*{+S!31 zn}#8_4U9JP&Ref)=A0_HbIChD%&H2kDeA9nS8wt@qw#0SbEICyXo&{2nu|$2ti{aC zj*`Y=T;T5qE7)Y7Ff-yF9dXq*T zHR{6kRhLKoek5~yTXSChmf!HlqU&}Lcz?s%mHwfkdAcUA;vF*EU$wW9? z&2M+Tzg~w$NX9DjdU}6M`f~OiPe$;zzZA1-gz0|{p5|EZaV725=3`*Tw@u0kLSM2*3+0_ZcsV)Yk5io1ij_%WqZ=*%027Z6<5sQWy*i>z zD(h8`#F|~&>KaAnk$ZHDXJGR@qB&;Vn~6{fIaWBy>C(LeT(N6iR`*WUTTZ&wrJMjG zQ;`?|ovaQrIM3JGxN1{W>drNsmqc{gD2?vl(X=t|Wz3W^4 z7|+?>qJMGVUlBZEsL9~(2Y7PJQ#OBVf-mhmXC$#wn~;T3j)yrXlU^77o%U}MC4_fN zHlOz9L8xpBjQGz3jAWj)rG||>J^6LBeucW0Z(Fge>;53I@ao*H&8C}SW=Om+ z60Ng^Up0<0a!$|>9dTay;2YTVJ4dv(x5W3bhef-OdWrP;VrCvrS)+9)JviX^uZwgYcEa5FgHqGV zNF~(P6}Gjv-5~_vHyzG66`goZ;iB&D-=@Ezr#DuvzfnAC#_`w}$jj65q>e_kJueUCi@1mRTdXjadUbKLlHU3W~rzTc^r+~V3T?oT`(2g{z~xG=M*qZK%A^|h9l zJ8MD8o4Y*IUa@Th#yWG(by+nJ7u{XIhi)xweCudjf~h3kvG=-hn&|W`W(d4B@oMxV zX|~Z>>DGF+>*>-vT)ag}h{F)8<`KDxtEOq_;T9%@$Rqf5hF`@ zGECATVhWA8$;V3cT?#S7E3I#>w|<1woK;0_ZNJF#y$@IMZ-@Rr>b@=UCF^*O_r^XS zjiR_Za@(L*BV>j##?ZWvT=%bE)^$C9#x`(xHrDN-O;1vVZfCQJV1F(Nx26jmu32&0 zAo^FCjKoG5*;`d5yKTS7D)Us7Q(b$XQB8T|-o*plE#<|glJi`Tvz78C#t>lOFgPDD zu1W-+!W~ZMR=J8x>7dNcxn+-c&9w$`lb*fmFz`;NEVYu=Hq50SSMPT{hQq}vpnNCM z4T8;gtm|5R!JF*mC%7BFQnM%{U?6Y-IL&J4H&!d4!3~|bu#UpoMxOfaKR!ok4(2@c zBY+6x3{+6BG}DcmzP9dkO5YaNJ_{B;8ov17@pnwLzGt!4w3}<&n@f$)1p8T7ks%wt zXHp9Kj<_UOC9Qb(PLo$>@vfz(X!@p|tthv?&^$J7E~0=o)Iud^RVR;_C@1i*XBSeY zA~UH7YMSe1`WawlT6I1zi@Li106)0@086i+&pl~QPdUi1tybo{Jg>E=@J2lb-wtJPoc(#o=95s9vtmoWx=@s_rP49Ai%HX<9{KA^{Rzn+bO6<~ld}8GJ{5LUY!bu(GJDh{ z9D#wi9SQ41QdJs6Xx@cjN~svg2kXvi>>a=W5!a4Sy=?5(qrbhYx+Y`%IraOsChP&g zIP@8=X+^l|OMOH?Il$*VPJ7c?NKw;1n9gfRxW)A?e!dfrgGOR)KFWym_7F`rIrHbpE-@H_g7 zmrgC-+LF?>>`CR7k2vG$-l)i=vHJEE71B=kyCT!(yXstzo}-W{ZjbKQ0|Wz;+||wd zHMPt48`#c=aNY+)oQ&3#WtlM82OV+NpEHWr{J!#9XD1OF$0P>EM^Y;4N;Mnk{{Y|#D8qeIpY^Au*`Sq+U z-K6#=Y0p~{#cWS5-~-4WwXbCW9kYkdd)I6l=303d8fqPNI=Fz^I%6FO=BCLTc+Usg zt$VQ=mGwd|0OuG3wPjq%*CZcf%@w(&9;G>6Kh}poaM;fsbKjbd70MPFJoFXG7w=zx z^93(_&eS9$f^s{IS0i}JS3KaJ-OXvU7%2#(=m{*In zTX{f1%7z~`a}#c3ymcI)&U5Wna1oaT&vB3~+g;N-|Yb zW^?v&cVBUdaD{gxF6CfO=3Yf$Tq_(B2+KDzb>g(IR(Ia%{KBK1*KfV8t~k)K-KdpO5N z+wJ{oXyVelckB9`E~bkrN*FLCWR^^>J-g>M;g`nR*8Evcr64yX?nS^H_2!jDcxm?? z6da<|zVnqiyVUMvTd9gHxDkgbkUF1np8e~syLoPH=S3>w@)h$XMCE`7sn0dXQk6TU zZC6{J5}K6SPhZfkle{p&ED)lYZC)moVat{7KA(=x-Ak;fF#fR=_JUDx}@O!xHs>%x3j;RP~@EWF5V z;ljYmqvhx2T!Z(s{{ZW+MwHW5v)5I(^=~328kg>Q7-Wz+9XnQ1=T$wUmr~^yMk&c^{J#B2FYGk5)iq1` zp_X};X=k^R5?xtWkT7}XxqVMxmeN-mca@{bK9do_A^xppf z@WaxauKrBszA0$7QtR#nwF1XUO8{4hF>+M^#^QwNEtl(X0yYu zX(@ARp4#pzoXR}c_5T2ZeRJS{3MI$Fn{Nf`2T8ZnJ{kVaIvD$22oPVH8s_Tbcpou! zP`D=}2iCq3w$}8WPs4F)x`n;P+*{|Jt!~r-8l#aL4_)0y)K*-uRPAf(^>14RI^3_7 zr+3(;cYUT$V;kx0fJ=kp2F7kY!>%^E(RQYfRIX_ zy|_FY=TP>oHnqL9vAs)8C2eng&(FKv7vc|v?=Ce#Yi+15qbZ8w_BM+Wp*af}B$UYP z1$VYOZH?}M=j|r)Im1T^MyytG_v0r#?LNd(tL|1-ZKvOV>+>R=SwcHGF7Nu()bSUL zptaMroiAOv*FN2Qro>%foJTZMw$&b4+xH6aR~Z2Hs@@gQ^#1??xbdflZtU;w?5vtE z6X{+fv`OMN%mHQO_wCf@nwl|GTZ4}xmd$iEqTGGgqiXBR$n;-@TD|_e;{5|q@cpH| zkA`8?<(}pOyZqE)lL=vr5!4=;9M`7!hs3f^sO$Q^l&`9pSQPs`qlN+&K4+LRGqeu4 z{Ob;HYd34RV5x||xh)^{sk^86io;X*jj3LEe*VTQEnC92i$0xgdmOUCI>vW2$ftn$ zYz7$__NpHdJYc$i!rvHZT7`tBdzmGHEvB^dOv!~R(K>_FjQZ9SQ=NF)SMu4JsZS4Q zcF#KaQR7!%4BGgL?nrF!ZC#@KI>g3lRd53?P6weTzMS~|;2k^0eh}6EA@~o(+P8%D zUjo?ZnxBa6&99fI-RZI6WkRU9^L*begB*qgk}GTtWeiKBS#u_x_54Yurv4?OdwTUT z{0rj8@E40d8^vvNw!`8clW`Y{B#Tsets;}nNiF3&@R7)VU`k+x2eGQ(5|>Ny=j|K& zPw0Ld(l4(xPZ@Yx8@)D3HLR_-h^=iQwwCo=F>fwaRCOvFIOr>*E~ywwP5dt1E&1*h zWl_$}X>XC2@H17^z7zN&FAaFR#1>km>fFf{-miCZ@~c53DK@DjfVd%0wWk4+E&La`=bwC&M;h6s~mb62*LV zq-eU@+jytLEoSy6eOcqW z)#Z+i{v^Ecw}zm&neFajvGB&9Xu{K3x3@ygJ+r?B<50{>oE@YQ+PDoTOw?|#ZBpg6 zZ3|e`^leG4!fEr`TU%S)LZ&Ga`|c4WMZxC>Aa}1qoT^oyEw$avw;8^62q>A#diXRSq zccb|0;-;D4?-O``OYp(aA5{2trohc9h(;K;n};ElnGkJk;Ij^y;~F?j1mh(+Hk0Ym zm|eySQF<@L#Q0(H4&OlVHLdr>XbW6w^Ch;b%Wl!kWRe$XRu8?rumUn$vu! zpUC#vqv=y8hW!a|)~BE9c+_xwDKVyZ?rdl%-_ z{Bfph7aDe;`YU*D>%@!?`3D9 z)6EFQDcbL2oNXeC6pNbE$B>_6Q&0QALmVbtXt#cTKf0K*zathsN?`oCZDI5BH& z;x7pJKHkUoI>ol0iG6dZfepL5$~KMXIVuJYJJ)rp{3g5A^xN%N-uc(}+Vq!J(cAo> z+QS&!%-Q))X1BO*FcU@#%gZ(!`H# zXK-gmpJoI^_h3Oh4@}plYO>9zS^P7!wbK^$H7!b8i;Y1eZ#2aeM5;;;%e7gvp1I?U zR}7MLT&1Imwf_LEP)b&#s@JH`+7D7+5BOhO)giZX(fC?9b!)G*3=QrCS?|W|XOs9> z=XZoP+wE(_I_#bvW)}APLXYiLR#YsXJGal*10g`c&2~!%^_&D{9=6u~ML4Hc>1usl z@Xz}Oe}aDyC63*7EnX{2k*V3X$fjs+Bo5hfHx8U*kzMwIrP*Eh8^YSWS9Z{9vFTzv z9S-L35EVw>n?HM?`MZ8K$4?c_WjpTE^;>+2jA73&UCz@?lE!w{Ot#RXKZ70_);C`% zE;nVovz+f3>5aI_>(KZ|rCaNk$5dTf-E})(4{KI-cf#DwD+%K&>dwcGLge7|#d9S- zWZmAX=C$P*Le1UzoW<3ZpM>oE8KA_8AKCmXECx$qxIFDFl5Rp+w%z2j5(Y^)t~dig=U-0KG zRaSAckD=6S9}2Ig_zB=`E=x$Y6R3FA;nbkEky=#-A)coXi3?=pW3_!V@E=6*mXLg7 zq*-Y(_;IdoEPUx!%m}5D0#;3oIBnbmjPuQW_G5@uD5s>No4)toq3hCirSG1V@h?-f z(e#_GUg9WP%GJP%Xh2zlsmZ|486Jc3uaW*Ud}4nNd=c??h_uZ*8$S-~PY#(R8l9%u z?q1{ORZwzU8w(!T>(;s{;HzS))8%?Q@4kj}l+||SW_+9bIe3|`AH^Duy9^EDjcY`- zj@tBY0@}qS86XpZkTL27eKn)_$3(RFlcI}}s2>Vj>k7^mB0klO2HVNpGENPA(?$|~iVL$EO5kTX zz#tR<0M@TQh88OoQZat*lk)rxD$z;`cGLRU@?8qe^i3yH_?xZxlFs8)ycs5K{%A)e&?@hjyR`tS!@_UTY{ z>B=#aySAI_w@=i@jaeysivIxC=lbsL$+J8$&l2wJa$pX>Y2_*}F#y!2OMLOjMVdc+M78y9ZF4(PEX2vb5XG;80R0(ns1lS z`sic%k>hdhdFXliRhWj*a9fd)f!3x9&rxdiW7q(Ff7%^QGj@BD3F9?W_q4EX#a88c z_xjY$mI1#$^zNarLB;#G=u?z}F^-({?^)vyCIHJHQ_Uq6Ihf5UJxwG)s(OM6KU%3j z8NfO1p2n@pq+Y=(i2m$LUvzM*EGv=f62;qUyz|2O8o}56;Gf9^sF0} zT;y^Gzd5Ls++(2BV<_EjVa(f@;A9h%$9lL&mj(w19N_i$tRWY!y7e76xV!Z^i^c_* za(xf4y>l011ocpP8S9$0In#djr!{C^SFy_9Y&(tt2a(5L$Lm~m?28yG*j`QvJxvql zmio8zvM_T_T7Sd&m=h^6wghds@~kpQ{Obnk_8q97D(7%sG5OU~rk=N8z38OYyV)2Q zb420T9Fk568Lo18@))_+>bDzZ2&Xqn*ci;XW{EY6GMX@kwRlDZ9O2OWfQ|1`RAH&}q){?xbZ?A6Nf97c=H%iz1%(!gcO+M^IVuUPBm1flw9xI|;TBb5mvO3fE1o*%zI|(YIGH#p zb$@w{NOI4aY1{r7W}Pfox=f7)#7S{06LYCDyqjlL%Z44vKJ}$T13nj%8haeV}ZE;0F7-?ar^xf^FB?;w>X)a?TXF(K zBgW<@u>9$C`zE;7t%baI0orylJ0nSgM*!!xJ9e#oo943ke;>T(<(!s}PN}=^_?=gX zw5YUgJyu(kwYK>>LgKDez-Kf_o4 zAhnM3?XVkWXZvhd3jSoWZaelBY!0KS=~D`j#8h7Gl6Tko*mSDGrT+lV=6;)Hs#wpZ z$)>a03oE%|vD9OPH_pI@C0G%K8RYR^W#aumPw>x-oZmgvaju_fsOi^{ZSy2aN!{|1 zfHwxp@Njs=ZF$b|j=F9BM^C!wsHb-O{-qC!+Q0Uujp5B+&rP?tRaqmwdw5E`$<+@` z0C?z5dChZDq`F6kEHx_<&}$blqRSDN3*@oMOdj;*TM;U8gXo_2In%3BHdVFRP9R}iABL3Kb%(BTJ?@BgQVD$Cky<6eWinXh6hx(O{k1nG&zpH2yX!>p( z2<5xFjN3-RPw`@7^ENh|5lVz7?AD3u^-rTTmE%c0I4PLJ1HlCf?cNV%hu5n_Q8=B-iFgjdV%;J~XW^-We`Nr>oCvHOYqpD|m;>%!9KY zGoHPx3`3W)x=Tl`jVVe^yXoisYIEAJ!+lE9`rlKvXL~o(ohEpj8wY-z{W#{le^XBo zXbze#rDt!dX%~AV)8~ZwbKAR;Sx(`X$nVZGSaQyrQszzhe!Y#|8z$tv?XG&UIKHDy9~S5dcKzKp0T^K)M5{LdKId<(1Dc;Z(}Tb*9!-WK~@7lX`^mOa=i z{+?LQI@PN$4ER!Jy3}CQ?k654(w(79d5aq;KOqcx=i7|dGnA=5b=Rft{{XKeUT$e# z*Zh9tobcw8ujw}y`hSJBD@zx$)CJ9o-AVI_Fhq&8WEEhzZ_+L>b zFWC&2_iaSZey1)9xApc0WFDEr#o?7AO6T59*&AH>=I9_w*i>RLtSpFEm77{CyhP0CP@ zz0l{L39qoUPaRn58ZVE&73>D|6uw68JhvR^n|82Mv1{o>klTO2-)^X*eM9&P{z=`x|^O z@T~s;2lWkiYafl;RnD<_rg*ncxid{ZjcstSxsnooWkDcZ09Pbqp|09kg-%?PhL_#+ zPq8&E?5}M*{{USN8~F2~_^ZPj*M#mb7E2ay8rW-^eau>Ml-$6}BvP}Ce5;1%KPf%N z+!y>)y4LG^R?(V`x2_&<|+-xi{^5AtRt$p+GJH#5l z!o37pY34hPOX3Erd3CEx6}gnex9aGzNrFs^6PTSrCvM^gdU)9KIO>$YPKeq|nwOhB zhs3&0zv4fI8U*_7loF@I&xkv1pe3SsMf_4DK;Y;1On3Cga%(r?>)pffCsgoPjrEIL zUj*s8#pSMvyHyQ(@xqc!mSk^M2@oWsVSrGe)yEN0a?6`l<*%X4)!R>1zjMhvFrN^9 z6nMMB+V_GbU2nrW-lcDCJ*4+pxAKdP$oK=QADM>=8$8yJ#FUrfCyU!s)NcGapdB+u ziu+N~E-bLni02SQwxklMy#qyzDL`?n*RWTCgV4KEqrsYS)Um!@7>k*3*cR|;g)?x&Cw``wC391_3*p4{(pnv4mG2r zzMZGdX`~o@Fv~fX?^l;&J;Q}>xf%kPEs({r+Noi^y+;bI^1iR9pOEC~!ml!p%lh;k z@Y`P2yh-7k4+m@d6naj(Z?0PZ0A*T7e3J<5WsA$37yxH>8wBK%M@(0yU%}xW15NP$ znWj$`n{S}%6Gh`Kc57#vSxg1I-yueKHuN!t$N{+RULGEjg?Z9W={@|r{{X={@aipU z_x`mxcrP#fP&^-Lt6W)L>NYw>#23-qe6ibKNJNhmjgQ_sB#IfAfW$9qrQ@Fs4-Whh z)pf}=D`}>*out*i&0!UkY|=9rfcdvGAlkVAWaRh7de}z_b)u7Pb=Lm?p^aAPR8LF! zp91(tLh&8nj^0-qew}q;dOX*+22UX4j4*G#&N2@}s~uHmzu z&_co}@gDCt2X%)_=_lQqjzIo6X4BrR5AUU8x2<8z-vuv(b)pxIDGFe6DHyJvy$JXWr%{u zVAV(~YpwK7#)>p*&D}PWzNf0{)(fe4r%&+akFCLZEU9O6acyrChULn%PT1v`_B?Z5 zA@PU9*Vg&1{X(&T&+Iyaj zW#I99@Z-YX64lZY`cH_R^+_VPHwIYbY>2l4H*P;M8B(~;Yw63EzOe8wiLCr4x^=FD zrg%l{bn87zCQG-wZ~`2X#g#yEPXjD5oK#``lBXEWJ3H&uGoquHRQ+%LY z1&xiw*DwgI6*ViURT2Xhk^y#n2@EvwY?*1gDyVx$L4d#^A)^kg6>RK@=@}t7w{H3yba%<=) zbvShI0(hb4N0MD5!=6-<+AF%5VVz1OVRA-EE0KUX$>zP!cl$xg_j_&A{sGHcZY_QW zTI;?eQQ(ajFttq%S+yiKP7G#wToeIwlF9~7e~P=`hgy!MscU-lI<}{6ZDXR%buEUd z@w-mTAl)a+jf&yPa1)Ac_Q>9&9ID%0Ux%ggI~g=Usez=*<;fLr_7 zz^^XWwL7mHP2v~VEiTsb?omCYdY$13Y^%u-F72m1%Jn^KhEbF$DzKVqy?@{%EHvHQ zzMt33xd(`Eqt|p>eGVN`8;uW6NhH)~gs7Hor)uYw9D|T@aa~V{H4hMYw(`>M`Zv7Q zE-juLd2S*RIg7614;+k+D;l2uHqrN8t#tPz*;SNvy^-erGSn~htIbl!NYj4LrE2MF zbvzC1uL1cA9=QdZr%-vXo9wiWa{I(SC9*n;*=f2pz?WaQx`as_Ru1KviNWXP$X={Y z2YUCbMmT&cmX1!^d6S2$$yK>6uhBMtt8Pv(I`!kNA;|})-1mJ&6xX2Rob~P6q9BY8qtvwN=ctuAbH|5OP2~b6wbebqmQFtGl*qa!+D$_2#7B8MdC7=qjhmo%dG- z)!c$+AQ6n<_dn+~gLFy$=pb@UMOCG*zhSoRp_HmxKsh}AIjdI$tbNb({{ZXKgd@t< z`wo+}`<$)mWd)8poYygY{{SNvJ&z&1DyXVsp&VL%>@A)4# zTrkS1ZgW(Wl&>8>6By5x>$m7(869I{%OKm!0x}2VSeNp7iOPep5EKq`+OLvy-P^z5 zy-e<-Yrptol)ZJ@%1Im&+gq<4>z2BdvNtXfLHoy(pQrP!BU<|hA=RJ6>sVee|<$5wX+})GW z{stY|F&PP*j1z(WeQTV!LR%;R0ActckF{YmqbuKE>wnaSl%F>1xld%kZXuWq{G^h3 z^s4dh5(WW-5_W<7KU!Yd%57iM^)yu-l6&-jq1tKk%3=lI1y?(iWKwnF(;6`b^7sKcCTz_j#BZJ0Z15P!1`je<$BbU z@?Yd>4~K8O`M1SZ@yBw)As|E_IRZlDQtarSO&A#omyK zsaZ`9qi1MgxwpBLhLbrvy+={UrZZBhwF}<%FO|+I-L?7&G!e&jZc$!1ngFtf2g@^K zo=+z{dsj2A=vfh6q`M=wl^yNiBn6O?aBy(T_}4Tf=X<^SEsfk%p{m!VjvK@gNvg}H z-3cX2Sns1r;gSP_;O8820U-7KYe&WKwbrPSO>YvzB&+1@V$Ng6!@YBW22}oB*4KQ? zO;L>E?Dx7kJr;RZ>RlG=a$RZC6}pLvjq)HW8yV-f1JRcPvpkWO_Z)6KK~keW3AUZE^Rc za5BMiez?bAYutQ443KNqN#w*MwzqjMoycWo+4oL(A6)f5)O#*_>;7IxI>Y_6+V69U z_@#NH+3Fg4GsSOpbEb)WsR43`!=jQg*Nlq!v&LGP)ymoFb`sAWvJXB`3vYiw0p}jo z$x9Dg7dz~h{k*pnr8g;BD{kkc_-TXK>9&__ZNGd4#k1Qqb8Xl;9Cgll=DqVz@YacU z;EM*)#l^kdt@X{#)b^mpMY|2L#=woQ^Yfkw$?J?%yQx|0XXXB8t}bv%G`86AZyvSY zgAazSEI!4lUg|cpPdtG6OB8^RIZWr1&m8(!ncwIUY6bMzEp6|0CeniHb21rO)Q!s7 zVsOQY01RUkdu1EWFJ8OdBTrztxzktd$b3r;oE{AtJeqCXS2}FaELY-C(dBq_kx0os zd*-<>6KV2l8djGCFDN^K+6YNEZ2QOX2aHux#3@hv-f7sX$`MxC{{WfXXs1ip{2>_9 zo=rDWh6x}mblakNN8Q+0smbfx9qZEn0B1+hygr@>)4m|zu#d#vE@?E~Ry{eIF?nSv zlkD#%2+zo^pHHP~+NXtbYVy9zYjxA~B~z6?x4&QVKKZ}#ou!7auUu)DvcA0975=ej z9>FY9VC;(piA~Js2aUiUn6HAbFT6vn3ttrY!p;pRU)HroS^PI)sH-KjqW}|r4=&6; zTyl7<6*<+T%@<|a8`GwvCEN4$MjynFiC4Y`)O0%uG|SuDYuKkk){vjIi=|KXK2u5d2O~174Y<}8d^I-G5&o%;Gk04_oxOsvzpAPnn+g=`b)itwt^#Nn&7nr{26U&!l&r-!_rt?$sGpv$CdTGht6rdk_F zZzWkQ8Zew>-S7CGQ}I*7dcDq-@cZKjg(9B!`!z10)R@}ujbREJIY#l0Rk$ag%Dp&v zYFm9rP4OO&CDTKOWLX?TEV^~SCnbJ5T!cI`7&Q{5j&d{0niX zYF3^nm&0BZ7O~vhShQ1HVrTOrkQ{UeI6208*UziqtIq&*d*_0_E!tk%_+D)<#fdJdr^y5AR&%RDBS`kED>tsu z+o7t=oT|<(LB5w?@OSwQsHr7u+s{MwkHA{Sh2m{5#C{sP@dd7`nx(Ox(^rP?&q>S# zOBb3(2g|!|4>@kVYviAapYV*u3|g+Qrdve^hxN<*4MSbMm7#-9mhKT9w9cEhy1ct% z3VGbX^Uy3D-E2I$6SDHv+x7G@T(@pX_x}KZeL1Gx*?2p_`X!~MhlhMkI%$kA^-Db| zh1?lcV9@O+VP1qB?guT{olA?9619M`Y}HHO8f{X;;2Bn?^*^t#yk?w81}zY|<;a5(xt* znD{I}RdvYZ20Zq!L9o5?XT*O6_@i9ZG?AuV=x}K^5o?y3uolUrL|@L9MA`Dnqo)KC za&d~$#&b$>_phh)$&;J1o$h%ZpN)JYrudq8qPV>lh>*jg&lRMH?QSpwETfiUz!LZa zJuB(Y7ih9e;ZG9yi&36^9(@wguP2^4JgDb=o1NFwCI0p~W6!N{!lYIv(qDW2zT>kG zB(GsSO({nd3Q^nG{yKcr=dgsUeh zbI2mn@oB^X_`B_2##Csm)>G?+^_ND@|=0`V)8zGev{u3A4-LGDjmP6^r8U z72NArHnt6}e`H%5HfgmaN0ZF};BdVdi~u?Osv{gMpET~))?b~@A8TG!{oA$G_4|o* zNOk2~-v(*-T8us-l|1-$t7rwqnYLgz$1CpIuINbi&3!|oYgd}3>=57Rx-W*jGvVlB zg4)LFb|P4#j3IUmHm-K(8O9BA;_#}SJHgxT*z2izO`s&I=wv z9ffvs%6L9x)9mfn{s@|nFEpR^`ktfkr&PDsG>vW@K1l7>^5){+{{UaPa>->Fk1Bky za>bu$82h=&;=A7oSw-QyPYo@$t81t=&x>^}K5dNKr1Hv`t|A9HSKi+_91(+DG-<+~ z7D`_o-rtdos&iFO?p^-?$ojI+QPni~Z1l@mZ0@IyGPi>KmX)oUPFx&v`RAYn8s>Bh zWKA!}mloQD)4VgOzVjq)$jFLBagK}*?BI9n(y+irRcfZJ^;iD@Bc{4)h1==sc}9n* z#o@1r7PpUKb9a08Y0Pm*o5Y+D6;DOw`jO5n+Wax9=+{0R@pIn4*=(fn)QKFrc}0d9 z{K5Ojkerf!=mYq?l;HxP@h zKGqcyUP&VSi6?)Q@^EXkOZyxD01w{kw^4s)%ced4pJ#QZUn-=zaknujByxG&2`0Rm zOP3Po80g>id!Iunwp;<1X$*(UxMB{{ z2Bdpmg?vVP7^`lr30;B!*=a`ik#;dm^Giu1!Zw=Z_KHszv4#@MB`IX@;c zH(=*ItFG{Ni+SKlwHJ==Y4vOAC6i3Db}JsqRF>cV*6+_f>(0c%Vqn!p^Lu}p(?+D} zyC+9bDL8V{o7B<>`y{BAhn$DNyc~?_RNnO_4#s&sXdlSV`)@*eD024=X zU_p#&`b=pp$~vrpBf^G4yyWfqi0hN{on;k~N`Qor;)b8WEP+^5Ksv9^xm~o$a_U{GDq4=H)y+cIRZ8cpw+GdJ9O43cy z#~?clXv3);>(8IE!{ZhHD7$R_?#E4f&a62jyS9s|=l=i`w8->d68L7{P`$Z=!tYBa z{^w4*^5h^kFmevk*v4_jYsRj1n>aP=hthP!)3m$2LMOe`t<~;tFA)YK`$Wt#`$=v9 zRT=Nry?n*ft3#3xb-!ob_c5bJ6yW)?&RaSsgsm_>+94~=15=%>D*(vsR76b9Y#ee zZ8)?P{oVSIka7v&lfm_=&~eT?o|Q?-Lr18&R_jpX9maZk)J@lg3z41&dW%X|zQj3l z-PnMF-M((%RH)bh9Q{8Eu11~unJA?7B>(}D>67)Sq&VPv=L4-|-c$F;o-K5tif=-mGxDeuu4Z7{)O39*JJWeMe!}fl8hD^~P!( zd7Dpv>#%RQ@TWY2IsDJkg2d;pLFnAll2MJs+eKNhLC*v)TvY^&v#9UaB8q87uDy(9 zYu)umgCCb~IXDKU=MF!YPBAHU*VuNDMv<8n6L+@%hNq-rnX@lHL&qG|Z=2>A&m8gk(@UD&zpI?mZ=G9H zpwrM4jAK1{9Z9a5+B`2E2PZt&Y!o?feGTJ&QqMd2=dT&fMH_9GxfnSZ&oq09X|JF8 z1e38H$M>_xU{5BoZV5Yp91N8pX1S|No*L*~lZSG=3U@O%2R%ovHfINN5zrH!ywm24 zX)iy}wWg;ts0`$SPJKF)T!rZ4<{4ZZ4D*`nr8_>Gm{pD2et$CpNz}z8drV*{BajKM zCs1&AHV6twJ9_;qHA&8-o%H^?7{}eCcDtPQIJGK3M zj(&L546{CQyRLKide=QVjqJ)BfO#X6>}p{ub9Q@m{{V(2X+FQzzpc)0@-kSKRzm5P zQr!h%UBu|Qz!~TlzJHx&)jh3#k!ZN|IP{k;Z%T+|~hN{{S+Q-eLa$R(R*!_pUmU zg(=;;{{US{ZVfdpe;^X3U0oP5E=V6R_sRbN>r@fjuyWz|2IuBD$jxi*IUt+a_5T1e zH%d*NEuskEAxXw~-P`l5-9#2U3TJ2`w|A!~#m&3)`FxFSTc6#%-=V_Zeb$sKZBxpg zIqi(~tecq3(P4+oi@*bRJvgp*qwKAHZ`<_-=NeMx-uj*u;|(Re;W$ITc`i(3*Pg^C zj&(nC%2HUe00{K=t*X_fQX1;k-hU%WLCM{}_z37Uo5hZJcen1+Wh6d8KDi#5Ij>N) zV|M{hEL#kcRLB{6^#_cD*1Xz^F!%1Q>A(Cj=;3{xN{_Cc9;Y!au#@f6Nc+CeaG_#C za=$OloSc4j%f)!s?{yWbD7TTvm$E#7N4e?EZwb2T+wl91XBv^0mzkrdYdW2r>P@uX zWQ3r(Ob~#KhQZ;7@~)#s1I)ga7 z7oESYNNz;Nd$h@TW{|v0RDdMMQJ-)sd#ItB#!(2x>#Bo;-Ew%(eA1~dch7A<6RMo$ zO|4zOGtB%$VR@d39Y)#Yv%L_by2!#@agC>(VBl~CTaI}zb$7J8 zA`9dOYZtcpvbo6^Ijn3om1!8*j$;LUaQ1IBf){_3h+Snj?njmMpR?MJ$=Ol7@7{^}KvvB2W znQ7Jb6!%J9b^ic|JV)c2L?G}kn`BJ#+i6oBL8P|JK_8kvRz1!#MtSDE`@=BBb8)D{ z6eS~TL`w&hA_)2U-zUC3eQSnQBkZpi{zhDjpV#{Noqd*%8r)pn%Rkz#q#+?+G?GH` z>z)UC^(zk(%b?onnn-3?uB>GeM;I%(G26IjkC%5|wa-p!y$LVSl%OzAh6PphpldorKnr|r_Paz zeU>QC8PBUPOyK6VqZ$=u%9X!66^E1-jayCs0Ig3t@eQ7(bK#h+wFn;WZxMK!*xlZk z_eu7bV)Cg`k%9+a00Of$UjQ)HZyQh6^x186Xyt3Bo^_H4n6JwUbCP~x$<8s8Q8_}B zv-|fdwOQ0&_TFFB$Y#+Gg!~;At9I6Qns0-=OoLOnw!Y7t(g4w6LFu?RAal-Zzt*mn z=fYnCbuBjbD@`NBpA|I;Ah1!g?PjyFc^cs}$CgWkY;|Iw`d4bG-LtnQrlcy-aNBI6vinMH2IFq9$AJ* zy=LnuR&Z&wzpkreuU#d57gT)3;{9gZ{uW<_A(GDS-qEdfGiMCnyP7bz5~3ct-Mr-Y z09Ti()nT`bO|;c7tm14W#tVj7f;c((xIB(IJ?pNWY1W;bd7~A#XWq!4-o{S$ll-n^ zc(X+Ce}_Ne0>04Tn%DbQ!s0&=-`LA51AZS0qj@ULf&l}7ezoYD=9h1A4A$C|8m#vA zz8keRnupjntc38Mw@>X&x<6~>LMMJ@Hcz>;-|H(`_%2M9WJ ztgF!WaC1wiP4)Z@XHFJfdw*TeuO#@9XRUbaRk`sUm4VWrOLEgk7!ekf4=LjerH0{- zhPxL~1`uD_uXT(x$+^z=Q4!u~1n-^3d@4vltM z+eU=zc2lO=R^W`u9tUM^mG;l&xx<~J4=hC(!4=$BNe<|u|qV3 z53+(=EtVvX2_xT%_>W1C#F{t6qy4LGd#iXSQ1J9?1HI@)vbZh#ynsGsU=Bd!S4C=Y zm05D=-J1Tk79OM}3w8dwpP7HOZMF5k#XV}@Q@Vox09N}~n{j~oZn(N_5fP5XM>5xHdsd(pA8iuELabX?G$z`~tX_f@?K{yAscT|m66$r}ubTiYmb?=XU5JUEV6k5yU4-8wjrFW=kDyVM6Y9hK>O5`{@c;g+q z;=XVFpltQ;6!=fz{*UnILy|pn!e0?CwVx5{Qn7{Lh2mAWAhG$r{JWPK2Nl(a`n`6n z^>F39brrg%;s7-Jg3MPEJ&L zQqcK^FM}|6f5kdw?xn73-X$IowYHMoVzg-C!!Gww3!Gzc!5Ochek)ygvtGXVY4CeY z@eEeFSBkX3u4}dlYY=Z)1N%!Wos=>aP=w6?6uS8Y4}=g z6U1IQ(>yVCbE?Orcz0eO*+SwrOIvxZl^WT}$p%f$DaS=1b>8Gc>=w;l>0DZY!zMGq2l#Lf4RCkJky+{*yHDg@%_7D2{{S$Hc%eW>&<{@h z{{V$^Q>*P)HQT=ZOMLN?^X_K?=Kw3cO&B zez>-NI`H(KC4w&!>Q>geMV_BM#CKOxF@Vgfe7KGVM&|49ipDd9BcgYGeLTAx)u~Qv zk-tv&I63uej}!QU=HpC>^nDXe@*h*wFJckf&*q#&yMZO!&|}jznc}|`!33#erPxQR z4KGxJ-s1gR$$~3n7?+*B{c+c)TJ2JJi73-v@><_wVCqz#mtODgK8f&5iQ;R0Ugu4M zOJD6v3rkCzCqRw%Cz~xIfJ3(BjIMEvX9m4zT(bV#@b8VhIdd+faK0q4YY;8eM({&` zuCRt*mly;wHI!nMF12fZ$30roRT5Uen!nz7SC2G#kXz^)ew<7fR{sEHvVz*<&hpg| z1uoo{-OhdM=Sy#gmwIdqtm^mXS$9hovmMNM`JKx7WqHU72h4gJ)`d<;NlGiaOQCNM zD9_&2KAO9Fc0Pmf2Z6j7_8UKjz7W?uKX0sS*9ZGXe>OLZ?GMT;vB(DiDefzr_%F3;QS zQRBB*Ww)Q^6Ehqa9o@JcyVngVQH@Bu?)C1@$0t&qmAuL~*B3K*w@$OQveUIy8jky` zh}&hvh^Hh40EG&AD(VbFaFdM4IKkX&OjT${6Han^Hume<aTbA4#^diS-W?PjI~>Eo@E% zY~W%hIrJpt@m$|kOieoDu0!mH>6=O=gsy<88(_7zjOc!RDGrzb85Gn$|AP_95~;Nb)uw z$FT27<}d|F$?Z_@2X@C6@2D>%uhyz#qgwB7uw!ncb6$c8x{Mh-q5ofOs67*0} z*EsJ=03)xjG~lPpeuio-l12tGo=;D$O6Tu#OAPkwTE!rdgh2tC3$XAZM{kph1M%N`DeGG{Q0KsC+6-!$2FayFE#28`gijy%-d89 zmOj;$BW@%H>M{vD)bh65XeWKj6A;)L&-JFpr*3PK^3HdD~rNwzN2^BkP|fl(@x&QCplT+?yYC9s>i@+;gN9CzEmBl^}X z+yXwoTF+QPI~u{RQWVICf^tdfdCgRng6BQ+gPNL><&tjSa6$J*1>}T+LF4tVH&bi| zAdq>+D(Uk@T`gJ5R;KBkoxv(ux0hERDabu*m%e3Tf*24^-g|y^N@=xi+F+*IUHhD^ z+012_0CT`C{VSKeVv^&R03D~V=~`28rAv|8?U1J#>EHUfhb_kJ9iU;3?Y!iA`&Jdt zmAfP71N)?$)m7)c-&OKPQ*JFk>qDHna$Igab_1wCUiCs~gpTKi!w^Cooc%kRnl#(j zm-Pgsr>&t4Dr+Y)X6lLH~bSd%>>ixao5f_VnX2n`=Dn(t!B78 zw=VSseqes-{3>Ln?A(|2>SZV^tD>}Qs2H3v3-YNvx7XISp_g~ffV_{Jjw<4vNb^7V zZ|m?nIiYnX{{Y~5n&M^hm~B$h!bp~*?UvfCw)%G2Op6}$kS@|BUWopm{c59i`}nQkPqSNIJOJu1>Y8U205=VR)9} zDZJ1gb&ftU#sC=u2d-;)sPeTguS0mt+}B?-&u@mIb*I@~+uE$Ut7&osM7RtU!9O%h<6Tg>>Ut%jOK~;b+@wf}2`oq%WnH|MKTK3#6DC+JbeoGHmXYb&w%gk#fV(_Rjj9_t z80vBGWwo-!XwHigoP+PlIrpyBPEVTsv^l8zCb^uoXBB;}-afbeoo@3< zr1*NxX4WjD+=%kB@+4u561;WD&lRQc+C$@C4*W{gWuDU3Yu^*aaJP2$xsC{8j4NBG z9EKnQ-1^s-N)=;P@20HNmb~5Lw_E;4GcSg0d{wRM5nbuJmZ$xlWgN?8WqIVn&KZsv z9wgbx$87Og*4icJsp7wc(@B4+9WO$cRSj!C7T(RIOrpn=pPO$#TK2HcoT&TDU3UFW zSjrBkGu1xVKAg}KP1k4f8_RKTKBM8)f*oejNEaVxn}G2v{LBF$a5y!{_`kxb;B89N zOIxdrX7gLqt+f+r_E8oQ(6Xo@vfDrzJP};doN7>ae)2Y(r5S6n$4PZ9&a-W)m}Rld zaopUCw7|H^g+Dj@I|d2uSeJVCk*9cuIA{%`7+GBh*{N?W5`z@|#Uk#ga)=c33DQEO0)a z_4IzL;tvDr7kY<@{4-?^p)ZKEIjye*ZqYoFFd()L3laCZ@9j#hYP74Ur0mtXpXzNN zX*#LjNBD=sZ9`Jjn?TiMyq{Q)K(x28zP-8J?&92RP3|~iFuZp4uWi+DG)*3O2Z=Qc z%|6j~$3CH_#CL6OLkQE70nby#c`eRTZd%`U=lyvK6y&1ss(nAm_FX?v(e*oNd^h1A z8|j`ZzPqx8w5W9$1%u54MoVs#x!WS+lpy3Dqc!8+4Dn^WUMSXdEB#vgO7U~tJ+-dr zg~g@HMmdIQIsn7m6WX#$lqmB>Z1&l&JC4uTwOS~-jI7$3WX&jP#y$FfD@ zp9A_Ts%&iFF}LR@J7N(GP3N<<+*k{s*i46Pg`* z*2_$a6&j7jwavbz6Glm7F}6zs?b8_PUfuA+PmaRl#kww+skex9Is6M1=ASgN2{stZ zW)@ysVRgp@XOq^rC+w-mUyVKcKlmnib;~(M_iTef_?fNzKJkx;^e=^e5;tEBwTmkm zZ!F-BMUzXnzbW>pV{k!YE~9oEvw+<9HTEZkb(`%IT+_TusOef{+Gdlg+g${hywXpM zI=rgf3=x7bMRQ`-BAmJ0zAb#y?fyoU9I2;$WY*rj&fCRa0{Cz7XW;jWzBl+b%I8b* zE`jk9TR#!m!55aYiN^bND}k^k*TVoao_Mc{H5*MwM)=F&%UE>Fn5-;em+bo2&mF&< z>6uu#Qmj}VpppkC8Og55PI&A(XP`SChRc|KQ zZSDM!-egC<;nx_i7V)LE_k=a?82nP!Zbr7+zr(AIF52$;W{yh;1T7u8hu@HdDTOt;W1ZEp43R~EM(bYl`b zIV_=_xoJ6O&N#(O;q4FNM~}WJY5qI$CH9}8_+Hw=Yi&N#H~UL@2_rhY6-*gRbaR3M z9R+bZ7@D!2@2cs)^uF^twI-TP+kflG=zMYEE2#b^d@lI8q3KqurP+8gTQ3!?F^4*g z&2=GmVgL?SHjFnspQTIUePhR(w}-C0OQ7kmCcUJ1vPSS-#;J1+x(f^u4(Rg1%CRRT z_7Q)tztDXlgBzVpof1!+Di@D%!?@l=-HW~Fs4(2Cbk606Qf zIdwQJU$=VtCsl)7)^sbl#4!=6GZ&f}@QE890_Tu(o|)#jXF@o7@==#GZ+or36QZP4 z>ZY5r^UgsdX8B zlEs)7R%{Sk2a-=(>6Qt{Ti=%7afLY3_KI>^oS%pnQqp`~;NJ*ow!dT3xr_o~j6r3ROMXFF0LTm%>Itu-2Zww$;eP`|t$1U@ZQ;1QeGTTJbK%?V zQSL6*W_`^h(XjdVHsUv&^u}{r;ObSU87i$?&&bN97`dmRI0K>dt}{XKjX*JF)P5w{{{U#}O{T5Qui7;z7dF?PPw$l>EHm>TP`M+T_Gru5 z#!IVdY5E+olB-!J_5Qv`9q`uqE-tmm?P8Eid2uYu1Tv{*$;3_0K{@s7Uqg6^~F({){H@-GoCopa$o4{5W;QYj}BB#$TF5s2`|AYc+WtZG`l`Sn)xG^-2h`gwjD zey2xq;VV5i?2kU6A%|Di6?IlbXT63Q6c-y;?v=pdy64uJ@e@jyPw?i9z7;yR+BIEq zZ6f~9^3BwU`&)d${_K2Xj;A@VI}KT=>7!}x&ZRzRyC-h1^E*vr!uo!rCx^T>K9zT< z_>)oBEiPfxEu$f%Xb5e)w_yR>gX#@=teyt(2A|_yLhDqYP0~^*&)W^=q^~0YP9Z>q zf=8!JR;sl{go^9;>EvTVHg~q3Z}d4oiT66shO`*1;PD^X?5?=BvxLP8$O!p9ecO*a zv&iYqe3$-SJs#NMzg-E8lyWj48 z4JyhrZVy)Ww{!h(cVivKc?8lcW43XeabIZ^)AK%Ya-=CF<2XLl!=0xX!0Gj?-E%&I zO-?r=&re?CH1Wt&$3Kk;O~&>dZuKKMu)t7O{KS9%)uKbWd$K%aZsw?aIG9@iFAw1*&dCmYd=&^t~_N1Jg6}Mtmda}%F za!v+2ahgUM4cm^mt7=LrPqAL}TI@rNe!rbc206!Gyk|A6TeajRsN9aDo<8?pDmG!X z05gDjCz{GpsG8Qoma63$4s+ZRcpTKwj4w}K{prWqxNBn-cD>=VF$1noJv!EWhre^4 zr!}49CX#H1q>{4KpvS8oRapJw$)}Z3$id@)X+F08tW2)@5J~e8!>RV<)yTmh^U3SG zui;u!T+!9;A7|8c&j=6Wj^x&Uce1uKx1KrXs{Z#XDlmjr#;kb}lY@=Dg=SoC$m$PT znYAA@#}_VLdXXI9b|Dp?L>BgRN9HyV#gCuKFD|nwgDTkWLOr?^_BE-%s(b z+LE%@Z2`%}ih0I5oG2l0ptvOS0||^?ZY5&vvWb+Q@`A;|uc{!&ZcQoa>Ey`&=zGpdeAuEx$Bpt&! z$?sgv>qbK30f;0xH~`kFH2HVmp_MkBO?B_k?`r&gT$Y32QD5_Mv^zcZe=c=tZcWRu5! zeJcW43i*OUcV{TarhO_T-BhO~clZ>cdud~xnm;l4Ic7QBNy$B`q|sw`Pu<)YXF1}U znv`EP?frEfKYCYNT^O^r)4DKrso?GhchZ*H{fEi0ZDt_he=hmvxu%^>9G~QKq~!HC zA-O_;2gdyG0B4@unvQpQ2IU(_W6Lnx_2#P4f^Bctf5_;E?v>x+wfzoia^7bI1>8VZ z>(8&fWz0(lTsh2LO;cK>FYEg5DZ0uxvC8WRWQE=GicpjVbIH#b{a+*Msl$-tjL&&Qb%7b$`wds*Pd%%R+bjObhK#{ z#F3PiHyIci13Y{EYnrTTIlXW4e}U-2ZnXAx`~=i3mhVYTR?Sk^Q-)LasL@Bw$2{lp z`qc^VC%DqBq}vmjV=KJ4ZO#uo=dEQa-6z+rzsTJ$eK~K_{s`SVE8E!T+KUg^zF5^h zat~4t?zzaW>%!Ld+I`ek`&AuV5Uk%ax9J7_tM7g@7RB*DK;JN_l0|*uWX|>w_dO005@YNga8~t~%1? zX)AwUn5tL)x{zoZq&kn=wHqraq?TqTnupos!zTxY|T^6des@~q4GZj{KVRpaZ9A>9EvX=VVDN$~;jb2!dvVhwV z^-#)iLmqG|gwm1W_|c+Xt+FMSt0CVCuGL^;A&Fvo0yFDfaj2Cy7PM*a{aupOW$`wx z-1;w9@ZGklq+V(giB{e<@>Y0PlH}w9dVgB^6UA2AkB4vGOMgClIb4aMk{l^M++=-w z*CrZKaZzhuJwK}*PSqObIm_#zFWK*>wnSh+jPf$x{Q~B@%|~Cn*R8Fz`7W)@QE7WM z8+%f*m5BydKCSZg>T9nM+eveD=(KF%_A^x#pL3^+LKioYc#h8E-V1FzO<||o%Qjk8 znLtGWhFGZt=ia$(W5IVm9n&S(yhW+PZl_5lw9_s2vc`E}2`B1K2U07}ilH^{JznL; zKFi{IUjG2_4-D|qizae%|W9M$^?Di4-7N!c4l6>$_KxpaM*!|C2Phs9ng@g9+A zu*G3^a*?&bmPtIaLbD#2>Bczqsy`K8>c?L2xw)N-OKTeW%{yddkGqlp?bAHf)1>Mo z)O{ z-Kbt(+j+&=h8$x&l1>2Vb6kDSs~wkztaR&{F0`*S_`-pJZGYXDhLWk zddW_`C|U~ZxApp%(ovM>jh)=%_E?k8+@ z5;vX)I2c;%{Bv)7+T0qP+GK(&eJQPMBukGpn8Ou}oScD=ObYL-iG;1nx>^4K!5m>i zZp%jXJg3Gter}xwz04V%t(GN@IYvt^N$czGYsF>Md_Q?{q1ehBN!6|%Pq*6388Tud zC09I&00glB9A>ke>N*K4UA?-ic|M0-Xr)a%=+Bt6WxVkP-lO6ciqg(vl0J)J6q_0r zM`c+Uk&+k_#~d|dYC7b4z`eJY2v=LM)0p0frq~`e1mqK*{j-xtE+g9eR+>w8uW#z+ z5OAj!yDQxA?QS_dJ#^a6r6gCgy{maa7`7FF00qYw?sL|@_3$RGHm%^l3|!l3hU$4@ zg>OD$@JOSL#4*Sq_vaPQi>Fd}i??E+l%dShDtuG;Yoz>Kv9-I__20YDZy;=+XTKmIV+FsA8SlU57hB?0KnFkJW+pa6lm$i)DUS(^&2&&VMGMA9; zOX2Q=XEd6vvAS!BR#wxeif=Foij%Q>#*I3SOdW2Yvw zl^0H(VnSZ^TXHDcz02|NS5nMyVhMaOQ_X(5=6aN zf(~<^O7aKzpdxGU33%5>pG(wriyN49?NZ*>f9&hEl^H`tazZO!GBC8H|bk~V-u5CO`0JZ@ZbsHOK-JJEoZ&P1XYM%@>PXzeu;g-MP+v|NZ zMAx((UOyFIEGSYRvlBc~v|NljGblX^`ewKwy{$>9_VfO}VqEH_*1m;*gj$7+8jr+# ztx^q3I^~nLnXE?;RkfMsBs50_apfJnj&O6~Ty{5kbU!G8=|%i!M>X+rwq3r`m5O{Ho+ z9kaIv$+e4gGuhv%#!I>hpdqo_*1W^vmx{EF1^h?hKNO~^d7$6;Z&1@GvHLoSf_Y@a zaSEK}<88k3OZPmRO88%SuV|5L_JU)fKZla-Wz`8; zqq1pQG`LsB7;lY~^dW(-lz(X5TUC}n04;>}I){d@FD27v(W8}EO?rTpW`2HL_27U( z73sov#yUdiUKPFY-mh=qJ6mb>T|!B; z7K$6W?yk4U7E%7OgFI>#Z~~`Jro98inkI{Fb)@L}6`U~*Pf5PLmLjbjP^>)cRRbWA zxw3ke1J;Vv@edVi-s=0_-`8U*bt%0seR}lypC)R4G?Mejx?~!8mr~HIOjBy&MiP0x zQs5$In8r?X*1M~3jouQu@fNM%gJQzw+VBlN-YDB_b2tpK7a;FqdHidOA3~-bN>SBm z{af=o8|I4BP17vgThFgviPy=rOX&kmaU5b*QlE4Za5{s|Yl7F>J4iJKj%B=(3(IRr znt1l3kV`WI)L{3mFx6vLH-i1(lunW(!4F<)V{dCvrXZhoma^xAxkQ=F~&L`wd>a!H-{GA zN|y3S?%H$b>CtK^lTRJMBng>$+n(QAYOH8Q&wC`3Hj9rguItp{{9C8^Q%XJuz0{ZN z+OD^)2z2Y48(_?uj>c`^?cqib=i0tJ)%0ua8&QWrnp;%3YbmZYIo~9dX_$mk-*}w! zk;Z!0G^xuGQ(txH{a2V&jXBck&CwPub;!ISBWagbSAlghs2)!twx5y3_#;QP*Sufh`>R`)^UShO;(Y?rUA}Vd+Y-qjIoce9#|OQ7M!9X{tusT@ zv@0o9Zms-Ba{96o%9Gn7lN1OxkV$egw4McVdm0YEH07$dtMfak(S)IP?wZ{4Pk>%2 z@lD3NJ^uiSwCSH&kH=!(Ic%+umkp{-x=8%ecw(Wj4mLw*vVI(C7rG^lidfj{ zbIoz3Le3bR90D15z%A>ZYu3V3n&(`}+h4fyefU+?-%XDw_)X#2EH!JN5nbvwlgX&T z7)vN*RdtD*aAr=V7E^*mznWmR}J|%a;e3-$>1DyU9;lVnX z=Qk_e-p^O^J+&0+Uhk%zkIs*Z8djXz)bU(uQ(fF!-WjzUX%h(qd}j#Uh8zLfvb-1J zTMc(z{?v-nU0&YuPwe|UD{QozSQlm>f)##Fc>|}dbmL`eI(|L=W)Q0Vs^3G?{8ys3 zyW=P=Wjd9L>CwRuv$T-fAy5WLWDE|~8RQK9Ij>*PJXIdEsIHBx-o2IOrk`$*Xu7A# z7(|eb%I7LcIAX&X&N;41u*6QHsc(gJ*G}hsXihh}(|{AK(fE@9};IQRa6eR z8Lny->8iJvyqjtK{{Rz52`WuR>D2RY73vS+TTc#M>Gqn8w>plsd2J=d+O)|jK&av( z$8yB12^)AhJ*#RBCryvS+UJVAN8%GDj4cyhEtRlqgdubLv^*Bh09=aO6upglF^<>y zKQADqMt;TfKX&K9e-rhKKNxDkbmZ4;B)W|MWS?2~)jf0uLpe48GJ zJx)62nw|JK?gv`>C}}3|rvF)Ty1L zf(Y&0(aWvdvS6nctS?-Qas16jK?DqBdit7b2|arBA;sSIB^Ur>*XzwV{X0~+=vzwK z5w}6qbIn3dLF#eX`q0yQ>0>mSVuc?s1PP_p0s4 zCmHu1wS<+fM3W#mBaU&-edq2d54Y(?I z1Ifo3?@&aeU|?{2E0e1{;unA8OE5WiM{4G;WlgLH7$>Oj`1Pu#DMhrM?s7Fb zTkkyEQk7bNlsPO8NIdgg-OPk%<{Q6za*dj zy@Wu_>D;8gsci`>j9 z*}2ERty|}gvfcM4qiLtNZ}=un%#oojAwP7GLFcCx$lu>eM#ah_uU1}h{&QC5q`98Y zw?-uhEn7K@l_UbJtQ$BCKc!$@%9~w?XxE+NJb(4-B~Ejuq?&KFzu<|s<9pp(Lz{LI zN)OKDH>W)_o=s$2a9aR5Ad+9^V0&>wg;`oVe8+i8&Ga&+%8ksJd~weN{(q%n-&{K= z%7w|sGvBE+=Q>lh_d}AJS9+Yx*Bc4tNF?x2KZ&TJnTsd@?L7*E&*E#6G~}weJ%1yf zFi?*>cTC)Z;F3eH3Zu)w>V0b0m>Y7x$h!#xIX>Uhiqcgj2X*o~V>|oT{=Q~C#F@YY zYa?@koSxO0Gx>pu-az~3`PMQ{EjjP5{ed;VeOo!p{jz2-U*==-teH6jr>|=A?PAfM zSqm$l_M=_gf0PD+L4Z08TyeU6rnlY}P=m z5lYhYERsJgbISG2Ox-BjSGDx>xxEP|t*o!T`i%Pp)JVie?t>;+HjLyG$o9r7jMeN_ z?yX{tp|pU^uOhTZ15yH-a*!g(`;~68I z@!ZvGOe5*HL0FSG3aYul9Zo&Lu1POwxtXOq`!=8DqAGZj@<<+CMgs%fXtxpHExPk2 z%$v2nHRMp$C*7!c*H?RUY5xET4d9qsyQy@SgXSpg4hiGdyyD*8 zc|1+w-Ac^6OBSVXhA4c+=cpacbtNY*c9Z;!)i&nzy|=&lpG4UBf>oAZ51Yep0bjH{ zR}pRxw>v=3OxHiI=-OY48Vh|^#^&8ootE!Sk$mz`-Q11$hI>~MRjKRExw3F^y|g?> z#XcIE8%uznXqwvG=2%)k-i6N}A?kD5up*8vKTy-&-rn^d`XYr=Fv?huQ`3{s*Jm`N zPRc7?_0*YCl$G3lHMitP;v3s!)bxu9o_X)IJx(~JwKMNAs<=5Ix6DUOdK$g)dhXKp z_B%^=iU_B&a-rfjs+|n^<~PmvUYxcru3^;sRt)#(@w{YYPYu&Xqu(3i8VIWH6349W}D1* zd8AP%n1N7m2H-n!iu6wsD|m0fO{?4_i3O*Gv}U~3Z%CH$;$267kr+H-cRLe|?Ic${ z8j4cwtN#FoA{3mHPi1{{{7*nSUyJ0`FFXxxWi^e)q2dSe&Ca)Xs;jNdtg$7u5kg5k zVnrmJV+0RMm*Q8BH74Y9Z+(=1|IYAkUBgA6?Ml+WBRl-!{wY}e#-#eSeaE#kpyY2d%*NtuMd=aT>i>BVr z@oF~Lb6=a51ggY&0AO-U50{+RFQ9l&!#*U?KjAc+P`I~isAP_NC~eC}JI2I;oPszU z=B^mOWd|Ns)6&=KU+(M4sc9bCekYS_nrhzZt*mNIXK6fIn%mlG@4ek(a!R(+IXD@~ zI0C+{_)~FrsdzU+)8EKj-69*T5W8A^o{J^gDc)Rd&0RN~rK(f+IFL(%33ySm1LDYHZovmsL!FU4%@`=cvn}{ z-%5mPRyOzXrnwi+w-#~vc`U3(7_VM=!K|x7lft`6y>!!O(*4cl8S^_^m*jhA!=%tH zE<8ixT_Q^@ay?hWV&P!C%(Bk}`BNYxw&ehVJw<&5;{O2I{{Z%K_>tiVe0Sln-VpJO zx^vsz{h9M*b!efDnGzQm+RR%eI8a7SYnJA&6OyY7#!Fu(`JB{i)TIX{@a<#bxiy~` z_(QO^QmJKYd79QA81&sIKur(F zT3)rRcz;l_p2o@iq=!_swlFdnFCpVBGBDZsfbZ76ANVV-XkHW4A@JSEMV&3DxwVo@ zbGk{4&Zwjo+Ho0-jPy0pN}eu-7a2p{PWQjxeId>8S_ z1nsYztvx0xt9ul!l5)K|jDcULcZ+Qgh9S}9!$l>xk`@*r#7?9(I-WOuYB3c#u{+&b z_A`X*N`}hqd7m#nnW}hx-(0YTZVVbGnLWj<7Vs8XAr7OQoB|Z&XQwsMc*jT5ue=MU znF|d`Cb2(mwI(TumSq5!L6Qb}>yQt6#xZcKtI_`eTB12QQ(HYAz0a(FWnU9q_)o-M zH1G$F>{w_T=9MhkR<@ds=CHhh8Q^H&s8(=3XXI`G*DK;%2G;ECJWr>~1&!vBtCf=4 z?p2CQgpt=fV!-*hIp?A2MJmcPrAmJd?waapIXKST$zSt3Jr~5j7|>6RycMZh%cyEv zef<9b*tT-JN#=NdX}si*X(SMrEh>xwf=^u6#y=cB8LpY5Xnr`q)AWreN71}(E~j@L zwef3s^x}<%3g8xf?X;qF>z>u>W%VagjHxe|uSC4gIdf3NEAIDevE!OAjJzxHW5hAq zY1;mqVWGzHy{+_92n(27AvO{iZpa&P&3zH2{7Q$ye*ipN;w?v7v)BA_ulT^|S|*pG zXcJsDxPP~2n9Br<2CZukMS?XHg?|-{A1#4DdxSg zzPQr#jULZVXT`h3FaZtw%(;rnw$!!jL3`o&{J*y)s)CA)?m)vZ$;M7GRD69aYixB5E(FiAfbNjqX3Qv*1P%bH!H7sTUC918B`@cWwwjt&tLFY#5i@kJrc`Qw>}u~jg)_A zvefVHe85 zTX`2ZUY%RZeV1fo>uCm=4wZa2#c^$S3fl=lalqVoABgW>m!{dT_T`4DYIOmBs?M`o z+bR)+W#Nc&a?zZ(VoK%yN)t^#nx)z(^Ei+KmUfLtsvPPDtqugoJ#wC4LFFepm^uKa8ymKXr>gYQ*Fbm}|1HntU7PASQ?WY3y>JK~QL>l%c*46#^G zaGHeaxDO1*A()89K#=YSYWilm zoGe=r&^hkNUfEm@?JJ##T1+XGJd$`xamfXZfm5~&q8po7~aXF zwD@DB+E1+L+9-lJbsc8LON|=#IpPT}qjzk}6Wjz~QTFAD;IC0$HTy;Qr$oH?n=QUt z;=@7k&)IaFMVAmwIBZPJ3CRV4JRX(m;dx#TuRBSkwC{6{X-=|IS~Jc*8EYOn*6zGf zt*Yo^IWD2M)3r6zSpb|3utJ-T<``0O&qH5V_y%7X+jvaac$R%SePdR&o9%E#2FrK1 zQd~FypPU|YLC3ah%asP}#!;53?a>~rC{A>hx9-~f4}`ub-NgFM_M?C0#Fw`cM{JWs z$nxVEVV+3*vTEOfH5+{@*j_~gVJ^bykf`#>mD3xQN;f4j#tkkY>|w8;0Y(Edb)9^il^+VUz!iy z^ZYmYn#OwGeZ5bPd~JPd-XgoXjzcB%)3lbB+79ViB_rjFXkHJtIL&!*(RHgiE$%fd zYx@i7Ct_ul*(Y4L-UDbO8S7rHC^YZOeYEOjR;5+@*>&vRowVuZf39=n4Dre8Iiy~P z1an_hpqjr%eEW}3!Q3zhx%H^qk&k}eXy$I#9s0Ca;E=1vMsZVs0)h3w6=}B%$!bhn zQPfU;Ve9Kn#!B=**0P1*+@7HqeaUf*V4UOEl4xvzdUNm1Te6MUQS01@jQ1m+G0sgi zDLE(m)iIJWmb!Ny22MJW&orl})0_%Y<+b|m3H!Q`u{}T;#~2x?n4X0GMzf4l>!F(> z6*vbYJ%?QL{&}rF&ZP5Q6Nfk;9Ff#}{b+8dp8U|;gl?a6RP3%-Qa1t*8R?3c{ZG>r z)0Zl~w;??>8ppT4AoHJks@?nJIUQ(j&i#8C%2BqZK)^^2Mlv(UV^^E*fDc~voUQEB z`^Z{q-llA%WtYBi2o*(+NgQN#?^LA;Z~Y=UqRO%oM$+962f3=wHv&56Jl0ZDirUGA z+g?PdgajwQtzKVIjsWZHTSYg0KI;(eyCIh@I`fmpY0*SM&OpvHyPCRFl8vlVmm{+* z5&*#f=b$5+&zl1nZV5TalPWW@c9TKni#`&1cHP=E1=<=PzjOxwM^?$U)8ybDZ<Xbz%Vkae=-LzC3?_p4EiQg83;=y5p8O*wy8JpSfl&gIJPIoKF; zk?;7{1m-+5`xrzi-c@&EPE_;xkLgiQ87fXO>cvRKOs^Sh zEj>x5y{+Podg?bLXf4K1UjDzWbCcpf;@;gxMnNB)Wy?54wd!3+&JpzfwK;o-Eh7P( zbMl24%|i@^Gq*SjxxsAbBcH7eN1Ey{@{z}s0rEX@?cTZZG~+a^t?9XNoO!IZIuzAy{?QZ7 zDM)64jj)J}9((tzGfkySYvjlp;SxZ`w+H#xnJTcG*=g19Z_xA=UTt*0X76)4 z+SY4nrdgQ{qYT=#KysvKBopo{mbKL`bv=4LE;%5I(jeO|3w-;t+;P*NtzBAbQ|4E- zwJX}TyGyZW`!#3Q=3Bf@(%Up%VP07`atCfle$|)b{T}UZbWbnJhRWJ_h_zXA#|Iz) zIn8BGN>0+*bbSFhUh-C6T^ZdCb`3jLigboUr|KRgXftrTNCg#B1mu(E5^{eU@-1q{ zSiC{6&tx$*_OlcaN|zg)?vrU{2d+uU80k)MjVWHEyMNa~)r^};DgOY#J#BmkWvy7p zVR4z+6Cl{-|`}qp;lrJm&-3q=uxNR@Snk~$CAGwzK?Jl$YDjSvH^VDM%>8mxI2m+Z5 z(aE|ih8(l?89)7gD>ol@&O84AS_xmOy0M#k;RCB{3pD0Cw79lF1UE+oa9M+AjOU+R zcdt9tt!J~lj?>R+Vs=AhsQ|#pINOe(9{sx4JxEH?=F$0IQ=*osYo}y*--$G5)3tG_ z%^d!1^XFB9k&vQE-Zc@538Xs>mo>zCIGqF@*27(9jrako60 z-ZPgY=jrOqDsx8dwvpvmz9suFgkbRQr{~;hn&#)Xe=98ufq=|&(>WFC9ue^s?tp)1 zYnvsB8d+!2^@{^+L{n~*v{MpD3m^xE2Y?5-uAWYKr73B@YZ=NvyHi)c->KlfJ<&BE z4E#{>eah(i(6^t)SJBzeVPMnl*(n}j3Jx-GbAi{I_WuBlhT7-BULKw;HuT@#>Kb@H zZplQA9ATu&`l&dT@B>I+3Y}r_R!Er*BvOT?I$l$+sr2 z`hQ+W)p}i?o#Nk%UlA@eiwI=4@Lzzfw4V+so<@RJpHfY#>N==PLBnLIV_z%&&>kMT z(!MKeW_zc&`!1rWMYXy691I8{RAguJ^sD89q0KE@?7~!~Ql;VeGv+^u`o*Qp)|SgW zH)-TCjil?@ zF0Zv69?t4pE1x02Ya2_r%WZ~SpDgDCA%{H$QusNoG`|ubOTN95@@;cbXmrVR z%*SgT!^xIyj0f)e`wrEPDupVP-P=uTYj5X%;+7H>Ezb5&U+JFh;*S>SR=Q`1ZlcuS zf?LfB@gs(5Kz2uMg@7lLHk<%>-OYKQ!uz{Ot?%vI?Ndn{X*H8u@>7B^$DjmbpHbeQ zvvujk>&vHPVa}&MwtsqOFW{dETzpVIDwf(4q}}*aQ(Jv^Q2x^`1@t#X_AF2k3dxw; zaR(S9*A?yBM~D1(plX&jwl-E1=$5w3ZXFs=IZ`plQ_03Yl{K9@{K`(!U6r*)^yzy` zx1)WYzj5jp8m_N-YyGdL%`jBHMtLtRo)|7-Knubmd}Gth{Hu=9G@VBC#r`Xq#+&`0 zE}8bZZJIN214>&2d4Tl*k5hqM(VZGpZ6wout@5zorR?t3x7O(Iv@2_`1nQRhz>3cE zP1JNZ)8c~1Ph_=7q;lH`UYwFa$mWj@T-%F#n<;N3i&?Y2oZG;+h4Bp82jydfoM7Vz zjIST-8mci+!d?46b%#JJ1qG zCj&iw4SLPe_=CY`L-BWoJP_9&4e?~R7kZG>M$6TdNrrZW{{RyGzUc(ujFE#|U?Wo-O{qV5Zl1^gCtYF1& zsl%;kUNE?}yVA71UU746dvqj{6^JhaIScWUy$HZH_C1fq%~Qkr&9{bpf2G>Cm8e5$ zFNHi=q~32!$fiL1r^ws#1J5G_S2b!L)^eO?oRZO7b$xB-TxCsA=56yP_uJ%kN5z^i ziuE|GboefAbX`ivQMJ@{mz5eDg)yCoG2F-$9G;wv)BIVX-Re3Yg{*Dno+}A;3slx6 zjALTL;gqX^%H?ozjDu92{{V=ub@~n-(sBLfuKxgmqjRgBFIbK%3%I=7*SYiALv5Db zj?~WFm0W}0Ii`4L#JYX%pBh-|a%wWzhc|IZhsj%*TQ>_9@0^4=<-TlEs;3w4ZEYIp zRN+pnuJ+K&*L+hxuknLT@q98(rrliW@*`;w#6sQ39U3yv+9Fkk-U(yHeFv)8uZ;Xj zABVL_bW5qcL1kvzkAb{Nr}>t;Y?BxA_*=qyMz?=@w!dichl;g%5J42XN%G1Z;YkAr8RwiH3$9Z@e?%jW#KNva}m%;k>uLL=AI2&BvJ_g+L^r3Zx9@iuauf2DRgjb3^+g z#iD51qNEy&0!v1`e7QVhXMS^B(^MfBC?}@Ls%CkH=` zVT-FcQ;phd=c&;_&UB?~TYvZmta!C9U&zum>!miDV1^q@l>oN)}2y2HrUPv0VRr`PQ7b7m0+b6Yo@jSx&%3;6!$#YZe`K* zzY+L{RF2~NQ?}EZ?&9Aq_K8d>)NgDmsxJe8eKKpub<4^8Q{fFW#5$d%T6VLj#ALR! z)h(G?IM2+xmpBYijD2gCf|WXo)>n4)u~p?tR8(Z$u6S3%pM-NiiS?fpPCmvjX=T>ZrO2j&CX#Nl=ONCPIe!Q)SA7TJvZS$+dL!izeCWq>vp!7YI4bMW2S0o`LmH7l2YN$;?9fC zdLAn`$9Jz`p-T>)tP@y=WyjkTG5c(b$lQN}(>bpf3oJb3;k#{~l;z6=pHaRC@nznL z4~K27Y+==8)O7yrOBa=KCe_F96+F$j!2ofL=Dry5OgFmEjBhTyKLcw) z_1nQ~HQ;k3c7fSl$jJZ<4iB%bdU#hVcv;3@3x2NswfxUAt!A-$-py=#?u%u2;h%<@ zcAI%=XKxYl5tDeB;!BrYBdO%?=LJE&` zAZ#$-ffF&vX5%>?q*jN*$$U7!58nGwmfdFXuA+4h6YKXnd5#-MMg(e)omsiWgmSY)++^W{E;4z~ zHS~ADH=D!$2D|Zf^zh#5cCUMHEz?G;x91^vQH*WceMqiKj%$`K>9^MC(m2N`ILbcr z*yJ^T7g~6mLAlgqlHzM!KKgkqq_B_ow-?BEuIR0&XV{zg=ZszvR+TZ&N zSkt1;qiJjzCumdTSsNshFb6ye`Cml09u~VMFSbPMBZ$`4P|VV8&PW*>LHgIXIsJ1C zryDfV>DQ@@Y1EWjwuaz+V)s*y-p1{%?nUf{m*)c^L@g1i2(pMF^rBzdejZrmB*$JCX^|;w(oN*Us0g?ckNTI z3WWgmJ-I)PK31)E2_M%wJ=UQ{L^|gw-+>Ll~jC9E-txb%R$3S@} zCp0A(tNh7|QDh83#~k%yYP5$7oM)VzR#J?VchHF@(N8}%K+kjDuEq|<7%T|tMJYK# zpOK!al&(P>;2&Y$s7Zn_3CU7;Y9f?jec7Jdlv{zjwtab|^0Izmj-L6ch1=AfFLYiJ zk`Npmbg6j*(Br3C-E*a8?fI2w4a($YyYZ92t2U!^Z8_=R)~+fsyWAyiU3UCQr%kT3>ZK3)Q;8D>I78p;dL@)tXt zth$`d!z;``TBQ@LLpVHn_(RW22_ z4dK_R3Ojy1@k`yRuHS9Ud9NL;*~RKEeq~LpI<^nYLFv!dxSO(@3hd5XEuOjm06w)6 zZj_yjrzxm!r}fn4ZwUi%LG8Dkdmmo)k8m>X7+?XFAY>jtoj2_)p7-b|X(c4Da-WeJ zZh3siVh+V&kI&w+FD?`*U9q;`PEQ`Z^V+E|f127Z+W8$3n{wB40^pf*heiYww>kXl zo4;}M3~u>;U`=HzbGDbip2SsCZEa{EtKTwwat&Jm1x zTw8nHbTXAWs5`I3zilaz@=AaQVS;|2ooTd;RA3fB58pXcj{g8!&yhw~m;5*UTJ;@EkoA!BmqX4E`!*PgXqW3}?+ zSz}*0LCbE&?mavHBCfSa%9?HdAF1C$bZN&|t2w)wqw>YItcGTmBFP@Yl0ND8;oSO5o6k`}R)$Xsp-lns3IkeUJ9*U6KUuot$$(Gte z<$)bn8RG|%KU(9Cgfw?cm4$8%!@EUzm{7oX9mh1MDm7^~wDi>9*+O3T_4pfFO}k#- z+Fdr}c*YoQ-GUEH^zG@+Xz_ZBiFC(#VuajyhSDvJ+c$4)4Euj7!kdcSUvHnOtX!H> zZ%@R;@a%RP#hPD)#k4n<_cBOs8G^{O92O_g0nK^;0Ei>LI<=v*Z#rewZLSo{{;a5N zzz<#k@7}sARDw&~(|2#smpi^^bbTq|ySuxDeNHts)4%U#llM%@4+C-Ra4P+;w2Qvx z{_RBXuAYZSXw5C158?Ca%3^riO@4!33VV&D~_cgb&lw!HxGJ9KZ^An?Pnqbp-$(s-6yqv&TX9xidcXJwSEA~^II|z|DZ10|?jZ3BYAns@gG_EbKuVqMGQJc)Y_kjeEHhuRhW4z^E58!4H@2x(1X~H zMRrb_og1dp^S8{(@r_%(Jni|PZu}?Lth_DY4Qt}9mF2Fj{kg4a^Te}4%bTf^Nv458 z#^A2!3_}1H3UF)4Jb!zr_=8os)%6Qkp7X|+QR*^WdEhKukaLsHKmcHL738{?PnF)< zuE%8v^1H>_{q;UR_?zKNC_H1Qyb-j2=5)YF&69$eNkPjU9-zHlOx#8{2JM@)6~ zHQYan{ErPq3P%)E>blfmZGtsg^+`M!kn&j8Sx-Odf&F!pr+D*Qs;dE%PZ2Ykk zJ1*}qWM>C(_pW(;T|KV4Z=ss4Y2E4Dzx)&FjR(e7pYV@r@yDgw>Xv$DhLG!@JORvhVPug_hb>h{q@Tb@>+fPrh z%-&<}FCk#TQ~*PI@N>p0aCLC>-!!GZmw%|K$C^pW?cee~chM>cs@zBuPPZf z>975-CB?7`GVL0k0&dP*sr+l*G`$1GI`@PVLf0m-)AT_YHul#lWtK!3C}48Ls<6Ny zfyu3EItrraXFL9v}EjEwt|t zJQtEp9rcalF*i=9?wInWyKT>0)zXY32B)po&iy-T6RM#~_t&=NPZs!+*TTB|ej>iN zI){fe{Y*iv+}TF*BrrC1Ocahnu;hQW$4cuyC~NvJinQ+wP2kTF-;WeSe3EH5_RzUj zg$J1wj^GY6kQMWSed?*rOAw;0<0WO^&(y~Aly56L8r~ZCo8or(Vd7nS>%sFmhT8XB z(WJeMDAZj6j^f3!^CB@B`!e5B@pp$U<-XITyACD{ z1EsV_l4L^XjEv)&-WXa`t3%pPmN&Kcx1afwPMzWI{Jf8rpzw!_HE)F95Bxi*Xqp{| ziM%=EYt2^WVN!2a5~3I$M(jppJ9!y%>6+xeBzVKez5$EFdTg3}ad=Zybhp*@b&Lm| z;7Fy?M;wd*q;vRZ)skyzSWiW^8WxZT+@oXS3Fn4@Ob-D@V>1NjIS-_ zk6qDWpI3yc6-!hnd}|=&mtZmuP5{MoJ~#0-we`=2G2to1!?t>Vfb^lJ zEVF6a9C6%P!5X|$MhQGAQ}bZ(1CpUnPfs(|wQXZk@eY+e=7T)CHHEuPa}yNXBLa4- z0N*nbK>2zB&2r)4?X4v4rSj|C>F2yYBb)G^t8=AV#bdXlG?u!MmPuoDIbx@_N&Cd~?Op`jV^fkVM=cZc?0W0k zxJLS;=g%74NoCA+i3ha`XxwKrO|3hRQ*n*FLlGzrz0j z3Y{NImtB7k=~jAghV3@#8nxn}dyR^rhV};qhfc=4lgAo6_%dIMJ`eEy%rj|8;&=>D z+!N)+EY>kR<^#cy26X`EZzS_gRHIeOEw??_kyX-+T)$0EI4Zsy(XH;aD`ISBR9mwe zw67Wx2Ql(@V4RRmUbL4^)K|vV=5G(d;q5j%Yg=n!60~MQ-+O9-haGd1$*wwdrAiH5 zwBN0nRPg-GN-FQ}{7%Qjns$TX{{VzmS}a!c-s;+>w5e%xDP(A4WG8BZMgbg>M*s|0 z!k1E8>H56ZjrPHDmNDE<4iN&Les1LB@vln@PG44xE}GTpqtw!sX)2O;yX@YUHS~Q_ z@=Z`bnH$~0r+6c4bm~YPgTU|Bxl71(S-e3Ov?4x5&E#>zYxW=)jAxQLIqz9Ul{$52 z6xvUx{1cz|SbB-2r(Z9b{)Cb5m=+=$+yNp5vd^f_UVT zbDUJSqV6WG61gCPcmq5W>rpsf$ERF%sN?a-$@DnmcP68n(!XCZ%1zqhD8U&dAAWhMKJwt4XQ34w>yqrw8u^vn07(b0 zzH%z0gcWSJT+>o=mDw_p3a)eY&KP&A-*r@Hj($@UM9Je|CbfrN(xaT#LA99jbv7K?8;1E{_j-;B-m=-^D@z>s~k;Pt4 z*DKGp7j!k*5a@MZw%)2{s2kFj8 zu4?JY+%~D_oYGL{mD_eXF%yqAzj@8wFjeo2^W6RdxQ#|ku~y}_oag*#ohQw&s-{pJ3C7)7fp;&=#BRvt3Z4%g zt1D}>lH3MdsOm}e&w3oC&1Uo)jFh$Cwxd}WE~JgXf)wLE_&nAv?2(}gUvTF;y4Bhb zWH-xArk3Xksj`85hmO1@&NqZa2MDB$~%SaPXd&%8!fMl4KQnX-7JTd20>f5+90%1y3R z_wp&*$D5;Z3^ry^xe?6{cZ_rgJxym`B0|u0H=;E{t*$ zb9ZYc$y;!`lC&)xWy(1RXdQdjE80?>@4s`c#ws@EPhT&%^X*(u;SU4q78du>UFtIE zZEtaNaR$uGc_~mrjC{(C(C4RI@m^%IJW%L%_!3X{7=yGja>Yj7*vaIOPCb1qM+nN2 z^}Vh{RZ4PgG}mM5?*e^>e+@0A+_ObI_tHWhQHI5EMrrUO~?%{Pdx^PVamF09zL29a~)wLW;`f`$dlW$>Ntr_0x_-GsS$Ef?qM{{R5< z%_{x1d9{BEM{2Ks0l1Cro<)B&Mb*@M_U~RKscALtv!u7K7 zSLFlL)g@D#N#DA+Pne@8I*L#F`;RWr?B|wiEhA8h>egHG%WrR&?Jp*6aGvrEYl3%dh+cKUp_+KWdir+T2*%w0>+c zhKgA7ps954o;?9Hnx2>T%Y7yoU}+NS(%Bw3W!oUbZXx#^ZTq}&T(@y|-9G;SMaK5_J4){01muA zU^Lr1JvT|Wyp&$Fi#DNWBQa4KDpa^q1~|ayJdsK9lT6pNYh60u?DpDrwHB1oLk--> ze66fXC<-t}2ssD6d6glDa*KhJWsX0L@H>2{o^Pj|PD}NDqRtu(B6IRk}46@xp zk2c_umdVfE1x^Kg_hVyesQ5g1lGw*278Zu0S+I;fUeZ?kCagTTr&w;769y&Mz;^)E7Kpk{OEg$4cy_UM>rjCnw)yHyO@KP5ZX{ zj{Yrk#2?t=YYk55xw(QHy*g-<$+?IEBuNvYY~u&7UbWIblX2n{@ZH=JTvUJTw32&xOisZBK#lM6sp4(E= z=Em~Y(c(06c-k-ut}?*q2E9C779-xNE7@snU!~1G*;D3vzc1AGPYw8|SJwO?_RC#b z`E@@F#kWk=Z((Ug*jEbYW1qYOchBQpcfzj|>gliFPkmt>(AB4x?YECP%SLna1;+q? zbXSvBgeOl$XMVqbLnlpDg0-)2Pw9>LsqlKwR?}>CUk7Qn_d3?0smi*Pw)2REwYf~0 z5CQ=i0By!bbK1Uk*XHpzh3zzbH^dg#(b?EbGU>PamAM6Fz|PnHK7fJO(!B~wIHwlA zEp_T#Afpd^{LaJS2gMH->V7W%&Ars2^5(K=n)6eDgd_M=WkKW~gjb??y6PPBx3 z#o;UMV?(-B)L^&^ZqoUK5-S74e7OLCLCtc|=BZj#;@exa`uZcC&JmX^Zr59wpA7t8 zd-0dy{{Y0l3G14yk@$hF=eM(Pi~f~t;Dp)Jkb05V)K}fV3$3lSyC`)1Z60l64+z*> z>(D_iRUIvact$_QN)w*M*B&XVD}GxuThUEl;a}FhOs|fA4eWeR@c#Eev{)=I;hHI1 z{S$Ld3Y@TK$jf!>-negueizj|E1`H!=HFFPu--#Tame0WVWR+-0Z2V~KEpNJ zhObJl8a)3161|%4MOPHud;VUBeeown)qWe;>pEB4wCy?L)2<%ITRUSup2&>LJAwRa zTRVW{dv&fy_H@3~JVW6x7f0eh2;FJ==Yo7kWj={>BAJG#q)i|1rGo_SQ2hxx0N{*@ z-l}zJDLHDMx9fhUR9l1^dcU8@cCS6JguWqb@Gpkm-$VF=;O73z)Z~y%Ean$V^V~)V zJKy&^dJF=6abFBy{8#Yr#BF}Z;pL5u_O)T9YWEMS*?5lQ?9to=BnAk%EPb*M(zLHu zx3apkw!eSmJUnFTb30z&iGRbFI%k7^D9fbUSVgC43kA26ZEGV;_Y#=1A(J`UigE@| zOlO+#Z;pQvHP004$HA92%V(v-tT)+K*zMen%DW)ozg|hn%@`^!o2fS6N9C!jrA;*Y z`sjKm?BA?G;JExsd`YWBJUtGFd26Iw-NEMxZX_GoBUAF38vqV+J6EH86}q_b7sWku z#do?-+4Svddpk`E2zJKGV2zZy0Fk)$IIl9Ke|0-sRSj;OFYCh~>b|VAczHjj^onzu% zL&DZ}B%56aQMtIexwktd!~Cj_-Agvy{VS_3l}J!+J?_7+Q=^(Ojqj;LO4j7M*EKCB z)60xnNwM_%TV1Y7jFl1+OL9g@<2Bl9c6WMrhOT0U+FLD4QHo-l*hrr`e(a2s$YY!y zIIZJGl_kr6_AIAX9Iuc?eO8PK$AsB$Ch$n@Bk4npmLIJU45o_@>vx z_8Qt-X@Bt~OT9)y(Y*Jo400E2uw`~(>9~%S^f-F;YEqRtkI~rWonL2NHk)>}`}t~P zUU-Jhj<$cDIJi+`mXQF&K)aLOml$xER>JhD^Pj)=V zk@+Mk>;^uWseB**00{4bp4-Lt*Y_SD);vwGCZB5dimb3rJZ!PFnIme2Boa6qhplOg zn{*r!Pn!CAb~u`ZX5}^VKA8Qb@B9_wF9m77Jn)gSXmmdk+1kdJFnrh7RxYkMs_vr2Gv73KNtCy4b6ZBJO&V_E+IvEX}A9k{)<1tE`U`XnIlw4bvm94G*Wz$cYEo{5@B>4TR z=~maC8t~59ceWagI)QYSCW7R% zPK*_cFyMOQo`SleMN*`l+i|w9&!NxDMiP{{U;Go8x3REGh-9*9%*zWj!K5X3gOE8q z{=MqO^~Cme@Gac7cTyX*B*hNtKK6HKb^!Vc&ZSOd?<+lj;Chr1J5d32u z^UXJv$vGMBIj^}~oVy=Bn(QIY2fto9rnlVyVB9i*M^3dombp^8 zn;1C2!0YQy#~gQ4x~l0B%&l}Bo;v%}8#u`4IW(Q$P;O0JuK5Q5bs5b>dV+C+J5)mI zSGCNp*rXm#J$UO@V;CK|9dnwyUtNMd*rXHFf;wWO#^Odh{KLL!t4Zst?hPyIDI9_c zJw^wuE^)XJ6#9=(KdnhuTCI$`mTq%`dm77-^*csb=chDtMsRi^B`;DXcE%4(o@smJ1IW)l zrigqgcO8<6qiClKl5@`l^))--WDYx?YogcRZ!vPCG215qd-K6HsRC_8U=B$+&svzl zM^;=S*HI@t6NX+11ot(IF*}Ako=$uF)XFnT?d#lkYgR@M&~kB}*v~X|Rlw!B#(AvM zP2Z`Ka2Z)77zb}SB>UGDe#dh%_5Sf4Xp6M0&Lr10*~;Cy1;)@@Jn`SQ zYo3-dE3);-$WnTq{{Ys98B<#(x^Hlu)bIUV%D6z8ExD8rkT>$IdzbR!;XqN#Hgoua zTeVN(Z*HH~rn2Rd=9cF*cXfoq5&#Sv9ZAh|H+M2H#^Qcm+q3%8o!vCun*2!Te$8wB zcR72vByR^G1M@dOmo?5xU7f=ca(Fwl$gJtLR?E-sGUc|fS!?$dnlP-vRP7_FT%XFa zuKd(l0tRgV01~L^D|JqrZA<*u$h-0{>tmC-iPVzH#IoR==RcqHu72j&i8nAPk*G2{ z`hQx+Reh6hLA2o~C#P*c;FTo=GkmxJlaNvdwtR{SMH4CKIikPl~}tp*1P<_AxoXfwX+yyX+BrVo!g2JL;ULc z%e|FAKPfz(0rce7*Qr(t&Dng!smtuG{_P33ow-wx-TCQ?uPgk!M=P}MZJ?5UGAlZ; zl;Y%?{Eg(K>8VMp{)nXe%x}9dhW-^$diCR|tn09Wa7aF3`Fyc~`qPYOLRU{tzwmFX z99EpoZgV$LGdVB0na3)lBP03N1cVlB0!oAPNWHOD2=jZ=+h6PEQm4xvX>aSI`Pj*s zni&MZNE#&=8}sW^+1Xj@Q~A;$hFHjQ`N$-88UA9kO{b-;-v0pBzkyV0LC2O}w=iz) z?CrHUbzM3bqzN>MC9}D}d>y2WgMw?k(=^nZPKNqs`!(IdFWMR~(Wdd9tK5#&%~orX zC3gD%09{S!RfOkemF`%*iuYN((Ij~cHo7aYjUNr>uHL@HH$D2+ly35PlS+-b3YUXwx8kMUs#%TX}rxi+(1|ZAxTRp z8T+{8k~zj}!nHdYv};``vdCwK-DOvaK6v+&AP4)yE!ViMY4SQ3X>)D=01hd*$@4y^ zy8I#3FK+JjM!CD1Rn#t0TOT@I{{X#U1fMDB2e9v6yKkp0l=q6Vv6AOlfZQj@p`3%a zXyYdU@kKegClwWanz!O})01BGmGAhR@5DPXeH_Qvfei-(m^kCbCOg8_m%cjB|w&P#RK6zWvuy4{}3@c#f)wY>24 z?wuv1(XFFTZ!~uUEY7ch+3pBEk8W#v#Vsya*j~!(<-s8jCQ+2GNXf@M3;|s7_Kv4B z-*Z^y_-uCYQ08iDROWi}rXrmUX4=OYBHzXgM91bgb zZBV>lUqAB}Ba$!PyMDis(O!6d9YWi~yY=ZOveC4kGfMk6?*x&~Ll~T>Cx$!@pys&$ z0ET`zw$eO9;;#VRz;0r()O9IZ;@&oQ^KeWtgPv3{3z7)~t#3w>o*q+8Y1Njh-j^-z z-*j{SB=Js>ZQ^eXT0XDZPi(q;@#%Bj%<@{Q zz_ZEoygm0H^P0xB>aTv*?z*#@jH)O~+M>6CyeFlJY|@rVF1f(5uN5p)#$K zLaE8*w>YmW_?=^~c#FXLcDttN-)OKJo%GsG{1<3t5JfAjh}QiNLU&+p;{?{!WgJ$` zMca3({{V**aFlsg{(Vnr(Y$A<>fQ?QwU>x=`K`3i3HV~yPqs@-Q*QQ(q_k?FF*}K4 zlaIo=FBSOTQ@EPW-di11wXKm$&0ABQ^*G{>B<@nU+HglCcdiN1sTc39eSao(P^y-W zKE9^~qG}rMt*Bo@kVSKAEvpSZBTb;HoU=LP^!Cp+!TeX#_0Iv126#%>Owx3_-yYkp zqo*~L{%E(-y!J)`WEtG-3iFeWm5mt2teU=?+ssZB)OA+Z@I6A#_rv}c_*Jb9V%}JM zE2hm4+hfz<7Z))!nF#wv8(=xk0mXO(`W=?C*Kl}e?UvA8+#}mde;G5#$M}&*`FP-G z2NbEiOla$>zf`aC{;YKKw+$t2SFfTvPl#F;nWktkcwJc~*Cn&JGejH}g76-rwYF8B=pn zn(kfJ^{6~usA!2LR&UE6Me)i2w*{?dnsnXg z7c2nX^5pU}>s(Ez#643`yzu6iXQFBTD$%C#3|3msr*WwSg3uQK09CjUPV>g>5Hp(R znyF~bx6R*lyt@RIN_5hkQh#~teikuYPk*PR^6Gk&IxYND_;zdE!a$F?1bO?+pD0pK zLDsnK3&ffX{w(oUkoK@!_=7^xhBr@lQBZ~9m zhn#6SN$Y#tLmF6RR<4^P)~>EB?=A1OEdu7=X|$i4RMTX*VxjS$o3LUB7{T?Zt$bbK z`^i^J@otK@AhXUi{Z2Kz4mM@o7?a2Y>Hw`iw^ou>DZO^Gvi|^wF0zu9rJ{XL3i!q0 z&j#uC_TC}z?ljxWgSI;xD9@N8agax+)Yq!N0%xn!e@2>>5*S^>yg{|3&omm#8}MHXf`V)j=gJYti#H@ky06*I3Fat zdEgA1^RpUq#nqFVwbtEkj;Kw}SC+c`zpm$BeXYwZ(8}rdi#gIufpR6t+71+BJrC$B zl8?j}*7B75HQl>8k{j6C=sHZP$z-4XhG>b0_c(cbg`c9i{_hB#NyN6z#zGhvSk|t5c74j9joYy59 zwdaDmPS1DK(C?);>>oDQyLQ{i_Y0qg{t>v*bnQP=w$(0ltuIo%)-SZ(ETpr|I-!mT z^4JL(a5K(uPkQfk9dAgzxA1R)?DQ*LA6c+~PYt!D&{^JBVqK(Ca35&G;Paf-)ST*J zRpOdk_toxa3XqECO8V-2>EZ7h4GZGswz01))*d4M){@&$vrBT!OiEQH+Ix}PrfZ=1 zyYU-d*E~0Cr)kj7VAgu9lU_kIYrXzg^0Bnwx6DWc5tHj)UM3QbB6Rt+@_t85s&jkM z{=CnoY@)TWlSlCb%N%D;@J^R$9+Po(wB5?_sUWfujQs6`oE|;uxv}u^*Yy^}M`UW{W3RML`n zdfxpF)Y6^%ekLb^d^vxh+IW}68kn}w>_4{Sf(Wh~ea*zOC}1K3u1W2T3i=~R(=D~9 z(X8&x(Sz;6OZja|sfl95iiamGtiUe=y(!7OJE)(|;#D8TZ+Gt0_RC1^JUiiyPf?aA zbm_KT$lGM|Q|3}*UB{Ahj&a_;Y0$snExEY7yntyow_2PNHT3thNiM|)S9WZ!=obvQz19hez<=N>Sr2CtC3>rkkv3mfk3ZB(a`V&e>I>5e`Y- z&cKFI^5fF9e`xz(5_~MPZ7;)`EbE|anog${vuzcRpB{}Icfp`(ZZVg0EKRonWbPnz zuc^wZy8hNOSF*j|dmJwEw5;yV2TJgjrkAH&ja8$x@nn%{?In+zv&i<-!etESk5G1= z%rYy>{7<2sCi(PROTlh0wP?J@mf$pCIQcM{z-;gZe5E^kX+E*)tbIa`7I;*o?EIFD z>O42#jlL4Q)Abo{HR~Hs5leTZ-^^4+3S362``aYvdSDFTest-4G2y)_wJl!i;ycOo zyGZAZOt`j+(~ss7IiD7_&BlG!6Ahf`cr#Z|)LVK%SI z^?EpvO|Gf~v-te}%du_-0x)x3=yat@KP$Zk_yza#yL0meG#l5lBHeh;|yudH!!Tb>e@gIk`b@WyGr$EQ3{ zoujsav~?NmGoN$K1djc>)%;p+KZ$A}1Ke|yijhF=&U5 zZGFM>5HjxRk&nchVdJ2|&uVSLR=(yf^;8Y8I5{Ya-CG772IsM*H$iNA_+M?It~ZDR3&qQ zJN&sdl6v`=&9upsb+&QIl1gdBs^jyv;J2}NsSQg2)Q%{z448j+H7&~?eAx^aS6JG({xKMl#vl{PjI+Qp#^KFs^b`@Cd0*wdZ{Yd2-#4oaZAfc7x7()(qT9 z{^{UmwVb0J`j*|+q*>lcAdf(ODbkV@E)V6_vR={+YD^Z|mD#Z#InH?Ft!GHs`9Q~B z-DyelPu?_Y+J9ftC$>QRcpFhyJnMMo}`~lQ&@A?JC7LX zYT+pRK4HPTT{5(zu5*Le2b|L-!H5#aryNt8la20Gq@{LZ+#j3MpG=yp+f{clJc33$ zn#L-m)zkjFmfnXqeJ0{@oDS8?T}W`pIKcbaB<6_IVF5p;uPH!m#@ z-%mo6dcU}%aEQoRunTln8TwZ%c?&k>04oM0Zd~W}>q=Cr!Cu?;eF&E{XReK$o}soT z+qoIXRo&m#xl5T2_9~-jCnr69zt0qvC1v>woDKr)7*6Y!>Hs)AMKXHJI}Ui_GLPICaiRJ*s)7_MN+R zCzZMDx9D@Tm2f`x21<96YH)&q}fA9>{>Df2F>714FZu1G*mB9mVe^c*R4u&^y z%Y`E>!E=&+wZFYlCAZ{j%Y9|HAReMJ?lymtg1njBxJDpuyPM_O>CtI zuXpkDG_|96>bET!IV8)lFeC;!KJ^@%#@7sfRr$s~_rL2{#Yt7wF3$e|p`0h}71>^O z+JQo{@<9g!r}e56eEG^EluV%mJw0mqsPgL5TUlxU01jQ1M{9mNvli|XDw%Q=1^H8d zKb3Qr3K7Qqg*&hZT#rv*Zxsc1B}f7je~!nAp`)&3`i{6yEF@f3a^ z(PWNwd+W%IQw9N9kdVwt?tX4L#d5wdNBbN%qVUb;NA_fR@WT=Doc1{VYpRU@0CKt4 z&-}>twJFZg+4o1Nd>u>siqpzCsUFR})9<15 z2ZCl6m)3SVpqjxok$Zgb#|~BJl!m}O07p_f^H^HF=A#FQB!t`xsjqcXma^VD#|m%z zszxvX&r@9Sr53f-uj_8%8A&VK@;UdrmrLQ;(e(>eM9W!;F*!NpVOSn3#JqZ_Zf|DOqQAJX*O3mB7OfgwO*O(H z_W+J@o_MVs=qhWZx|&mQt54qC@hwVCSHsq`Tv1nCEBBiOcqOEpOf_t`m>w8U7!ph3Z$*wgE`v|rtHE3jqPlch`3OLLR#Eb&`-~-4YnkY^xotxicloTpCz5KK# z@Q$yi>eoId)1lJgmsyhLNanh?EXa(DwPTJJ$aw)d`Fi@A<1KYh4{Fk}k5V@h!)#Gv zNWRZB%%=yD-(Wa-&(!ZYCmsKd#j=FEJPnqVP2A9HL6fJ%u_zT3#d!Xvpw!2pU093pYBMVEE zd0z|Pr~Mh;u+#dLlWg4a*@gQs|( z#1{5?M~rmFHd@3`&X*}QvwhTMJQ%}ahDHD+W379%ocWzerO{t&u8eiRcX?X>0Gadl zkE6rliEi{C4@E7Oy{r5=@d&WHX+e+eaB4Gci4i(4l@=6jCoRVuS0|(Bck<~o$)~N1 zc8g*m)MC`_%DGvYRmvgxmGU?s4?|sz^I!4(4Cqp)%;ui`dj2NYkMvDLSMUy=x(=fs z*!(^Aoi^>Hv@IxGNeW359OO9cIpZ8x3*ntw+fDGqF=}>tJ-(HoUJXY3SA94AGBQTh z5w>~G0q69mPB4uH7klf}ziA24ac<|XY0=w{5ZPCgXHwHA5No%EJgbFeP)nq1kC_1XG7?It+98hAn@?z9Q8k)ikJ0wWa#U7~Kg3;o>TG{KJ+x0M{?#&0ob@cZhAZzZmFx zE~BSvmd4ieSeh_|$=TVH0kApgT~U*Sd856)W|Ndud8FOG@X`Jz_-jemKGWfiQsYOn z(cM&~jhhR5g5Q5Vj!tp9y@OEkjozuJUiizxx+>l16WiNItd|QUams|pAzldwkaqj~ zS2i9seWP;g(Bp)aG^MSb{{XMn$C7xT$5!49@aKwrDdAmrQL(+a@hoFfgy|+!OJNrF zoXCKd49$fjkU`H%?EVdFfAEtofjrjNGfk%HawVRxc>ZLUQocc#IQeoiFn=0Yh(em@ zg+2W5e&-ABvbFI3o#IQ~W5!mxRpj@OvRfOu=4jxIx672=6tE{F09PsE zI|;lO0{F|q+KexzHl}~JtQ0%QGT$R8=l5-nGI%|!WmDVKl_jHldapA$%~Mz3uSaiI zdnbeSEepjr79K0`&DEBVsz-BfHJdnXgmFl$<9kaF_rV$6*A?j>w2r>9d;<7~3A=_{ ztxoGnO9^dfRbA2EE13Y!SOr{=IL<2!HD!sew6od#m*x?iq}|`&*ZT52mea=mC%Nz? zmyUFstv^(^O+Gmm($3kLBv@DXu`nkn$76c}eJk5^{{R)~-Y?RA)uA%mXGgZ5Pi`0n zm}G}so^hP?{A6Wf@vrR^`uC4o^Fmu2E5^KE4K3l0aPl|K6-dSgMV2)@3mqp)@XS6Ddpmir^qmeRxS4->Cg(UPK^R`Uee35>j@l-d z@ahdKSkZKNEp^+?V6~i)4UEJmBg#|vaz;l^c;=%ECa}_^<#qjbGQ-rZQWv}b0DL%u6!J*PB<8rM89ED@yUR^glU>e=6(FMdyZ&dzclx*X{{Y2v z;zqlk<4&7cSvOo^W@yR5BR%ooBy(R-zKLn5-s$r}VQ}F!J9%%TTh; zrHFi$?-iwzcmDu0tvEqBx3;~14#&29S&LSXXwmAnmbwk~{giiFHix80vr7%CaU8b} z2_9y`4$^ubPAY!|YC7G{v8P!lY9Onk!+KE~}rEkTHM{UTc#vl~_Sp z+1qv3)NRJQQeThacHbDTtgkf#q$Z^s>a*#wG*)l}Fe5ovBmg@0Kx3 zWSQf=NbE$e45W@_^AwN+WR6ckPTcA;mGoW6g&K}pS@-_{fMA!hBTGxE;GXVlhZcHq zyU&*6{bQ)^Mn^av*{`5{6{BkUPJw@Y4&6rn?gom?y~oQM%EJS3KPvz^&-JXUVkrGy zFlk-8l|m{qyR%DA>;3`h9yrs4J{Pv|hNA_|-lcX#rs)(i40058&)KHUyhfg6_$oxw+I8#Ev|&0U);HgU$vITK6xHI>TMheW&VHT7IRW z>Y6R)p{Z&bP1%G9;+57BAkWGcKz>jTIj^L{`$<-*XVGabyzY6mUo~YL-{yQx;|VS# z@x7Of;E^J|)&;w2_xfuS9O#g&aiBxdLMR^f=(^pNo%P|0+Rn=EeM$>cvi945lJT&^ zr=*$BKK0_)jVR+Tw{iJ1+QT`{nojSx_5E0bU)61VG2jmqXcsc=@f=<(vWnMCm3EYY zVsZ&+M z!b`rxmFrczcDBdSJ`C`z`c9{%&8rBY)aCH3mp0QyawK>+w+IhFK=;Y6XXACm`s7+t ze{0#pduMG3v9no=xl|uBFkV>oIO;pr7KIv#?;C$em|CN~z0<<3ynC#8I@iQ=OC0m) z8mle5P)&Kbuu=;@LA#Q}fG`hySI=v&$7iJLo+SSOggacYw$b%wxzcXsUp6*~Hy=19 zkSiX50CU%x=u~8>S~h&oXTRh$;RMtc>#67;418hXDfI6f=>8#-Te@T6({zzrY9VeD zcg|IF(Mk0Cx#qkt;zz~{pBmfg-W$_2h&&(RYa4$kX*PPCmlDWNStWMh$bEpT$z?no zr+D4o*4dai^GY{O^7@`%q4+CB)C{c+#q!AuvC6*U#E)_R0P3$s(|#V<%{9AA6pE4S?S@QBWip03zXb8qp8a!A-GWXsM>X~nO-oP2 z`95A`CsW7=x%$*i#~)sUCZhbYX@iZUc>;|0BR`3uzYe{rr0;Nxw6+u}JplQADe0W> zIKkw1s;6W)#awa0T=RjP`_wFb{{V-kDsRlfSBknAbH+OQXRSSP-yr%QT9)s3V>M|# z$F~FOJ$u!6AKpB5=BE7LF-_U(LfGrW06Jr>MV>zndCqCZE~ms}IJ7)=!NKPvtyo;2 zOb17$HV8 z>M(h%>zM~R?oNGcB^i57KM_G)8LuH6t92f|Ye!0A?B{U6UQT<})8%cw{{UZ6G~0J& z+lFAT&nwpltzpUu#xtDqMPpez+WHOhC#wZrsgf{zmTE}{864)eyNcfE)9jhj4CkIl zAY;8#Zb=2cyymBwM|b^y!5V9>=B1MH$mI1sO>e-Y0noR#b;i-v?*9NHTw7O>cx9v; zcsS2N`qVB@7(MytG?Y|UnvOBLPt308C+}kirA2Y_$Jciq4_YHDLiXIzU!1^|vczZR z&q6uPM{sr_!Oj+4*8rEww&Nc+1^=2hhWH7Zwvzx)sQVk0Qu znp&K6`<#$T$7BQg*E@VdA0=A{Zb{D|`g2!7^ERfex7&Z8pOJ91zAe8K8H0Z8I}#L} z74P&FLgW?P!Ln5HK^&UN`_E7KZ$@+b$+o&2rR%h)r)%eV;PpRR$dt;e6+-}5hQQo@ zl-De^f8g0IjEeYF5lN-LzdTj-{fIjK17&c zLY(38T#ey7f}ClxN{{SPXP0T@Lex&yI{A&r~ z%#WOvT;)e6@~r61MSIt?+o${xgr$8|`+vbJO9)0FZYQbp6l8jSHEA1UYvv63iSp;K ze9~?eB$CtS{{RA9pElp{JqP@&f(r>9vnEgFNb&{^xGx0YfJr8dX)%r z)%Vz&iHy4KQ|1GfIU|ossVXvp$7tT%FzjnOakFXao!9Hs))Q_?%SFA}lQ3bsAO>Jg zanted^{#ewak)W^p~xk@eZR=6qZmr@?`tpkaE~SZ$$Yz<{qX^cj=ivY`e1*Ja=N4; z;v?m0B0n!Y=hvRq(Nb#CS0QThpn}$_vSZ%a4^LQ^tKxYQ~r*vsIL_ zi7amxMNmjBAMr0evs@J?Hx%W*$$wfMP7W`d?tVwDcrR1ZrEN*=W@nOX$t1Z(n75TP z{{RB7_eZBn>Y1mWd7!hoh8HWkNeq8HeDcI+p1muJmaLucZs_ifno_=u`QOFxOuA>o zi+GwFtCZC5GYyb+PVo`<)+KU)#q!~K-D-cb8A*Dxe3K+24j9=z97l`cr7 zrM2#H$~0!(?t3r6)JQxnbv$AyCA$cUTOMy*@^jN7y=z0i5NjW1DkPLZ?I4MULgSVm zrn%}h7Vg_k?aGit{o0MrGxn}!3Yycb8xa;_5t$CM@w3&6po5YgG z_P3JeMZf97Z38* z=_82O%6-gCcn2F!FnRAp+l<_#x9zY|Ue0aZ>Tw#w#WtO)Xu7Igl=27KqO@R(bO`{& zSd0+BoQ`-E#C$>UU9ImcX=)=_-Y!c;A^C|Qj)w;oG+gCZ-uPej zscYIrUQGGJ;s=B^n?D3;UL(8KEmGnME%(^WjJFPiAqQx5%Kl z57aQ@Al1s7qSK3Z^*8oWuX%H8(C0iC9G)D$iuX;O^#1@hQo`pMQ6OxElQ|_%dh`zv zS)ET@vGH}jkDxqP7Jy&J;prI`DYs+Ij9@XzCm{6AbbW3V>T2wt&i?@LOfMM9@@v;~ zPr)7@x{}LP)85533nyEdCwzuhkACDT{Xsl)+PjYtc*9Gw_#dd>q=Lg!(5yAX7umu~ zBi_$@91uUudT(YYjGj+5ola>09Wi&qcuKd{$^jojVD{WzOi+@c)U{=hi1If z?d(e7;Iw{>Y2Jm3-Q^9*O-y>nrC6-N&Jb^Fe`l%m$Z(mEg6DRhq; zd`Y(P#;a`w%Xm{;Yu^%C$z-^i^U5OB;~_{AD0Usd1J^u@$3C5}__xKHwy7n(#)}~k z!*HtJdbF-~zE1}&xO;I=6;iY?v%0%|b@?2Sgk^|o_rHJ8@E-!{1vWQUtZhVUh10Pgk(Tj?JblL zOaA~1IXD>f=cuf&7Wj%E82F0c##L9exKK_3b~|~_NUw$bQ>Mz=4y<9e zx$;e-`L>N7SnX}Z5J2Dnd)HM+K~jsg(`2y!j(7iX!QR8hZQ->H&JUvWO>(vbiF%Cztkfr+UBRO>X*}bFzTL3lGS6t zG3NxM;4lCjka}jmT=@I_xi*`jShcpbrua?oOWHQq-~Rv(d3T0&eLGNHOTqpax71>`TY09ou+$}4q@LiY85sT{gN$*C z`s?<8ihuY+Z+s!EzRfpRz8CXb+g&PLhT6zfDd(P~@&_KYR;uaIz4cG3xl;Dj@a-Q- zcvr!iFM#wo?Jb3bl6cW8>BJD%pof#NMDtJVB2{ot$g#~`89n%$3GFYM0pLJ?Lyt1?#=SDdORn8c% zVtK_xpDfg+FL^UrCZq1XI;(Ds9W%o3;LjF8t9WNwwUl06gt@bwgl#-McB;M1 zC$)-u*xL9nu6Tdp)}7)X3HYbQnq8Dht&6`2HPq!=XpBd8LE~#=WOJO-_?zNBgW)d# zr;dClqFxPqNb$T0;`{wF)Wc+@GuF6eNn#wK7kJA0KTDNPvva>I zOQG&w9r2cft#|{(o-MPs^P<%}J1NoPxX14$m;_kJCzd{8861Y>RSy+-F{F=8Ul89- zYxan~&uL+MYxav+qyTM~%;cn`ulmgQ#b=i}x^J7kw0$-&GN%2d@1?u-XXlUY9d+V2 z_>Xa6;v0)e<p@8tKg`Dk=Mv_FjReh2>1_jcNC z+qZ>vc{I!YUrB%vl3Ox>$d1`yyOEe@y=?fG!XFU+Hu&zt$Cefv96t`B)UD*xbE_jH zHV{g)6e!J?nbmN|9OoXDm1;Ebn3kgd0Em^FT7AXSj3oruo~AyyG+&BSc$Zewd`A|A zZE4~skHh*@odH~eOg+lr+kHfastSo#vDnVs;9+hSx^KEV2q(EJX za)sU8f_Wyr3UumMp#K27(d_>K$fl#D72UtB#k$jcE&Y?>i@h^dpY0Y_#cwCNvmzNK zR^wwfHxLNO74+_bcrUd5Iym)2jzzG5s~Gl%-VJSk;qEK3cKhjkD5Nv4Vr@=FtySob~;7+w@(A5v?(@FdWitDSNO zxq)DwNG)Sek?sr2!E8P}&V~XAi+;Oj(E*dpT6v@_Ryd0T86bgnC1dSj4U9RXhRHVC9uTfJ^99K-TWP` z>GyNlX}2@qNo<#D!qVFOsghMWUBD0<1P(a{xv^EfodtJyYgsF;d))4XBNn+<{m*^Z zZib^{Ez~4j-f5aH*e@hq&eO3wR}1_qFfe-iR|97aqG=K8*A_NXYBsy>CBL|gqKk-z z;_9u{l!8D9jApXJ!gNw}?RUSI>Vp#1trnkF%};^1_L>jH`#&GXw|do$KO;lU08o%Uvw57{#XK3{3 zQt_3{8nxBFw>#VF)2^iwNbxCcj0OO}IQe$ql6qID_yb9`@lK(sc)L-)TOA8T(q)Fl zcP8P5AVxXlmN_{jfI8NAnbYP{T4`-f6m2!7^zMBD;Y}M%n0=xRQgLwJ7li6o_a%Zm zAi!vp=jF>2o~JyT`KRK}xus~{C5KPGy0(VnNVR!w)=2{iOOKOi^y+d+`d2@>QMqem zzpHex>Mv(SUMYE=DdT2YY;5L{;qvZ3djw=}A!O>{W1Qx(BAWbsH}TJd5(|&`NHxnG z3)_gni|nr8{_R*~a62BPdRJ8!P1J;wQnOC(+7Zhb$5nLS+|LG!!SU50mo~A+5v7OscJF{21Rq|t>@n)LdOS-2V3#65$g%)p4cDp8Pd#hItvax+ zG_`(zq18I{<3-p?l{4mroIXyBZaf72XQ#{r(5F_FzVLC)^EJP+qt%A$(c99rrR z(}D&MUiA|Wxd0sc)^T!AL0{grh8%I%jGSjQ;e(DjJ&CO)8DBzu)h$+o*dCsTy;p4X z8P0oFcD%o&LswozEO0jraC7TXE^r19JmRhi^AoDvuoN)QJ#*5f!5I2v`_-z8mr>b0 zhIH;mdgIodgO6_6HA;Fn(3>T=F#rRDk@=cxw_J>O1RT~fNxw0-WbDUpnxdCfV=&VGh+sPEj%kouE@*WRl-sbB!*zZ#WN zPTkpxlay^HNUO9E2VC^0CU+gj=qq^BjZL*VnMoh{;Esm$08qY2J%z!cl zOK*0K)4h%B5%+#xJB((x;7lHNk&beD*P|5}uRexuJg=Cr$DT%TdBDwAV~#n_c+Cnj zaaZbT6s|%Sa~8qK9+~I-{{T9xc>e%X*OT1T&Np{Y$%e0?h5>0hckj+>wdo*{)BC?# z!ctV#_qlOPbC$VqH;e*F=QYe;J_jQ!gN}RCgdCxDzUKu_Yqk9|jJ}kTc8sV~j^m2v zWpJ&X@0JH7cH{i?t-bAR{$JNqoyzL={=Y*qcHF0FWmP1C52vZFe&NVt(QpZT9&=7I zYE4Oe%1O=sulm@*xRr?W2_--qc8seHnG}kZ1>-qVa&aCQA?_)N2_Ockuzd0UO7!&;K zGV);H3<5_b`k$pZso7oG_Ft$`ljnCi+2u?#4vOD&kI$OHypUj&U>gLCk;wYi6H_URKY@WemPab8c+V&K)?D{S+&KSFlasfWSm0;fVVo5n9l|}o<{C`@fQFApFd;TMgrq!*X&PtLMBr#@I$RU1j@T$=v z1zRLz?|h&U_4loPr?jNsC*IAKSC?4y*GhwNb!A2vKaYP=PBZpzOux#g>O>$aq6PD)Q#spoeW6T_`o#*zeG z#7P9BCmiP=m2}~!V9>}GRVcy?#!fPMBv&-3E@<65*zKk4s;2LuXFw2Wdc^bEEyIh) z3~gQZFHCZA#dV9~>&si05olA#c<9R>qFEk11JL?&&=JjHDm=~Iq{G@qq->R$%j|U2 z?Uc%vdS<6@EYCir2w5e)1d|YF=s3s#^PVe!w($&y#6rhYw+(ogFAa>yaG@OIjPZlt z6xJS6T>ZSuQ;N0!0I!+!r^Bnbzp{0`4hHhXGk^oe0P_Ioubvkj{cBEXWYe`7o>}LL zS)X)M;5On)y7F!yy@0a>kYQX94=PCKjOMqpTOxiPen#Ghbq$=6TbMk} zK)@|^3E*sxmpfPwpyrcG@qEyDhg8w+pf>lhTg0~#Ou1PtoS&In+=JG#lvP+Z#GO>_ zC4WwyrC$eGYH`~5lfzdJrrv4tc*!P&c?^=v0og2WbHibjuN-`&W7pnV)nKtmQbkp{ zxs9)cajw|fO#It>56~KkN0Mz{o7CQtm0cvdo_~F*q_AJ6&j_xUW-nT3wG|0yfn-C1TL&Ep1&>~}@z$-PO=slEc=CgHr-`)lC+`|qx0J_T zfT15zUEfz~nzL(i{gjneCb|xa>h{*o{$R-RB4Q!s1yPZV1K;1hQquJsoj%IMyA)Zj z-I_xoAd!rKGt;5R=UkD6z2u(1eaAX};%`>;@4uPrx_-B9Yi}LoC8N~En_3yAi!k|a z+m)0IV2qL9gI-In-_5Rga`VFSB=)iD7gD~aEv`gRu!e6sCE3?$d~w$~&TFC7l<6%s zZ*vIAMpl0-9>=6j4X%&ij~nUleWzI0y>|qW63IX{i@ws>2({YQk_e+)2H4t zKN0BqzJ;mUUcryJSVJPH5(UX(e(>+pHS@QObX(sO%VhEDcMET(X{i>QBL;K!R&r5Q z&+wKfp7o6>##4G}`Fzg0bE8}1f7hAO_zT5Xe*o_6A<^4U*B`}~cGGx@%k6Ad+BnJG z^8tsEL!7T-Mrt34x6x{G&pnG=JQ~HrN@Qg#n3QFkZyg6*o=-~ivDm7VBAxx&_t@5z z7g4!I=W>gG%Xug)Gn;1wOw}FJDn2ZXuP+Y$;Lyt1e_8H9<}Yi1GGIJF9Yi4 z{OR-f{_|V8)HI(DU84!Ew77=w<@yo^><*-6yiAsGr;Mv6`JK|f{Xaq|LaJ?TsptAN zuA!iOVAj4S>(E;1wkN}ygUw|f;bU(KMYtTEa6(`x?m(|wyt~x39d$f+rRkAc_;C$Rb z>Ha7CC6pi8=397B=0*n}#0;eUSl5mGFxJ1}5%E0Nji+i!br!1k3wG{AsC&eaAH2nh z`U>==O4xZy_Fa~t2+21mqxI;1!2Ch+eb0-$8ROrFPp3fF0D_n)&W7QrJBlfP{)~KzB zXlsv1?Y%c8MMx#~N{PMq|IPb7AD$z}@jUl^UFUiJPB)s<_V<{HLq(jfIj%G1nz$WnV8syK1%*KtOD2K(YU{{{Y@;V>NuEu7P8^enk0 za`N0!k)aNI8C-G-(Vi--o)i(i94`B1>p0%?Vdwr+ii%~lW=Pt?6LzUxqi)m}#EbT- z$y%qHzoKpE5)0=k4fiI%CmgBc z%;EBp>vx1)K6#>8Kbr=FV~Lc9q!)t*+2sI{Vwy}G`Wc7@06Ck3MIuZ##^4LOpNT6Voy`Ek;* z=w@tip84goKNa3jA!YFo_VP^wYmD|q@-kpiZ)P>8sMxNef}Kh<9yfcrirCaajOTRN ze$EIWbY@cdKZ5$S7#08wn$W>AX^3eHxenDfF8#F?49jCedXbe(fpdxWASRcp*Z%taT>5E+S7> zfRsJdmHDky!KdEZT+lD+#l+2W1sZ|%1r!}RxF zA1=MQ;Zrf2xqC{zvUF{Ty9dzPP&#J`YE=Bu_jEaZ7kUYv2YIuaTCKkJ-@GkpX}UD` z)Uf}4ub04{;Z7P0F7)TkgOv8DVlF)wo|4!p74p%`PEar2ml`;|+$-NFv^ z49NQ$CJt%Xm5!NEo4~(mYK>lO5i4DA6^^)@w8QA)+3cgd{q1n6Q9`gL6>H*}J++>L zv0{!dJNE{&&j8e+ni^6N58k-Cw);@Uwb8{%oW7C6d;_aT!@>yz)=wJLQnlYU;up{S zJjL1C`wmOlW#^kpxld$X=bjcJd~qAf5@{9Zmiiax54CcfFNpt<(PP%O%e@Nru93@Z z+gYi{zl=c_JAg=jx>XP(#R8dMzuHP|DDA6~uJeZWT>ahE^uqcl;u@SzC*eIpB7tK4 z6q72`(jrh^;fLd+o!fzqjcx?YR~-mTwFCQS2ZnrKA9tqJc#yuu*CYfzO!f*g*79`s zdIB^B-SNVjmW=xwvJ9Nv@JT<=XD3Oa6?7yE`LT>;!W?Ow`I+hjs^<-vvy}KN|5ReW z)cCpZql|y=E6vqtSQx|2KQ1@2?gK0Mm+Y>he@IHG{-Ijp{0K1ENiMPn_~mk zAhB-R(GZ;|DyC6N*-!>c^s?4xl{fn>BkW!8Fep&Ya?QmXAuDSO*bo^HoKBh6yDQCc zJSXjVy>LyRXA%!RYwu(f`e`}+Pb$Nga^wifYA&DAQ{y1Q`0OPOlYwh~65OT$*2JFT zGXBaRLZ018wNsF##}n?h%! zLCp&0dFfL)uCW)-Rbjw05S7A>b0d?*VAzDgt^y%OUVO~yyveCNu|Ht-=fOT1tR!6oSjy~hwPTe^|DA9cd_0IW+q+2$nmSU2JNLXmex&=e@Y%O^S&7)aW zag}sMZ#MC~LP+2BGh-5@>S68R)Al9}7Ms?*T3%oglZ_O!ZW~eRb!k6FU#FIKRUFkeWwUAmA zl{3!Qd>6t!zntp8<~7WB10p*|dcLPfPIJqkHPi3{i|e8R0&Q`hy9Bd9{#%%ZAR7{9 z?3#Sa`v$eW!{_|T@85=aI^|lb8^T{Gzg#iuKWH7owSKAzcZ&G@VE^7s*dJDe-!ajm zfJUv3PP*>mI^*x>KJAl&((zfPo7Ee>>0l#x^4p9%?(dE6jU2cUYi?XYFh=0o_T8xx~~wMl^Su0D);?#i3yX zvZe5IO@n(ClVPRM?L{c`{1Wx;V2g+bu(nO;s0OghCIr}(sCEnxu?e2w5mCqHCtDA} z$ylCLj=yBS&`?+$ae*KMGL> zpoV{Ba`N*dzFE0FZE`T6@JeW|aFVxdrg%uy%b{JV_oHErSJlwjokXJvK)g_il*Z3FltteP zGEM&eJkub_{!w0H%uSwP3LMx0E9-jUXp~h^EejQ!3Dj&G((+I=)pzbzdc?`b6OWU6 z@d|44nUm6I4B0YrjU?Rmj}X^-p)66O=6_y3w;2;uJNOxqe@AbBRJyTl4#|FZ`gx<4 z?b1@3jFmw8Un{-`En{GQ3LB{zvRWuTgCT(5a#APvT$PAv`dI^TRD*%{cepsrNBqPk z(T5zR;9RhG3q-yn;t%+e22!449`lD6^u6Q<4*a7JSVh4_)?DN0-wmRd!Fq9EpKbqr zmj20HWLCy&Hjc@rxp7hkW`%>|dmx1`p5zxQ&RJb3X+2od>|aeDi5 z8ytVNF2QGQH>6BC3DovSPc;sA7|is%rW%B{dd?+(ZONWI+I){w8_9dNsBahj0Ex&XZ$?@<$?Ph#ZQ|6KBFxn8`2$G*Y00e((~)cd)A4KWsgmgw4Hf zeb4NcZW{G=X?ylO^Pxm0!>B%)`v?}%KlQ69^MtLVaLN7Eihbiougtc9z|aJk$-#%t zVC=Y(0ya;$gvf5i{w(Q+@+|E2BUQLkQNeOaa>D;Ni4*lWJCc(-?sZl%J@IgroA62F zynj*0`X8D9*LrzRuzu<$s&vQG7AxJ_bn&I)iA(8Avb)J-=mtWoy?WR|T=?Yy76)H8 zq}f`jc-uPAd~_rsKNJ0xS}J&^$n2!#{+SstPRRQ`;p=!B=v|q*;q~%Q0Bhdx%KPzV z*2HQ4y!#RTNS&N|IP|%WJ6;(?;0EaHf3HByV~;+BYp0N~Hr*uB&ijkFs)Z<*qj|KF zT35qen$Fj+23#Jdv-eeavjO}!E-c@GhBo%WBD0zyD?)DCO#1s&?IB9CJ=xJiTlhE^ z?&JUhe=V>gK=yDtmB7Hj#=LG5I|+Rp_^smpGCldW5&k3wOFT8wOqz2#x6dq{$CnyA zFJ@>pMe8SN&bP$r!)2BQ-QC|gd|oS2mi7s5dJ^TM>xP;?d89ju+ca0+S8W3;B{EVH zhZZ;pBfR6n|B+=oqqwbuYHFt$eJ8(7dPcu5@flR@RI#nm34StX0P zMoZ~?!~h4}B{~N-wHOTi2~T{I_xb)Hg{0CiTwVXF?Y?YEsdUQ*xsZMY3F6jpA$LU+FZGleLvh3;AEiUE%-EQbRQI}J+ zZewy&BJ?<481^IKFD5LZEr0Jz^HLzbRrZ-EPtN7^2adLSUQL#i!R6eL>r@n41mZ88 z@Ci23pB;j*^!U7F{@yPHH=$Ge1*)YrRihH4h1j~By0D;Ovg`W;B5w!J{%P^5_H*by z0gvYJHe0?f&aiMutwfKj4zrt*%X_aMmX}sI$6D@-$1Rn@`a=jp#p_7Ns=~}r$^Xc3 z(efJd5P9Tk+Yz^XL?;tj2w*|!VGAq2YV80Y;&?)}6)`pXmiiz)m1aol1?AoR1&?$E zp?X@uU(H&RX65hgWHZ)$uIm&%8=}`F(;t8S`*MWvlqL3l%7_u>=YeFa>>%gM6RfhT zxp7LPGR^XLt{iYxeKx6dM6rCb5h;S3I1im1CA^O#Ck9YqBJz z6CR+tzB1Lv9-diExhmCqf4zNGG3ILjSzpClOwPFNdXu7_lr-S5>4PjuxajX0BcR~JOU-|xcCV+}*NJ~)!8I|ab`#Hc z+(fL#x43GkC?0%KTyR+?Te*P;Y_qesjc4fW-ZouF(^jMvjX+AmfKIN3_~`vX4(>3F zE#Z%mvJS{XA+4O~oo?5l2crV>)WnO$9B;O`smY-3yrS0^9 zaXFrm)w6lTg|6{tThgC}#@*ojIgTjO6+u9y|X>hmW8x56H5(m(XPPI>gxb8d@ z`^7zE|4cLqlgh0*Dq8@_&hvwRF{(&Ca`J zpexTy_9T=s*Yu|r=$_*c?#fmSz}kzLdwn9#&(_KTR7#gaMj)2b^(_U3n%>yohFz92U_b1>nIgjqpz1@M+*JU}nN7$(_URMDd8UeTi zlgGs4NAF&IYMF1*k6xC)>s{6*>pEIi<#gCq_e25;R64lB#&^;k0+8}#7+;;byzdZv zx7th^;Tul%?#5?3{;xX59QP^?bELb8{5_&u@kZ(?hK^H9G!t8Uh2lS8bVpPdGjUVS zSy8TzbJq~9H)e00Mj&1nxy*hiFUKp6a;g2=Mg!wjx|=^ld%8!?Dh=*VH1rY5Q!lKo%{CKK@%pU^!jF!3*Q?=b?SN(GLP4m%gdAh#^>zj7 z+TPu@u!>hp?RT9jLm_j6Y;E}&SdsA&hq&;nbbi5(U3Z1DE=7UMo9%ml_hRBD4Zl?s zAIw3Tz%ykm0DKIP^?sa`9P_^d0C3K*CE4g;-L=n~?QLToDme7_@eWxKbT{-;NQ;X5 zjjv-H>+VQJ7_vX~$v3;?Q8A`QMyeZKKh7hFW>m4RE7i?oEl!Jk-`1JCHEz~6aL5;{ z;>cMY68#6b8cHUTD;9YV4mW*Xi73z2kHJM^yq7F#XNX2kd|$0`l7-Iz7ugFBMKsq^ z1(yQ_WJal}YTaeqB8pL;YqJM?2TiFTZ{oNZ_IX?$x%}$W)Q_{h2k{mBwdU~^um$xw zqbn;CD211}l(&nY^jv7so1Ib+ncvMk#-YD>8!uxHKeO32d|3m`@(sSYT?EAUd2U&9 zo(dU4!e*xtE$zb2?odJXuFuzX0n#dyA48_X^!{Nd-)j#t}u;g(Js18=Az$=TWeC$uJT zaEbmS;x4u}-t@g9XEpYEL=kT7x1DA9xhH1mgVfE^a(7i8qyA8;ODn$kawl-`Cf4Cy z3kHhSt&G}L!874a8xm;SI)M!Oh8v$` z;7qpTeDJ#!pF8zK+dx1s#p0-@uB~*ZGSx~qO=w>Ia5l6<)>0lftzNv&H<{N^tEm4z z!sA&ZT7l}Itdb-G_qaRhI>NMy0Bb2lqUUylXLir?SU$-N*c%KiwOr~uSwAajZiN;V z9eElL9uKQg5Q2`|E9Od9qz?Za+gBSm(V@evGe zw4_*bF$bfZq>|KZFAjS-xJes8-#t8E=l7)>gt5!I6D%Cp1fQys_fXqz)>aLudf?Xw zd}PB}_Girle{dMA`DsWiP4WzS5>hnYL>bGL`+1wS*TH4&u}OaT!#cBvtHnxM)(XUx z+*o$S@gTWUzlSIO1q5HHThI)F`5!V&hZO)cw>GvyvY21-0t&Od zFW;lWaF+3?Cp}7!TP%GjQ(e}Qm!v+1Nsj8jxm8NPgk}ryMj^TWxOp>jr*t#BW=ekv z3M}ij$)29#zx%n(fDC?FdGt>Ve4(nD0XTG1_xA;E=oS(ih72L4M7+k=oEEKeGxNcv zR|VO@Qr)1>*}CqA6cCypH3u2LMTf%uXA@)>jM9Vnv*w0~ zTD89(vT5l~;c#BfiIop2S&V=5iTm~W^?G88q_v ztEH_s@5eWB5Di zw&!GrlhQ+)5QgnmlXw%8R1+1wPO>Yfl76PM;4(1GY0HMX4!NfGs?Wbeq503p5}B@x z<*ac*kom@l$PNr>Y0c{38!(Xec}5mNn5uTVFl}$qUTYmQzPS}P8t`zce#?4)nZn&; zG+?cQwGP`Lhg5&adbA-ifpi%9nA9ABCr3W(GTat)!kep3``itS?;x;Fa&?6FQ+!x( zC@IO(iH|H0X?=fo?Xus%e^9&>w@t;m@2MuAP6|vtRPm~jHRU~%Kr0~~pRL%k%Q}=) z^aleG_&eEijhsxLU4(|C;%_$)RAyN^IdiLp`5B?aZK0vgS5{#=JI2y?{pI6(FvE!B z8CTi)#+=636!^-?j?SEbUB4CSd4H+>f!=-+cmy;p=)^tR4TNb;H7dNL(apP2IkV!8 zbTWv1B5~cmke6JZ(loP#dPPW?sxS zzw2`H3XM4Uk1Slh%Ew&i-E5UFC7rmcUc(CFI`!*H)j}dN;RUS!;Kw-JQuz2%2UgFA zQZ|qxy<)#;WNxbtUJ?}@(VSdAtW|{u_}7Vg8vBiqpW6*TVAHRE}J<@v8cwrlRf!q}|_h>O}@bbb# zXGCX2C@4(8H1p*0_KtYe*=IYMGcC)}Dpz+{h#f&eDYky9IuZ�E;OX3AS*Q0`ce< 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�{3 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