summaryrefslogtreecommitdiffstats
path: root/basicsuite
diff options
context:
space:
mode:
authoraavit <eirik.aavitsland@digia.com>2013-03-06 15:00:27 +0100
committeraavit <eirik.aavitsland@digia.com>2013-03-06 15:00:27 +0100
commit2e6e329dcda94df2976c469ef81f810132ec3f8f (patch)
treeac5ee5dfddd238e4130a6c1e173284a2d28821bd /basicsuite
Added the suite used at Embedded World 2013. See basicsuite/README.
Feel free to add & improve!
Diffstat (limited to 'basicsuite')
-rw-r--r--basicsuite/About Qt on Android/AboutBoot2Qt.qml57
-rw-r--r--basicsuite/About Qt on Android/Box.qml30
-rw-r--r--basicsuite/About Qt on Android/ContentText.qml8
-rw-r--r--basicsuite/About Qt on Android/QtForAndroid.qml48
-rw-r--r--basicsuite/About Qt on Android/QtFramework.qml35
-rw-r--r--basicsuite/About Qt on Android/Title.qml7
-rw-r--r--basicsuite/About Qt on Android/codeless.pngbin0 -> 28581 bytes
-rwxr-xr-xbasicsuite/About Qt on Android/icon.pngbin0 -> 13193 bytes
-rw-r--r--basicsuite/About Qt on Android/main.qml74
-rw-r--r--basicsuite/About Qt on Android/qt-logo.pngbin0 -> 21659 bytes
-rwxr-xr-xbasicsuite/Basic Qt Quick2 App/icon.pngbin0 -> 15256 bytes
-rw-r--r--basicsuite/Basic Qt Quick2 App/main.qml37
-rwxr-xr-xbasicsuite/Calculator/icon.pngbin0 -> 11504 bytes
-rw-r--r--basicsuite/Calculator/main.qml16
-rwxr-xr-xbasicsuite/Calendar/icon.pngbin0 -> 7108 bytes
-rw-r--r--basicsuite/Calendar/main.qml16
-rwxr-xr-xbasicsuite/Clock/icon.pngbin0 -> 17245 bytes
-rw-r--r--basicsuite/Clock/main.qml16
-rwxr-xr-xbasicsuite/Game/icon.pngbin0 -> 10217 bytes
-rw-r--r--basicsuite/Game/main.qml16
-rw-r--r--basicsuite/Hardware Specs/BackgroundSwirls.qml120
-rw-r--r--basicsuite/Hardware Specs/SlideDeck.qml75
-rw-r--r--basicsuite/Hardware Specs/SlideDeckRotated.qml57
-rw-r--r--basicsuite/Hardware Specs/Swirl.qml108
-rwxr-xr-xbasicsuite/Hardware Specs/icon.pngbin0 -> 8201 bytes
-rw-r--r--basicsuite/Hardware Specs/main.qml72
-rw-r--r--basicsuite/Hardware Specs/particle.pngbin0 -> 861 bytes
-rwxr-xr-xbasicsuite/Music/icon.pngbin0 -> 10580 bytes
-rw-r--r--basicsuite/Music/main.qml16
-rwxr-xr-xbasicsuite/Photo Gallery/icon.pngbin0 -> 14437 bytes
-rw-r--r--basicsuite/Photo Gallery/main.qml16
-rw-r--r--basicsuite/Qt5 Cinematic Demo/Qt5_CinematicExperience.pro9
-rw-r--r--basicsuite/Qt5 Cinematic Demo/Qt5_CinematicExperience.qmlproject20
-rw-r--r--basicsuite/Qt5 Cinematic Demo/README49
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/Background.qml40
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/Button.qml112
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/CurtainEffect.qml53
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/DelegateItem.qml93
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/DetailsView.qml190
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/FpsItem.qml42
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/InfoView.qml264
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/InfoViewItem.qml30
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/MainView.qml230
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/MoviesModel.qml187
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/RatingsItem.qml32
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/SettingsView.qml138
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/Switch.qml170
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/1.pngbin0 -> 92547 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/10.pngbin0 -> 88497 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/11.pngbin0 -> 106319 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/12.pngbin0 -> 84964 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/13.pngbin0 -> 62204 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/14.pngbin0 -> 110188 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/15.pngbin0 -> 100168 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/16.pngbin0 -> 111695 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/17.pngbin0 -> 98722 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/18.pngbin0 -> 90229 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/19.pngbin0 -> 49917 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/2.pngbin0 -> 112159 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/20.pngbin0 -> 113344 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/3.pngbin0 -> 86693 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/4.pngbin0 -> 69699 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/5.pngbin0 -> 111629 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/6.pngbin0 -> 72727 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/7.pngbin0 -> 110085 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/8.pngbin0 -> 128300 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/9.pngbin0 -> 102555 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/background.pngbin0 -> 77700 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/background3.pngbin0 -> 174979 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/button.pngbin0 -> 4441 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/cc-by_logo.pngbin0 -> 4400 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/cover_nmap.pngbin0 -> 10309 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/grip.pngbin0 -> 5198 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/heading.pngbin0 -> 58704 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/heading_big.pngbin0 -> 58950 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/heading_big.xcfbin0 -> 120556 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/info.pngbin0 -> 7452 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/panel_bg.pngbin0 -> 1595 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/particle.pngbin0 -> 861 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/planet_sprite.pngbin0 -> 250266 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/qt_ambassador_logo.pngbin0 -> 5291 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/qt_logo.pngbin0 -> 28581 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/qt_logo2.pngbin0 -> 21659 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/quit_logo.pngbin0 -> 8316 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/sc1.pngbin0 -> 48804 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/sc2.pngbin0 -> 50629 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/sc3.pngbin0 -> 50888 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/sc4.pngbin0 -> 36904 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/sc5.pngbin0 -> 38523 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/settings.pngbin0 -> 7927 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/smoke.pngbin0 -> 438 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/spinner.pngbin0 -> 3470 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/star.pngbin0 -> 1550 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/stars.pngbin0 -> 2752 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/stars2.pngbin0 -> 2600 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/switch_background.pngbin0 -> 1734 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/switch_frame.pngbin0 -> 5854 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/switch_on.pngbin0 -> 2383 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/content/images/switch_thumb.pngbin0 -> 3366 bytes
-rwxr-xr-xbasicsuite/Qt5 Cinematic Demo/icon.pngbin0 -> 7110 bytes
-rw-r--r--basicsuite/Qt5 Cinematic Demo/main.cpp18
-rw-r--r--basicsuite/Qt5 Cinematic Demo/main.qml48
-rw-r--r--basicsuite/Qt5 Launch Presentation/Button.qml78
-rw-r--r--basicsuite/Qt5 Launch Presentation/CameraSlide.qml92
-rw-r--r--basicsuite/Qt5 Launch Presentation/CanvasSlide.qml161
-rw-r--r--basicsuite/Qt5 Launch Presentation/DemoMain.qml139
-rw-r--r--basicsuite/Qt5 Launch Presentation/EffectsSlide.qml203
-rw-r--r--basicsuite/Qt5 Launch Presentation/ExamplesSlide.qml89
-rw-r--r--basicsuite/Qt5 Launch Presentation/FontSlide.qml98
-rw-r--r--basicsuite/Qt5 Launch Presentation/NoisyGradient.qml92
-rw-r--r--basicsuite/Qt5 Launch Presentation/NormalMapGenerator.qml92
-rw-r--r--basicsuite/Qt5 Launch Presentation/OpacityTransitionPresentation.qml104
-rw-r--r--basicsuite/Qt5 Launch Presentation/ParticleSlide.qml86
-rw-r--r--basicsuite/Qt5 Launch Presentation/README51
-rw-r--r--basicsuite/Qt5 Launch Presentation/ShaderSlide.qml197
-rw-r--r--basicsuite/Qt5 Launch Presentation/SlideDeck.qml231
-rw-r--r--basicsuite/Qt5 Launch Presentation/Swirl.qml116
-rw-r--r--basicsuite/Qt5 Launch Presentation/VideoSlide.qml116
-rw-r--r--basicsuite/Qt5 Launch Presentation/WebKitSlideContent.qml84
-rw-r--r--basicsuite/Qt5 Launch Presentation/WebkitSlide.qml19
-rw-r--r--basicsuite/Qt5 Launch Presentation/WidgetsSlide.qml152
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/.DS_Storebin0 -> 6148 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/Calqlatr.qml110
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/Button.qml80
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/Display.qml124
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/NumberPad.qml69
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/StyleLabel.qml50
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/audio/touch.wavbin0 -> 950 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/calculator.js143
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/images/icon-back.pngbin0 -> 328 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/images/icon-close.pngbin0 -> 488 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/images/icon-settings.pngbin0 -> 503 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/images/logo.pngbin0 -> 5950 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/images/paper-edge-left.pngbin0 -> 12401 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/images/paper-edge-right.pngbin0 -> 12967 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/images/paper-grip.pngbin0 -> 298 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/images/settings-selected-a.pngbin0 -> 2326 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/images/settings-selected-b.pngbin0 -> 2334 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/images/touch-green.pngbin0 -> 4808 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/calqlatr/content/images/touch-white.pngbin0 -> 4601 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/demo.qmlproject18
-rw-r--r--basicsuite/Qt5 Launch Presentation/icon.pngbin0 -> 21659 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/images/ally.pngbin0 -> 1907941 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/images/butterfly.pngbin0 -> 18668 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/images/displace.pngbin0 -> 20269 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/images/fog.pngbin0 -> 225653 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/images/particle.pngbin0 -> 861 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/images/qt-logo.pngbin0 -> 49656 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/images/widgets_boxes.pngbin0 -> 589779 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/images/widgets_chips.pngbin0 -> 211342 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/images/widgets_mainwindows.pngbin0 -> 95685 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/images/widgets_styles_fusion.pngbin0 -> 65678 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/images/widgets_styles_macstyle.pngbin0 -> 70514 bytes
l---------basicsuite/Qt5 Launch Presentation/main.qml1
-rw-r--r--basicsuite/Qt5 Launch Presentation/main_hifi.qml43
-rw-r--r--basicsuite/Qt5 Launch Presentation/main_lofi.qml50
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/.DS_Storebin0 -> 6148 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/Maroon.qml233
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/BuildButton.qml90
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/GameCanvas.qml240
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/GameOverScreen.qml115
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/InfoBar.qml84
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/NewGameScreen.qml111
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/SoundEffect.qml53
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/audio/bomb-action.wavbin0 -> 20972 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/audio/catch-action.wavbin0 -> 13274 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/audio/catch.wavbin0 -> 8638 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/audio/currency.wavbin0 -> 15790 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/audio/factory-action.wavbin0 -> 4936 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/audio/melee-action.wavbin0 -> 17798 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/audio/projectile-action.wavbin0 -> 2562 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/audio/shooter-action.wavbin0 -> 27554 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/background.pngbin0 -> 5802 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/bomb-action.pngbin0 -> 23974 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/bomb-idle.pngbin0 -> 12238 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/bomb.pngbin0 -> 4067 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/button-help.pngbin0 -> 8916 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/button-play.pngbin0 -> 13945 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/catch-action.pngbin0 -> 6760 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/catch.pngbin0 -> 4771 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/cloud.pngbin0 -> 3398 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/currency.pngbin0 -> 1889 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-bomb.pngbin0 -> 3751 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-factory.pngbin0 -> 3946 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-melee.pngbin0 -> 4392 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-pointer.pngbin0 -> 911 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-shooter.pngbin0 -> 3737 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog.pngbin0 -> 3362 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/factory-action.pngbin0 -> 22440 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/factory-idle.pngbin0 -> 12729 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/factory.pngbin0 -> 4138 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/grid.pngbin0 -> 2830 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/help.pngbin0 -> 38255 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/lifes.pngbin0 -> 1675 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/logo-bubble.pngbin0 -> 7706 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/logo-fish.pngbin0 -> 3477 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/logo.pngbin0 -> 18332 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/melee-action.pngbin0 -> 7797 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/melee-idle.pngbin0 -> 22832 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/melee.pngbin0 -> 4046 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/mob-idle.pngbin0 -> 6181 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/mob.pngbin0 -> 2391 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/points.pngbin0 -> 1561 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/projectile-action.pngbin0 -> 6257 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/projectile.pngbin0 -> 801 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/scores.pngbin0 -> 1535 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/shooter-action.pngbin0 -> 18121 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/shooter-idle.pngbin0 -> 11929 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/shooter.pngbin0 -> 4137 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/sunlight.pngbin0 -> 248412 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-1.pngbin0 -> 2777 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-2.pngbin0 -> 4959 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-3.pngbin0 -> 5063 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-blank.pngbin0 -> 1326 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-gameover.pngbin0 -> 1515 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-go.pngbin0 -> 4230 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/gfx/wave.pngbin0 -> 2763 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/logic.js264
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/mobs/MobBase.qml262
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/towers/Bomb.qml133
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/towers/Factory.qml114
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/towers/Melee.qml83
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/towers/Ranged.qml128
-rw-r--r--basicsuite/Qt5 Launch Presentation/maroon/content/towers/TowerBase.qml72
-rw-r--r--basicsuite/Qt5 Launch Presentation/particles/customemitter.qml91
-rw-r--r--basicsuite/Qt5 Launch Presentation/particles/emitmask.qml76
-rw-r--r--basicsuite/Qt5 Launch Presentation/particles/particle.pngbin0 -> 861 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/particles/particle4.pngbin0 -> 1799 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/particles/star.pngbin0 -> 1550 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/particles/starfish_mask.pngbin0 -> 11301 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/particles/velocityfrommotion.qml305
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/.DS_Storebin0 -> 6148 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/Samegame.qml371
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/Block.qml114
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/BlockEmitter.qml57
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/Button.qml70
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/GameArea.qml226
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/LogoAnimation.qml102
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/MenuEmitter.qml53
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/PaintEmitter.qml98
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/PrimaryPack.qml122
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/PuzzleBlock.qml111
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/SamegameText.qml49
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/SimpleBlock.qml108
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/SmokeText.qml83
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/background-puzzle.pngbin0 -> 86666 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/background.pngbin0 -> 101018 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/bar.pngbin0 -> 10970 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/blue-puzzle.pngbin0 -> 2219 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/blue.pngbin0 -> 1018 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/bubble-highscore.pngbin0 -> 2276 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/bubble-puzzle.pngbin0 -> 2811 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-1.pngbin0 -> 2728 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-2.pngbin0 -> 3378 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-3.pngbin0 -> 1423 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-4.pngbin0 -> 2096 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-new.pngbin0 -> 3662 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-menu.pngbin0 -> 2391 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-puzzle-next.pngbin0 -> 3658 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-quit.pngbin0 -> 2100 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/green-puzzle.pngbin0 -> 2271 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/green.pngbin0 -> 1024 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/icon-fail.pngbin0 -> 6549 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/icon-ok.pngbin0 -> 7190 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/icon-time.pngbin0 -> 1159 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-a.pngbin0 -> 1814 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-e.pngbin0 -> 1725 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-g.pngbin0 -> 1765 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-m.pngbin0 -> 1743 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-s.pngbin0 -> 1791 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo.pngbin0 -> 3608 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/particle-brick.pngbin0 -> 861 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/particle-paint.pngbin0 -> 714 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/particle-smoke.pngbin0 -> 5409 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/red-puzzle.pngbin0 -> 2218 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/red.pngbin0 -> 1018 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-highscore-new.pngbin0 -> 6767 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-highscore.pngbin0 -> 3179 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-no-winner.pngbin0 -> 6321 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p1-go.pngbin0 -> 5395 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p1-won.pngbin0 -> 5618 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p1.pngbin0 -> 1751 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p2-go.pngbin0 -> 5874 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p2-won.pngbin0 -> 6177 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p2.pngbin0 -> 2381 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/yellow-puzzle.pngbin0 -> 2239 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/gfx/yellow.pngbin0 -> 1008 bytes
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/levels/TemplateBase.qml70
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/levels/level0.qml59
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/levels/level1.qml59
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/levels/level2.qml61
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/levels/level3.qml60
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/levels/level4.qml58
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/levels/level5.qml59
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/levels/level6.qml60
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/levels/level7.qml58
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/levels/level8.qml59
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/content/levels/level9.qml62
-rwxr-xr-xbasicsuite/Qt5 Launch Presentation/samegame/content/samegame.js581
-rw-r--r--basicsuite/Qt5 Launch Presentation/samegame/settings.js56
-rw-r--r--basicsuite/Qt5 Particles Demo/content/burstandpulse.qml110
-rw-r--r--basicsuite/Qt5 Particles Demo/content/customemitter.qml96
-rw-r--r--basicsuite/Qt5 Particles Demo/content/emitmask.qml74
-rw-r--r--basicsuite/Qt5 Particles Demo/content/maximumemitted.qml82
-rw-r--r--basicsuite/Qt5 Particles Demo/content/shapeanddirection.qml112
-rw-r--r--basicsuite/Qt5 Particles Demo/content/trailemitter.qml176
-rw-r--r--basicsuite/Qt5 Particles Demo/content/velocityfrommotion.qml312
-rw-r--r--basicsuite/Qt5 Particles Demo/doc/images/qml-emitters-example.pngbin0 -> 54749 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/doc/src/emitters.qdoc60
-rw-r--r--basicsuite/Qt5 Particles Demo/emitters.pro11
-rw-r--r--basicsuite/Qt5 Particles Demo/emitters.qmlproject16
-rw-r--r--basicsuite/Qt5 Particles Demo/emitters.qrc12
-rwxr-xr-xbasicsuite/Qt5 Particles Demo/icon.pngbin0 -> 16067 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/_explo.pngbin0 -> 81528 bytes
-rwxr-xr-xbasicsuite/Qt5 Particles Demo/images/backgroundLeaves.jpgbin0 -> 78665 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/bear_tiles.pngbin0 -> 40349 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/candle.pngbin0 -> 1348 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/colortable.pngbin0 -> 704 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/finalfrontier.pngbin0 -> 695061 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/flower.pngbin0 -> 4683 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/matchmask.pngbin0 -> 2369 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/meteor.pngbin0 -> 83169 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/meteor_explo.pngbin0 -> 219946 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/meteors.pngbin0 -> 132137 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/nullRock.pngbin0 -> 140 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/particle.pngbin0 -> 861 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/particle2.pngbin0 -> 3909 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/particle3.pngbin0 -> 3186 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/particle4.pngbin0 -> 1799 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/particleA.pngbin0 -> 3541 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/portal_bg.pngbin0 -> 96858 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/realLeaf1.pngbin0 -> 15625 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/realLeaf2.pngbin0 -> 13660 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/realLeaf3.pngbin0 -> 23809 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/realLeaf4.pngbin0 -> 23655 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/rocket.pngbin0 -> 7315 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/rocket2.pngbin0 -> 1918 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/sizeInOut.pngbin0 -> 251 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/snowflake.pngbin0 -> 189327 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/sparkleSize.pngbin0 -> 378 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/star.pngbin0 -> 1550 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/starfish_0.pngbin0 -> 15972 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/starfish_1.pngbin0 -> 15746 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/starfish_2.pngbin0 -> 16067 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/starfish_3.pngbin0 -> 16201 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/starfish_4.pngbin0 -> 14698 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/images/starfish_mask.pngbin0 -> 11301 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/main.cpp41
-rw-r--r--basicsuite/Qt5 Particles Demo/main.qml60
-rw-r--r--basicsuite/Qt5 Particles Demo/shared/Button.qml91
-rw-r--r--basicsuite/Qt5 Particles Demo/shared/LauncherList.qml153
-rw-r--r--basicsuite/Qt5 Particles Demo/shared/README11
-rw-r--r--basicsuite/Qt5 Particles Demo/shared/SimpleLauncherDelegate.qml89
-rw-r--r--basicsuite/Qt5 Particles Demo/shared/images/back.pngbin0 -> 1590 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/shared/images/next.pngbin0 -> 1371 bytes
-rw-r--r--basicsuite/Qt5 Particles Demo/shared/qmldir3
-rw-r--r--basicsuite/Qt5 Particles Demo/shared/quick_shared.qrc8
-rw-r--r--basicsuite/Qt5 Particles Demo/shared/shared.h58
-rw-r--r--basicsuite/Qt5 Particles Demo/shared/shared.qrc8
-rw-r--r--basicsuite/README15
-rwxr-xr-xbasicsuite/Social/icon.pngbin0 -> 18325 bytes
-rw-r--r--basicsuite/Social/main.qml16
-rwxr-xr-xbasicsuite/Web/icon.pngbin0 -> 16261 bytes
-rw-r--r--basicsuite/Web/main.qml16
364 files changed, 12387 insertions, 0 deletions
diff --git a/basicsuite/About Qt on Android/AboutBoot2Qt.qml b/basicsuite/About Qt on Android/AboutBoot2Qt.qml
new file mode 100644
index 0000000..e6d614e
--- /dev/null
+++ b/basicsuite/About Qt on Android/AboutBoot2Qt.qml
@@ -0,0 +1,57 @@
+import QtQuick 2.0
+
+Column {
+
+ id: root
+
+ width: parent.width
+
+ spacing: engine.smallFontSize()
+
+ Title {
+ id: title
+ text: "Boot2Qt"
+ }
+
+ ContentText {
+ id: brief
+ width: parent.width
+ text: "Boot2Qt is the working name for a light-weight UI stack for embedded linux,
+ based on the Qt Framework by Digia. Boot2Qt places Qt on top of an Android
+ kernel/baselayer and offers an elegant means of developing beautiful and
+ performant embedded devices."
+ }
+
+ Column {
+ id: diagram
+ spacing: 1
+ width: parent.width * 0.8
+ anchors.horizontalCenter: parent.horizontalCenter
+ Box { text: "Application"; accentColor: "coral" }
+ Box { text: "Qt Framework"; accentColor: Qt.rgba(0.64, 0.82, 0.15) }
+ Box { text: "Android Baselayer"; accentColor: "steelblue" }
+ Box { text: "Embedded Hardware"; accentColor: "steelblue"}
+ }
+
+ ContentText {
+ id: description
+
+ width: parent.width
+
+ text: "Boot2Qt runs on top of Android 4.0 based kernels and has been tested and verified on
+ a number of different hardware configurations, including:
+ <ul>
+ <li>Google Nexus 7</li>
+ <li>Beagle Board xM</li>
+ <li>Freescale i.MX 6</li>
+ </ul>
+ Rough minimal requirements for running Boot2Qt are:
+ <ul>
+ <li>256Mb of RAM</li>
+ <li>500Mhz CPU, 1Ghz preferred for 60 FPS velvet UIs</li>
+ <li>OpenGL ES 2.0 support</li>
+ <li>Android 4.0+ compatible hardware</li>
+ </ul>
+ "
+ }
+}
diff --git a/basicsuite/About Qt on Android/Box.qml b/basicsuite/About Qt on Android/Box.qml
new file mode 100644
index 0000000..fd63a00
--- /dev/null
+++ b/basicsuite/About Qt on Android/Box.qml
@@ -0,0 +1,30 @@
+import QtQuick 2.0
+
+Rectangle {
+ id: root
+
+ width: parent.width
+ height: label.font.pixelSize * 3
+
+ radius: height * 0.2
+
+ antialiasing: true
+
+ property alias text: label.text;
+
+ property color accentColor: "palegreen"
+
+ gradient: Gradient {
+ GradientStop { position: 0; color: root.accentColor; }
+ GradientStop { position: 1; color: "black"; }
+ }
+
+ Text {
+ id: label
+ font.pixelSize: engine.smallFontSize()
+ font.bold: true;
+ color: "white"
+ anchors.centerIn: parent
+ }
+
+}
diff --git a/basicsuite/About Qt on Android/ContentText.qml b/basicsuite/About Qt on Android/ContentText.qml
new file mode 100644
index 0000000..ed95064
--- /dev/null
+++ b/basicsuite/About Qt on Android/ContentText.qml
@@ -0,0 +1,8 @@
+import QtQuick 2.0
+
+Text {
+ color: "white"
+ font.pixelSize: engine.smallFontSize()
+ textFormat: Text.RichText
+ wrapMode: Text.WordWrap
+}
diff --git a/basicsuite/About Qt on Android/QtForAndroid.qml b/basicsuite/About Qt on Android/QtForAndroid.qml
new file mode 100644
index 0000000..d0c9d97
--- /dev/null
+++ b/basicsuite/About Qt on Android/QtForAndroid.qml
@@ -0,0 +1,48 @@
+import QtQuick 2.0
+
+Column {
+ id: root
+
+ width: parent.width
+
+ spacing: engine.smallFontSize()
+
+ Title {
+ text: "Boot2Qt vs Qt for Android"
+ }
+
+ ContentText {
+ width: parent.width
+ text: "<p>Qt for Android is a port of the Qt Framework to be used
+ for application development on the Android platform. Its
+ purpose is to enable development of applications that
+ can run on Android devices. For developers writing applications
+ for the Android ecosystem, Qt for Android is the right choice.
+
+ <p>Boot2Qt tries to strip down the Android stack to the bare minimum,
+ relying only on basic Linux features. The majority of the Android stack,
+ such as <i>SurfaceFlinger</i> or <i>DalvikVM</i> is not running in
+ Boot2Qt, resulting in faster startup times, lower memory consumption
+ and overall better performance.
+ "
+ }
+
+ Column {
+ id: diagram
+ spacing: 1
+ width: parent.width * 0.8
+ anchors.horizontalCenter: parent.horizontalCenter
+ Box { text: "Application"; accentColor: "coral" }
+ Box { text: "Qt for Android"; accentColor: Qt.rgba(0.64, 0.82, 0.15) }
+ Row {
+ width: parent.width
+ height: b.height
+ Box { id: b; width: parent.width / 2; text: "Qt Framework"; accentColor: Qt.rgba(0.64, 0.82, 0.15) }
+ Box { width: parent.width / 2; text: "Android (Dalvik)"; accentColor: "steelblue" }
+ }
+
+ Box { text: "Android Baselayer"; accentColor: "steelblue" }
+ Box { text: "Embedded Hardware"; accentColor: "steelblue"}
+ }
+
+}
diff --git a/basicsuite/About Qt on Android/QtFramework.qml b/basicsuite/About Qt on Android/QtFramework.qml
new file mode 100644
index 0000000..6e549ab
--- /dev/null
+++ b/basicsuite/About Qt on Android/QtFramework.qml
@@ -0,0 +1,35 @@
+import QtQuick 2.0
+
+Column {
+ id: root
+
+ width: parent.width
+
+ spacing: engine.smallFontSize()
+
+ Title {
+ text: "Qt Framework"
+ }
+
+ ContentText {
+ id: brief
+ width: parent.width
+ text: "Qt is a full development framework with tools designed to streamline
+ the creation of applications and user interfaces for desktop, embedded
+ and mobile platforms.
+ <ul>
+ <li><b>Qt Framework</b> - intuitive APIs for C++ and CSS/JavaScript-like
+ programming with Qt Quick for rapid UI creation<\li>
+ <li><b>Qt Creator IDE</b> - powerful cross-platform integrated
+ development environment, including UI designer tools and on-device debugging</li>
+ <li><b>Tools and toolchains</b> - internationalization support, embedded toolchains
+ and more.</li>
+ </ul>
+ With Qt, you can reuse code efficiently to target multiple platforms
+ with one code base. The modular C++ class library and developer tools
+ easily enables developers to create applications for one platform and
+ easily build and run to deploy on another platform."
+ }
+
+
+}
diff --git a/basicsuite/About Qt on Android/Title.qml b/basicsuite/About Qt on Android/Title.qml
new file mode 100644
index 0000000..5a462fe
--- /dev/null
+++ b/basicsuite/About Qt on Android/Title.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.0
+
+Text {
+ font.pixelSize: engine.titleFontSize()
+ font.italic: true
+ color: "white"
+}
diff --git a/basicsuite/About Qt on Android/codeless.png b/basicsuite/About Qt on Android/codeless.png
new file mode 100644
index 0000000..53e4806
--- /dev/null
+++ b/basicsuite/About Qt on Android/codeless.png
Binary files differ
diff --git a/basicsuite/About Qt on Android/icon.png b/basicsuite/About Qt on Android/icon.png
new file mode 100755
index 0000000..4e84cd5
--- /dev/null
+++ b/basicsuite/About Qt on Android/icon.png
Binary files differ
diff --git a/basicsuite/About Qt on Android/main.qml b/basicsuite/About Qt on Android/main.qml
new file mode 100644
index 0000000..c952500
--- /dev/null
+++ b/basicsuite/About Qt on Android/main.qml
@@ -0,0 +1,74 @@
+import QtQuick 2.0
+
+Item {
+ id: root
+
+ width: 1280
+ height: 800
+
+// Rectangle {
+// anchors.fill: parent
+// color: "black"
+// }
+
+ Flickable {
+ id: flick
+ property real inertia: 0.2
+
+ property real cellWidth;
+ property real cellHeight;
+
+ width: parent.width * 2 / 3
+ height: parent.height
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ contentHeight: content.height
+
+ flickableDirection: Flickable.VerticalFlick
+
+ Item {
+ id: shiftTrickery
+
+ width: content.width
+ height: content.height
+
+ Column {
+ id: content;
+
+ y: -flick.contentItem.y + offsetY;
+ width: flick.width
+
+ property real offsetY: 0;
+ property real inertia: flick.inertia;
+ property real t;
+ NumberAnimation on t {
+ id: animation;
+ from: 0;
+ to: 1;
+ duration: 1000;
+ loops: Animation.Infinite
+ running: Math.abs(content.y) > 0.001 || Math.abs(content.x) > 0.001
+ }
+
+ onTChanged: {
+ offsetY += (flick.contentItem.y - offsetY) * inertia
+ }
+
+
+ spacing: engine.smallFontSize() * 2
+
+ Item { width: 1; height: engine.smallFontSize() }
+ AboutBoot2Qt { }
+ QtFramework { }
+ QtForAndroid { }
+ Image {
+ id: codeLessImage
+ source: "codeless.png"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ Item { width: 1; height: engine.smallFontSize() }
+ }
+
+ }
+ }
+}
diff --git a/basicsuite/About Qt on Android/qt-logo.png b/basicsuite/About Qt on Android/qt-logo.png
new file mode 100644
index 0000000..748392d
--- /dev/null
+++ b/basicsuite/About Qt on Android/qt-logo.png
Binary files differ
diff --git a/basicsuite/Basic Qt Quick2 App/icon.png b/basicsuite/Basic Qt Quick2 App/icon.png
new file mode 100755
index 0000000..706137b
--- /dev/null
+++ b/basicsuite/Basic Qt Quick2 App/icon.png
Binary files differ
diff --git a/basicsuite/Basic Qt Quick2 App/main.qml b/basicsuite/Basic Qt Quick2 App/main.qml
new file mode 100644
index 0000000..4b57ab3
--- /dev/null
+++ b/basicsuite/Basic Qt Quick2 App/main.qml
@@ -0,0 +1,37 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 600
+ height: 400
+
+ gradient: Gradient {
+ GradientStop { position: 0; color: "aquamarine" }
+ GradientStop { position: 1; color: "black" }
+ }
+
+ Text {
+ anchors.centerIn: parent
+ text: "Basic Application"
+ font.pixelSize: parent.height * 0.1
+ color: "white"
+ style: Text.Raised
+ }
+
+ Rectangle {
+ border.width: 1
+ border.color: "lightsteelblue"
+ color: "steelblue"
+
+ antialiasing: true
+
+ width: 100
+ height: 100
+
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+
+ anchors.margins: 100
+
+ NumberAnimation on rotation { from: 0; to: 360; duration: 5000; loops: Animation.Infinite }
+ }
+}
diff --git a/basicsuite/Calculator/icon.png b/basicsuite/Calculator/icon.png
new file mode 100755
index 0000000..803c895
--- /dev/null
+++ b/basicsuite/Calculator/icon.png
Binary files differ
diff --git a/basicsuite/Calculator/main.qml b/basicsuite/Calculator/main.qml
new file mode 100644
index 0000000..13183d7
--- /dev/null
+++ b/basicsuite/Calculator/main.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 200
+ height: 200
+ color: "black"
+
+ Text {
+ anchors.fill: parent
+ color: "white"
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ text: "More to come..."
+ font.pixelSize: Math.min(width, height) * 0.03
+ }
+}
diff --git a/basicsuite/Calendar/icon.png b/basicsuite/Calendar/icon.png
new file mode 100755
index 0000000..086963c
--- /dev/null
+++ b/basicsuite/Calendar/icon.png
Binary files differ
diff --git a/basicsuite/Calendar/main.qml b/basicsuite/Calendar/main.qml
new file mode 100644
index 0000000..13183d7
--- /dev/null
+++ b/basicsuite/Calendar/main.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 200
+ height: 200
+ color: "black"
+
+ Text {
+ anchors.fill: parent
+ color: "white"
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ text: "More to come..."
+ font.pixelSize: Math.min(width, height) * 0.03
+ }
+}
diff --git a/basicsuite/Clock/icon.png b/basicsuite/Clock/icon.png
new file mode 100755
index 0000000..d200bbf
--- /dev/null
+++ b/basicsuite/Clock/icon.png
Binary files differ
diff --git a/basicsuite/Clock/main.qml b/basicsuite/Clock/main.qml
new file mode 100644
index 0000000..13183d7
--- /dev/null
+++ b/basicsuite/Clock/main.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 200
+ height: 200
+ color: "black"
+
+ Text {
+ anchors.fill: parent
+ color: "white"
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ text: "More to come..."
+ font.pixelSize: Math.min(width, height) * 0.03
+ }
+}
diff --git a/basicsuite/Game/icon.png b/basicsuite/Game/icon.png
new file mode 100755
index 0000000..20eb782
--- /dev/null
+++ b/basicsuite/Game/icon.png
Binary files differ
diff --git a/basicsuite/Game/main.qml b/basicsuite/Game/main.qml
new file mode 100644
index 0000000..13183d7
--- /dev/null
+++ b/basicsuite/Game/main.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 200
+ height: 200
+ color: "black"
+
+ Text {
+ anchors.fill: parent
+ color: "white"
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ text: "More to come..."
+ font.pixelSize: Math.min(width, height) * 0.03
+ }
+}
diff --git a/basicsuite/Hardware Specs/BackgroundSwirls.qml b/basicsuite/Hardware Specs/BackgroundSwirls.qml
new file mode 100644
index 0000000..7214cf6
--- /dev/null
+++ b/basicsuite/Hardware Specs/BackgroundSwirls.qml
@@ -0,0 +1,120 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QML Presentation System.
+**
+** $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, Digia gives you certain additional
+** rights. These rights are described in the Digia 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 Digia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+import QtQuick 2.0
+import QtQuick.Particles 2.0
+
+Item {
+ anchors.fill: parent
+
+ Rectangle {
+ anchors.fill: parent
+ gradient: Gradient {
+ GradientStop { position: 0; color: "lightsteelblue" }
+ GradientStop { position: 1; color: "black" }
+ }
+ }
+
+ Rectangle {
+ id: colorTableItem
+ width: 16
+ height: 16
+ anchors.fill: parent
+
+ property color color1: Qt.rgba(0.8, 0.8, 1, 0.3)
+ property color color2: Qt.rgba(0.8, 0.8, 1, 0.3)
+
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "transparent"}
+ GradientStop { position: 0.05; color: colorTableItem.color1 }
+ GradientStop { position: 0.3; color: "transparent" }
+ GradientStop { position: 0.7; color: "transparent" }
+ GradientStop { position: 0.95; color: colorTableItem.color2 }
+ GradientStop { position: 1.0; color: "transparent" }
+ }
+
+ visible: false
+ }
+
+ ShaderEffectSource {
+ id: colorTableSource
+ sourceItem: colorTableItem
+ smooth: true
+ }
+
+ Repeater {
+ model: 4
+ Swirl {
+
+ width: parent.width
+ anchors.bottom: parent.bottom
+ height: parent.height / (2 + index)
+ opacity: 0.3
+ speed: (index + 1) / 5
+ colorTable: colorTableSource
+ }
+ }
+
+ ParticleSystem{
+ id: particles
+ }
+ ImageParticle{
+ anchors.fill: parent
+ system: particles
+ source: "particle.png"
+ alpha: 0
+ colorVariation: 0.3
+ }
+
+ Emitter{
+ anchors.fill: parent
+ system: particles
+ emitRate: Math.sqrt(parent.width * parent.height) / 30
+ lifeSpan: 2000
+ size: 4
+ sizeVariation: 2
+
+ acceleration: AngleDirection { angle: 90; angleVariation: 360; magnitude: 20; }
+ velocity: AngleDirection { angle: -90; angleVariation: 360; magnitude: 10; }
+ }
+
+}
diff --git a/basicsuite/Hardware Specs/SlideDeck.qml b/basicsuite/Hardware Specs/SlideDeck.qml
new file mode 100644
index 0000000..d9490b6
--- /dev/null
+++ b/basicsuite/Hardware Specs/SlideDeck.qml
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QML Presentation System.
+**
+** $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, Digia gives you certain additional
+** rights. These rights are described in the Digia 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 Digia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+import QtQuick 2.0
+
+import Qt.labs.presentation 1.0
+
+Presentation {
+ width: 1280
+ height: 720
+
+ BackgroundSwirls {}
+
+ textColor: "white"
+
+ Slide {
+ centeredText: "Animated Background"
+ fontScale: 2
+ }
+
+ Slide {
+ title: "Composition"
+ content: [
+ "Gradient Rectangle",
+ "Swirls using ShaderEffect",
+ " Movement using a vertexShader",
+ " Colorized using a gradient rect converted to a texture",
+ " Controlled using QML properties and animations",
+ "Snow",
+ " Using 'QtQuick.Particles 2.0'",
+ " Emitter",
+ " ImageParticle"
+ ]
+ }
+
+}
diff --git a/basicsuite/Hardware Specs/SlideDeckRotated.qml b/basicsuite/Hardware Specs/SlideDeckRotated.qml
new file mode 100644
index 0000000..ef6cfee
--- /dev/null
+++ b/basicsuite/Hardware Specs/SlideDeckRotated.qml
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QML Presentation System.
+**
+** $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, Digia gives you certain additional
+** rights. These rights are described in the Digia 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 Digia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+import QtQuick 2.0
+
+Item
+{
+ height: 640
+ width: 360
+ Item {
+ rotation: 90
+ SlideDeck {
+ y: -360
+ width: 640
+ height: 360
+ }
+ }
+}
diff --git a/basicsuite/Hardware Specs/Swirl.qml b/basicsuite/Hardware Specs/Swirl.qml
new file mode 100644
index 0000000..02f2187
--- /dev/null
+++ b/basicsuite/Hardware Specs/Swirl.qml
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QML Presentation System.
+**
+** $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, Digia gives you certain additional
+** rights. These rights are described in the Digia 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 Digia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+import QtQuick 2.0
+
+ShaderEffect {
+ id: shader
+
+ width: 400
+ height: 300
+
+ property real speed: 1
+
+ property color d: Qt.rgba(Math.random() * 0.7,
+ Math.random() * 0.5,
+ Math.random() * 0.7,
+ Math.random() * 0.5)
+ property real tx
+ NumberAnimation on tx { from: 0; to: Math.PI * 2; duration: (Math.random() * 30 + 30) * 1000 / speed; loops: Animation.Infinite }
+ property real ty
+ NumberAnimation on ty { from: 0; to: Math.PI * 2; duration: (Math.random() * 30 + 30) * 1000 / speed; loops: Animation.Infinite }
+ property real tz
+ NumberAnimation on tz { from: 0; to: Math.PI * 2; duration: (Math.random() * 30 + 30) * 1000 / speed; loops: Animation.Infinite }
+ property real tw
+ NumberAnimation on tw { from: 0; to: Math.PI * 2; duration: (Math.random() * 30 + 30) * 1000 / speed; loops: Animation.Infinite }
+
+ property real amplitude: height / 2
+
+ property variant colorTable: ShaderEffectSource { sourceItem: Rectangle { width: 4; height: 4; color: "steelblue" } }
+
+ fragmentShader: "
+ uniform lowp float qt_Opacity;
+ uniform lowp sampler2D colorTable;
+ varying highp vec2 qt_TexCoord0;
+
+ void main() {
+ gl_FragColor = texture2D(colorTable, qt_TexCoord0);
+ gl_FragColor.w *= qt_Opacity;
+ }
+ "
+
+ vertexShader: "
+ uniform lowp vec4 d;
+ uniform highp float tx;
+ uniform highp float ty;
+ uniform highp float tz;
+ uniform highp float tw;
+ uniform highp float amplitude;
+ uniform highp mat4 qt_Matrix;
+ attribute highp vec4 qt_Vertex;
+ attribute highp vec2 qt_MultiTexCoord0;
+ varying highp vec2 qt_TexCoord0;
+
+ void main() {
+ highp vec4 pos = qt_Vertex;
+
+ highp float y1 = sin(tx + d.x * qt_MultiTexCoord0.x * 17. + 2. * d.y) + sin(ty + d.z * qt_MultiTexCoord0.x * 11. + 5. * d.w);
+ highp float y2 = sin(tz + d.w * qt_MultiTexCoord0.x * 7. + 3. * d.z) + sin(tw + d.y * qt_MultiTexCoord0.x * 19. + 3. * d.x);
+
+ pos.y += mix(y1, y2, qt_MultiTexCoord0.y) * amplitude * 0.5;
+
+ gl_Position = qt_Matrix * pos;
+ qt_TexCoord0 = qt_MultiTexCoord0;
+ }
+ "
+
+ mesh: GridMesh { resolution: Qt.size(width / 10, 4) }
+
+}
diff --git a/basicsuite/Hardware Specs/icon.png b/basicsuite/Hardware Specs/icon.png
new file mode 100755
index 0000000..fb888ed
--- /dev/null
+++ b/basicsuite/Hardware Specs/icon.png
Binary files differ
diff --git a/basicsuite/Hardware Specs/main.qml b/basicsuite/Hardware Specs/main.qml
new file mode 100644
index 0000000..d38522c
--- /dev/null
+++ b/basicsuite/Hardware Specs/main.qml
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QML Presentation System.
+**
+** $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, Digia gives you certain additional
+** rights. These rights are described in the Digia 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 Digia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+import QtQuick 2.0
+
+import Qt.labs.presentation 1.0
+
+Presentation {
+ width: 1280
+ height: 720
+
+ BackgroundSwirls {}
+
+ textColor: "white"
+
+
+ Slide {
+ title: "Hardware Specs"
+ content: [
+ "Asus/Google Nexus 7 tablet",
+ " System-on-Chip: Nvidia Tegra 3",
+ " CPU: 1.3 GHz quad-core Cortex-A9 (T30L)",
+ " GPU: 416 MHz 12-core Nvidia GeForce ULP",
+ " RAM: 1 GB DDR3L",
+ "Texas Instruments BeagleBoard-xM",
+ " System-on-Chip: Texas Instruments OMAP3530",
+ " CPU: 1 GHz ARM Cortex-A8 core (TI DM3730)",
+ " GPU: Imagination Technologies PowerVR SGX 2D/3D",
+ " RAM: 512 MB LPDDR",
+ ]
+ }
+
+}
diff --git a/basicsuite/Hardware Specs/particle.png b/basicsuite/Hardware Specs/particle.png
new file mode 100644
index 0000000..5c83896
--- /dev/null
+++ b/basicsuite/Hardware Specs/particle.png
Binary files differ
diff --git a/basicsuite/Music/icon.png b/basicsuite/Music/icon.png
new file mode 100755
index 0000000..a8bee63
--- /dev/null
+++ b/basicsuite/Music/icon.png
Binary files differ
diff --git a/basicsuite/Music/main.qml b/basicsuite/Music/main.qml
new file mode 100644
index 0000000..13183d7
--- /dev/null
+++ b/basicsuite/Music/main.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 200
+ height: 200
+ color: "black"
+
+ Text {
+ anchors.fill: parent
+ color: "white"
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ text: "More to come..."
+ font.pixelSize: Math.min(width, height) * 0.03
+ }
+}
diff --git a/basicsuite/Photo Gallery/icon.png b/basicsuite/Photo Gallery/icon.png
new file mode 100755
index 0000000..0c2ae8c
--- /dev/null
+++ b/basicsuite/Photo Gallery/icon.png
Binary files differ
diff --git a/basicsuite/Photo Gallery/main.qml b/basicsuite/Photo Gallery/main.qml
new file mode 100644
index 0000000..13183d7
--- /dev/null
+++ b/basicsuite/Photo Gallery/main.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 200
+ height: 200
+ color: "black"
+
+ Text {
+ anchors.fill: parent
+ color: "white"
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ text: "More to come..."
+ font.pixelSize: Math.min(width, height) * 0.03
+ }
+}
diff --git a/basicsuite/Qt5 Cinematic Demo/Qt5_CinematicExperience.pro b/basicsuite/Qt5 Cinematic Demo/Qt5_CinematicExperience.pro
new file mode 100644
index 0000000..3830ee9
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/Qt5_CinematicExperience.pro
@@ -0,0 +1,9 @@
+TEMPLATE = app
+
+QT += qml quick
+SOURCES += main.cpp
+
+target.path = /opt/Qt5_CinematicExperience
+qml.files = Qt5_CinematicExperience.qml content
+qml.path = /opt/Qt5_CinematicExperience
+INSTALLS += target qml
diff --git a/basicsuite/Qt5 Cinematic Demo/Qt5_CinematicExperience.qmlproject b/basicsuite/Qt5 Cinematic Demo/Qt5_CinematicExperience.qmlproject
new file mode 100644
index 0000000..fd24655
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/Qt5_CinematicExperience.qmlproject
@@ -0,0 +1,20 @@
+/* File generated by Qt Creator, version 2.4.1 */
+
+import QmlProject 1.1
+
+Project {
+ mainFile: "Qt5_CinematicExperience.qml"
+
+ /* 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/basicsuite/Qt5 Cinematic Demo/README b/basicsuite/Qt5 Cinematic Demo/README
new file mode 100644
index 0000000..1f16c7e
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/README
@@ -0,0 +1,49 @@
+
+INTRO
+==========
+
+This UX demo application presents some graphical features of Qt5.
+The name 'Cinematic Experience' reflects how it's possible to build user
+interfaces with increased dynamics.
+
+
+RUNNING
+==========
+
+To run this application you need relatively recent build of Qt5:
+- http://qt-project.org
+- http://qt.gitorious.org/qt/qt5
+
+There are two different ways to run the application:
+
+1) If your target platform contains 'qmlscene' binary, just use it:
+---
+cd Qt5_CinematicExperience
+[path to Qt5]/qtbase/bin/qmlscene Qt5_CinematicExperience.qml
+---
+
+2) Alternatively, a simple launcher is provided to start the application:
+---
+cd Qt5_CinematicExperience
+[path to Qt5]/qtbase/bin/qmake
+make
+./Qt5_CinematicExperience
+---
+
+The run application in fullscreen mode, use '--fullscreen' parameter for
+qmlscene or launcher. If you want to tweak the window resolution,
+modify 'width' and 'height' properties in Qt5_CinematicExperience.qml
+
+
+LICENSE
+==========
+
+Source codes are licensed under a Creative Commons Attribution 3.0 Unported
+License. http://creativecommons.org/licenses/by/3.0/
+
+No attribution required, but feel free to mention us or
+contact info@quitcoding.com
+
+Qt, and the Qt logo are trademarks of Nokia Corporation
+Movie reviews copyright © IMDb.com
+DVD cover icons from http://www.iconarchive.com
diff --git a/basicsuite/Qt5 Cinematic Demo/content/Background.qml b/basicsuite/Qt5 Cinematic Demo/content/Background.qml
new file mode 100644
index 0000000..8124d01
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/Background.qml
@@ -0,0 +1,40 @@
+import QtQuick 2.0
+import QtQuick.Particles 2.0
+
+Rectangle {
+ id: root
+
+ anchors.fill: parent
+ color: "#ffffff"
+
+ Image {
+ id: backgroundImage
+ anchors.fill: parent
+ source: settings.showColors ? "images/background3.png" : "images/background.png"
+ Behavior on source {
+ SequentialAnimation {
+ NumberAnimation { target: backgroundImage; property: "opacity"; to: 0; duration: 400; easing.type: Easing.InQuad }
+ PropertyAction { target: backgroundImage; property: "source" }
+ NumberAnimation { target: backgroundImage; property: "opacity"; to: 1; duration: 400; easing.type: Easing.OutQuad }
+ }
+ }
+ }
+
+ // Sky stars particles
+ ParticleSystem {
+ width: parent.width
+ height: 220
+ paused: detailsView.isShown || infoView.isShown || !settings.showShootingStarParticles
+ ImageParticle {
+ source: "images/star.png"
+ rotationVariation: 10
+ }
+ Emitter {
+ anchors.fill: parent
+ emitRate: 4
+ lifeSpan: 5000
+ size: 48
+ sizeVariation: 16
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Cinematic Demo/content/Button.qml b/basicsuite/Qt5 Cinematic Demo/content/Button.qml
new file mode 100644
index 0000000..c6ab643
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/Button.qml
@@ -0,0 +1,112 @@
+import QtQuick 2.0
+import QtQuick.Particles 2.0
+
+Item {
+ id: root
+
+ property alias text: buttonTextItem.text
+ property bool effectsOn: true
+ signal clicked
+
+ width: buttonBackgroundImage.width
+ height: buttonBackgroundImage.height
+ scale: mouseArea.pressed && mouseArea.containsMouse ? 0.9 : 1.0
+ opacity: mouseArea.pressed && mouseArea.containsMouse ? 0.8 : 1.0
+
+ Behavior on scale {
+ NumberAnimation { duration: 150; easing.type: Easing.OutQuad }
+ }
+ Behavior on opacity {
+ NumberAnimation { duration: 150; easing.type: Easing.OutQuad }
+ }
+
+ BorderImage {
+ id: buttonBackgroundImage
+ source: "images/button.png"
+ border.left: 24
+ border.right: 24
+ border.top: 20
+ border.bottom: 20
+ width: 140
+ }
+
+ // Stars effect
+ ParticleSystem {
+ id: particleSystem
+ anchors.fill: buttonBackgroundImage
+ running: root.effectsOn
+ ImageParticle {
+ source: "images/star.png"
+ rotationVariation: 180
+ color:"#ffffff"
+ }
+ Emitter {
+ width: parent.width
+ height: 8
+ emitRate: 16
+ lifeSpan: 2000
+ size: 32
+ sizeVariation: 16
+ endSize: 8
+ velocity: PointDirection{ y: 20; x:-2; xVariation: 5; yVariation: 10 }
+ }
+ Turbulence {
+ width: parent.width
+ height: (parent.height / 2)
+ strength: 8
+ }
+ }
+
+ // Button background
+ ShaderEffectSource {
+ id: shaderSource
+ anchors.fill: buttonBackgroundImage
+ sourceItem: buttonBackgroundImage
+ hideSource: true
+ visible: false
+ }
+
+ // Particles
+ ShaderEffectSource {
+ id: shaderSource2
+ anchors.fill: particleSystem
+ sourceItem: particleSystem
+ hideSource: true
+ visible: false
+ }
+
+ // Mask particles inside the button
+ ShaderEffect {
+ id: shaderEffectItem
+ anchors.fill: shaderSource
+
+ property variant source: shaderSource
+ property variant source2: shaderSource2
+
+ fragmentShader: "
+ uniform sampler2D source;
+ uniform sampler2D source2;
+ uniform lowp float qt_Opacity;
+ varying highp vec2 qt_TexCoord0;
+ void main() {
+ lowp vec4 pix = texture2D(source, qt_TexCoord0);
+ lowp vec4 pix2 = texture2D(source2, qt_TexCoord0);
+ gl_FragColor = qt_Opacity * (pix + pix.a * pix2);
+ }"
+ }
+
+ Text {
+ id: buttonTextItem
+ anchors.centerIn: parent
+ color: "#000000"
+ font.pixelSize: 28
+ }
+ MouseArea {
+ id: mouseArea
+ anchors.fill: parent
+ anchors.margins: -16
+ onClicked: {
+ root.clicked();
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Cinematic Demo/content/CurtainEffect.qml b/basicsuite/Qt5 Cinematic Demo/content/CurtainEffect.qml
new file mode 100644
index 0000000..961b348
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/CurtainEffect.qml
@@ -0,0 +1,53 @@
+import QtQuick 2.0
+
+ShaderEffect {
+ id: root
+
+ property variant source
+ property real leftHeight: height / 2
+ property real rightHeight: height / 2
+ property real originalHeight: height
+ property real originalWidth: width
+ property real amplitude: 0.10
+
+ mesh: Qt.size(1, 80)
+
+ vertexShader: "
+ attribute highp vec4 qt_Vertex;
+ attribute highp vec2 qt_MultiTexCoord0;
+ uniform highp mat4 qt_Matrix;
+ varying highp vec2 qt_TexCoord0;
+ varying lowp float shade;
+ uniform highp float leftHeight;
+ uniform highp float rightHeight;
+ uniform highp float originalHeight;
+ uniform highp float originalWidth;
+ uniform highp float amplitude;
+
+ void main() {
+ qt_TexCoord0 = qt_MultiTexCoord0;
+
+ highp vec4 shift = vec4(0);
+ shift.y = qt_Vertex.y * ((originalHeight - leftHeight) + (leftHeight - rightHeight) * (qt_Vertex.x / originalWidth)) / originalHeight;
+
+ shade = sin(21.9911486 * qt_Vertex.y / originalHeight);
+ shift.x = amplitude * (originalHeight - leftHeight + (leftHeight - rightHeight) * (qt_Vertex.x / originalWidth)) * shade;
+
+ gl_Position = qt_Matrix * (qt_Vertex - shift);
+
+ shade = 0.2 * (2.0 - shade ) * (1.0 - (rightHeight + (leftHeight - rightHeight) * (1.0 - qt_Vertex.y / originalWidth)) / originalHeight);
+ }
+ "
+
+ fragmentShader: "
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ uniform sampler2D source;
+ varying lowp float shade;
+ void main() {
+ highp vec4 color = texture2D(source, qt_TexCoord0);
+ color.rgb *= 1.0 - shade;
+ gl_FragColor = color * qt_Opacity;
+ }
+ "
+}
diff --git a/basicsuite/Qt5 Cinematic Demo/content/DelegateItem.qml b/basicsuite/Qt5 Cinematic Demo/content/DelegateItem.qml
new file mode 100644
index 0000000..ced4f95
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/DelegateItem.qml
@@ -0,0 +1,93 @@
+import QtQuick 2.0
+
+Item {
+ id: root
+
+ property string name
+ property bool isSelected: listView.currentIndex === index
+
+ width: parent ? parent.width : imageItem.width
+ height: imageItem.height
+ z: isSelected ? 1000 : -index
+ rotation: isSelected ? 0 : -15
+ scale: isSelected ? mainView.height/540 : mainView.height/1080
+ opacity: 1.0 - Math.abs((listView.currentIndex - index) * 0.25)
+
+ Behavior on rotation {
+ NumberAnimation { duration: 500; easing.type: Easing.OutBack }
+ }
+ Behavior on scale {
+ NumberAnimation { duration: 1500; easing.type: Easing.OutElastic }
+ }
+ Behavior on opacity {
+ NumberAnimation { duration: 200; easing.type: Easing.OutQuad }
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ if (isSelected) {
+ detailsView.image = model.image
+ detailsView.name = model.name
+ detailsView.year = model.year
+ detailsView.director = model.director
+ detailsView.cast = model.cast
+ detailsView.rating = model.rating
+ detailsView.overview = model.overview
+ detailsView.show();
+ } else {
+ listView.currentIndex = index;
+ if (settings.showShootingStarParticles) shootingStarBurst.burst(50);
+ }
+ }
+ }
+
+ Image {
+ id: imageItem
+ anchors.horizontalCenter: parent.horizontalCenter
+ source: "images/" + model.image
+ visible: !settings.showLighting
+ }
+
+ ShaderEffectSource {
+ id: s1
+ sourceItem: imageItem
+ hideSource: settings.showLighting
+ visible: settings.showLighting
+ }
+
+ ShaderEffect {
+ anchors.fill: imageItem
+ property variant src: s1
+ property variant srcNmap: coverNmapSource
+ property real widthPortition: mainView.width/imageItem.width
+ property real heightPortition: mainView.height/imageItem.height
+ property real widthNorm: widthPortition * 0.5 - 0.5
+ property real heightNorm: root.y/imageItem.height - listView.contentY / imageItem.height
+ property real lightPosX: listView.globalLightPosX * widthPortition - widthNorm
+ property real lightPosY: listView.globalLightPosY * heightPortition - heightNorm
+ visible: settings.showLighting
+
+ fragmentShader: "
+ uniform sampler2D src;
+ uniform sampler2D srcNmap;
+ uniform lowp float qt_Opacity;
+ varying highp vec2 qt_TexCoord0;
+ uniform highp float lightPosX;
+ uniform highp float lightPosY;
+ void main() {
+ highp vec4 pix = texture2D(src, qt_TexCoord0.st);
+ highp vec4 pix2 = texture2D(srcNmap, qt_TexCoord0.st);
+ highp vec3 normal = normalize(pix2.rgb * 2.0 - 1.0);
+ highp vec3 light_pos = normalize(vec3(qt_TexCoord0.x - lightPosX, qt_TexCoord0.y - lightPosY, 0.8 ));
+ highp float diffuse = max(dot(normal, light_pos), 0.2);
+
+ // boost a bit
+ diffuse *= 2.5;
+
+ highp vec3 color = diffuse * pix.rgb;
+ gl_FragColor = vec4(color, pix.a) * qt_Opacity;
+ }
+ "
+ }
+}
diff --git a/basicsuite/Qt5 Cinematic Demo/content/DetailsView.qml b/basicsuite/Qt5 Cinematic Demo/content/DetailsView.qml
new file mode 100644
index 0000000..b3ff952
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/DetailsView.qml
@@ -0,0 +1,190 @@
+import QtQuick 2.0
+
+Item {
+ id: root
+
+ property bool isShown: false
+ property string image
+ property string name
+ property string year
+ property string director
+ property string cast
+ property string overview
+ property alias rating: ratingsItem.rating
+
+ anchors.fill: parent
+ opacity: 0
+ visible: opacity
+ scale: 0.3
+
+ function show() {
+ mainView.scheduleUpdate();
+ root.isShown = true;
+ showAnimation.restart();
+ }
+ function hide() {
+ hideAnimation.restart();
+ }
+
+ Binding {
+ target: mainView
+ property: "blurAmount"
+ value: 40 * root.opacity
+ when: root.isShown
+ }
+
+ ParallelAnimation {
+ id: showAnimation
+ NumberAnimation { target: root; property: "opacity"; to: 1.0; duration: 500; easing.type: Easing.InOutQuad }
+ NumberAnimation { target: root; property: "scale"; to: 1.0; duration: 500; easing.type: Easing.InOutQuad }
+ }
+ SequentialAnimation {
+ id: hideAnimation
+ ParallelAnimation {
+ NumberAnimation { target: root; property: "opacity"; to: 0; duration: 500; easing.type: Easing.InOutQuad }
+ NumberAnimation { target: root; property: "scale"; to: 0.3; duration: 500; easing.type: Easing.InOutQuad }
+ }
+ PropertyAction { target: root; property: "isShown"; value: false }
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ root.hide();
+ }
+ }
+
+ Rectangle {
+ id: backgroundItem
+ anchors.centerIn: parent
+ width: Math.min(620, parent.width - 32)
+ height: Math.min(840, parent.height - 32)
+ border.color: "#808080"
+ border.width: 1
+ opacity: 0.9
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "#101010" }
+ GradientStop { position: 0.3; color: "#404040" }
+ GradientStop { position: 1.0; color: "#090909" }
+ }
+ }
+
+ Flickable {
+ anchors.top: backgroundItem.top
+ anchors.left: backgroundItem.left
+ anchors.right: backgroundItem.right
+ anchors.bottom: bottomSeparator.top
+ anchors.margins: 1
+ anchors.bottomMargin: 0
+
+ contentWidth: backgroundItem.width
+ contentHeight: ratingsItem.y + descriptionTextItem.height + 64
+ flickableDirection: Flickable.VerticalFlick
+ clip: true
+
+ Image {
+ id: movieImageItem
+ x: 8
+ y: 24
+ width: 192
+ height: 192
+ source: root.image ? "images/" + root.image : ""
+ fillMode: Image.PreserveAspectFit
+ smooth: true
+ }
+
+ Column {
+ id: topColumn
+ y: 20
+ anchors.left: movieImageItem.right
+ anchors.leftMargin: 10
+ anchors.right: parent.right
+ anchors.rightMargin: 26
+ spacing: 8
+ Text {
+ id: titleTextItem
+ width: parent.width
+ wrapMode: Text.WordWrap
+ color: "#ffffff"
+ font.pixelSize: text.length < 12 ? settings.fontL : settings.fontMM
+ text: root.name
+ }
+ Text {
+ id: yearTextItem
+ width: parent.width
+ wrapMode: Text.WordWrap
+ color: "#ffffff"
+ font.pixelSize: settings.fontS
+ text: "<b>Published:</b> " + root.year
+ }
+ Text {
+ id: directorsTextItem
+ width: parent.width
+ wrapMode: Text.WordWrap
+ color: "#ffffff"
+ font.pixelSize: settings.fontS
+ text: "<b>Director:</b> " + root.director
+ }
+ Text {
+ id: castTextItem
+ width: parent.width
+ wrapMode: Text.WordWrap
+ color: "#ffffff"
+ font.pixelSize: settings.fontS
+ text: "<b>Cast:</b> " + root.cast
+ }
+ }
+
+ RatingsItem {
+ id: ratingsItem
+ x: 10
+ y: Math.max(topColumn.height, movieImageItem.height) + 40
+ rating: root.rating
+ }
+
+ Text {
+ id: descriptionTextItem
+ anchors.top: ratingsItem.bottom
+ anchors.topMargin: 16
+ width: parent.width - 32
+ anchors.horizontalCenter: parent.horizontalCenter
+ wrapMode: Text.WordWrap
+ color: "#ffffff"
+ font.pixelSize: settings.fontM
+ text: "<b>Description:</b> " + root.overview
+ }
+ }
+
+ Rectangle {
+ id: bottomSeparator
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: backgroundItem.bottom
+ anchors.bottomMargin: 80
+ width: backgroundItem.width - 16
+ height: 1
+ color: "#808080"
+ }
+
+ Button {
+ anchors.bottom: backgroundItem.bottom
+ anchors.bottomMargin: 8
+ anchors.left: backgroundItem.left
+ anchors.leftMargin: 32
+ text: "Back"
+ effectsOn: false
+ onClicked: {
+ root.hide();
+ }
+ }
+ Button {
+ anchors.bottom: backgroundItem.bottom
+ anchors.bottomMargin: 8
+ anchors.right: backgroundItem.right
+ anchors.rightMargin: 32
+ effectsOn: root.visible
+ text: "Order"
+ onClicked: {
+ console.debug("Order! TODO: implement");
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Cinematic Demo/content/FpsItem.qml b/basicsuite/Qt5 Cinematic Demo/content/FpsItem.qml
new file mode 100644
index 0000000..fb66d56
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/FpsItem.qml
@@ -0,0 +1,42 @@
+import QtQuick 2.0
+
+Item {
+ id: root
+ property int frameCounter: 0
+ property int fps: 0;
+
+ width: 160
+ height: 48
+
+ Image {
+ id: spinnerImage
+ source: "images/spinner.png"
+ NumberAnimation on rotation {
+ from:0
+ to: 360
+ duration: 800
+ loops: Animation.Infinite
+ }
+ onRotationChanged: frameCounter++;
+ }
+
+ Text {
+ anchors.right: parent.right
+ anchors.verticalCenter: spinnerImage.verticalCenter
+ color: "#ffffff"
+ style: Text.Outline
+ styleColor: "#606060"
+ font.pixelSize: 28
+ text: root.fps + " fps"
+ }
+
+ Timer {
+ interval: 2000
+ repeat: true
+ running: true
+ onTriggered: {
+ fps = frameCounter/2;
+ frameCounter = 0;
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Cinematic Demo/content/InfoView.qml b/basicsuite/Qt5 Cinematic Demo/content/InfoView.qml
new file mode 100644
index 0000000..dee035e
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/InfoView.qml
@@ -0,0 +1,264 @@
+import QtQuick 2.0
+
+Item {
+ id: root
+
+ property bool isShown: false
+
+ anchors.fill: parent
+
+ QtObject {
+ id: priv
+ property bool poleOut: false
+ // How curly the curtain is when opened
+ property int endCurly: 80
+ // 0 = pole in, 1 = pole out
+ property real polePosition: 0
+ property bool showingStarted: false
+ }
+
+ function show() {
+ priv.showingStarted = true;
+ // Disabled, so animations continue while infoview is on
+ //isShown = true;
+ hideCurtainAnimation.stop();
+ hidePoleAnimation.stop();
+ if (priv.poleOut) {
+ showCurtainAnimation.restart();
+ } else {
+ showPoleAnimation.restart();
+ }
+ }
+ function hide() {
+ priv.showingStarted = false;
+ showCurtainAnimation.stop();
+ showPoleAnimation.stop();
+ if (priv.poleOut) {
+ hideCurtainAnimation.restart();
+ } else {
+ hidePoleAnimation.restart();
+ }
+ }
+
+ onIsShownChanged: {
+ if (root.isShown) {
+ mainView.scheduleUpdate();
+ }
+ }
+
+ Binding {
+ target: mainView
+ property: "blurAmount"
+ value: 40 * priv.polePosition
+ when: root.isShown
+ }
+
+ // Pole show/hide animations
+ SequentialAnimation {
+ id: showPoleAnimation
+ NumberAnimation { target: priv; property: "polePosition"; to: 1; duration: 600; easing.type: Easing.InOutQuad }
+ PropertyAction { target: priv; property: "poleOut"; value: true }
+ ScriptAction { script: showCurtainAnimation.restart(); }
+ }
+ SequentialAnimation {
+ id: hidePoleAnimation
+ PropertyAction { target: priv; property: "poleOut"; value: false }
+ NumberAnimation { target: priv; property: "polePosition"; to: 0; duration: 600; easing.type: Easing.InOutQuad }
+ PropertyAction { target: root; property: "isShown"; value: false }
+ }
+
+ // Curtain show/hide animations
+ SequentialAnimation {
+ id: showCurtainAnimation
+ NumberAnimation { target: curtainEffect; property: "rightHeight"; to: root.height-8; duration: 1200; easing.type: Easing.OutBack }
+ }
+ SequentialAnimation {
+ id: hideCurtainAnimation
+ NumberAnimation { target: curtainEffect; property: "rightHeight"; to: 0; duration: 600; easing.type: Easing.OutCirc }
+ ScriptAction { script: hidePoleAnimation.restart(); }
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ enabled: priv.poleOut
+ onClicked: {
+ root.hide();
+ }
+ }
+
+ BorderImage {
+ anchors.right: parent.right
+ anchors.top: parent.top
+ border.left: 22
+ border.right: 64
+ border.top: 0
+ border.bottom: 0
+ width: 86 + priv.polePosition * (viewItem.width-88)
+ z: 20
+ source: "images/info.png"
+ opacity: 0.5 + priv.polePosition
+ MouseArea {
+ anchors.fill: parent
+ anchors.margins: -20
+ onClicked: {
+ if (priv.showingStarted) {
+ root.hide();
+ } else {
+ root.show();
+ }
+ }
+ }
+ }
+
+ Item {
+ id: viewItem
+ anchors.right: parent.right
+ width: Math.min(620, parent.width)
+ height: parent.height + priv.endCurly - 16
+ y: 8
+ visible: priv.poleOut
+
+ Rectangle {
+ id: backgroundItem
+ anchors.fill: parent
+ anchors.margins: 16
+ anchors.topMargin: 8
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "#101010" }
+ GradientStop { position: 0.3; color: "#404040" }
+ GradientStop { position: 1.0; color: "#090909" }
+ }
+ border.color: "#808080"
+ border.width: 1
+ opacity: 0.8
+ }
+
+ Flickable {
+ id: flickableArea
+ anchors.fill: backgroundItem
+ contentHeight: infoTextColumn.height + 32
+ contentWidth: backgroundItem.width
+ flickableDirection: Flickable.VerticalFlick
+ clip: true
+
+ Column {
+ id: infoTextColumn
+ width: parent.width
+ spacing: 32
+
+ Item {
+ width: parent.width
+ height: 8
+ }
+ Image {
+ id: textItem
+ anchors.horizontalCenter: parent.horizontalCenter
+ source: "images/heading.png"
+ }
+
+ InfoViewItem {
+ text: "Welcome to <i>'Cinematic Experience'</i> demo. This application demonstrates the power of Qt5 and few of the new additions available in QtQuick 2.0. Below is a short summary of those new features which have been used in this demo application."
+ image: "images/qt_logo2.png"
+ }
+ InfoViewItem {
+ text: "<b>Rendering</b><br/>Qt5 has brand new rendering backend 'QML SceneGraph' which is optimized for hardware accelerated rendering. This allows to take full gains out of OpenGL powered GPUs on desktop and embedded devices. Not just performance, new Qt5 rendering backend also allows features which have not been possible earlier."
+ }
+ InfoViewItem {
+ text: "<b>Particles</b><br/>Qt5 comes with a fresh particles plugin 'QtQuick.Particles 2.0' which is superior compared to Qt4 particles. In this demo application, twinkling stars, shooting star and fog/smoke have been implemented using this new particles engine. Superb."
+ image: "images/sc2.png"
+ }
+ InfoViewItem {
+ text: "<b>Sprites</b><br/>QtQuick 2.0 has built-in support for sprites using Sprite, SpriteSequence and AnimatedSprite elements. Sprites can also be used as a source for particles. In this demo application, shooting star is an AnimatedSprite with 16 frames."
+ image: "images/sc5.png"
+ switchedLayout: true
+ }
+ InfoViewItem {
+ text: "<b>Animations</b><br/>QtQuick has always had a very strong animations support. Qt5 supports now also animations along a non-linear paths using PathAnimation and PathInterpolator QML elements. In this demo, shooting star position moves along PathAnimation using PathCurves."
+ image: "images/sc1.png"
+ }
+ InfoViewItem {
+ text: "<b>ShaderEffects</b><br/>Qt5 supports ShaderEffect and ShaderEffectSource QML elements which allow writing custom GLSL shader effects. This gives developers a lot of control to transform and enhance QML UIs by increasing dynamicity. In this demo, custom shader effect is used for lighting the movie delegates."
+ image: "images/sc3.png"
+ switchedLayout: true
+ }
+ InfoViewItem {
+ text: "<b>Graphical Effects</b><br/>Qt5 comes with pre-defined set of effects such as drop-shadow, blur, glow, colorize etc. These are available in 'QtGraphicalEffects 1.0' plugin. In this demo, DropShadow is used to improve the appearance of movie title texts."
+ image: "images/sc4.png"
+ }
+
+ Row {
+ anchors.horizontalCenter: parent.horizontalCenter
+ height: 128
+ spacing: 16
+ Image {
+ source: "images/qt_ambassador_logo.png"
+ anchors.bottom: parent.bottom
+ }
+ Image {
+ source: "images/cc-by_logo.png"
+ anchors.bottom: parent.bottom
+ }
+ Image {
+ source: "images/quit_logo.png"
+ anchors.bottom: parent.bottom
+ }
+ }
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ horizontalAlignment: Text.AlignHCenter
+ color: "#909090"
+ font.pixelSize: settings.fontXS
+ text: "Copyright 2012 QUIt Coding. Reuse sources freely."
+ }
+ }
+ }
+
+ // Grip to close the view by flicking
+ Image {
+ id: gripImage
+ anchors.right: parent.right
+ anchors.rightMargin: 8
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 8
+ source: "images/grip.png"
+ opacity: 0.25
+ MouseArea {
+ property int pressedY: 0
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: priv.endCurly - 16
+ anchors.margins: -16
+ width: 90
+ height: 80
+ onPressed: {
+ showCurtainAnimation.stop();
+ hideCurtainAnimation.stop();
+ pressedY = mouseY
+ }
+ onPositionChanged: {
+ curtainEffect.rightHeight = root.height - (pressedY - mouseY) - 8
+ }
+ onReleased: {
+ if (mouseY < -root.height*0.2) {
+ root.hide();
+ } else {
+ root.show();
+ }
+ }
+ }
+ }
+ }
+
+ CurtainEffect {
+ id: curtainEffect
+ anchors.fill: viewItem
+ source: ShaderEffectSource { sourceItem: viewItem; hideSource: true }
+ rightHeight: 0
+ leftHeight: rightHeight
+ Behavior on leftHeight {
+ SpringAnimation { spring: .4; damping: .05; mass: .5 }
+ }
+ // Hide smoothly when curtain closes
+ opacity: 0.004 * rightHeight
+ }
+}
diff --git a/basicsuite/Qt5 Cinematic Demo/content/InfoViewItem.qml b/basicsuite/Qt5 Cinematic Demo/content/InfoViewItem.qml
new file mode 100644
index 0000000..a339f98
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/InfoViewItem.qml
@@ -0,0 +1,30 @@
+import QtQuick 2.0
+
+Item {
+ id: root
+ property alias text: textItem.text
+ property alias image: imageItem.source
+ // Switch image & text positions
+ property bool switchedLayout: false
+
+ width: parent.width
+ height: Math.max(imageItem.height, textItem.paintedHeight)
+
+ Image {
+ id: imageItem
+ x: root.switchedLayout ? 16 : parent.width - width - 10
+ y: 8
+ }
+
+ Text {
+ id: textItem
+ width: parent.width - imageItem.width - 40
+ x: root.switchedLayout ? parent.width - width - 16 : 16
+ y: 8
+ color: "#ffffff"
+ style: Text.Raised
+ styleColor: "#000000"
+ font.pixelSize: settings.fontS
+ wrapMode: Text.WordWrap
+ }
+}
diff --git a/basicsuite/Qt5 Cinematic Demo/content/MainView.qml b/basicsuite/Qt5 Cinematic Demo/content/MainView.qml
new file mode 100644
index 0000000..3b38782
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/MainView.qml
@@ -0,0 +1,230 @@
+import QtQuick 2.0
+import QtQuick.Particles 2.0
+import QtGraphicalEffects 1.0
+
+Item {
+ id: root
+
+ // Set this to blur the mainView when showing something on top of it
+ property real blurAmount: 0
+
+ // Updates the blur shader source, best called right before adding blurAmount
+ function scheduleUpdate() {
+ mainContentSource.scheduleUpdate();
+ }
+
+ anchors.fill: parent
+
+ // Update blur shader source when width/height changes
+ onHeightChanged: {
+ root.scheduleUpdate();
+ }
+ onWidthChanged: {
+ root.scheduleUpdate();
+ }
+
+ Item {
+ id: mainViewArea
+ anchors.fill: parent
+
+ Background {
+ id: background
+ }
+
+ ListView {
+ id: listView
+
+ property real globalLightPosX: lightImage.x / root.width
+ property real globalLightPosY: lightImage.y / root.height
+
+ // Normal-mapped cover shared among delegates
+ ShaderEffectSource {
+ id: coverNmapSource
+ sourceItem: Image { source: "images/cover_nmap.png" }
+ hideSource: true
+ visible: false
+ }
+
+ anchors.fill: parent
+ spacing: -60
+ model: moviesModel
+ delegate: DelegateItem {
+ name: model.name
+ }
+ highlightFollowsCurrentItem: true
+ highlightRangeMode: ListView.StrictlyEnforceRange
+ highlightMoveDuration: 400
+ preferredHighlightBegin: root.height * 0.5 - 140
+ preferredHighlightEnd: root.height * 0.5 - 140
+ cacheBuffer: 4000
+ }
+
+ Text {
+ id: titleText
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.verticalCenterOffset: -40
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: 180 + parent.width * 0.25
+ wrapMode: Text.WordWrap
+ horizontalAlignment: Text.AlignHCenter
+ text: listView.currentIndex+1 + ". " + listView.currentItem.name
+ color: "#ffffff"
+ style: Text.Outline
+ styleColor: "#b0a030"
+ font.pixelSize: settings.fontL
+ Behavior on text {
+ SequentialAnimation {
+ ParallelAnimation {
+ NumberAnimation { target: titleText; property: "opacity"; duration: 100; to: 0; easing.type: Easing.InOutQuad }
+ NumberAnimation { target: titleText; property: "scale"; duration: 100; to: 0.6; easing.type: Easing.InOutQuad }
+ }
+ PropertyAction { target: titleText; property: "text" }
+ ParallelAnimation {
+ NumberAnimation { target: titleText; property: "opacity"; duration: 100; to: 1; easing.type: Easing.InOutQuad }
+ NumberAnimation { target: titleText; property: "scale"; duration: 100; to: 1; easing.type: Easing.InOutQuad }
+ }
+ }
+ }
+ }
+
+ Image {
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 32
+ anchors.horizontalCenter: parent.horizontalCenter
+ source: "images/qt_logo.png"
+ opacity: listView.atYEnd
+ Behavior on opacity {
+ NumberAnimation { duration: 500; easing.type: Easing.InOutQuad }
+ }
+ }
+
+ // Shooting star + animation + particles
+ AnimatedSprite {
+ id: lightImage
+ width: 128
+ height: 128
+ frameWidth: 128
+ frameHeight: 128
+ frameCount: 16
+ frameRate: 15
+ source: "images/planet_sprite.png"
+ interpolate: true
+ loops: Animation.Infinite
+ visible: settings.showLighting || settings.showShootingStarParticles
+ running: !detailsView.isShown && !infoView.isShown && (settings.showLighting || settings.showShootingStarParticles)
+ }
+
+ PathAnimation {
+ target: lightImage
+ duration: 5000
+ orientation: PathAnimation.RightFirst
+ anchorPoint: Qt.point(lightImage.width/2, lightImage.height/2)
+ running: true
+ paused: detailsView.isShown || infoView.isShown || (!settings.showLighting && !settings.showShootingStarParticles)
+ loops: Animation.Infinite
+ path: Path {
+ id: lightAnimPath
+ startX: root.width*0.4; startY: root.height*0.3
+ PathCurve { x: root.width*0.8; y: root.height*0.2 }
+ PathCurve { x: root.width*0.8; y: root.height*0.7 }
+ PathCurve { x: root.width*0.1; y: root.height*0.6 }
+ PathCurve { x: root.width*0.4; y: root.height*0.3 }
+ }
+ }
+
+ ParticleSystem {
+ anchors.fill: parent
+ paused: detailsView.isShown || infoView.isShown
+
+ // Shooting star particles
+ ImageParticle {
+ source: "images/particle.png"
+ color: "#ffefaf"
+ colorVariation: settings.showColors ? 1.0 : 0.1
+ alpha: 0
+ }
+ Emitter {
+ id: shootingStarEmitter
+ emitRate: settings.showShootingStarParticles ? 100 : 0
+ lifeSpan: 2000
+ x: lightImage.x + lightImage.width/2
+ y: lightImage.y + lightImage.height/2
+ velocity: PointDirection {xVariation: 8; yVariation: 8;}
+ acceleration: PointDirection {xVariation: 12; yVariation: 12;}
+ size: 32
+ sizeVariation: 16
+ }
+ Emitter {
+ id: shootingStarBurst
+ emitRate: 0
+ lifeSpan: 2000
+ x: lightImage.x + lightImage.width/2
+ y: lightImage.y + lightImage.height/2
+ velocity: PointDirection {xVariation: 60; yVariation: 60;}
+ acceleration: PointDirection {xVariation: 40; yVariation: 40;}
+ size: 24
+ sizeVariation: 16
+ }
+
+ // Dust/Smoke particles
+ ImageParticle {
+ groups: ["smoke"]
+ source: "images/smoke.png"
+ color: "#ffffff"
+ alpha: 0.9
+ opacity: 0.8
+ colorVariation: settings.showColors ? 0.9 : 0.0
+ rotationVariation: 180
+ }
+ Emitter {
+ y: root.height * 0.85
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: 200 + parent.width * 0.1
+ height: root.height * 0.3
+ emitRate: settings.showFogParticles ? 8 : 0
+ lifeSpan: 2000
+ lifeSpanVariation: 1000
+ group: "smoke"
+ size: 192
+ sizeVariation: 64
+ acceleration: PointDirection { y: -80; xVariation: 20 }
+ }
+ Emitter {
+ y: root.height * 0.9
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: 200 + parent.width * 0.1
+ height: root.height * 0.2
+ emitRate: settings.showFogParticles ? 10 : 0
+ lifeSpan: 2000
+ group: "smoke"
+ size: 192
+ sizeVariation: 64
+ acceleration: PointDirection { y: -20; xVariation: 40 }
+ }
+ Turbulence {
+ groups: ["smoke"]
+ width: parent.width
+ height: parent.height * 0.8
+ strength: 60
+ }
+ }
+
+ SettingsView {
+ id: settingsView
+ }
+ }
+
+ FastBlur {
+ anchors.fill: mainViewArea
+ radius: root.blurAmount
+ visible: root.blurAmount
+ source: ShaderEffectSource {
+ id: mainContentSource
+ anchors.fill: parent
+ sourceItem: mainViewArea
+ hideSource: false
+ live: false
+ visible: root.blurAmount
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Cinematic Demo/content/MoviesModel.qml b/basicsuite/Qt5 Cinematic Demo/content/MoviesModel.qml
new file mode 100644
index 0000000..c2ee561
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/MoviesModel.qml
@@ -0,0 +1,187 @@
+import QtQuick 2.0
+
+// Dummy model for movies
+ListModel {
+ id: movieModel
+
+ ListElement {
+ name: "Lord of the Rings: The Return of the King"
+ image: "15.png"
+ year: "2003"
+ rating: 8.9
+ director: "Peter Jackson"
+ cast: "Elijah Wood, Viggo Mortensen, Ian McKellen"
+ overview: "While Frodo &amp; Sam continue to approach Mount Doom to destroy the One Ring, unaware of the path Gollum is leading them, the former Fellowship aid Rohan &amp; Gondor in a great battle in the Pelennor Fields, Minas Tirith and the Black Gates as Sauron wages his last war against Middle-Earth."
+ }
+ ListElement {
+ name: "Fight Club"
+ image: "9.png"
+ year: "1999"
+ rating: 8.9
+ director: "David Fincher"
+ cast: "Brad Pitt, Edward Norton, Helena Bonham Carter"
+ overview: "A ticking-time-bomb insomniac and a slippery soap salesman channel primal male aggression into a shocking new form of therapy. Their concept catches on, with underground \"fight clubs\" forming in every town, until an eccentric gets in the way and ignites an out-of-control spiral toward oblivion."
+ }
+ ListElement {
+ name: "Lord of the Rings: The Fellowship of the Ring"
+ image: "13.png"
+ year: "2001"
+ rating: 8.8
+ director: "Peter Jackson"
+ cast: "Elijah Wood, Ian McKellen, Orlando Bloom"
+ overview: "An ancient Ring thought lost for centuries has been found, and through a strange twist in fate has been given to a small Hobbit named Frodo. When Gandalf discovers the Ring is in fact the One Ring of the Dark Lord Sauron, Frodo must make an epic quest to the Cracks of Doom in order to destroy it! However he does not go alone. He is joined by Gandalf, Legolas the elf, Gimli the Dwarf, Aragorn, Boromir and his three Hobbit friends Merry, Pippin and Samwise. Through mountains, snow, darkness, forests, rivers and plains, facing evil and danger at every corner the Fellowship of the Ring must go. Their quest to destroy the One Ring is the only hope for the end of the Dark Lords reign!"
+ }
+ ListElement {
+ name: "Lord of the Rings: The Two Towers"
+ image: "14.png"
+ year: "2002"
+ rating: 8.7
+ director: "Peter Jackson"
+ cast: "Elijah Wood, Ian McKellen, Viggo Mortensen"
+ overview: "Sauron's forces increase. His allies grow. The Ringwraiths return in an even more frightening form. Saruman's army of Uruk Hai is ready to launch an assault against Aragorn and the people of Rohan. Yet, the Fellowship is broken and Boromir is dead. For the little hope that is left, Frodo and Sam march on into Mordor, unprotected. A number of new allies join with Aragorn, Gimli, Legolas, Pippin and Merry. And they must defend Rohan and attack Isengard. Yet, while all this is going on, Sauron's troops mass toward the City of Gondor, for the War of the Ring is about to begin."
+ }
+ ListElement {
+ name: "Gladiator"
+ image: "10.png"
+ year: "2000"
+ rating: 8.5
+ director: "Ridley Scott"
+ cast: "Russell Crowe, Joaquin Phoenix, Connie Nielsen"
+ overview: "Maximus is a powerful Roman general, loved by the people and the aging Emperor, Marcus Aurelius. Before his death, the Emperor chooses Maximus to be his heir over his own son, Commodus, and a power struggle leaves Maximus and his family condemned to death. The powerful general is unable to save his family, and his loss of will allows him to get captured and put into the Gladiator games until he dies. The only desire that fuels him now is the chance to rise to the top so that he will be able to look into the eyes of the man who will feel his revenge."
+ }
+ ListElement {
+ name: "Big Fish"
+ image: "7.png"
+ year: "2003"
+ rating: 8.0
+ director: "Tim Burton"
+ cast: "Ewan McGregor, Albert Finney, Billy Crudup"
+ overview: "The story revolves around a dying father and his son, who is trying to learn more about his dad by piecing together the stories he has gathered over the years. The son winds up re-creating his father's elusive life in a series of legends and myths inspired by the few facts he knows. Through these tales, the son begins to understand his father's great feats and his great failings."
+ }
+ ListElement {
+ name: "Avatar"
+ image: "12.png"
+ year: "2009"
+ rating: 8.0
+ director: "James Cameron"
+ cast: "Sam Worthington, Zoe Saldana, Sigourney Weaver"
+ overview: "When his brother is killed in a robbery, paraplegic Marine Jake Sully decides to take his place in a mission on the distant world of Pandora. There he learns of greedy corporate figurehead Parker Selfridge's intentions of driving off the native humanoid \"Na\'vi\" in order to mine for the precious material scattered throughout their rich woodland. In exchange for the spinal surgery that will fix his legs, Jake gathers intel for the cooperating military unit spearheaded by gung-ho Colonel Quaritch, while simultaneously attempting to infiltrate the Na\'vi people with the use of an \"avatar\" identity. While Jake begins to bond with the native tribe and quickly falls in love with the beautiful alien Neytiri, the restless Colonel moves forward with his ruthless extermination tactics, forcing the soldier to take a stand - and fight back in an epic battle for the fate of Pandora."
+ }
+ ListElement {
+ name: "The Social Network"
+ image: "18.png"
+ year: "2010"
+ rating: 7.9
+ director: "David Fincher"
+ cast: "Jesse Eisenberg, Andrew Garfield, Justin Timberlake"
+ overview: "On a fall night in 2003, Harvard undergrad and computer programming genius Mark Zuckerberg sits down at his computer and heatedly begins working on a new idea. In a fury of blogging and programming, what begins in his dorm room soon becomes a global social network and a revolution in communication. A mere six years and 500 million friends later, Mark Zuckerberg is the youngest billionaire in history... but for this entrepreneur, success leads to both personal and legal complications."
+ }
+ ListElement {
+ name: "300"
+ image: "5.png"
+ year: "2006"
+ rating: 7.8
+ director: "Zack Snyder"
+ cast: "Gerard Butler, Lena Headey, David Wenham"
+ overview: "In the Battle of Thermopylae of 480 BC an alliance of Greek city-states fought the invading Persian army in the mountain pass of Thermopylae. Vastly outnumbered, the Greeks held back the enemy in one of the most famous last stands of history. Persian King Xerxes lead a Army of well over 100,000 (Persian king Xerxes before war has about 170,000 army) men to Greece and was confronted by 300 Spartans, 700 Thespians and other Slave soldiers. Xerxes waited for 10 days for King Leonidas to surrender or withdraw left with no options he moved. The battle lasted for about 3 days and after which all 300 Spartans were killed. The Spartan defeat was not the one expected, as a local shepherd, named Ephialtes, defected to the Persians and informed Xerxes of a separate path through Thermopylae, which the Persians could use to outflank the Greeks."
+ }
+ ListElement {
+ name: "The Last Samurai"
+ image: "2.png"
+ year: "2003"
+ rating: 7.7
+ director: "Edward Zwick"
+ cast: "Tom Cruise, Ken Watanabe, Billy Connolly"
+ overview: "In the 1870s, Captain Nathan Algren, a cynical veteran of the American Civil war who will work for anyone, is hired by Americans who want lucrative contracts with the Emperor of Japan to train the peasant conscripts for the first standing imperial army in modern warfare using firearms. The imperial Omura cabinet's first priority is to repress a rebellion of traditionalist Samurai -hereditary warriors- who remain devoted to the sacred dynasty but reject the Westernizing policy and even refuse firearms. Yet when his ill-prepared superior force sets out too soon, their panic allows the sword-wielding samurai to crush them. Badly wounded Algren's courageous stand makes the samurai leader Katsumoto spare his life; once nursed to health he learns to know and respect the old Japanese way, and participates as advisor in Katsumoto's failed attempt to save the Bushido tradition, but..."
+ }
+ ListElement {
+ name: "The Bolt"
+ image: "1.png"
+ year: "2008"
+ rating: 7.1
+ director: "Byron Howard, Chris Williams"
+ cast: "John Travolta, Miley Cyrus, Susie Essman"
+ overview: "Bolt, an American White Shepherd, has lived his whole life on the set of his action TV show, where he believes he has superpowers. When separated from the studio by accident, he meets a female alley cat named Mittens and a hamster named Rhino. He's trying to find the way home, to the studio. Along the way, he learns that he doesn't have superpowers and that the show is not real."
+ }
+ ListElement {
+ name: "The School of Rock"
+ image: "3.png"
+ year: "2003"
+ rating: 7.1
+ director: "Richard Linklater"
+ cast: "Jack Black, Mike White, Joan Cusack"
+ overview: "Down and out rock star Dewey Finn gets fired from his band, and he faces a mountain of debts and depression. He takes a job as a 4th grade substitute teacher at an uptight private school where his attitude and hijinx have a powerful effect on his students. He also meets Zack, a 10-year-old guitar prodigy, who could help Dewey win a \"battle of the bands\" competition, which would solve his financial problems and put him back in the spotlight."
+ }
+ ListElement {
+ name: "Thor"
+ image: "19.png"
+ year: "2011"
+ rating: 7.0
+ director: "Kenneth Branagh"
+ cast: "Chris Hemsworth, Anthony Hopkins, Natalie Portman"
+ overview: "The warrior Thor (Hemsworth) is cast out of the fantastic realm of Asgard by his father Odin (Hopkins) for his arrogance and sent to Earth to live among humans. Falling in love with scientist Jane Foster (Portman) teaches Thor much-needed lessons, and his new-found strength comes into play as a villain from his homeland sends dark forces toward Earth."
+ }
+ ListElement {
+ name: "Charlie and the Chocolate Factory"
+ image: "16.png"
+ year: "2005"
+ rating: 6.9
+ director: "Tim Burton"
+ cast: "Johnny Depp, Freddie Highmore, David Kelly"
+ overview: "When Willy Wonka decides to let five children into his chocolate factory, he decides to release five golden tickets in five separate chocolate bars, causing complete mayhem. The tickets start to be found, with the fifth going to a very special boy, called Charlie Bucket. With his Grandpa, Charlie joins the rest of the children to experience the most amazing factory ever. But not everything goes to plan within the factory."
+ }
+ ListElement {
+ name: "Quantum of Solace"
+ image: "4.png"
+ year: "2008"
+ rating: 6.8
+ director: "Marc Forster"
+ cast: "Daniel Craig, Olga Kurylenko, Mathieu Amalric"
+ overview: "Is there solace in revenge? Bond and \"M\" sniff a shadowy international network of power and corruption reaping billions. As Bond pursues the agents of an assassination attempt on \"M,\" all roads lead to Dominic Greene, a world-renowned developer of green technology. Greene, a nasty piece of work, is intent on securing a barren area of Bolivia in exchange for assisting a strongman stage a coup there. The CIA looks the other way, and only Bond, with help from a retired spy and from a mysterious beauty, stands in Greene's way. \"M\" wonders if she can trust Bond, or if vengeance possesses him. Beyond that, can anyone drawn to Bond live to tell the tale?"
+ }
+ ListElement {
+ name: "Dinosaur"
+ image: "8.png"
+ year: "2000"
+ rating: 6.3
+ director: "Eric Leighton, Ralph Zondag"
+ cast: "D.B. Sweeney, Julianna Margulies, Samuel E. Wright"
+ overview: "During an attack on a pack of Iguanodon, an egg is separated and ends up with the possession of a group of lemurs. The lemurs care for this egg and the young creature born from it, which they call Aladar. When a meteor shower hits earth, Aladar and his family must leave their homeland. Away from home and as close to danger as they have ever been, they meet up with a huge group of dinosaurs, led by Kron and Bruton. All together they are trying to reach the nesting grounds, but it's not going to be easy."
+ }
+ ListElement {
+ name: "Bee Movie"
+ image: "6.png"
+ year: "2007"
+ rating: 6.2
+ director: "Steve Hickner, Simon J. Smith"
+ cast: "Jerry Seinfeld, Renée Zellweger, Matthew Broderick"
+ overview: "When the bee Barry B. Benson graduates from college, he finds that he will have only one job for his entire life, and absolutely disappointed, he joins the team responsible for bringing the honey and pollination of the flowers to visit the world outside the hive. Once in Manhattan, he is saved by the florist Vanessa and he breaks the bee law to thank Vanessa. They become friends and Barry discovers that humans exploit bees to sell the honey they produce. Barry decides to sue the human race, with destructive consequences to nature."
+ }
+ ListElement {
+ name: "Jumper"
+ image: "11.png"
+ year: "2008"
+ rating: 5.9
+ director: "Doug Liman"
+ cast: "Hayden Christensen, Samuel L. Jackson, Jamie Bell"
+ overview: "David Rice is a high school student in Ann Arbor, abandoned by his mother at five, enamored with Millie, a fellow student, and picked on by at least one classmate. On a winter's day, while about to drown, he discovers he can transport himself instantaneously to anyplace on earth. He leaves town, goes to New York City, robs a bank vault, and comes to the attention of a shadowy group of government hunters. Eight years later, the hunters, led by the murderous Roland, get a fix on David. He heads home, searches out Millie, invites her to travel with him, and only later realizes that Roland and his crew are seriously deadly. Is everyone close to David in danger?"
+ }
+ ListElement {
+ name: "The Haunting"
+ image: "17.png"
+ year: "1999"
+ rating: 4.7
+ director: "Jan de Bont"
+ cast: "Liam Neeson, Catherine Zeta-Jones, Owen Wilson"
+ overview: "A remake of the classic 1963 movie \"The Haunting\" about a team of paranormal experts who look into strange occurrences in an ill-fated house. Through the course of the night some will unravel, some will question, and all will fight for their lives as the house fights back."
+ }
+ ListElement {
+ name: "Wild Wild West"
+ image: "20.png"
+ year: "1999"
+ rating: 4.5
+ director: "Barry Sonnenfeld"
+ cast: "Will Smith, Kevin Kline, Kenneth Branagh"
+ overview: "Jim West is a guns-a-blazing former Civil War hero. Artemus Gordon is an inventive U.S. Marshal who excels in disguise. When the United States is threatened by psychotic Confederate Arliss Loveless, President Ulysses Grant teams the duo up to bring him to justice. On a hazard-packed train journey from Washington D.C. to Utah, West and Gordon must combine their skills to best Loveless and his diabolical machines."
+ }
+}
diff --git a/basicsuite/Qt5 Cinematic Demo/content/RatingsItem.qml b/basicsuite/Qt5 Cinematic Demo/content/RatingsItem.qml
new file mode 100644
index 0000000..6d22489
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/RatingsItem.qml
@@ -0,0 +1,32 @@
+import QtQuick 2.0
+
+Item {
+ property real rating: 5.0
+
+ width: emptyRatingStarsImage.width + ratingTextItem.paintedWidth + 4
+ height: 32
+
+ // TODO: Implement ratings in shader + animations, instead of clipping trick
+ Image {
+ id: emptyRatingStarsImage
+ source: "images/stars2.png"
+ }
+ Item {
+ id: ratingImageItem
+ height: 32
+ width: (36 * rating) - 2
+ clip: true
+ Image {
+ source: "images/stars.png"
+ }
+ }
+ Text {
+ id: ratingTextItem
+ anchors.left: emptyRatingStarsImage.right
+ anchors.leftMargin: 4
+ anchors.verticalCenter: ratingImageItem.verticalCenter
+ color: "#ffffff"
+ font.pixelSize: settings.fontM
+ text: "(" + rating.toFixed(1) + ")"
+ }
+}
diff --git a/basicsuite/Qt5 Cinematic Demo/content/SettingsView.qml b/basicsuite/Qt5 Cinematic Demo/content/SettingsView.qml
new file mode 100644
index 0000000..7944803
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/SettingsView.qml
@@ -0,0 +1,138 @@
+import QtQuick 2.0
+
+Item {
+ id: root
+
+ property bool isShown: false
+
+ anchors.fill: parent
+
+ function show() {
+ isShown = true;
+ hideAnimation.stop();
+ showAnimation.restart();
+ }
+ function hide() {
+ isShown = false;
+ showAnimation.stop();
+ hideAnimation.restart();
+ }
+
+ SequentialAnimation {
+ id: showAnimation
+ PropertyAction { target: backgroundItem; property: "visible"; value: true }
+ ParallelAnimation {
+ NumberAnimation { target: backgroundItem; property: "opacity"; to: 1; duration: 250; easing.type: Easing.InOutQuad }
+ NumberAnimation { target: backgroundItem; property: "scale"; to: 1; duration: 500; easing.type: Easing.OutBack }
+ }
+ }
+ SequentialAnimation {
+ id: hideAnimation
+ ParallelAnimation {
+ NumberAnimation { target: backgroundItem; property: "opacity"; to: 0; duration: 500; easing.type: Easing.InOutQuad }
+ NumberAnimation { target: backgroundItem; property: "scale"; to: 0.6; duration: 500; easing.type: Easing.InOutQuad }
+ }
+ PropertyAction { target: backgroundItem; property: "visible"; value: false }
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ enabled: root.isShown
+ onClicked: {
+ root.hide();
+ }
+ }
+
+ Image {
+ id: settingsIcon
+ anchors.left: parent.left
+ anchors.leftMargin: 4
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 4
+ source: "images/settings.png"
+ opacity: backgroundItem.opacity + 0.4
+ MouseArea {
+ anchors.fill: parent
+ anchors.margins: -20
+ onClicked: {
+ if (root.isShown) {
+ root.hide();
+ } else {
+ root.show();
+ }
+ }
+ }
+ }
+
+ BorderImage {
+ id: backgroundItem
+ anchors.left: settingsIcon.horizontalCenter
+ anchors.bottom: settingsIcon.verticalCenter
+ width: Math.min(480, parent.width - 60)
+ height: settingsContentColumn.height + 36
+ source: "images/panel_bg.png"
+ border.left : 22
+ border.right : 10
+ border.top : 5
+ border.bottom : 26
+
+ transformOrigin: Item.BottomLeft
+ visible: false
+ opacity: 0
+ scale: 0.6
+
+ Column {
+ id: settingsContentColumn
+ width: parent.width
+ y: 8
+ Switch {
+ text: "Show movies cover lighting?"
+ checked: settings.showLighting
+ onCheckedChanged: {
+ settings.showLighting = checked;
+ }
+ }
+ Rectangle {
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: parent.width - 32
+ height: 1
+ color: "#404040"
+ }
+ Switch {
+ text: "Show shooting star particles?"
+ checked: settings.showShootingStarParticles
+ onCheckedChanged: {
+ settings.showShootingStarParticles = checked;
+ }
+ }
+ Rectangle {
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: parent.width - 32
+ height: 1
+ color: "#404040"
+ }
+ Switch {
+ text: "Show fog particles?"
+ checked: settings.showFogParticles
+ onCheckedChanged: {
+ settings.showFogParticles = checked;
+ }
+ }
+ Rectangle {
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: parent.width - 32
+ height: 1
+ color: "#404040"
+ }
+ Switch {
+ text: "Do you l-o-v-e colors?"
+ checked: settings.showColors
+ onText: "Yes"
+ offText: "No!"
+ onCheckedChanged: {
+ settings.showColors = checked;
+ }
+ }
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Cinematic Demo/content/Switch.qml b/basicsuite/Qt5 Cinematic Demo/content/Switch.qml
new file mode 100644
index 0000000..967c03f
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/Switch.qml
@@ -0,0 +1,170 @@
+import QtQuick 2.0
+import QtQuick.Particles 2.0
+
+Item {
+ id: root
+
+ property alias text: textItem.text
+ property bool checked: false
+ property string onText: "On"
+ property string offText: "Off"
+
+ QtObject {
+ id: priv
+ property alias checkedPriv: root.checked
+ onCheckedPrivChanged: {
+ if (checkedPriv) switchEffectAnimation.restart();
+ }
+
+ function releaseSwitch() {
+ if (knob.x == 48) switchEffectAnimation.restart();
+ // Don't switch if we are in correct side
+ if ((knob.x == -2 && !checked) || (knob.x == 48 && checked)) {
+ return;
+ }
+ checked = !checked;
+ }
+ }
+
+ width: parent ? parent.width : 200
+ height: 80
+
+ MouseArea {
+ width: parent.width
+ height: parent.height
+ onClicked: {
+ root.checked = !root.checked
+ }
+ }
+
+ Text {
+ id: textItem
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ anchors.leftMargin: 22
+ anchors.right: switchBackgroundImage.left
+ elide: Text.ElideRight
+ font.pixelSize: 20
+ color: "#ffffff"
+ }
+
+ Image {
+ id: switchBackgroundImage
+ source: "images/switch_background.png"
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.right: parent.right
+ anchors.rightMargin: 22
+ }
+ Image {
+ id: switchFrameImage
+ source: "images/switch_frame.png"
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.right: parent.right
+ anchors.rightMargin: 21
+ z: 10
+ }
+
+ Item {
+ id: switchItem
+ anchors.fill: switchBackgroundImage
+
+ SequentialAnimation {
+ id: switchEffectAnimation
+ PropertyAction { target: particleSystem; property: "paused"; value: "false" }
+ ScriptAction { script: particleEmitter.pulse(3000) }
+ }
+
+ Image {
+ id: switchOnImage
+ anchors.right: knob.right
+ anchors.rightMargin: 2
+ source: "images/switch_on.png"
+ opacity: knob.x / 48
+
+ // Stars effect
+ ParticleSystem {
+ id: particleSystem
+ anchors.fill: parent
+ paused: true
+ onEmptyChanged: if (empty) particleSystem.pause();
+ ImageParticle {
+ source: "images/star.png"
+ rotationVariation: 180
+ color:"#ffffff"
+ }
+ Emitter {
+ id: particleEmitter
+ width: parent.width
+ height: 8
+ emitRate: 16
+ lifeSpan: 2000
+ size: 32
+ sizeVariation: 16
+ endSize: 8
+ velocity: PointDirection{ y: 20; x:-2; xVariation: 5; yVariation: 10 }
+ enabled: false
+
+ }
+ Turbulence {
+ width: parent.width
+ height: (parent.height / 2)
+ strength: 8
+ }
+ }
+ }
+
+ Text {
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.right: knob.left
+ anchors.rightMargin: 6
+ color: "#000000"
+ font.pixelSize: 18
+ font.bold: true
+ text: onText
+ }
+ Text {
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: knob.right
+ anchors.leftMargin: 4
+ color: "#ffffff"
+ font.pixelSize: 18
+ font.bold: true
+ text: offText
+ }
+
+ Image {
+ id: knob
+ source: "images/switch_thumb.png"
+ x: checked ? 48 : -2
+ opacity: 0.4
+ MouseArea {
+ anchors.fill: parent
+ drag.target: knob; drag.axis: Drag.XAxis; drag.minimumX: -2; drag.maximumX: 48
+ onClicked: checked = !checked
+ onReleased: priv.releaseSwitch();
+ }
+ Behavior on x {
+ NumberAnimation { duration: 250; easing.type: Easing.InOutQuad }
+ }
+ }
+ }
+
+ // Mask out switch parts which should be hidden
+ ShaderEffect {
+ id: shaderItem
+ property variant source: ShaderEffectSource { sourceItem: switchItem; hideSource: true }
+ property variant maskSource: ShaderEffectSource { sourceItem: switchBackgroundImage; hideSource: true }
+
+ anchors.fill: switchBackgroundImage
+
+ fragmentShader: "
+ varying highp vec2 qt_TexCoord0;
+ uniform highp float qt_Opacity;
+ uniform sampler2D source;
+ uniform sampler2D maskSource;
+ void main(void) {
+ gl_FragColor = texture2D(source, qt_TexCoord0.st) * (texture2D(maskSource, qt_TexCoord0.st).a) * qt_Opacity;
+ }
+ "
+ }
+}
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/1.png b/basicsuite/Qt5 Cinematic Demo/content/images/1.png
new file mode 100644
index 0000000..15c16d0
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/1.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/10.png b/basicsuite/Qt5 Cinematic Demo/content/images/10.png
new file mode 100644
index 0000000..d1bbf39
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/10.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/11.png b/basicsuite/Qt5 Cinematic Demo/content/images/11.png
new file mode 100644
index 0000000..d2bf2f4
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/11.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/12.png b/basicsuite/Qt5 Cinematic Demo/content/images/12.png
new file mode 100644
index 0000000..92031de
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/12.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/13.png b/basicsuite/Qt5 Cinematic Demo/content/images/13.png
new file mode 100644
index 0000000..d28b3ea
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/13.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/14.png b/basicsuite/Qt5 Cinematic Demo/content/images/14.png
new file mode 100644
index 0000000..9755a27
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/14.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/15.png b/basicsuite/Qt5 Cinematic Demo/content/images/15.png
new file mode 100644
index 0000000..a1b6efb
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/15.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/16.png b/basicsuite/Qt5 Cinematic Demo/content/images/16.png
new file mode 100644
index 0000000..7a4a520
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/16.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/17.png b/basicsuite/Qt5 Cinematic Demo/content/images/17.png
new file mode 100644
index 0000000..33853b1
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/17.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/18.png b/basicsuite/Qt5 Cinematic Demo/content/images/18.png
new file mode 100644
index 0000000..a04e29e
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/18.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/19.png b/basicsuite/Qt5 Cinematic Demo/content/images/19.png
new file mode 100644
index 0000000..8af7536
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/19.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/2.png b/basicsuite/Qt5 Cinematic Demo/content/images/2.png
new file mode 100644
index 0000000..30deff4
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/2.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/20.png b/basicsuite/Qt5 Cinematic Demo/content/images/20.png
new file mode 100644
index 0000000..78b8acb
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/20.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/3.png b/basicsuite/Qt5 Cinematic Demo/content/images/3.png
new file mode 100644
index 0000000..0a2675e
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/3.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/4.png b/basicsuite/Qt5 Cinematic Demo/content/images/4.png
new file mode 100644
index 0000000..7d4620b
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/4.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/5.png b/basicsuite/Qt5 Cinematic Demo/content/images/5.png
new file mode 100644
index 0000000..bfd1d61
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/5.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/6.png b/basicsuite/Qt5 Cinematic Demo/content/images/6.png
new file mode 100644
index 0000000..7ae2086
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/6.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/7.png b/basicsuite/Qt5 Cinematic Demo/content/images/7.png
new file mode 100644
index 0000000..a1b1925
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/7.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/8.png b/basicsuite/Qt5 Cinematic Demo/content/images/8.png
new file mode 100644
index 0000000..fcfa8d4
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/8.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/9.png b/basicsuite/Qt5 Cinematic Demo/content/images/9.png
new file mode 100644
index 0000000..c066c29
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/9.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/background.png b/basicsuite/Qt5 Cinematic Demo/content/images/background.png
new file mode 100644
index 0000000..f88c905
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/background.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/background3.png b/basicsuite/Qt5 Cinematic Demo/content/images/background3.png
new file mode 100644
index 0000000..67b16dd
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/background3.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/button.png b/basicsuite/Qt5 Cinematic Demo/content/images/button.png
new file mode 100644
index 0000000..1f1c375
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/button.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/cc-by_logo.png b/basicsuite/Qt5 Cinematic Demo/content/images/cc-by_logo.png
new file mode 100644
index 0000000..d264c4e
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/cc-by_logo.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/cover_nmap.png b/basicsuite/Qt5 Cinematic Demo/content/images/cover_nmap.png
new file mode 100644
index 0000000..e613d9b
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/cover_nmap.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/grip.png b/basicsuite/Qt5 Cinematic Demo/content/images/grip.png
new file mode 100644
index 0000000..66118f9
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/grip.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/heading.png b/basicsuite/Qt5 Cinematic Demo/content/images/heading.png
new file mode 100644
index 0000000..509b12b
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/heading.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/heading_big.png b/basicsuite/Qt5 Cinematic Demo/content/images/heading_big.png
new file mode 100644
index 0000000..ec37388
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/heading_big.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/heading_big.xcf b/basicsuite/Qt5 Cinematic Demo/content/images/heading_big.xcf
new file mode 100644
index 0000000..b77b948
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/heading_big.xcf
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/info.png b/basicsuite/Qt5 Cinematic Demo/content/images/info.png
new file mode 100644
index 0000000..0f9d3c3
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/info.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/panel_bg.png b/basicsuite/Qt5 Cinematic Demo/content/images/panel_bg.png
new file mode 100644
index 0000000..fd25e7e
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/panel_bg.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/particle.png b/basicsuite/Qt5 Cinematic Demo/content/images/particle.png
new file mode 100644
index 0000000..5c83896
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/particle.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/planet_sprite.png b/basicsuite/Qt5 Cinematic Demo/content/images/planet_sprite.png
new file mode 100644
index 0000000..8ea7b13
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/planet_sprite.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/qt_ambassador_logo.png b/basicsuite/Qt5 Cinematic Demo/content/images/qt_ambassador_logo.png
new file mode 100644
index 0000000..dec13bb
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/qt_ambassador_logo.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/qt_logo.png b/basicsuite/Qt5 Cinematic Demo/content/images/qt_logo.png
new file mode 100644
index 0000000..53e4806
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/qt_logo.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/qt_logo2.png b/basicsuite/Qt5 Cinematic Demo/content/images/qt_logo2.png
new file mode 100644
index 0000000..748392d
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/qt_logo2.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/quit_logo.png b/basicsuite/Qt5 Cinematic Demo/content/images/quit_logo.png
new file mode 100644
index 0000000..f1ad50e
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/quit_logo.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/sc1.png b/basicsuite/Qt5 Cinematic Demo/content/images/sc1.png
new file mode 100644
index 0000000..3e21076
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/sc1.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/sc2.png b/basicsuite/Qt5 Cinematic Demo/content/images/sc2.png
new file mode 100644
index 0000000..54befbd
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/sc2.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/sc3.png b/basicsuite/Qt5 Cinematic Demo/content/images/sc3.png
new file mode 100644
index 0000000..f71cec8
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/sc3.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/sc4.png b/basicsuite/Qt5 Cinematic Demo/content/images/sc4.png
new file mode 100644
index 0000000..d0797a1
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/sc4.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/sc5.png b/basicsuite/Qt5 Cinematic Demo/content/images/sc5.png
new file mode 100644
index 0000000..d9461c4
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/sc5.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/settings.png b/basicsuite/Qt5 Cinematic Demo/content/images/settings.png
new file mode 100644
index 0000000..4215bee
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/settings.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/smoke.png b/basicsuite/Qt5 Cinematic Demo/content/images/smoke.png
new file mode 100644
index 0000000..be0cedf
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/smoke.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/spinner.png b/basicsuite/Qt5 Cinematic Demo/content/images/spinner.png
new file mode 100644
index 0000000..e59efb2
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/spinner.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/star.png b/basicsuite/Qt5 Cinematic Demo/content/images/star.png
new file mode 100644
index 0000000..0d592cf
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/star.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/stars.png b/basicsuite/Qt5 Cinematic Demo/content/images/stars.png
new file mode 100644
index 0000000..a997e1b
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/stars.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/stars2.png b/basicsuite/Qt5 Cinematic Demo/content/images/stars2.png
new file mode 100644
index 0000000..50e3200
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/stars2.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/switch_background.png b/basicsuite/Qt5 Cinematic Demo/content/images/switch_background.png
new file mode 100644
index 0000000..bd9a4ca
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/switch_background.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/switch_frame.png b/basicsuite/Qt5 Cinematic Demo/content/images/switch_frame.png
new file mode 100644
index 0000000..8404a53
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/switch_frame.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/switch_on.png b/basicsuite/Qt5 Cinematic Demo/content/images/switch_on.png
new file mode 100644
index 0000000..bc9fccb
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/switch_on.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/content/images/switch_thumb.png b/basicsuite/Qt5 Cinematic Demo/content/images/switch_thumb.png
new file mode 100644
index 0000000..e8f7451
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/content/images/switch_thumb.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/icon.png b/basicsuite/Qt5 Cinematic Demo/icon.png
new file mode 100755
index 0000000..74da737
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/icon.png
Binary files differ
diff --git a/basicsuite/Qt5 Cinematic Demo/main.cpp b/basicsuite/Qt5 Cinematic Demo/main.cpp
new file mode 100644
index 0000000..81c1c85
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/main.cpp
@@ -0,0 +1,18 @@
+#include <QGuiApplication>
+#include <QQuickView>
+
+int main(int argc, char* argv[])
+{
+ QGuiApplication app(argc,argv);
+ QQuickView view;
+ view.setResizeMode(QQuickView::SizeRootObjectToView);
+ view.setSource(QUrl::fromLocalFile(QCoreApplication::applicationDirPath() + QLatin1String("/Qt5_CinematicExperience.qml")));
+
+ const QString lowerArgument = QString::fromLatin1(argv[1]).toLower();
+ if (lowerArgument == QLatin1String("--fullscreen")) {
+ view.showFullScreen();
+ } else {
+ view.show();
+ }
+ return app.exec();
+}
diff --git a/basicsuite/Qt5 Cinematic Demo/main.qml b/basicsuite/Qt5 Cinematic Demo/main.qml
new file mode 100644
index 0000000..b9ad90f
--- /dev/null
+++ b/basicsuite/Qt5 Cinematic Demo/main.qml
@@ -0,0 +1,48 @@
+import QtQuick 2.0
+import "content"
+
+Item {
+ id: mainWindow
+
+ width: 1920
+ height: 1080
+
+ QtObject {
+ id: settings
+ // These are used to scale fonts according to screen size
+ property real _scaler: 300 + mainWindow.width * mainWindow.height * 0.00015
+ property int fontXS: _scaler * 0.032
+ property int fontS: _scaler * 0.040
+ property int fontM: _scaler * 0.046
+ property int fontMM: _scaler * 0.064
+ property int fontL: _scaler * 0.100
+ // Settings
+ property bool showFogParticles: false
+ property bool showShootingStarParticles: false
+ property bool showLighting: false
+ property bool showColors: true
+ }
+
+ MainView {
+ id: mainView
+ }
+
+ InfoView {
+ id: infoView
+ }
+
+ DetailsView {
+ id: detailsView
+ }
+
+ MoviesModel {
+ id: moviesModel
+ }
+
+ FpsItem {
+ anchors.top: parent.top
+ anchors.topMargin: 8
+ anchors.left: parent.left
+ anchors.leftMargin: 8
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/Button.qml b/basicsuite/Qt5 Launch Presentation/Button.qml
new file mode 100644
index 0000000..6d6bf6e
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/Button.qml
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+Rectangle {
+
+ id: root;
+
+ border.width: (pressed ? 1.5 : 1) * height / 20;
+ border.color: Qt.rgba(1, 1, 1, 0.4);
+ radius: height / 4;
+
+ antialiasing: true
+
+ gradient: Gradient {
+ GradientStop { position: 0; color: Qt.rgba(0.5, 0.5, 0.5, pressed ? 0.7 : 0.5); }
+ GradientStop { position: 1; color: Qt.rgba(0.2, 0.2, 0.2, pressed ? 0.7 : 0.5); }
+ }
+
+ Behavior on color { ColorAnimation { duration: 100 } }
+
+ property bool pressed;
+ property alias label: textItem.text;
+
+ Text {
+ id: textItem
+ anchors.centerIn: parent
+ color: "white"
+ font.pixelSize: parent.height / 3;
+ font.bold: true
+ }
+
+ MouseArea {
+ id: mouse
+ anchors.fill: parent
+ onPressed: root.pressed = !root.pressed;
+
+ }
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/CameraSlide.qml b/basicsuite/Qt5 Launch Presentation/CameraSlide.qml
new file mode 100644
index 0000000..e6b4d97
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/CameraSlide.qml
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtMultimedia 5
+import Qt.labs.presentation 1.0
+
+import QtGraphicalEffects 1.0
+
+Slide {
+
+ id: slide
+
+ title: "Qt Multimedia - Camera"
+
+ Camera {
+ id: camera
+ Component.onCompleted: camera.stop();
+ }
+
+ VideoOutput {
+ id: videoOut
+ anchors.fill: parent
+ source: camera
+ layer.enabled: true;
+ layer.effect: ZoomBlur {
+ samples: 16
+ length: button.pressed ? parent.height / 5 : 0
+ Behavior on length {
+ NumberAnimation { duration: 250 }
+ }
+ }
+ }
+
+ onVisibleChanged: {
+ if (slide.visible)
+ camera.start();
+ else
+ camera.stop();
+ }
+
+ Button {
+ id: button
+ anchors.bottom: videoOut.bottom
+ anchors.horizontalCenter: videoOut.horizontalCenter
+ anchors.bottomMargin: height / 2;
+// anchors.bottom: slide.top;
+// anchors.right: slide.right;
+// anchors.bottomMargin: height;
+ label: pressed ? "Remove Effect" : "Zoom Effect";
+ width: height * 4;
+ height: parent.height * 0.1
+ }
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/CanvasSlide.qml b/basicsuite/Qt5 Launch Presentation/CanvasSlide.qml
new file mode 100644
index 0000000..c60a643
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/CanvasSlide.qml
@@ -0,0 +1,161 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+import Qt.labs.presentation 1.0
+
+Slide {
+ id: slide
+
+ title: "Qt Quick - Canvas"
+
+
+
+ Rectangle {
+ height: parent.height
+ width: parent.width * 0.45
+ anchors.right: parent.right;
+ antialiasing: true
+ radius: slide.height * 0.03;
+ color: Qt.rgba(0.0, 0.0, 0.0, 0.2);
+ Canvas {
+ id:canvas
+ anchors.fill: parent;
+
+ renderTarget: Canvas.Image;
+ antialiasing: true;
+ onPaint: {
+ eval(editor.text);
+ }
+ }
+ }
+
+ Rectangle {
+ height: parent.height
+ width: parent.width * 0.45
+ anchors.left: parent.left
+ antialiasing: true
+ radius: slide.height * 0.03;
+ color: Qt.rgba(0.0, 0.0, 0.0, 0.2);
+
+ clip: true;
+
+ TextEdit {
+ id: editor
+ anchors.fill: parent;
+ anchors.margins: 10
+
+ font.pixelSize: 16
+ color: "white"
+ font.family: "courier"
+ font.bold: true
+
+ text:
+"var ctx = canvas.getContext('2d');
+ctx.save();
+ctx.clearRect(0, 0, canvas.width, canvas.height);
+ctx.strokeStyle = 'palegreen'
+ctx.fillStyle = 'limegreen';
+ctx.lineWidth = 5;
+
+ctx.beginPath();
+ctx.moveTo(100, 100);
+ctx.lineTo(300, 100);
+ctx.lineTo(100, 200);
+ctx.closePath();
+ctx.fill();
+ctx.stroke();
+
+ctx.fillStyle = 'aquamarine'
+ctx.font = '20px sansserif'
+ctx.fillText('HTML Canvas API!', 100, 300);
+ctx.fillText('Imperative Drawing!', 100, 340);
+
+ctx.restore();
+"
+ onTextChanged: canvas.requestPaint();
+
+ onCursorRectangleChanged: {
+ emitter.burst(10)
+
+ }
+
+ ParticleSystem {
+ id: sys1
+ running: slide.visible
+ }
+
+ ImageParticle {
+ system: sys1
+ source: "images/particle.png"
+ color: "white"
+ colorVariation: 0.2
+ alpha: 0
+ }
+
+ Emitter {
+ id: emitter
+ system: sys1
+
+ x: editor.cursorRectangle.x - editor.cursorRectangle.height / 2;
+ y: editor.cursorRectangle.y
+ width: editor.cursorRectangle.height
+ height: editor.cursorRectangle.height
+ enabled: false
+
+ lifeSpan: 1000
+
+ velocity: PointDirection { xVariation: 30; yVariation: 30; }
+ acceleration: PointDirection {xVariation: 30; yVariation: 30; y: 100 }
+
+ endSize: 0
+
+ size: 4
+ sizeVariation: 2
+ }
+
+ }
+
+
+
+
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/DemoMain.qml b/basicsuite/Qt5 Launch Presentation/DemoMain.qml
new file mode 100644
index 0000000..05454be
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/DemoMain.qml
@@ -0,0 +1,139 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtGraphicalEffects 1.0
+
+Item {
+ id: demoMain;
+
+ property bool useDropShadow: true;
+ property bool useSwirls: true;
+ property bool useSimpleGradient: false;
+ property bool autorun: false;
+
+ width: 1280
+ height: 720
+
+ NoisyGradient {
+ anchors.fill: parent;
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: Qt.rgba(0.64 * 0.6, 0.82 * 0.6, 0.15 * 0.6) }
+ GradientStop { position: 1.0; color: "black" }
+ }
+ visible: !parent.useSimpleGradient
+ }
+
+ Rectangle {
+ anchors.fill: parent;
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: Qt.rgba(0.64, 0.82, 0.15) }
+ GradientStop { position: 1.0; color: "black" }
+ }
+ visible: parent.useSimpleGradient;
+ }
+
+ Rectangle {
+ id: colorTable
+ width: 1
+ height: 46
+ color: "transparent"
+
+ Column {
+ spacing: 2
+ y: 1
+ Rectangle { width: 1; height: 10; color: "white" }
+ Rectangle { width: 1; height: 10; color: Qt.rgba(0.64 * 1.4, 0.82 * 1.4, 0.15 * 1.4, 1); }
+ Rectangle { width: 1; height: 10; color: Qt.rgba(0.64, 0.82, 0.15); }
+ Rectangle { width: 1; height: 10; color: Qt.rgba(0.64 * 0.7, 0.82 * 0.7, 0.15 * 0.7); }
+ }
+
+ layer.enabled: true
+ layer.smooth: true
+ visible: false;
+ }
+
+
+ Swirl
+ {
+ x: 0;
+ width: parent.width
+ height: parent.height * 0.2
+ anchors.bottom: parent.bottom;
+ amplitude: height * 0.2;
+ colorTable: colorTable;
+ speed: 0.2;
+ opacity: 0.3
+ visible: parent.useSwirls;
+ }
+
+ Timer {
+ interval: 20000
+ running: parent.autorun
+ repeat: true
+
+ onTriggered: {
+ var from = slides.currentSlide;
+ var to = from == slides.slides.length - 1 ? 1 : from + 1;
+ slides.switchSlides(slides.slides[from], slides.slides[to], true);
+ slides.currentSlide = to;
+ }
+ }
+
+ SlideDeck {
+ id: slides
+ titleColor: "white"
+ textColor: "white"
+ anchors.fill: parent
+ layer.enabled: parent.useDropShadow
+ layer.effect: DropShadow {
+ horizontalOffset: slides.width * 0.005;
+ verticalOffset: slides.width * 0.005;
+ radius: 16.0
+ samples: 16
+ fast: true
+ color: Qt.rgba(0.0, 0.0, 0.0, 0.7);
+ }
+ }
+
+
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/EffectsSlide.qml b/basicsuite/Qt5 Launch Presentation/EffectsSlide.qml
new file mode 100644
index 0000000..016ad54
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/EffectsSlide.qml
@@ -0,0 +1,203 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtGraphicalEffects 1.0
+
+import Qt.labs.presentation 1.0
+
+Slide {
+ id: slide
+
+ title: "Qt Graphical Effects"
+ writeInText: "The Qt Graphical Effects module includes a wide range of effects:"
+
+ property real t;
+ SequentialAnimation on t {
+ NumberAnimation { from: 0; to: 1; duration: 5000; easing.type: Easing.InOutCubic }
+ NumberAnimation { from: 1; to: 0; duration: 5000; easing.type: Easing.InOutCubic }
+ loops: Animation.Infinite
+ running: slide.visible;
+ }
+
+ SequentialAnimation {
+ PropertyAction { target: grid; property: "opacity"; value: 0 }
+ PauseAnimation { duration: 1500 }
+ NumberAnimation { target: grid; property: "opacity"; to: 1; duration: 2000; easing.type: Easing.InOutCubic }
+ running: slide.visible;
+ }
+
+ Grid {
+ id: grid;
+
+ opacity: 0;
+
+ width: parent.width
+ height: parent.height * 0.84
+ anchors.bottom: parent.bottom;
+
+ property real cw: width / columns
+ property real ch: height / rows;
+
+ property int fontSize: slide.baseFontSize * 0.5
+
+ columns: 4
+ rows: 2
+
+ Item {
+ width: grid.cw
+ height: grid.ch
+ Text { text: "Original"; color: "white"; font.pixelSize: grid.fontSize; anchors.horizontalCenter: noEffect.horizontalCenter }
+ Image {
+ id: noEffect;
+ source: "images/butterfly.png"
+ width: grid.cw * 0.9
+ fillMode: Image.PreserveAspectFit
+ }
+ }
+
+ Column {
+ Glow {
+ id: glowEffect
+ radius: 4
+ samples: 4
+ spread: slide.t
+ source: noEffect
+ width: grid.cw * 0.9
+ height: width;
+ Text { text: "Glow"; color: "white"; font.pixelSize: grid.fontSize; anchors.top: parent.top; anchors.horizontalCenter: parent.horizontalCenter; }
+ }
+ }
+
+ Column {
+ InnerShadow {
+ id: innerShadowEffect
+ radius: slide.t * 16;
+ samples: 16
+ color: "black"
+ source: noEffect
+ width: grid.cw * 0.9
+ height: width;
+ Text { text: "InnerShadow"; color: "white"; font.pixelSize: grid.fontSize; anchors.top: parent.top; anchors.horizontalCenter: parent.horizontalCenter; }
+ }
+ }
+
+ Column {
+ GaussianBlur {
+ id: blurEffect
+ radius: slide.t * samples;
+ samples: 8
+ source: noEffect
+ width: grid.cw * 0.9
+ height: width;
+ Text { text: "GaussianBlur"; color: "white"; font.pixelSize: grid.fontSize; anchors.top: parent.top; anchors.horizontalCenter: parent.horizontalCenter; }
+ }
+ }
+
+ Column {
+ ThresholdMask {
+ id: thresholdEffect
+ maskSource: Image { source: "images/fog.png" }
+ threshold: slide.t * 0.5 + 0.2;
+ spread: 0.2
+ source: noEffect
+ width: grid.cw * 0.9
+ height: width;
+ Text { text: "ThresholdMask"; color: "white"; font.pixelSize: grid.fontSize; anchors.top: parent.top; anchors.horizontalCenter: parent.horizontalCenter; }
+ }
+ }
+
+ Column {
+ BrightnessContrast {
+ id: brightnessEffect
+ brightness: Math.sin(slide.t * 2 * Math.PI) * 0.5;
+ contrast: Math.sin(slide.t * 4 * Math.PI) * 0.5;
+ source: noEffect
+ width: grid.cw * 0.9
+ height: width;
+ Text { text: "BrightnessContrast"; color: "white"; font.pixelSize: grid.fontSize; anchors.top: parent.top; anchors.horizontalCenter: parent.horizontalCenter; }
+ }
+ }
+
+ Column {
+ Colorize {
+ id: colorizeEffect
+ hue: slide.t
+ source: noEffect
+ width: grid.cw * 0.9
+ height: width;
+ Text { text: "Colorize"; color: "white"; font.pixelSize: grid.fontSize; anchors.top: parent.top; anchors.horizontalCenter: parent.horizontalCenter; }
+ }
+ }
+
+ Column {
+ OpacityMask {
+
+ Item {
+ id: maskSource;
+ anchors.fill: parent;
+ Rectangle {
+ anchors.fill: parent;
+ opacity: slide.t;
+ }
+
+ Text {
+ text: "Qt 5"
+ font.pixelSize: parent.height * 0.15
+ font.bold: true;
+ font.underline: true;
+ anchors.centerIn: parent;
+ rotation: 70
+ }
+ visible: false;
+ }
+
+ id: opacityMaskEffect
+ source: noEffect
+ maskSource: maskSource;
+ width: grid.cw * 0.9
+ height: width;
+ Text { text: "OpacityMask"; color: "white"; font.pixelSize: grid.fontSize; anchors.top: parent.top; anchors.horizontalCenter: parent.horizontalCenter; }
+ }
+ }
+ }
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/ExamplesSlide.qml b/basicsuite/Qt5 Launch Presentation/ExamplesSlide.qml
new file mode 100644
index 0000000..bb3192e
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/ExamplesSlide.qml
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import Qt.labs.presentation 1.0
+
+Slide
+{
+ id: slide
+
+ title: "Qt Quick 2"
+
+ Row {
+ anchors.fill: parent
+
+ spacing: (width - 320 * 3) / 2
+
+ Item {
+ width: 320
+ height: 480
+ clip: true
+ Loader {
+ id: load1
+ }
+ }
+
+ Item {
+ width: 320
+ height: 480
+ clip: true;
+ Loader {
+ id: load2
+ }
+ }
+
+ Loader {
+ id: load3
+ }
+ }
+
+ onVisibleChanged: {
+ if (visible) {
+ load1.source = "maroon/Maroon.qml"
+ load2.source = "samegame/Samegame.qml"
+ load3.source = "calqlatr/Calqlatr.qml"
+ } else {
+ load1.source = ""
+ load2.source = ""
+ load3.source = ""
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/FontSlide.qml b/basicsuite/Qt5 Launch Presentation/FontSlide.qml
new file mode 100644
index 0000000..12106fa
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/FontSlide.qml
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import Qt.labs.presentation 1.0
+
+Slide {
+ id: fontSlide;
+ title: "Qt Quick - Fonts"
+ writeInText: "The default font rendering in Qt Quick 2.0 uses distance fields, making\nit possible to do fully transformable text with subpixel positioning and\nsubpixel antialiasing.
+
+Native font rendering is also an option for applications that want to look native."
+
+ Rectangle {
+ id: textRoot
+ anchors.centerIn: parent
+ anchors.horizontalCenterOffset: parent.width * 0.2
+ anchors.verticalCenterOffset: parent.width * 0.1
+
+ width: 120
+ height: 40
+
+ color: "transparent"
+ border.color: "white"
+ border.width: 1
+
+ Text {
+ anchors.centerIn: parent
+
+ text: "Awesome!"
+ color: "white"
+
+ font.pixelSize: 20;
+
+ SequentialAnimation on scale {
+ NumberAnimation { to: 4; duration: 2508; easing.type: Easing.OutElastic }
+ NumberAnimation { to: 1; duration: 2508; easing.type: Easing.OutElastic }
+ PauseAnimation { duration: 1000 }
+ loops: Animation.Infinite
+ running: fontSlide.visible
+ }
+
+ NumberAnimation on rotation { from: 0; to: 360; duration: 10000; loops: Animation.Infinite; easing.type: Easing.InOutCubic; running: fontSlide.visible }
+ }
+ }
+
+ ShaderEffectSource {
+ width: textRoot.width
+ height: textRoot.height
+ sourceItem: textRoot
+ anchors.bottom: parent.bottom;
+ anchors.left: parent.left;
+ smooth: false
+ transformOrigin: Item.BottomLeft;
+
+ visible: true
+
+ scale: 4;
+ }
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/NoisyGradient.qml b/basicsuite/Qt5 Launch Presentation/NoisyGradient.qml
new file mode 100644
index 0000000..904f14e
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/NoisyGradient.qml
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+ShaderEffect {
+
+ id: effectRoot;
+
+ width: 1280
+ height: 720
+
+ property Gradient gradient: Gradient {
+ GradientStop { position: 0; color: "white" }
+ GradientStop { position: 0.4; color: "blue" }
+ GradientStop { position: 1.0; color: "black" }
+ }
+
+ Rectangle {
+ id: colorTable
+ width: 1
+ height: 128;
+
+ gradient: effectRoot.gradient;
+
+ layer.enabled: true
+ layer.smooth: true
+
+ visible: false;
+ }
+
+ property variant source: colorTable;
+
+ blending: false;
+
+ fragmentShader:"
+ #ifdef GL_ES
+ precision lowp float;
+ #endif
+
+ uniform lowp sampler2D source;
+ uniform lowp float qt_Opacity;
+ varying highp vec2 qt_TexCoord0;
+
+ // Noise function from: http://stackoverflow.com/questions/4200224/random-noise-functions-for-glsl
+ float rand(vec2 n) {
+ return 0.5 + 0.5 * fract(sin(dot(n.xy, vec2(12.9898, 78.233))) * 43758.5453);
+ }
+
+ void main() {
+ lowp float len = clamp(length(vec2(0.5, 0.0) - qt_TexCoord0), 0.0, 1.0);
+ gl_FragColor = texture2D(source, vec2(0, len)) * qt_Opacity + rand(qt_TexCoord0) * 0.05;
+ }
+"
+}
diff --git a/basicsuite/Qt5 Launch Presentation/NormalMapGenerator.qml b/basicsuite/Qt5 Launch Presentation/NormalMapGenerator.qml
new file mode 100644
index 0000000..c6f55c7
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/NormalMapGenerator.qml
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtGraphicalEffects 1.0
+
+ShaderEffect {
+ id: effectRoot;
+
+ property alias source: blurShader.source;
+
+ GaussianBlur
+ {
+ id: blurShader;
+ width: source != undefined ? source.width : 0
+ height: source != undefined ? source.height : 0
+ samples: 8
+ radius: 8
+
+ layer.enabled: true;
+ layer.smooth: true;
+
+ visible: false;
+ }
+
+ width: 256
+ height: 128
+
+ property variant tex: blurShader;
+ property size pixelSize: Qt.size(1 / blurShader.width, 1 / blurShader.height);
+
+ fragmentShader: "
+ #ifdef GL_ES
+ precision lowp float;
+ #endif
+
+ uniform lowp float qt_Opacity;
+ uniform lowp sampler2D tex;
+ uniform highp vec2 pixelSize;
+ varying highp vec2 qt_TexCoord0;
+ void main() {
+
+ lowp vec2 xps = vec2(pixelSize.x, 0.0);
+ vec3 vx = vec3(1, 0, texture2D(tex, qt_TexCoord0 + xps).x - texture2D(tex, qt_TexCoord0 - xps).x);
+
+ lowp vec2 yps = vec2(0.0, pixelSize.y);
+ vec3 vy = vec3(0, 1, texture2D(tex, qt_TexCoord0 + yps).x - texture2D(tex, qt_TexCoord0 - yps).x);
+
+ vec3 n = normalize(cross(vx, vy)) * 0.5 + 0.5;
+
+ gl_FragColor = vec4(n, 1);
+ }
+ "
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/OpacityTransitionPresentation.qml b/basicsuite/Qt5 Launch Presentation/OpacityTransitionPresentation.qml
new file mode 100644
index 0000000..1fbe17e
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/OpacityTransitionPresentation.qml
@@ -0,0 +1,104 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import Qt.labs.presentation 1.0
+
+Presentation {
+
+ id: deck
+
+ width: 1280
+ height: 720
+
+ property bool inTransition: false;
+
+ property variant fromSlide;
+ property variant toSlide;
+
+ property int transitionTime: 500;
+
+ SequentialAnimation {
+ id: forwardTransition
+ PropertyAction { target: deck; property: "inTransition"; value: true }
+ PropertyAction { target: toSlide; property: "visible"; value: true }
+ ParallelAnimation {
+ NumberAnimation { target: fromSlide; property: "opacity"; from: 1; to: 0; duration: deck.transitionTime; easing.type: Easing.OutQuart }
+ NumberAnimation { target: fromSlide; property: "scale"; from: 1; to: 1.1; duration: deck.transitionTime; easing.type: Easing.InOutQuart }
+ NumberAnimation { target: toSlide; property: "opacity"; from: 0; to: 1; duration: deck.transitionTime; easing.type: Easing.InQuart }
+ NumberAnimation { target: toSlide; property: "scale"; from: 0.7; to: 1; duration: deck.transitionTime; easing.type: Easing.InOutQuart }
+ }
+ PropertyAction { target: fromSlide; property: "visible"; value: false }
+ PropertyAction { target: fromSlide; property: "scale"; value: 1 }
+ PropertyAction { target: deck; property: "inTransition"; value: false }
+ }
+ SequentialAnimation {
+ id: backwardTransition
+ running: false
+ PropertyAction { target: deck; property: "inTransition"; value: true }
+ PropertyAction { target: toSlide; property: "visible"; value: true }
+ ParallelAnimation {
+ NumberAnimation { target: fromSlide; property: "opacity"; from: 1; to: 0; duration: deck.transitionTime; easing.type: Easing.OutQuart }
+ NumberAnimation { target: fromSlide; property: "scale"; from: 1; to: 0.7; duration: deck.transitionTime; easing.type: Easing.InOutQuart }
+ NumberAnimation { target: toSlide; property: "opacity"; from: 0; to: 1; duration: deck.transitionTime; easing.type: Easing.InQuart }
+ NumberAnimation { target: toSlide; property: "scale"; from: 1.1; to: 1; duration: deck.transitionTime; easing.type: Easing.InOutQuart }
+ }
+ PropertyAction { target: fromSlide; property: "visible"; value: false }
+ PropertyAction { target: fromSlide; property: "scale"; value: 1 }
+ PropertyAction { target: deck; property: "inTransition"; value: false }
+ }
+
+ function switchSlides(from, to, forward)
+ {
+ if (deck.inTransition)
+ return false
+
+ deck.fromSlide = from
+ deck.toSlide = to
+
+ if (forward)
+ forwardTransition.running = true
+ else
+ backwardTransition.running = true
+
+ return true
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/ParticleSlide.qml b/basicsuite/Qt5 Launch Presentation/ParticleSlide.qml
new file mode 100644
index 0000000..b630a34
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/ParticleSlide.qml
@@ -0,0 +1,86 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import Qt.labs.presentation 1.0
+
+Slide
+{
+ id: slide
+
+ title: "Qt Quick - Particle System"
+
+ Row {
+ anchors.fill: parent
+
+ SequentialAnimation on opacity {
+ running: slide.visible;
+ PropertyAction { value: 0 }
+ PauseAnimation { duration: 2000; }
+ NumberAnimation { to: 1; duration: 1000 }
+ }
+
+ spacing: (width - 320 * 3) / 2
+
+ Loader {
+ id: load1
+ }
+
+ Loader {
+ id: load2
+ }
+
+ Loader {
+ id: load3
+ }
+ }
+
+ onVisibleChanged: {
+ if (visible) {
+ load1.source = "particles/velocityfrommotion.qml"
+ load2.source = "particles/customemitter.qml"
+ load3.source = "particles/emitmask.qml"
+ } else {
+ load1.source = ""
+ load2.source = ""
+ load3.source = ""
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/README b/basicsuite/Qt5 Launch Presentation/README
new file mode 100644
index 0000000..6b3f927
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/README
@@ -0,0 +1,51 @@
+This project contains quick tour of Qt 5.0, primarily focusing on its
+graphical capabilities.
+
+
+
+------------------------------------------------------------------------
+ Requirements:
+
+ - Qt 5, including QtDeclarative, QtGraphicalEffects and QtMultimedia.
+ Commercial URL: http://qt.digia.com
+ Open Source URL: http://qt-project.org
+
+ - The QML Presentation System:
+ URL: https://qt.gitorious.org/qt-labs/qml-presentation-system
+ git: git clone https://git.gitorious.org/qt-labs/qml-presentation-system.git
+
+ - A movie file called 'bunny.mov' in the same directory as the
+ main.qml file. The demo will run without, but the Video slide will
+ not show anything.
+
+
+
+------------------------------------------------------------------------
+ Running:
+
+To run the demo, start it using the Qt Quick 2.0 'qmlscene' tool.
+
+> qmlscene main.qml
+
+The demo includes a slightly fancy fullscreen gradient and a rather
+computationally intensive drop shadow which can be too much for
+low-end GPUs. On these systems, one could try to use the 'lofi'
+launcher instead.
+
+> qmlscene main_lofi.qml
+
+It is possible to tweak the parameters of the main file also.
+
+
+
+------------------------------------------------------------------------
+ Troubleshooting:
+
+For a -developer-build of Qt, the webkit plugin and QtWebProcess will
+be located inside the qtwebkit module, rather than inside QtBase, the plugin
+must be added to the QML import path and the path to QtWebProcess must be
+added to PATH for the demo to run.
+
+The slides have been written for the resolution 1280x720. When resized
+some of the spacing and content will look a bit odd. Any patches to
+fix this will be welcomed :) \ No newline at end of file
diff --git a/basicsuite/Qt5 Launch Presentation/ShaderSlide.qml b/basicsuite/Qt5 Launch Presentation/ShaderSlide.qml
new file mode 100644
index 0000000..593af6d
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/ShaderSlide.qml
@@ -0,0 +1,197 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import Qt.labs.presentation 1.0
+
+
+Slide {
+ id: slide
+
+ title: "Qt Quick - ShaderEffect"
+
+ writeInText: "Harness the raw power of the graphics processor. The ShaderEffect\nelement lets you write GLSL inline in your QML files."
+
+ Image {
+ id: sourceItem
+ source: "images/ally.png"
+ visible: false
+ }
+
+ SequentialAnimation {
+ id: kickoffAnimation
+
+ // setup
+ PropertyAction { target: rotationAnimation; property: "running"; value: false }
+ PropertyAction { target: timeAnimation; property: "running"; value: false }
+ PropertyAction { target: shader; property: "amp"; value: 0 }
+ PropertyAction { target: shader; property: "xrot"; value: 0 }
+ PropertyAction { target: shader; property: "zrot"; value: 0 }
+ PropertyAction { target: shader; property: "time"; value: 0 }
+ PropertyAction { target: shader; property: "scale"; value: 1; }
+ PropertyAction { target: rotationAnimation; property: "running"; value: false }
+ PropertyAction { target: timeAnimation; property: "running"; value: false }
+ // short pause
+ PauseAnimation { duration: 2000 }
+ // get started...
+ ParallelAnimation {
+ NumberAnimation { target: shader; property: "xrot"; to: 2 * Math.PI / 8; duration: 1000; easing.type: Easing.InOutCubic }
+ NumberAnimation { target: shader; property: "amp"; to: 0.1; duration: 1000; easing.type: Easing.InOutCubic }
+// NumberAnimation { target: shader; property: "scale"; to: 1.5; duration: 1000; easing.type: Easing.InOutCubic }
+ PropertyAction { target: rotationAnimation; property: "running"; value: true }
+ PropertyAction { target: timeAnimation; property: "running"; value: true }
+ }
+
+ running: slide.visible;
+ }
+
+
+ ShaderEffect {
+ id: shader
+ width: height
+ height: parent.height
+ anchors.centerIn: parent;
+ anchors.verticalCenterOffset: slide.height * 0.1
+
+ blending: true
+
+ mesh: "50x50"
+
+ property variant size: Qt.size(width, height);
+
+ property variant source: sourceItem;
+
+ property real amp: 0
+
+ property real xrot: 0; // 2 * Math.PI / 8;
+// NumberAnimation on xrot { from: 0; to: Math.PI * 2; duration: 3000; loops: Animation.Infinite }
+
+ property real zrot: 0
+ NumberAnimation on zrot {
+ id: rotationAnimation
+ from: 0;
+ to: Math.PI * 2;
+ duration: 20000;
+ loops: Animation.Infinite
+ easing.type: Easing.InOutCubic
+ running: false;
+ }
+
+ property real time: 0
+ NumberAnimation on time {
+ id: timeAnimation
+ from: 0;
+ to: Math.PI * 2;
+ duration: 3457;
+ loops: Animation.Infinite
+ running: false;
+ }
+
+ vertexShader: "
+ attribute highp vec4 qt_Vertex;
+ attribute highp vec2 qt_MultiTexCoord0;
+ uniform highp mat4 qt_Matrix;
+ uniform highp float xrot;
+ uniform highp float zrot;
+ uniform highp vec2 size;
+ uniform highp float time;
+ uniform highp float amp;
+ varying lowp vec2 v_TexCoord;
+ varying lowp float v_light;
+ void main() {
+ highp float xcosa = cos(xrot);
+ highp float xsina = sin(xrot);
+
+ highp mat4 xrot = mat4(1, 0, 0, 0,
+ 0, xcosa, xsina, 0,
+ 0, -xsina, xcosa, 0,
+ 0, 0, 0, 1);
+
+ highp float zcosa = cos(zrot);
+ highp float zsina = sin(zrot);
+
+ highp mat4 zrot = mat4(zcosa, zsina, 0, 0,
+ -zsina, zcosa, 0, 0,
+ 0, 0, 1, 0,
+ 0, 0, 0, 1);
+
+ highp float near = 2.;
+ highp float far = 6.;
+ highp float fmn = far - near;
+
+ highp mat4 proj = mat4(near, 0, 0, 0,
+ 0, near, 0, 0,
+ 0, 0, -(far + near) / fmn, -1.,
+ 0, 0, -2. * far * near / fmn, 1);
+
+ highp mat4 model = mat4(2, 0, 0, 0,
+ 0, 2, 0, 0,
+ 0, 0, 2, 0,
+ 0, -.5, -4, 1);
+
+ vec4 nLocPos = vec4(qt_Vertex.xy * 2.0 / size - 1.0, 0, 1);
+ nLocPos.z = cos(nLocPos.x * 5. + time) * amp;
+
+ vec4 pos = proj * model * xrot * zrot * nLocPos;
+ pos = vec4(pos.xyx/pos.w, 1);
+
+ gl_Position = qt_Matrix * vec4((pos.xy + 1.0) / 2.0 * size , 0, 1);
+
+ v_TexCoord = qt_MultiTexCoord0;
+
+
+ v_light = dot(normalize(vec3(-sin(nLocPos.x * 5.0 + time) * 5.0 * amp, 0, -1)), vec3(0, 0, -1));
+ }
+ "
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ uniform lowp float qt_Opacity;
+ varying highp vec2 v_TexCoord;
+ varying lowp float v_light;
+ void main() {
+ highp vec4 c = texture2D(source, v_TexCoord);
+ gl_FragColor = (vec4(pow(v_light, 16.0)) * 0.3 + c) * qt_Opacity;
+ }
+ "
+
+ }
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/SlideDeck.qml b/basicsuite/Qt5 Launch Presentation/SlideDeck.qml
new file mode 100644
index 0000000..d265008
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/SlideDeck.qml
@@ -0,0 +1,231 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtGraphicalEffects 1.0
+
+import Qt.labs.presentation 1.0
+
+OpacityTransitionPresentation {
+ id: presentation
+
+ width: 1280
+ height: 720
+
+ transitionTime: 2000
+
+
+ /********************************************************************************
+ *
+ * Introduction
+ *
+ */
+
+/*
+ Rectangle {
+ id: openingSlideBlackout
+ color: "black"
+ anchors.fill: parent;
+ Behavior on opacity { NumberAnimation { duration: 1000 } }
+ }
+
+ onCurrentSlideChanged: {
+ if (currentSlide < 2)
+ openingSlideBlackout.opacity = 1;
+ else
+ openingSlideBlackout.opacity = 0;
+ }
+
+
+ Slide {
+
+ }
+*/
+
+ Slide {
+ id: introSlide
+
+ writeInText: "The following is a quick tour of what is new in Qt 5.
+
+It is an application written with Qt Quick, based on Qt 5. The source code is available from:
+https://qt.gitorious.org/qt-labs/qt5-launch-demo
+
+
+We hope you will enjoy Qt 5 as much as we have enjoyed creating it."
+
+// Image {
+// source: "images/qt-logo.png"
+// opacity: 0.4
+// z: -1
+// anchors.centerIn: parent
+// }
+ }
+
+ Slide {
+ centeredText: "Introducing"
+ fontScale: 2
+ }
+
+ Slide {
+ centeredText: "Qt 5"
+ fontScale: 4;
+ }
+
+
+ Slide {
+ writeInText: "OpenGL-based scene graph for Qt Quick 2.0 - providing velvet animations, particles and impressive graphical effects
+
+Multimedia - Audio, Video and Camera support on all major platforms
+
+WebKit - Full HTML 5 support from the world's most popular web engine"
+
+ }
+
+ Slide {
+ writeInText: "C++ language features - template-based connect(), C++11 support
+
+Connectivity and Networking - DNS lookup, improved IPv6 support
+
+JSON Support - Fast parser and writer, binary format support"
+ }
+
+ Slide {
+ writeInText: "Modularization of the Qt libraries - sanitizing our codebase and simplifying deployment
+
+Qt Platform Abstraction - Unifying the Qt codebase across platforms, minimizing the porting effort for new platforms
+
+Wayland support - Wayland-compatible Qt backend and compositor framework"
+ }
+
+
+ WidgetsSlide { }
+
+
+
+
+ /********************************************************************************
+ *
+ * Qt Quick Graphics Stack
+ *
+ */
+ ExamplesSlide { }
+
+ FontSlide { }
+ CanvasSlide { }
+ ParticleSlide { }
+ ShaderSlide { }
+
+
+
+ /********************************************************************************
+ *
+ * Qt Graphical Effects
+ *
+ */
+
+ EffectsSlide {}
+
+// /********************************************************************************
+// *
+// * Multimedia
+// *
+// */
+
+// Slide {
+// title: "Qt Multimedia"
+// writeInText: "The Qt Multmedia module is implemented on all our major platforms, including Windows, Mac OS X and Linux.
+
+//It contains both a C++ API for use with existing Qt Widgets based applications and a QML API for use with Qt Quick 2.0.
+
+//The features include recording and playback of video and audio and also use of camera.
+
+//It also integrates nicely with the Qt Graphical Effects module."
+// }
+
+// VideoSlide { }
+// CameraSlide { }
+
+
+
+
+ /********************************************************************************
+ *
+ * WebKit
+ *
+ */
+
+// WebkitSlide { }
+
+
+
+ /********************************************************************************
+ *
+ * The End
+ *
+ */
+
+ Slide {
+ title: "Links"
+ content: [
+ "Qt Project: qt-project.org",
+ "Qt by Digia: qt.digia.com",
+ "Follow us on Twitter",
+ " @QtProject",
+ " @QtCommercial",
+ "Find us on Facebook:",
+ " Qt Project",
+ " Qt by Digia",
+ "This demo: https://qt.gitorious.org/qt-labs/qt5-launch-demo"
+ ];
+
+ Image {
+ z: -1
+ opacity: 0.7
+ source: "images/qt-logo.png"
+ anchors.top: parent.top
+ anchors.right: parent.right
+ anchors.rightMargin: parent.width * 0.15
+ fillMode: Image.PreserveAspectFit
+ }
+
+ }
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/Swirl.qml b/basicsuite/Qt5 Launch Presentation/Swirl.qml
new file mode 100644
index 0000000..710f04b
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/Swirl.qml
@@ -0,0 +1,116 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+ShaderEffect {
+ id: shader
+
+ width: 400
+ height: 300
+
+ property real speed: 1
+
+ property color d: Qt.rgba(Math.random() * 0.7,
+ Math.random() * 0.5,
+ Math.random() * 0.7,
+ Math.random() * 0.5)
+ property real tx
+ NumberAnimation on tx { from: 0; to: Math.PI * 2; duration: (Math.random() * 30 + 30) * 1000 / speed; loops: Animation.Infinite }
+ property real ty
+ NumberAnimation on ty { from: 0; to: Math.PI * 2; duration: (Math.random() * 30 + 30) * 1000 / speed; loops: Animation.Infinite }
+ property real tz
+ NumberAnimation on tz { from: 0; to: Math.PI * 2; duration: (Math.random() * 30 + 30) * 1000 / speed; loops: Animation.Infinite }
+ property real tw
+ NumberAnimation on tw { from: 0; to: Math.PI * 2; duration: (Math.random() * 30 + 30) * 1000 / speed; loops: Animation.Infinite }
+
+ property real amplitude: height / 2
+
+ property variant colorTable: ShaderEffectSource { sourceItem: Rectangle { width: 4; height: 4; color: "green" } }
+
+ fragmentShader: "
+ uniform lowp float qt_Opacity;
+ uniform lowp sampler2D colorTable;
+ varying highp vec2 qt_TexCoord0;
+ varying lowp float xx;
+
+ void main() {
+ gl_FragColor = texture2D(colorTable, qt_TexCoord0);
+ gl_FragColor.xyz += xx * 0.1;
+ gl_FragColor *= qt_Opacity;
+ }
+ "
+
+ vertexShader: "
+ uniform lowp vec4 d;
+ uniform highp float tx;
+ uniform highp float ty;
+ uniform highp float tz;
+ uniform highp float tw;
+ uniform highp float amplitude;
+ uniform highp mat4 qt_Matrix;
+ attribute highp vec4 qt_Vertex;
+ attribute highp vec2 qt_MultiTexCoord0;
+ varying highp vec2 qt_TexCoord0;
+ varying lowp float xx;
+ void main() {
+ highp vec4 pos = qt_Vertex;
+
+ highp float y = sin(-tx + d.x * qt_MultiTexCoord0.x * 57. + 12. * d.y)
+ + sin(ty * 2.0 + d.z * qt_MultiTexCoord0.x * 21. + 5. * d.w)
+ + sin(tz * 4.0 + d.y * qt_MultiTexCoord0.x * 13. + 7.0 * d.x)
+ + sin(-ty * 8.0 + d.w * qt_MultiTexCoord0.x * 29. + 15. * d.z);
+ highp float x = sin(-tx + d.x * qt_MultiTexCoord0.x * 213. + 15. * d.y)
+ + sin(ty * 2.0 + d.z * qt_MultiTexCoord0.x * 107. + 12. * d.w)
+ + sin(tz * 4.0 + d.y * qt_MultiTexCoord0.x * 13. + 5. * d.x)
+ + sin(-ty * 8.0 + d.w * qt_MultiTexCoord0.x * 15. + 7. * d.z);
+ xx = x;
+
+ pos.xy += vec2(x * sin(qt_MultiTexCoord0.x * 3.14152) * 0.3,
+ y * (1.0 - qt_MultiTexCoord0.y)) * amplitude;
+
+ gl_Position = qt_Matrix * pos;
+ qt_TexCoord0 = qt_MultiTexCoord0;
+ }
+ "
+
+ mesh: GridMesh { resolution: Qt.size(width / 10, 4) }
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/VideoSlide.qml b/basicsuite/Qt5 Launch Presentation/VideoSlide.qml
new file mode 100644
index 0000000..95479ef
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/VideoSlide.qml
@@ -0,0 +1,116 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtMultimedia 5
+import Qt.labs.presentation 1.0
+
+import QtGraphicalEffects 1.0
+
+Slide {
+
+ id: slide
+
+ title: "Qt Multimedia - Video"
+
+ Video {
+ id: video
+
+ anchors.fill: parent
+ source: "bunny.mov"
+ autoLoad: true;
+
+ layer.enabled: true;
+ layer.smooth: true;
+ layer.effect: Displace {
+ displacementSource: normalMap
+ displacement: button.pressed ? 1.0 : 0.0
+ Behavior on displacement {
+ NumberAnimation { duration: 1000 }
+ }
+ }
+ }
+
+ Rectangle {
+ id: theItem;
+ width: 256
+ height: 128
+ color: "transparent"
+ Text {
+ id: label
+ color: "white"
+ text: "Qt 5"
+// font.family: "Times New Roman"
+ font.bold: true;
+ font.pixelSize: 80
+ anchors.centerIn: parent
+ }
+ visible: false;
+ }
+
+ NormalMapGenerator {
+ anchors.left: theItem.right
+ width: 256
+ height: 128
+ id: normalMap
+ source: theItem;
+ visible: false
+ }
+
+ centeredText: video.hasVideo ? "" : "'bunny.mov' is not found or cannot be played: " + video.errorString
+
+ onVisibleChanged: {
+ if (slide.visible)
+ video.play();
+ else
+ video.pause();
+ }
+
+ Button {
+ id: button
+ anchors.bottom: video.bottom
+ anchors.horizontalCenter: video.horizontalCenter
+ anchors.bottomMargin: height / 2;
+ label: pressed ? "Remove Effect" : "Displacement Effect";
+ width: height * 4;
+ height: parent.height * 0.1
+ }
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/WebKitSlideContent.qml b/basicsuite/Qt5 Launch Presentation/WebKitSlideContent.qml
new file mode 100644
index 0000000..ea5a364
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/WebKitSlideContent.qml
@@ -0,0 +1,84 @@
+import QtQuick 2.0
+import QtQuick.Particles 2.0
+import QtWebKit 3.0
+
+Item {
+ id: slide
+
+ anchors.fill: parent;
+
+ WebView {
+ id: browser
+ anchors.fill: parent
+ url: editor.text
+
+ // This works around rendering bugs in webkit. CSS animations
+ // and webGL content gets a bad offset, but this hack
+ // clips it so it is not visible. Not ideal, but it kinda works
+ // for now.
+ layer.enabled: true
+ layer.smooth: true
+ }
+
+ Rectangle {
+ border.width: 2
+ border.color: "black"
+ opacity: 0.5
+ color: "black"
+ anchors.fill: editor
+ anchors.margins: -editor.height * 0.2;
+
+ radius: -anchors.margins
+ antialiasing: true
+ }
+
+ TextInput {
+ id: editor
+ anchors.top: browser.bottom;
+ anchors.horizontalCenter: browser.horizontalCenter
+ font.pixelSize: slide.height * 0.05;
+ text: "http://qt.digia.com"
+ onAccepted: browser.reload();
+ color: "white"
+
+ onCursorPositionChanged: {
+ var rect = positionToRectangle(cursorPosition);
+ emitter.x = rect.x;
+ emitter.y = rect.y;
+ emitter.width = rect.width;
+ emitter.height = rect.height;
+ emitter.burst(10);
+ }
+
+ ParticleSystem {
+ id: sys1
+ running: slide.visible
+ }
+
+ ImageParticle {
+ system: sys1
+ source: "images/particle.png"
+ color: "white"
+ colorVariation: 0.2
+ alpha: 0
+ }
+
+ Emitter {
+ id: emitter
+ system: sys1
+
+ enabled: false
+
+ lifeSpan: 2000
+
+ velocity: PointDirection { xVariation: 30; yVariation: 30; }
+ acceleration: PointDirection {xVariation: 30; yVariation: 30; y: 100 }
+
+ endSize: 0
+
+ size: 8
+ sizeVariation: 2
+ }
+ }
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/WebkitSlide.qml b/basicsuite/Qt5 Launch Presentation/WebkitSlide.qml
new file mode 100644
index 0000000..5ff70b2
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/WebkitSlide.qml
@@ -0,0 +1,19 @@
+import QtQuick 2.0
+import Qt.labs.presentation 1.0
+
+Slide {
+ id: slide
+
+ title: "Qt WebKit - WebView"
+
+ Loader {
+ id: webkitLoader
+
+ anchors.fill: parent
+
+ source: "WebKitSlideContent.qml"
+ }
+
+ centeredText: webkitLoader.status == Loader.Error ? "Qt WebKit not installed or otherwise failed to load" : ""
+}
+
diff --git a/basicsuite/Qt5 Launch Presentation/WidgetsSlide.qml b/basicsuite/Qt5 Launch Presentation/WidgetsSlide.qml
new file mode 100644
index 0000000..4a28382
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/WidgetsSlide.qml
@@ -0,0 +1,152 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import Qt.labs.presentation 1.0
+
+Slide {
+ id: slide
+
+ writeInText: "The Qt Widgets are working better than ever with accessibility\nimprovements and retina display support."
+
+ property int slamTime: 800;
+ property int waitTime: 500;
+
+ y: parent.height * 0.1
+
+ SequentialAnimation {
+ id: widgetAnimation
+ ScriptAction { script: {
+ boxesImage.opacity = 0;
+ mainwindowsImage.opacity = 0;
+ chipsWindow.opacity = 0;
+ stylesWindow.opacity = 0;
+ }
+ }
+ PauseAnimation { duration: 3000 }
+ ParallelAnimation {
+ NumberAnimation { target: boxesImage; property: "opacity"; from: 0; to: 1; duration: slide.slamTime; easing.type: Easing.OutBack }
+ NumberAnimation { target: boxesImage; property: "rotation"; from: 20; to: 10; duration: slide.slamTime; easing.type: Easing.OutBack }
+ NumberAnimation { target: boxesImage; property: "scale"; from: 2; to: 1.5; duration: slide.slamTime; easing.type: Easing.OutBack }
+ }
+ PauseAnimation { duration: slide.waitTime }
+ ParallelAnimation {
+ NumberAnimation { target: mainwindowsImage; property: "opacity"; from: 0; to: 1; duration: slide.slamTime; easing.type: Easing.OutBack }
+ NumberAnimation { target: mainwindowsImage; property: "rotation"; from: -35; to: -20; duration: slide.slamTime; easing.type: Easing.OutBack}
+ NumberAnimation { target: mainwindowsImage; property: "scale"; from: 2; to: 1.5; duration: slide.slamTime; easing.type: Easing.OutBack }
+ }
+ PauseAnimation { duration: slide.waitTime }
+ ParallelAnimation {
+ NumberAnimation { target: chipsWindow; property: "opacity"; from: 0; to: 1; duration: slide.slamTime; easing.type: Easing.InOutCubic }
+ NumberAnimation { target: chipsWindow; property: "rotation"; from: 10; to: 25; duration: slide.slamTime; easing.type: Easing.OutBack}
+ NumberAnimation { target: chipsWindow; property: "scale"; from: 2.5; to: 1.6; duration: slide.slamTime; easing.type: Easing.OutBack }
+ }
+ PauseAnimation { duration: slide.waitTime }
+ ParallelAnimation {
+ NumberAnimation { target: stylesWindow; property: "opacity"; from: 0; to: 1; duration: slide.slamTime; easing.type: Easing.InOutCubic }
+ NumberAnimation { target: stylesWindow; property: "rotation"; from: 30; to: -15; duration: slide.slamTime; easing.type: Easing.OutBack}
+ NumberAnimation { target: stylesWindow; property: "scale"; from: 1.8; to: 1.4; duration: slide.slamTime; easing.type: Easing.OutBack }
+ }
+ running: false
+ }
+
+ onVisibleChanged: {
+ widgetAnimation.running = slide.visible;
+ }
+
+ Row {
+ x: slide.width * 0.05
+ y: slide.height * 0.65;
+ width: parent.width
+ Image {
+ id: boxesImage;
+ source: "images/widgets_boxes.png"
+ fillMode: Image.PreserveAspectFit
+ width: slide.width * .2
+ antialiasing: true
+ opacity: 0;
+ y: -slide.height * 0.2
+ rotation: 10
+ scale: 1.5;
+ }
+ Image {
+ id: mainwindowsImage
+ source: "images/widgets_mainwindows.png"
+ fillMode: Image.PreserveAspectFit
+ width: slide.width * .2
+ antialiasing: true
+ opacity: 0
+ }
+ Image {
+ id: chipsWindow
+ source: "images/widgets_chips.png"
+ fillMode: Image.PreserveAspectFit
+ width: slide.width * .2
+ x: slide.width * -0.05
+ y: -slide.height * 0.2
+ antialiasing: true
+ opacity: 0
+ }
+
+ Image {
+ id: stylesWindow
+ source: "images/widgets_styles_fusion.png"
+ fillMode: Image.PreserveAspectFit
+ width: slide.width * .2
+
+ x: slide.width * 1
+ y: -slide.height * 0.1
+ antialiasing: true
+ opacity: 0
+
+ Image {
+ source: "images/widgets_styles_macstyle.png"
+ fillMode: Image.PreserveAspectFit
+ width: slide.width * .2
+
+ x: parent.width * 0.3
+ y: parent.width * 0.1
+ rotation: -20
+ antialiasing: true
+ }
+ }
+ }
+}
+
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/.DS_Store b/basicsuite/Qt5 Launch Presentation/calqlatr/.DS_Store
new file mode 100644
index 0000000..fe95b02
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/.DS_Store
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/Calqlatr.qml b/basicsuite/Qt5 Launch Presentation/calqlatr/Calqlatr.qml
new file mode 100644
index 0000000..7640fbd
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/Calqlatr.qml
@@ -0,0 +1,110 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import "content"
+import "content/calculator.js" as CalcEngine
+
+
+Rectangle {
+ id: window
+ width: 320
+ height: 480
+ focus: true
+ color: "#272822"
+
+ onWidthChanged: controller.reload()
+
+ function operatorPressed(operator) { CalcEngine.operatorPressed(operator) }
+ function digitPressed(digit) { CalcEngine.digitPressed(digit) }
+
+ Item {
+ id: pad
+ width: window.width * 0.58
+ NumberPad { y: 10; anchors.horizontalCenter: parent.horizontalCenter }
+ }
+
+ AnimationController {
+ id: controller
+ animation: ParallelAnimation {
+ id: anim
+ NumberAnimation { target: display; property: "x"; duration: 400; from: -16; to: window.width - display.width; easing.type: Easing.InOutQuad }
+ NumberAnimation { target: pad; property: "x"; duration: 400; from: window.width - pad.width; to: 0; easing.type: Easing.InOutQuad }
+ SequentialAnimation {
+ NumberAnimation { target: pad; property: "scale"; duration: 200; from: 1; to: 0.97; easing.type: Easing.InOutQuad }
+ NumberAnimation { target: pad; property: "scale"; duration: 200; from: 0.97; to: 1; easing.type: Easing.InOutQuad }
+ }
+ }
+ }
+
+ Display {
+ id: display
+ x: -16
+ width: window.width * 0.42
+ height: parent.height
+
+ MouseArea {
+ property real startX: 0
+ property real oldP: 0
+ property bool rewind: false
+
+ anchors.fill: parent
+ onPositionChanged: {
+ var reverse = startX > window.width / 2
+ var mx = mapToItem(window, mouse.x).x
+ var p = Math.abs((mx - startX) / (window.width - display.width))
+ if (p < oldP)
+ rewind = reverse ? false : true
+ else
+ rewind = reverse ? true : false
+ controller.progress = reverse ? 1 - p : p
+ oldP = p
+ }
+ onPressed: startX = mapToItem(window, mouse.x).x
+ onReleased: {
+ if (rewind)
+ controller.completeToBeginning()
+ else
+ controller.completeToEnd()
+ }
+ }
+ }
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/Button.qml b/basicsuite/Qt5 Launch Presentation/calqlatr/content/Button.qml
new file mode 100644
index 0000000..c355c2d
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/Button.qml
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+Item {
+ property alias text: textItem.text
+ property alias color: textItem.color
+
+ property bool operator: false
+
+ signal clicked
+
+ width: 30
+ height: 50
+
+ Text {
+ id: textItem
+ font.pixelSize: 48
+ wrapMode: Text.WordWrap
+ lineHeight: 0.75
+ color: "white"
+ }
+
+// Rectangle {
+// color: "red"
+// opacity: 0.2
+// anchors.fill: mouse
+// }
+
+ MouseArea {
+ id: mouse
+ anchors.fill: parent
+ anchors.margins: -5
+ onClicked: {
+ //parent.clicked()
+ if (operator)
+ window.operatorPressed(parent.text)
+ else
+ window.digitPressed(parent.text)
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/Display.qml b/basicsuite/Qt5 Launch Presentation/calqlatr/content/Display.qml
new file mode 100644
index 0000000..3c1d9c0
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/Display.qml
@@ -0,0 +1,124 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+Item {
+ id: display
+
+ function displayOperator(operator)
+ {
+ listView.model.append({ "operator": operator, "operand": "" })
+ }
+
+ function newLine(operator, operand)
+ {
+ listView.model.append({ "operator": operator, "operand": operand })
+ }
+
+ function appendDigit(digit)
+ {
+ if (!listView.model.count)
+ listView.model.append({ "operator": "", "operand": "" })
+ var i = listView.model.count - 1;
+ listView.model.get(i).operand = listView.model.get(i).operand + digit;
+ }
+
+ Item {
+ id: theItem
+ width: parent.width + 32
+ height: parent.height
+
+ Rectangle {
+ id: rect
+ x: 16
+ color: "white"
+ height: parent.height
+ width: display.width - 16
+ }
+ Image {
+ anchors.right: rect.left
+ source: "images/paper-edge-left.png"
+ height: parent.height
+ fillMode: Image.TileVertically
+ }
+ Image {
+ anchors.left: rect.right
+ source: "images/paper-edge-right.png"
+ height: parent.height
+ fillMode: Image.TileVertically
+ }
+
+ Image {
+ source: "images/paper-grip.png"
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 20
+ }
+
+ ListView {
+ id: listView
+ x: 16; y: 30
+ width: display.width
+ height: display.height
+ delegate: Item {
+ height: 20
+ width: parent.width
+ Text {
+ id: operator
+ x: 8
+ font.pixelSize: 18
+ color: "#6da43d"
+ text: model.operator
+ }
+ Text {
+ id: operand
+ font.pixelSize: 18
+ anchors.right: parent.right
+ anchors.rightMargin: 26
+ text: model.operand
+ }
+ }
+ model: ListModel { }
+ }
+
+ }
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/NumberPad.qml b/basicsuite/Qt5 Launch Presentation/calqlatr/content/NumberPad.qml
new file mode 100644
index 0000000..853c763
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/NumberPad.qml
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+Grid {
+ columns: 3
+ columnSpacing: 32
+ rowSpacing: 16
+
+ Button { text: "7" }
+ Button { text: "8" }
+ Button { text: "9" }
+ Button { text: "4" }
+ Button { text: "5" }
+ Button { text: "6" }
+ Button { text: "1" }
+ Button { text: "2" }
+ Button { text: "3" }
+ Button { text: "0" }
+ Button { text: "." }
+ Button { text: " " }
+ Button { text: "±"; color: "#6da43d"; operator: true }
+ Button { text: "−"; color: "#6da43d"; operator: true }
+ Button { text: "+"; color: "#6da43d"; operator: true }
+ Button { text: " "; color: "#6da43d"; operator: true }
+ Button { text: "÷"; color: "#6da43d"; operator: true }
+ Button { text: "×"; color: "#6da43d"; operator: true }
+ Button { text: "C"; color: "#6da43d"; operator: true }
+ Button { text: " "; color: "#6da43d"; operator: true }
+ Button { text: "="; color: "#6da43d"; operator: true }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/StyleLabel.qml b/basicsuite/Qt5 Launch Presentation/calqlatr/content/StyleLabel.qml
new file mode 100644
index 0000000..3bdea86
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/StyleLabel.qml
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+Text {
+ width: 64
+ font.pixelSize: 14
+ font.bold: false
+ wrapMode: Text.WordWrap
+ lineHeight: 0.75
+ color: "#676764"
+}
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/audio/touch.wav b/basicsuite/Qt5 Launch Presentation/calqlatr/content/audio/touch.wav
new file mode 100644
index 0000000..94cccb7
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/audio/touch.wav
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/calculator.js b/basicsuite/Qt5 Launch Presentation/calqlatr/content/calculator.js
new file mode 100644
index 0000000..843ef39
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/calculator.js
@@ -0,0 +1,143 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+var curVal = 0
+var memory = 0
+var lastOp = ""
+var previousOperator = ""
+var digits = ""
+
+function disabled(op) {
+ if (op == "." && digits.toString().search(/\./) != -1) {
+ return true
+ } else if (op == window.squareRoot && digits.toString().search(/-/) != -1) {
+ return true
+ } else {
+ return false
+ }
+}
+
+function digitPressed(op)
+{
+ if (disabled(op))
+ return
+ if (digits.toString().length >= 14)
+ return
+ if (lastOp.toString().length == 1 && ((lastOp >= "0" && lastOp <= "9") || lastOp == ".") ) {
+ digits = digits + op.toString()
+ display.appendDigit(op.toString())
+ } else {
+ digits = op
+ display.appendDigit(op.toString())
+ }
+ lastOp = op
+}
+
+function operatorPressed(op)
+{
+ if (disabled(op))
+ return
+ lastOp = op
+
+ if (previousOperator == "+") {
+ digits = Number(digits.valueOf()) + Number(curVal.valueOf())
+ } else if (previousOperator == "−") {
+ digits = Number(curVal) - Number(digits.valueOf())
+ } else if (previousOperator == "×") {
+ digits = Number(curVal) * Number(digits.valueOf())
+ } else if (previousOperator == "÷") {
+ digits = Number(Number(curVal) / Number(digits.valueOf())).toString()
+ } else if (previousOperator == "=") {
+ }
+
+ if (op == "+" || op == "−" || op == "×" || op == "÷") {
+ previousOperator = op
+ curVal = digits.valueOf()
+ display.displayOperator(previousOperator)
+ return
+ }
+
+ if (op == "=") {
+ display.newLine("=", digits.toString())
+ }
+
+ curVal = 0
+ previousOperator = ""
+
+ if (op == "1/x") {
+ digits = (1 / digits.valueOf()).toString()
+ } else if (op == "x^2") {
+ digits = (digits.valueOf() * digits.valueOf()).toString()
+ } else if (op == "Abs") {
+ digits = (Math.abs(digits.valueOf())).toString()
+ } else if (op == "Int") {
+ digits = (Math.floor(digits.valueOf())).toString()
+ } else if (op == window.plusminus) {
+ digits = (digits.valueOf() * -1).toString()
+ } else if (op == window.squareRoot) {
+ digits = (Math.sqrt(digits.valueOf())).toString()
+ } else if (op == "mc") {
+ memory = 0;
+ } else if (op == "m+") {
+ memory += digits.valueOf()
+ } else if (op == "mr") {
+ digits = memory.toString()
+ } else if (op == "m-") {
+ memory = digits.valueOf()
+ } else if (op == window.leftArrow) {
+ digits = digits.toString().slice(0, -1)
+ if (digits.length == 0) {
+ digits = "0"
+ }
+ } else if (op == "Off") {
+ Qt.quit();
+ } else if (op == "C") {
+ digits = "0"
+ } else if (op == "AC") {
+ curVal = 0
+ memory = 0
+ lastOp = ""
+ digits ="0"
+ }
+
+
+}
+
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/icon-back.png b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/icon-back.png
new file mode 100644
index 0000000..2989ee2
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/icon-back.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/icon-close.png b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/icon-close.png
new file mode 100644
index 0000000..3e21248
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/icon-close.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/icon-settings.png b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/icon-settings.png
new file mode 100644
index 0000000..98e662f
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/icon-settings.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/logo.png b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/logo.png
new file mode 100644
index 0000000..6bc6561
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/logo.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/paper-edge-left.png b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/paper-edge-left.png
new file mode 100644
index 0000000..ca29a3a
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/paper-edge-left.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/paper-edge-right.png b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/paper-edge-right.png
new file mode 100644
index 0000000..7c2da7b
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/paper-edge-right.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/paper-grip.png b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/paper-grip.png
new file mode 100644
index 0000000..953c408
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/paper-grip.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/settings-selected-a.png b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/settings-selected-a.png
new file mode 100644
index 0000000..e08ddfa
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/settings-selected-a.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/settings-selected-b.png b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/settings-selected-b.png
new file mode 100644
index 0000000..d9aa7e3
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/settings-selected-b.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/touch-green.png b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/touch-green.png
new file mode 100644
index 0000000..64dbde6
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/touch-green.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/touch-white.png b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/touch-white.png
new file mode 100644
index 0000000..bb02b00
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/calqlatr/content/images/touch-white.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/demo.qmlproject b/basicsuite/Qt5 Launch Presentation/demo.qmlproject
new file mode 100644
index 0000000..eed1c97
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/demo.qmlproject
@@ -0,0 +1,18 @@
+/* File generated by Qt Creator, version 2.6.1 */
+
+import QmlProject 1.1
+
+Project {
+ mainFile: "main.qml"
+
+ /* Include .qml, .js, and image files from current directory and subdirectories */
+ QmlFiles {
+ directory: "."
+ }
+ JavaScriptFiles {
+ directory: "."
+ }
+ ImageFiles {
+ directory: "images"
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/icon.png b/basicsuite/Qt5 Launch Presentation/icon.png
new file mode 100644
index 0000000..748392d
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/icon.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/images/ally.png b/basicsuite/Qt5 Launch Presentation/images/ally.png
new file mode 100644
index 0000000..05b405b
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/images/ally.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/images/butterfly.png b/basicsuite/Qt5 Launch Presentation/images/butterfly.png
new file mode 100644
index 0000000..b8cc35c
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/images/butterfly.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/images/displace.png b/basicsuite/Qt5 Launch Presentation/images/displace.png
new file mode 100644
index 0000000..440e8cb
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/images/displace.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/images/fog.png b/basicsuite/Qt5 Launch Presentation/images/fog.png
new file mode 100644
index 0000000..f462222
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/images/fog.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/images/particle.png b/basicsuite/Qt5 Launch Presentation/images/particle.png
new file mode 100644
index 0000000..5c83896
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/images/particle.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/images/qt-logo.png b/basicsuite/Qt5 Launch Presentation/images/qt-logo.png
new file mode 100644
index 0000000..7f2c662
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/images/qt-logo.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/images/widgets_boxes.png b/basicsuite/Qt5 Launch Presentation/images/widgets_boxes.png
new file mode 100644
index 0000000..3115255
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/images/widgets_boxes.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/images/widgets_chips.png b/basicsuite/Qt5 Launch Presentation/images/widgets_chips.png
new file mode 100644
index 0000000..4ef1664
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/images/widgets_chips.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/images/widgets_mainwindows.png b/basicsuite/Qt5 Launch Presentation/images/widgets_mainwindows.png
new file mode 100644
index 0000000..5ce5416
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/images/widgets_mainwindows.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/images/widgets_styles_fusion.png b/basicsuite/Qt5 Launch Presentation/images/widgets_styles_fusion.png
new file mode 100644
index 0000000..d94f859
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/images/widgets_styles_fusion.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/images/widgets_styles_macstyle.png b/basicsuite/Qt5 Launch Presentation/images/widgets_styles_macstyle.png
new file mode 100644
index 0000000..033f43b
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/images/widgets_styles_macstyle.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/main.qml b/basicsuite/Qt5 Launch Presentation/main.qml
new file mode 120000
index 0000000..2127aca
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/main.qml
@@ -0,0 +1 @@
+main_lofi.qml \ No newline at end of file
diff --git a/basicsuite/Qt5 Launch Presentation/main_hifi.qml b/basicsuite/Qt5 Launch Presentation/main_hifi.qml
new file mode 100644
index 0000000..19e006b
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/main_hifi.qml
@@ -0,0 +1,43 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+DemoMain {
+ autorun: true
+}
diff --git a/basicsuite/Qt5 Launch Presentation/main_lofi.qml b/basicsuite/Qt5 Launch Presentation/main_lofi.qml
new file mode 100644
index 0000000..47e7f82
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/main_lofi.qml
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt 5 launch demo.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+DemoMain {
+
+ width: 854
+ height: 480
+
+ useDropShadow: false;
+ useSimpleGradient: true;
+
+ autorun: true
+}
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/.DS_Store b/basicsuite/Qt5 Launch Presentation/maroon/.DS_Store
new file mode 100644
index 0000000..b5c859b
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/.DS_Store
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/Maroon.qml b/basicsuite/Qt5 Launch Presentation/maroon/Maroon.qml
new file mode 100644
index 0000000..d7bfcb6
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/Maroon.qml
@@ -0,0 +1,233 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+import "content"
+import "content/logic.js" as Logic
+
+Item {
+ id: root
+ width: 320
+ height: 480
+ property var gameState: Logic.newGameState(canvas);
+ property bool passedSplash: false
+
+ Image {
+ source:"content/gfx/background.png"
+ anchors.bottom: view.bottom
+
+ ParticleSystem {
+ id: particles
+ anchors.fill: parent
+
+ ImageParticle {
+ id: bubble
+ anchors.fill: parent
+ source: "content/gfx/catch.png"
+ opacity: 0.25
+ }
+
+ Wander {
+ xVariance: 25;
+ pace: 25;
+ }
+
+ Emitter {
+ width: parent.width
+ height: 150
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 3
+ startTime: 15000
+
+ emitRate: 2
+ lifeSpan: 15000
+
+ acceleration: PointDirection{ y: -6; xVariation: 2; yVariation: 2 }
+
+ size: 24
+ sizeVariation: 16
+ }
+ }
+ }
+
+ Column {
+ id: view
+ y: -(height - 480)
+ width: 320
+
+ GameOverScreen { gameCanvas: canvas }
+
+ Item {
+ id: canvasArea
+ width: 320
+ height: 480
+
+ Row {
+ height: childrenRect.height
+ Image {
+ id: wave
+ y: 30
+ source:"content/gfx/wave.png"
+ }
+ Image {
+ y: 30
+ source:"content/gfx/wave.png"
+ }
+ NumberAnimation on x { from: 0; to: -(wave.width); duration: 16000; loops: Animation.Infinite }
+ SequentialAnimation on y {
+ loops: Animation.Infinite
+ NumberAnimation { from: y - 2; to: y + 2; duration: 1600; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: y + 2; to: y - 2; duration: 1600; easing.type: Easing.InOutQuad }
+ }
+ }
+
+ Row {
+ opacity: 0.5
+ Image {
+ id: wave2
+ y: 25
+ source: "content/gfx/wave.png"
+ }
+ Image {
+ y: 25
+ source: "content/gfx/wave.png"
+ }
+ NumberAnimation on x { from: -(wave2.width); to: 0; duration: 32000; loops: Animation.Infinite }
+ SequentialAnimation on y {
+ loops: Animation.Infinite
+ NumberAnimation { from: y + 2; to: y - 2; duration: 1600; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: y - 2; to: y + 2; duration: 1600; easing.type: Easing.InOutQuad }
+ }
+ }
+
+ Image {
+ source: "content/gfx/sunlight.png"
+ opacity: 0.02
+ y: 0
+ anchors.horizontalCenter: parent.horizontalCenter
+ transformOrigin: Item.Top
+ SequentialAnimation on rotation {
+ loops: Animation.Infinite
+ NumberAnimation { from: -10; to: 10; duration: 8000; easing.type: Easing.InOutSine }
+ NumberAnimation { from: 10; to: -10; duration: 8000; easing.type: Easing.InOutSine }
+ }
+ }
+
+ Image {
+ source: "content/gfx/sunlight.png"
+ opacity: 0.04
+ y: 20
+ anchors.horizontalCenter: parent.horizontalCenter
+ transformOrigin: Item.Top
+ SequentialAnimation on rotation {
+ loops: Animation.Infinite
+ NumberAnimation { from: 10; to: -10; duration: 8000; easing.type: Easing.InOutSine }
+ NumberAnimation { from: -10; to: 10; duration: 8000; easing.type: Easing.InOutSine }
+ }
+ }
+
+ Image {
+ source: "content/gfx/grid.png"
+ opacity: 0.5
+ }
+
+ GameCanvas {
+ id: canvas
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 20
+ x: 32
+ focus: true
+ }
+
+ InfoBar { anchors.bottom: canvas.top; anchors.bottomMargin: 6; width: parent.width }
+
+ //3..2..1..go
+ Timer {
+ id: countdownTimer
+ interval: 1000
+ running: root.countdown < 5
+ repeat: true
+ onTriggered: root.countdown++
+ }
+ Repeater {
+ model: ["content/gfx/text-blank.png", "content/gfx/text-3.png", "content/gfx/text-2.png", "content/gfx/text-1.png", "content/gfx/text-go.png"]
+ delegate: Image {
+ visible: root.countdown <= index
+ opacity: root.countdown == index ? 0.5 : 0.1
+ scale: root.countdown >= index ? 1.0 : 0.0
+ source: modelData
+ Behavior on opacity { NumberAnimation {} }
+ Behavior on scale { NumberAnimation {} }
+ }
+ }
+ }
+
+ NewGameScreen {
+ onStartButtonClicked: root.passedSplash = true
+ }
+ }
+
+ property int countdown: 10
+ Timer {
+ id: gameStarter
+ interval: 4000
+ running: false
+ repeat: false
+ onTriggered: Logic.startGame(canvas);
+ }
+
+ states: [
+ State {
+ name: "gameOn"; when: gameState.gameOver == false && passedSplash
+ PropertyChanges { target: view; y: -(height - 960) }
+ StateChangeScript { script: root.countdown = 0; }
+ PropertyChanges { target: gameStarter; running: true }
+ },
+ State {
+ name: "gameOver"; when: gameState.gameOver == true
+ PropertyChanges { target: view; y: 0 }
+ }
+ ]
+
+ transitions: Transition {
+ NumberAnimation { properties: "x,y"; duration: 1200; easing.type: Easing.OutQuad }
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/BuildButton.qml b/basicsuite/Qt5 Launch Presentation/maroon/content/BuildButton.qml
new file mode 100644
index 0000000..49641fc
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/BuildButton.qml
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import "logic.js" as Logic
+
+Item {
+ id: container
+ width: 64
+ height: 64
+ property alias source: img.source
+ property int index
+ property int row: 0
+ property int col: 0
+ property int towerType
+ property bool canBuild: true
+ property Item gameCanvas: parent.parent.parent
+ signal clicked()
+
+ Image {
+ id: img
+ opacity: (canBuild && gameCanvas.coins >= Logic.towerData[towerType-1].cost) ? 1.0 : 0.4
+ }
+ Text {
+ anchors.right: parent.right
+ font.pointSize: 14
+ font.bold: true
+ color: "#ffffff"
+ text: Logic.towerData[towerType - 1].cost
+ }
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ Logic.buildTower(towerType, col, row)
+ container.clicked()
+ }
+ }
+ Image {
+ visible: col == index && row != 0
+ source: "gfx/dialog-pointer.png"
+ anchors.top: parent.bottom
+ anchors.topMargin: 4
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ Image {
+ visible: col == index && row == 0
+ source: "gfx/dialog-pointer.png"
+ rotation: 180
+ anchors.bottom: parent.top
+ anchors.bottomMargin: 6
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/GameCanvas.qml b/basicsuite/Qt5 Launch Presentation/maroon/content/GameCanvas.qml
new file mode 100644
index 0000000..5e6e963
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/GameCanvas.qml
@@ -0,0 +1,240 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import "logic.js" as Logic
+import "towers" as Towers
+
+Item {
+ id: grid
+
+ property int squareSize: 64
+ property int rows: 6
+ property int cols: 4
+ property Item canvas: grid
+ property int score: 0
+ property int coins: 100
+ property int lives: 3
+ property int waveNumber: 0
+ property int waveProgress: 0
+ property var towers
+ property var mobs
+ property bool gameRunning: false
+ property bool gameOver: false
+ property bool errored: false
+ property string errorString: ""
+
+ width: cols * squareSize
+ height: rows * squareSize
+
+ function freshState() {
+ lives = 3
+ coins = 100
+ score = 0
+ waveNumber = 0
+ waveProgress = 0
+ gameOver = false
+ gameRunning = false
+ towerMenu.shown = false
+ helpButton.comeBack();
+ }
+
+ Text {
+ id: errorText // Mostly for debug purposes
+ text: errorString
+ visible: errored
+ color: "red"
+ font.pixelSize: 18
+ wrapMode: Text.WordWrap
+ width: parent.width / 1.2
+ height: parent.height / 1.2
+ anchors.centerIn: parent
+ z: 1000
+ }
+
+ Timer {
+ interval: 16
+ running: true
+ repeat: true
+ onTriggered: Logic.tick()
+ }
+
+ MouseArea {
+ id: ma
+ anchors.fill: parent
+ onClicked: {
+ if (towerMenu.visible)
+ towerMenu.finish()
+ else
+ towerMenu.open(mouse.x, mouse.y)
+ }
+ }
+
+ Image {
+ id: towerMenu
+ visible: false
+ z: 1500
+ scale: 0.9
+ opacity: 0.7
+ property int dragDistance: 16
+ property int targetRow: 0
+ property int targetCol: 0
+ property bool shown: false
+ property bool towerExists: false
+
+ function finish() {
+ shown = false
+ }
+
+ function open(xp,yp) {
+ if (!grid.gameRunning)
+ return
+ targetRow = Logic.row(yp)
+ targetCol = Logic.col(xp)
+ if (targetRow == 0)
+ towerMenu.y = (targetRow + 1) * grid.squareSize
+ else
+ towerMenu.y = (targetRow - 1) * grid.squareSize
+ towerExists = (grid.towers[Logic.towerIdx(targetCol, targetRow)] != null)
+ shown = true
+ helpButton.goAway();
+ }
+
+ states: State {
+ name: "shown"; when: towerMenu.shown && !grid.gameOver
+ PropertyChanges { target: towerMenu; visible: true; scale: 1; opacity: 1 }
+ }
+
+ transitions: Transition {
+ PropertyAction { property: "visible" }
+ NumberAnimation { properties: "opacity,scale"; duration: 500; easing.type: Easing.OutElastic }
+ }
+
+ x: -32
+ source: "gfx/dialog.png"
+ Row {
+ id: buttonRow
+ height: 100
+ anchors.centerIn: parent
+ spacing: 8
+ BuildButton {
+ row: towerMenu.targetRow; col: towerMenu.targetCol
+ anchors.verticalCenter: parent.verticalCenter
+ towerType: 1; index: 0
+ canBuild: !towerMenu.towerExists
+ source: "gfx/dialog-melee.png"
+ onClicked: towerMenu.finish()
+ }
+ BuildButton {
+ row: towerMenu.targetRow; col: towerMenu.targetCol
+ anchors.verticalCenter: parent.verticalCenter
+ towerType: 2; index: 1
+ canBuild: !towerMenu.towerExists
+ source: "gfx/dialog-shooter.png"
+ onClicked: towerMenu.finish()
+ }
+ BuildButton {
+ row: towerMenu.targetRow; col: towerMenu.targetCol
+ anchors.verticalCenter: parent.verticalCenter
+ towerType: 3; index: 2
+ canBuild: !towerMenu.towerExists
+ source: "gfx/dialog-bomb.png"
+ onClicked: towerMenu.finish()
+ }
+ BuildButton {
+ row: towerMenu.targetRow; col: towerMenu.targetCol
+ anchors.verticalCenter: parent.verticalCenter
+ towerType: 4; index: 3
+ canBuild: !towerMenu.towerExists
+ source: "gfx/dialog-factory.png"
+ onClicked: towerMenu.finish()
+ }
+ }
+ }
+
+
+ Keys.onPressed: { // Cheat Codes while Testing
+ if (event.key == Qt.Key_Up && (event.modifiers & Qt.ShiftModifier))
+ grid.coins += 10;
+ if (event.key == Qt.Key_Left && (event.modifiers & Qt.ShiftModifier))
+ grid.lives += 1;
+ if (event.key == Qt.Key_Down && (event.modifiers & Qt.ShiftModifier))
+ Logic.gameState.waveProgress += 1000;
+ if (event.key == Qt.Key_Right && (event.modifiers & Qt.ShiftModifier))
+ Logic.endGame();
+ }
+
+ Image {
+ id: helpButton
+ z: 1010
+ source: "gfx/button-help.png"
+ function goAway() {
+ helpMA.enabled = false;
+ helpButton.opacity = 0;
+ }
+ function comeBack() {
+ helpMA.enabled = true;
+ helpButton.opacity = 1;
+ }
+ Behavior on opacity { NumberAnimation {} }
+ MouseArea {
+ id: helpMA
+ anchors.fill: parent
+ onClicked: {helpImage.visible = true; helpButton.visible = false;}
+ }
+
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 0
+ }
+
+ Image {
+ id: helpImage
+ z: 1010
+ source: "gfx/help.png"
+ anchors.fill: parent
+ visible: false
+ MouseArea {
+ anchors.fill: parent
+ onClicked: helpImage.visible = false;
+ }
+ }
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/GameOverScreen.qml b/basicsuite/Qt5 Launch Presentation/maroon/content/GameOverScreen.qml
new file mode 100644
index 0000000..dfb439f
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/GameOverScreen.qml
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+import "logic.js" as Logic
+
+Item {
+ id: gameOverScreen
+ width: 320
+ height: 400
+ property GameCanvas gameCanvas
+
+ Image {
+ id: img
+ source: "gfx/text-gameover.png"
+ anchors.centerIn: parent
+ }
+
+ ParticleSystem {
+ anchors.fill: parent
+ ImageParticle {
+ id: cloud
+ source: "gfx/cloud.png"
+ alphaVariation: 0.25
+ opacity: 0.25
+ }
+
+ Wander {
+ xVariance: 100;
+ pace: 1;
+ }
+
+ Emitter {
+ id: cloudLeft
+ width: 160
+ height: 160
+ anchors.right: parent.left
+ emitRate: 0.5
+ lifeSpan: 12000
+ velocity: PointDirection{ x: 64; xVariation: 2; yVariation: 2 }
+ size: 160
+ }
+
+ Emitter {
+ id: cloudRight
+ width: 160
+ height: 160
+ anchors.left: parent.right
+ emitRate: 0.5
+ lifeSpan: 12000
+ velocity: PointDirection{ x: -64; xVariation: 2; yVariation: 2 }
+ size: 160
+ }
+ }
+
+
+ Text {
+ visible: gameCanvas != undefined
+ text: "You saved " + gameCanvas.score + " fishes!"
+ anchors.top: img.bottom
+ anchors.topMargin: 12
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.bold: true
+ color: "#000000"
+ opacity: 0.5
+ }
+
+ Image {
+ source: "gfx/button-play.png"
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 0
+ MouseArea {
+ anchors.fill: parent
+ onClicked: gameCanvas.gameOver = false//This will actually trigger the state change in main.qml
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/InfoBar.qml b/basicsuite/Qt5 Launch Presentation/maroon/content/InfoBar.qml
new file mode 100644
index 0000000..36303fc
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/InfoBar.qml
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+Item {
+ height: childrenRect.height
+
+ // Display the number of lives
+ Row {
+ anchors.left: parent.left
+ anchors.leftMargin: 10
+ spacing: 5
+ Repeater {
+ id: rep
+ model: Math.min(10, canvas.lives)
+ delegate: Image { source: "gfx/lifes.png" }
+ }
+ }
+
+ // Display the number of fishes saved
+ Row {
+ anchors.right: points.left
+ anchors.rightMargin: 20
+ spacing: 5
+ Image { source: "gfx/scores.png" }
+ Text {
+ text: canvas.score
+ font.bold: true
+ }
+ }
+
+ // Display the number of coins
+ Row {
+ id: points
+ anchors.right: parent.right
+ anchors.rightMargin: 10
+ spacing: 5
+ Image { source: "gfx/points.png" }
+ Text {
+ id: pointsLabel
+ text: canvas.coins
+ font.bold: true
+ }
+ }
+}
+
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/NewGameScreen.qml b/basicsuite/Qt5 Launch Presentation/maroon/content/NewGameScreen.qml
new file mode 100644
index 0000000..495e3aa
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/NewGameScreen.qml
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+// This is the first screen.
+// It shows the logo and emit a startButtonClicked signal
+// when the user press the "PLAY" button.
+
+Item {
+ id: newGameScreen
+ width: 320
+ height: 480
+
+ signal startButtonClicked
+
+ Image {
+ source: "gfx/logo.png"
+ anchors.top: parent.top
+ anchors.topMargin: 60
+ }
+
+ Image {
+ source: "gfx/logo-fish.png"
+ anchors.top: parent.top
+
+ SequentialAnimation on x {
+ loops: Animation.Infinite
+ NumberAnimation { from: x + 148; to: x + 25; duration: 2000; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: x + 25; to: x + 148; duration: 1600; easing.type: Easing.InOutQuad }
+ }
+ SequentialAnimation on anchors.topMargin {
+ loops: Animation.Infinite
+ NumberAnimation { from: 100; to: 60; duration: 1600; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: 60; to: 100; duration: 2000; easing.type: Easing.InOutQuad }
+ }
+ }
+
+ Image {
+ source: "gfx/logo-bubble.png"
+ anchors.top: parent.top
+
+ SequentialAnimation on x {
+ loops: Animation.Infinite
+ NumberAnimation { from: x + 140; to: x + 40; duration: 2000; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: x + 40; to: x + 140; duration: 1600; easing.type: Easing.InOutQuad }
+ }
+ SequentialAnimation on anchors.topMargin {
+ loops: Animation.Infinite
+ NumberAnimation { from: 100; to: 60; duration: 1600; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: 60; to: 100; duration: 2000; easing.type: Easing.InOutQuad }
+ }
+ SequentialAnimation on width {
+ loops: Animation.Infinite
+ NumberAnimation { from: 140; to: 160; duration: 1000; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: 160; to: 140; duration: 800; easing.type: Easing.InOutQuad }
+ }
+ SequentialAnimation on height {
+ loops: Animation.Infinite
+ NumberAnimation { from: 150; to: 140; duration: 800; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: 140; to: 150; duration: 1000; easing.type: Easing.InOutQuad }
+ }
+ }
+
+ Image {
+ source: "gfx/button-play.png"
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 60
+ MouseArea {
+ anchors.fill: parent
+ onClicked: newGameScreen.startButtonClicked()
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/SoundEffect.qml b/basicsuite/Qt5 Launch Presentation/maroon/content/SoundEffect.qml
new file mode 100644
index 0000000..d286a39
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/SoundEffect.qml
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+//Proxies a SoundEffect if QtMultimedia is installed
+Item {
+ id: container
+ property QtObject effect: Qt.createQmlObject("import QtMultimedia 5.0; SoundEffect{ source: '" + container.source + "' }", container);
+ property url source: ""
+ onSourceChanged: if (effect != null) effect.source = source;
+ function play() {
+ if (effect != null)
+ effect.play();
+ }
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/audio/bomb-action.wav b/basicsuite/Qt5 Launch Presentation/maroon/content/audio/bomb-action.wav
new file mode 100644
index 0000000..b334dc1
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/audio/bomb-action.wav
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/audio/catch-action.wav b/basicsuite/Qt5 Launch Presentation/maroon/content/audio/catch-action.wav
new file mode 100644
index 0000000..3e22124
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/audio/catch-action.wav
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/audio/catch.wav b/basicsuite/Qt5 Launch Presentation/maroon/content/audio/catch.wav
new file mode 100644
index 0000000..d3eade8
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/audio/catch.wav
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/audio/currency.wav b/basicsuite/Qt5 Launch Presentation/maroon/content/audio/currency.wav
new file mode 100644
index 0000000..0d9ef2c
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/audio/currency.wav
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/audio/factory-action.wav b/basicsuite/Qt5 Launch Presentation/maroon/content/audio/factory-action.wav
new file mode 100644
index 0000000..a2ace6c
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/audio/factory-action.wav
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/audio/melee-action.wav b/basicsuite/Qt5 Launch Presentation/maroon/content/audio/melee-action.wav
new file mode 100644
index 0000000..d325af4
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/audio/melee-action.wav
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/audio/projectile-action.wav b/basicsuite/Qt5 Launch Presentation/maroon/content/audio/projectile-action.wav
new file mode 100644
index 0000000..4e2284f
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/audio/projectile-action.wav
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/audio/shooter-action.wav b/basicsuite/Qt5 Launch Presentation/maroon/content/audio/shooter-action.wav
new file mode 100644
index 0000000..3e12b94
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/audio/shooter-action.wav
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/background.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/background.png
new file mode 100644
index 0000000..d548b93
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/background.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/bomb-action.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/bomb-action.png
new file mode 100644
index 0000000..42da5d7
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/bomb-action.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/bomb-idle.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/bomb-idle.png
new file mode 100644
index 0000000..3bd62e2
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/bomb-idle.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/bomb.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/bomb.png
new file mode 100644
index 0000000..380da7d
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/bomb.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/button-help.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/button-help.png
new file mode 100644
index 0000000..aecebc1
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/button-help.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/button-play.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/button-play.png
new file mode 100644
index 0000000..6cdad6c
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/button-play.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/catch-action.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/catch-action.png
new file mode 100644
index 0000000..78ca9fe
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/catch-action.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/catch.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/catch.png
new file mode 100644
index 0000000..b7620fe
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/catch.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/cloud.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/cloud.png
new file mode 100644
index 0000000..d7c35f8
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/cloud.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/currency.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/currency.png
new file mode 100644
index 0000000..1571341
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/currency.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-bomb.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-bomb.png
new file mode 100644
index 0000000..708d916
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-bomb.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-factory.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-factory.png
new file mode 100644
index 0000000..d2e2a48
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-factory.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-melee.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-melee.png
new file mode 100644
index 0000000..069d18d
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-melee.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-pointer.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-pointer.png
new file mode 100644
index 0000000..9b51a09
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-pointer.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-shooter.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-shooter.png
new file mode 100644
index 0000000..af980ca
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog-shooter.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog.png
new file mode 100644
index 0000000..d528ba7
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/dialog.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/factory-action.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/factory-action.png
new file mode 100644
index 0000000..8981678
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/factory-action.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/factory-idle.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/factory-idle.png
new file mode 100644
index 0000000..a145582
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/factory-idle.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/factory.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/factory.png
new file mode 100644
index 0000000..bfb9f3f
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/factory.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/grid.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/grid.png
new file mode 100644
index 0000000..b595552
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/grid.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/help.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/help.png
new file mode 100644
index 0000000..4654e4c
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/help.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/lifes.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/lifes.png
new file mode 100644
index 0000000..135310b
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/lifes.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/logo-bubble.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/logo-bubble.png
new file mode 100644
index 0000000..136151c
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/logo-bubble.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/logo-fish.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/logo-fish.png
new file mode 100644
index 0000000..c41833a
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/logo-fish.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/logo.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/logo.png
new file mode 100644
index 0000000..787ac99
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/logo.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/melee-action.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/melee-action.png
new file mode 100644
index 0000000..c53873b
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/melee-action.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/melee-idle.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/melee-idle.png
new file mode 100644
index 0000000..621d9df
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/melee-idle.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/melee.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/melee.png
new file mode 100644
index 0000000..ab24015
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/melee.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/mob-idle.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/mob-idle.png
new file mode 100644
index 0000000..dedacc7
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/mob-idle.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/mob.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/mob.png
new file mode 100644
index 0000000..7569c35
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/mob.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/points.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/points.png
new file mode 100644
index 0000000..1d2386d
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/points.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/projectile-action.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/projectile-action.png
new file mode 100644
index 0000000..aa2e650
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/projectile-action.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/projectile.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/projectile.png
new file mode 100644
index 0000000..c25a0c3
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/projectile.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/scores.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/scores.png
new file mode 100644
index 0000000..af757fe
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/scores.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/shooter-action.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/shooter-action.png
new file mode 100644
index 0000000..08e7e30
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/shooter-action.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/shooter-idle.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/shooter-idle.png
new file mode 100644
index 0000000..663098d
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/shooter-idle.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/shooter.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/shooter.png
new file mode 100644
index 0000000..d44401e
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/shooter.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/sunlight.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/sunlight.png
new file mode 100644
index 0000000..d1c7042
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/sunlight.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-1.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-1.png
new file mode 100644
index 0000000..3ea399c
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-1.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-2.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-2.png
new file mode 100644
index 0000000..934a481
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-2.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-3.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-3.png
new file mode 100644
index 0000000..47523f5
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-3.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-blank.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-blank.png
new file mode 100644
index 0000000..4a687b2
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-blank.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-gameover.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-gameover.png
new file mode 100644
index 0000000..4f53ef0
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-gameover.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-go.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-go.png
new file mode 100644
index 0000000..bfc26f7
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/text-go.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/wave.png b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/wave.png
new file mode 100644
index 0000000..f97426c
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/gfx/wave.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/logic.js b/basicsuite/Qt5 Launch Presentation/maroon/content/logic.js
new file mode 100644
index 0000000..dd76b7e
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/logic.js
@@ -0,0 +1,264 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+.pragma library // Shared game state
+.import QtQuick 2.0 as QQ
+
+// Game Stuff
+var gameState // Local reference
+function getGameState() { return gameState; }
+
+var towerData = [ // Name and cost, stats are in the delegate per instance
+ { "name": "Melee", "cost": 20 },
+ { "name": "Ranged", "cost": 50 },
+ { "name": "Bomb", "cost": 75 },
+ { "name": "Factory", "cost": 25 }
+]
+
+var waveBaseData = [300, 290, 280, 270, 220, 180, 160, 80, 80, 80, 30, 30, 30, 30];
+var waveData = [];
+
+var towerComponents = new Array(towerData.length);
+var mobComponent = Qt.createComponent("mobs/MobBase.qml");
+
+function endGame()
+{
+ gameState.gameRunning = false;
+ gameState.gameOver = true;
+ for (var i = 0; i < gameState.cols; i++) {
+ for (var j = 0; j < gameState.rows; j++) {
+ if (gameState.towers[towerIdx(i, j)]) {
+ gameState.towers[towerIdx(i, j)].destroy();
+ gameState.towers[towerIdx(i, j)] = null;
+ }
+ }
+ for (var j in gameState.mobs[i])
+ gameState.mobs[i][j].destroy();
+ gameState.mobs[i].splice(0,gameState.mobs[i].length); //Leaves queue reusable
+ }
+}
+
+function startGame(gameCanvas)
+{
+ waveData = new Array();
+ for (var i in waveBaseData)
+ waveData[i] = waveBaseData[i];
+ gameState.freshState();
+ for (var i = 0; i < gameCanvas.cols; i++) {
+ for (var j = 0; j < gameCanvas.rows; j++)
+ gameState.towers[towerIdx(i, j)] = null;
+ gameState.mobs[i] = new Array();
+ }
+ gameState.towers[towerIdx(0, 0)] = newTower(3, 0, 0);//Start with a starfish in the corner
+ gameState.gameRunning = true;
+ gameState.gameOver = false;
+}
+
+function newGameState(gameCanvas)
+{
+ for (var i = 0; i < towerComponents.length; i++) {
+ towerComponents[i] = Qt.createComponent("towers/" + towerData[i].name + ".qml");
+ if (towerComponents[i].status == QQ.Component.Error) {
+ gameCanvas.errored = true;
+ gameCanvas.errorString += "Loading Tower " + towerData[i].name + "\n" + (towerComponents[i].errorString());
+ console.log(towerComponents[i].errorString());
+ }
+ }
+ gameState = gameCanvas;
+ gameState.freshState();
+ gameState.towers = new Array(gameCanvas.rows * gameCanvas.cols);
+ gameState.mobs = new Array(gameCanvas.cols);
+ return gameState;
+}
+
+function row(y)
+{
+ return Math.floor(y / gameState.squareSize);
+}
+
+function col(x)
+{
+ return Math.floor(x / gameState.squareSize);
+}
+
+function towerIdx(x, y)
+{
+ return y + (x * gameState.rows);
+}
+
+function newMob(col)
+{
+ var ret = mobComponent.createObject(gameState.canvas,
+ { "col" : col,
+ "speed" : (Math.min(2.0, 0.10 * (gameState.waveNumber + 1))),
+ "y" : gameState.canvas.height });
+ gameState.mobs[col].push(ret);
+ return ret;
+}
+
+function newTower(type, row, col)
+{
+ var ret = towerComponents[type].createObject(gameState.canvas);
+ ret.row = row;
+ ret.col = col;
+ ret.fireCounter = ret.rof;
+ ret.spawn();
+ return ret;
+}
+
+function buildTower(type, x, y)
+{
+ if (gameState.towers[towerIdx(x,y)] != null) {
+ if (type <= 0) {
+ gameState.towers[towerIdx(x,y)].sell();
+ gameState.towers[towerIdx(x,y)] = null;
+ }
+ } else {
+ if (gameState.coins < towerData[type - 1].cost)
+ return;
+ gameState.towers[towerIdx(x, y)] = newTower(type - 1, y, x);
+ gameState.coins -= towerData[type - 1].cost;
+ }
+}
+
+function killMob(col, mob)
+{
+ if (!mob)
+ return;
+ var idx = gameState.mobs[col].indexOf(mob);
+ if (idx == -1 || !mob.hp)
+ return;
+ mob.hp = 0;
+ mob.die();
+ gameState.mobs[col].splice(idx,1);
+}
+
+function killTower(row, col)
+{
+ var tower = gameState.towers[towerIdx(col, row)];
+ if (!tower)
+ return;
+ tower.hp = 0;
+ tower.die();
+ gameState.towers[towerIdx(col, row)] = null;
+}
+
+function tick()
+{
+ if (!gameState.gameRunning)
+ return;
+
+ // Spawn
+ gameState.waveProgress += 1;
+ var i = gameState.waveProgress;
+ var j = 0;
+ while (i > 0 && j < waveData.length)
+ i -= waveData[j++];
+ if ( i == 0 ) // Spawn a mob
+ newMob(Math.floor(Math.random() * gameState.cols));
+ if ( j == waveData.length ) { // Next Wave
+ gameState.waveNumber += 1;
+ gameState.waveProgress = 0;
+ var waveModifier = 10; // Constant governing how much faster the next wave is to spawn (not fish speed)
+ for (var k in waveData ) // Slightly faster
+ if (waveData[k] > waveModifier)
+ waveData[k] -= waveModifier;
+ }
+
+ // Towers Attack
+ for (var j in gameState.towers) {
+ var tower = gameState.towers[j];
+ if (tower == null)
+ continue;
+ if (tower.fireCounter > 0) {
+ tower.fireCounter -= 1;
+ continue;
+ }
+ var column = tower.col;
+ for (var k in gameState.mobs[column]) {
+ var conflict = gameState.mobs[column][k];
+ if (conflict.y <= gameState.canvas.height && conflict.y + conflict.height > tower.y
+ && conflict.y - ((tower.row + 1) * gameState.squareSize) < gameState.squareSize * tower.range) { // In Range
+ tower.fire();
+ tower.fireCounter = tower.rof;
+ conflict.hit(tower.damage);
+ }
+ }
+
+ // Income
+ if (tower.income) {
+ gameState.coins += tower.income;
+ tower.fire();
+ tower.fireCounter = tower.rof;
+ }
+ }
+
+ // Mobs move
+ for (var i = 0; i < gameState.cols; i++) {
+ for (var j = 0; j < gameState.mobs[i].length; j++) {
+ var mob = gameState.mobs[i][j];
+ var newPos = gameState.mobs[i][j].y - gameState.mobs[i][j].speed;
+ if (newPos < 0) {
+ gameState.lives -= 1;
+ killMob(i, mob);
+ if (gameState.lives <= 0)
+ endGame();
+ continue;
+ }
+ var conflict = gameState.towers[towerIdx(i, row(newPos))];
+ if (conflict != null) {
+ if (mob.y < conflict.y + gameState.squareSize)
+ gameState.mobs[i][j].y += gameState.mobs[i][j].speed * 10; // Moved inside tower, now hurry back out
+ if (mob.fireCounter > 0) {
+ mob.fireCounter--;
+ } else {
+ gameState.mobs[i][j].fire();
+ conflict.hp -= mob.damage;
+ if (conflict.hp <= 0)
+ killTower(conflict.row, conflict.col);
+ mob.fireCounter = mob.rof;
+ }
+ } else {
+ gameState.mobs[i][j].y = newPos;
+ }
+ }
+ }
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/mobs/MobBase.qml b/basicsuite/Qt5 Launch Presentation/maroon/content/mobs/MobBase.qml
new file mode 100644
index 0000000..d4ece66
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/mobs/MobBase.qml
@@ -0,0 +1,262 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import "../logic.js" as Logic
+import ".."
+
+Item {
+ id: container
+ property string name: "Fish"
+ property int col: 0
+ property real hp: 3
+ property real damage: 1
+ property real speed: 0.25
+ property int rof: 30 //In ticks
+ property int fireCounter: 0
+ property bool dying: false
+ width: parent ? parent.squareSize : 0
+ height: parent ? parent.squareSize : 0
+ x: col * width
+ z: 1001
+ function fire() { }
+
+ function die() {
+ if (dying)
+ return;
+ dying = true;
+ bubble.jumpTo("burst");
+ if (fishSprite.currentSprite == "front")
+ fishSprite.jumpTo(Math.random() > 0.5 ? "left" : "right" );
+ fishSwim.start();
+ Logic.gameState.score += 1;
+ killedSound.play();
+ bubble.scale = 0.9
+ destroy(350);
+ }
+
+ function inked() {
+ if (hp > 0)
+ ink.jumpTo("dirty");
+ }
+
+ function hit(dmg) {
+ hp -= dmg;
+
+ if (hp <= 0)
+ Logic.killMob(col, container);
+ }
+
+ Component.onCompleted: spawnSound.play()
+
+ SoundEffect {
+ id: spawnSound
+ source: "../audio/catch.wav"
+ }
+ SoundEffect {
+ id: killedSound
+ source: "../audio/catch-action.wav"
+ }
+
+ SpriteSequence {
+ id: fishSprite
+ width: 64
+ height: 64
+ interpolate: false
+ goalSprite: ""
+
+ Sprite {
+ name: "left"
+ source: "../gfx/mob-idle.png"
+ frameWidth: 64
+ frameHeight: 64
+ frameCount: 1
+ frameDuration: 800
+ frameDurationVariation: 400
+ to: { "front" : 1 }
+ }
+
+ Sprite {
+ name: "front"
+ source: "../gfx/mob-idle.png"
+ frameCount: 1
+ frameX: 64
+ frameWidth: 64
+ frameHeight: 64
+ frameDuration: 800
+ frameDurationVariation: 400
+ to: { "left" : 1, "right" : 1 }
+ }
+
+ Sprite {
+ name: "right"
+ source: "../gfx/mob-idle.png"
+ frameCount: 1
+ frameX: 128
+ frameWidth: 64
+ frameHeight: 64
+ frameDuration: 800
+ frameDurationVariation: 400
+ to: { "front" : 1 }
+ }
+
+
+ Sprite { //WORKAROUND: This prevents the triggering of a rendering error which is currently under investigation.
+ name: "dummy"
+ source: "../gfx/melee-idle.png"
+ frameCount: 8
+ frameWidth: 64
+ frameHeight: 64
+ frameX: 0
+ frameDuration: 200
+ }
+
+ NumberAnimation on x {
+ id: fishSwim
+ running: false
+ property bool goingLeft: fishSprite.currentSprite == "right"
+ to: goingLeft ? -360 : 360
+ duration: 300
+ }
+ }
+
+ SpriteSequence {
+ id: bubble
+ width: 64
+ height: 64
+ scale: 0.4 + (0.2 * hp)
+ interpolate: false
+ goalSprite: ""
+
+ Behavior on scale {
+ NumberAnimation { duration: 150; easing.type: Easing.OutBack }
+ }
+
+ Sprite {
+ name: "big"
+ source: "../gfx/catch.png"
+ frameCount: 1
+ to: { "burst" : 0 }
+ }
+
+ Sprite {
+ name: "burst"
+ source: "../gfx/catch-action.png"
+ frameCount: 3
+ frameX: 64
+ frameDuration: 200
+ }
+
+ Sprite { //WORKAROUND: This prevents the triggering of a rendering error which is currently under investigation.
+ name: "dummy"
+ source: "../gfx/melee-idle.png"
+ frameCount: 8
+ frameWidth: 64
+ frameHeight: 64
+ frameX: 0
+ frameDuration: 200
+ }
+ SequentialAnimation on width {
+ loops: Animation.Infinite
+ NumberAnimation { from: width * 1; to: width * 1.1; duration: 800; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: width * 1.1; to: width * 1; duration: 1000; easing.type: Easing.InOutQuad }
+ }
+ SequentialAnimation on height {
+ loops: Animation.Infinite
+ NumberAnimation { from: height * 1; to: height * 1.15; duration: 1200; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: height * 1.15; to: height * 1; duration: 1000; easing.type: Easing.InOutQuad }
+ }
+ }
+
+ SpriteSequence {
+ id: ink
+ width: 64
+ height: 64
+ scale: bubble.scale
+ goalSprite: ""
+
+ Sprite {
+ name: "clean"
+ source: "../gfx/projectile-action.png"
+ frameCount: 1
+ frameX: 0
+ frameWidth: 64
+ frameHeight: 64
+ }
+ Sprite {
+ name: "dirty"
+ source: "../gfx/projectile-action.png"
+ frameCount: 3
+ frameX: 64
+ frameWidth: 64
+ frameHeight: 64
+ frameDuration: 150
+ to: {"clean":1}
+ }
+
+ Sprite { //WORKAROUND: This prevents the triggering of a rendering error which is currently under investigation.
+ name: "dummy"
+ source: "../gfx/melee-idle.png"
+ frameCount: 8
+ frameWidth: 64
+ frameHeight: 64
+ frameX: 0
+ frameDuration: 200
+ }
+ SequentialAnimation on width {
+ loops: Animation.Infinite
+ NumberAnimation { from: width * 1; to: width * 1.1; duration: 800; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: width * 1.1; to: width * 1; duration: 1000; easing.type: Easing.InOutQuad }
+ }
+ SequentialAnimation on height {
+ loops: Animation.Infinite
+ NumberAnimation { from: height * 1; to: height * 1.15; duration: 1200; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: height * 1.15; to: height * 1; duration: 1000; easing.type: Easing.InOutQuad }
+ }
+
+ }
+
+ SequentialAnimation on x {
+ loops: Animation.Infinite
+ NumberAnimation { from: x; to: x - 5; duration: 900; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: x - 5; to: x; duration: 900; easing.type: Easing.InOutQuad }
+ }
+}
+
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/towers/Bomb.qml b/basicsuite/Qt5 Launch Presentation/maroon/content/towers/Bomb.qml
new file mode 100644
index 0000000..00437f4
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/towers/Bomb.qml
@@ -0,0 +1,133 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import "../logic.js" as Logic
+import ".."
+
+TowerBase {
+ id: container
+ hp: 10
+ range: 0.4
+ rof: 10
+ property real detonationRange: 2.5
+
+ function fire() {
+ sound.play()
+ sprite.jumpTo("shoot")
+ animDelay.start()
+ }
+
+ function finishFire() {
+ var sCol = Math.max(0, col - 1)
+ var eCol = Math.min(Logic.gameState.cols - 1, col + 1)
+ var killList = new Array()
+ for (var i = sCol; i <= eCol; i++) {
+ for (var j = 0; j < Logic.gameState.mobs[i].length; j++)
+ if (Math.abs(Logic.gameState.mobs[i][j].y - container.y) < Logic.gameState.squareSize * detonationRange)
+ killList.push(Logic.gameState.mobs[i][j])
+ while (killList.length > 0)
+ Logic.killMob(i, killList.pop())
+ }
+ Logic.killTower(row, col);
+ }
+
+ Timer {
+ id: animDelay
+ running: false
+ interval: shootState.frameCount * shootState.frameDuration
+ onTriggered: finishFire()
+ }
+
+ function die()
+ {
+ destroy() // No blink, because we usually meant to die
+ }
+
+ SoundEffect {
+ id: sound
+ source: "../audio/bomb-action.wav"
+ }
+
+ SpriteSequence {
+ id: sprite
+ width: 64
+ height: 64
+ interpolate: false
+ goalSprite: ""
+
+ Sprite {
+ name: "idle"
+ source: "../gfx/bomb-idle.png"
+ frameCount: 4
+ frameDuration: 800
+ }
+
+ Sprite {
+ id: shootState
+ name: "shoot"
+ source: "../gfx/bomb-action.png"
+ frameCount: 6
+ frameDuration: 155
+ to: { "dying" : 1 } // So that if it takes a frame to clean up, it is on the last frame of the explosion
+ }
+
+ Sprite {
+ name: "dying"
+ source: "../gfx/bomb-action.png"
+ frameCount: 1
+ frameX: 64 * 5
+ frameWidth: 64
+ frameHeight: 64
+ frameDuration: 155
+ }
+
+ SequentialAnimation on x {
+ loops: Animation.Infinite
+ NumberAnimation { from: x; to: x + 4; duration: 900; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: x + 4; to: x; duration: 900; easing.type: Easing.InOutQuad }
+ }
+ SequentialAnimation on y {
+ loops: Animation.Infinite
+ NumberAnimation { from: y; to: y - 4; duration: 900; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: y - 4; to: y; duration: 900; easing.type: Easing.InOutQuad }
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/towers/Factory.qml b/basicsuite/Qt5 Launch Presentation/maroon/content/towers/Factory.qml
new file mode 100644
index 0000000..b34a184
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/towers/Factory.qml
@@ -0,0 +1,114 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import "../logic.js" as Logic
+import ".."
+
+TowerBase {
+ id: container
+ rof: 160
+ income: 5
+ SpriteSequence {
+ id: sprite
+ width: 64
+ height: 64
+ interpolate: false
+ goalSprite: ""
+
+ Sprite {
+ name: "idle"
+ source: "../gfx/factory-idle.png"
+ frameCount: 4
+ frameDuration: 200
+ }
+
+ Sprite {
+ name: "action"
+ source: "../gfx/factory-action.png"
+ frameCount: 4
+ frameDuration: 90
+ to: { "idle" : 1 }
+ }
+
+ SequentialAnimation on x {
+ loops: Animation.Infinite
+ NumberAnimation { from: x; to: x + 4; duration: 900; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: x + 4; to: x; duration: 900; easing.type: Easing.InOutQuad }
+ }
+ SequentialAnimation on y {
+ loops: Animation.Infinite
+ NumberAnimation { from: y; to: y - 4; duration: 900; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: y - 4; to: y; duration: 900; easing.type: Easing.InOutQuad }
+ }
+ }
+
+ SoundEffect {
+ id: actionSound
+ source: "../audio/factory-action.wav"
+ }
+
+ function fire() {
+ actionSound.play()
+ sprite.jumpTo("action")
+ coinLaunch.start()
+ }
+
+ function spawn() {
+ coin.target = Logic.gameState.mapToItem(container, 240, -32)
+ }
+
+ Image {
+ id: coin
+ property var target: { "x" : 0, "y" : 0 }
+ source: "../gfx/currency.png"
+ visible: false
+ }
+
+ SequentialAnimation {
+ id: coinLaunch
+ PropertyAction { target: coin; property: "visible"; value: true }
+ ParallelAnimation {
+ NumberAnimation { target: coin; property: "x"; from: 16; to: coin.target.x }
+ NumberAnimation { target: coin; property: "y"; from: 16; to: coin.target.y }
+ }
+ PropertyAction { target: coin; property: "visible"; value: false }
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/towers/Melee.qml b/basicsuite/Qt5 Launch Presentation/maroon/content/towers/Melee.qml
new file mode 100644
index 0000000..1b49a45
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/towers/Melee.qml
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import ".."
+
+TowerBase {
+ hp: 4
+ range: 0.1
+ damage: 1
+ rof: 40
+ income: 0
+
+ SpriteSequence {
+ id: sprite
+ width: 64
+ height: 64
+ interpolate: false
+ goalSprite: ""
+
+ Sprite {
+ name: "idle"
+ source: "../gfx/melee-idle.png"
+ frameCount: 8
+ frameDuration: 250
+ }
+
+ Sprite {
+ name: "shoot"
+ source: "../gfx/melee-action.png"
+ frameCount: 2
+ frameDuration: 200
+ to: { "idle" : 1 }
+ }
+ }
+
+ function fire() {
+ shootSound.play()
+ sprite.jumpTo("shoot")
+ }
+
+ SoundEffect {
+ id: shootSound
+ source: "../audio/melee-action.wav"
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/towers/Ranged.qml b/basicsuite/Qt5 Launch Presentation/maroon/content/towers/Ranged.qml
new file mode 100644
index 0000000..33f3354
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/towers/Ranged.qml
@@ -0,0 +1,128 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import "../logic.js" as Logic
+import ".."
+
+TowerBase {
+ id: container
+ hp: 2
+ range: 6
+ damage: 0 // By projectile
+ rof: 40
+ income: 0
+ property var targetMob
+ property real realDamage: 1
+ function fire() {
+ proj.x = 32 - proj.width / 2
+ proj.y = 0
+ targetMob = Logic.gameState.mobs[col][0]
+ projAnim.to = targetMob.y - container.y -10
+ projAnim.start()
+ shootSound.play()
+ sprite.jumpTo("shoot")
+ }
+
+ Image {
+ id: proj
+ y: 1000
+ SequentialAnimation on y {
+ id: projAnim
+ running: false
+ property real to: 1000
+ SmoothedAnimation {
+ to: projAnim.to
+ velocity: 400
+ }
+ ScriptAction {
+ script: {
+ if (targetMob && targetMob.hit) {
+ targetMob.hit(realDamage)
+ targetMob.inked()
+ projSound.play()
+ }
+ }
+ }
+ PropertyAction {
+ value: 1000;
+ }
+ }
+ source: "../gfx/projectile.png"
+ }
+
+ SoundEffect {
+ id: shootSound
+ source: "../audio/shooter-action.wav"
+ }
+ SoundEffect {
+ id: projSound
+ source: "../audio/projectile-action.wav"
+ }
+
+ SpriteSequence {
+ id: sprite
+ width: 64
+ height: 64
+ interpolate: false
+ goalSprite: ""
+
+ Sprite {
+ name: "idle"
+ source: "../gfx/shooter-idle.png"
+ frameCount: 4
+ frameDuration: 250
+ }
+
+ Sprite {
+ name: "shoot"
+ source: "../gfx/shooter-action.png"
+ frameCount: 5
+ frameDuration: 90
+ to: { "idle" : 1 }
+ }
+
+ SequentialAnimation on x {
+ loops: Animation.Infinite
+ NumberAnimation { from: x; to: x - 4; duration: 900; easing.type: Easing.InOutQuad }
+ NumberAnimation { from: x - 4; to: x; duration: 900; easing.type: Easing.InOutQuad }
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/maroon/content/towers/TowerBase.qml b/basicsuite/Qt5 Launch Presentation/maroon/content/towers/TowerBase.qml
new file mode 100644
index 0000000..5c71cb0
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/maroon/content/towers/TowerBase.qml
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+Item {
+ property real hp: 1
+ property real range: 0
+ property real damage: 0
+ property int rof: 100
+ property int fireCounter: 0
+ property int income: 0
+ property int row: 0
+ property int col: 0
+
+ width: parent ? parent.squareSize : 0
+ height: parent ? parent.squareSize : 0
+ //This is how it is placed on the gameboard, do not modify/animate the X/Y/Z of a TowerBase please
+ x: col * width
+ y: row * height
+ z: 1000
+
+ function fire() { }
+ function spawn() { } //After all game properties are set
+ function die() { stdDeath.start(); destroy(1000); }
+ function sell() { destroy(); }
+
+ SequentialAnimation on opacity {
+ id: stdDeath
+ running: false
+ loops: 2
+ NumberAnimation { from: 1; to: 0; }
+ NumberAnimation { from: 0; to: 1; }
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/particles/customemitter.qml b/basicsuite/Qt5 Launch Presentation/particles/customemitter.qml
new file mode 100644
index 0000000..270935d
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/particles/customemitter.qml
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+ParticleSystem {
+ id: sys
+ width: 320
+ height: 480
+ running: true
+
+ property real petalLength: 180
+ property real petalRotation: 0
+ NumberAnimation on petalRotation {
+ from: 0;
+ to: 360;
+ loops: -1;
+ running: true
+ duration: 24000
+ }
+
+ function convert(a) {return a*(Math.PI/180);}
+ Emitter {
+ lifeSpan: 4000
+ emitRate: 120
+ size: 12
+ anchors.centerIn: parent
+ //! [0]
+ onEmitParticles: {
+ for (var i=0; i<particles.length; i++) {
+ var particle = particles[i];
+ particle.startSize = Math.max(02,Math.min(492,Math.tan(particle.t/2)*24));
+ var theta = Math.floor(Math.random() * 6.0);
+ particle.red = theta == 0 || theta == 1 || theta == 2 ? 0.2 : 1;
+ particle.green = theta == 2 || theta == 3 || theta == 4 ? 0.2 : 1;
+ particle.blue = theta == 4 || theta == 5 || theta == 0 ? 0.2 : 1;
+ theta /= 6.0;
+ theta *= 2.0*Math.PI;
+ theta += sys.convert(sys.petalRotation);//Convert from degrees to radians
+ particle.initialVX = petalLength * Math.cos(theta);
+ particle.initialVY = petalLength * Math.sin(theta);
+ particle.initialAX = particle.initialVX * -0.5;
+ particle.initialAY = particle.initialVY * -0.5;
+ }
+ }
+ //! [0]
+ }
+
+ ImageParticle {
+ source: "particle4.png"
+ alpha: 0.0
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/particles/emitmask.qml b/basicsuite/Qt5 Launch Presentation/particles/emitmask.qml
new file mode 100644
index 0000000..1c3bade
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/particles/emitmask.qml
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+Item {
+
+ width: 320
+ height: 480
+
+ ParticleSystem {
+ width: 300
+ height: 300
+ anchors.centerIn: parent
+
+ ImageParticle {
+ source: "particle.png"
+ z: 2
+ anchors.fill: parent
+ color: "#4040ff"
+ alpha: 0
+ colorVariation: 0.1
+ }
+
+ Emitter {
+ anchors.fill: parent
+ emitRate: 6000
+ lifeSpan: 720
+ size: 10
+ //! [0]
+ shape: MaskShape {
+ source: "starfish_mask.png"
+ }
+ //! [0]
+ }
+
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/particles/particle.png b/basicsuite/Qt5 Launch Presentation/particles/particle.png
new file mode 100644
index 0000000..5c83896
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/particles/particle.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/particles/particle4.png b/basicsuite/Qt5 Launch Presentation/particles/particle4.png
new file mode 100644
index 0000000..bc95b70
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/particles/particle4.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/particles/star.png b/basicsuite/Qt5 Launch Presentation/particles/star.png
new file mode 100644
index 0000000..0d592cf
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/particles/star.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/particles/starfish_mask.png b/basicsuite/Qt5 Launch Presentation/particles/starfish_mask.png
new file mode 100644
index 0000000..2ef74f9
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/particles/starfish_mask.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/particles/velocityfrommotion.qml b/basicsuite/Qt5 Launch Presentation/particles/velocityfrommotion.qml
new file mode 100644
index 0000000..2aa3617
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/particles/velocityfrommotion.qml
@@ -0,0 +1,305 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+Item {
+
+ id: root
+
+ height: 480
+ width: 320
+
+ MouseArea {
+ id: mouseArea
+ anchors.fill: root
+ }
+
+ ParticleSystem { id: sys1 }
+ ImageParticle {
+ system: sys1
+ source: "particle.png"
+ color: "cyan"
+ alpha: 0
+ SequentialAnimation on color {
+ loops: Animation.Infinite
+ ColorAnimation {
+ from: "cyan"
+ to: "magenta"
+ duration: 1000
+ }
+ ColorAnimation {
+ from: "magenta"
+ to: "blue"
+ duration: 2000
+ }
+ ColorAnimation {
+ from: "blue"
+ to: "violet"
+ duration: 2000
+ }
+ ColorAnimation {
+ from: "violet"
+ to: "cyan"
+ duration: 2000
+ }
+ }
+ colorVariation: 0.3
+ }
+ //! [0]
+ Emitter {
+ id: trailsNormal
+ system: sys1
+
+ emitRate: 500
+ lifeSpan: 2000
+
+ y: mouseArea.pressed ? mouseArea.mouseY : circle.cy
+ x: mouseArea.pressed ? mouseArea.mouseX : circle.cx
+
+ velocity: PointDirection {xVariation: 4; yVariation: 4;}
+ acceleration: PointDirection {xVariation: 10; yVariation: 10;}
+ velocityFromMovement: 8
+
+ size: 8
+ sizeVariation: 4
+ }
+ //! [0]
+ ParticleSystem { id: sys2 }
+ ImageParticle {
+ color: "cyan"
+ system: sys2
+ alpha: 0
+ SequentialAnimation on color {
+ loops: Animation.Infinite
+ ColorAnimation {
+ from: "magenta"
+ to: "cyan"
+ duration: 1000
+ }
+ ColorAnimation {
+ from: "cyan"
+ to: "magenta"
+ duration: 2000
+ }
+ }
+ colorVariation: 0.5
+ source: "star.png"
+ }
+ Emitter {
+ id: trailsStars
+ system: sys2
+
+ emitRate: 100
+ lifeSpan: 2200
+
+
+ y: mouseArea.pressed ? mouseArea.mouseY : circle.cy
+ x: mouseArea.pressed ? mouseArea.mouseX : circle.cx
+
+ velocity: PointDirection {xVariation: 4; yVariation: 4;}
+ acceleration: PointDirection {xVariation: 10; yVariation: 10;}
+ velocityFromMovement: 8
+
+ size: 22
+ sizeVariation: 4
+ }
+ ParticleSystem { id: sys3; }
+ ImageParticle {
+ source: "particle.png"
+ system: sys3
+ color: "orange"
+ alpha: 0
+ SequentialAnimation on color {
+ loops: Animation.Infinite
+ ColorAnimation {
+ from: "red"
+ to: "green"
+ duration: 2000
+ }
+ ColorAnimation {
+ from: "green"
+ to: "red"
+ duration: 2000
+ }
+ }
+
+ colorVariation: 0.2
+
+ }
+ Emitter {
+ id: trailsNormal2
+ system: sys3
+
+ emitRate: 300
+ lifeSpan: 2000
+
+ y: mouseArea.pressed ? mouseArea.mouseY : circle2.cy
+ x: mouseArea.pressed ? mouseArea.mouseX : circle2.cx
+
+ velocityFromMovement: 16
+
+ velocity: PointDirection {xVariation: 4; yVariation: 4;}
+ acceleration: PointDirection {xVariation: 10; yVariation: 10;}
+
+ size: 12
+ sizeVariation: 4
+ }
+ ParticleSystem { id: sys4; }
+ ImageParticle {
+ system: sys4
+ source: "star.png"
+ color: "green"
+ alpha: 0
+ SequentialAnimation on color {
+ loops: Animation.Infinite
+ ColorAnimation {
+ from: "green"
+ to: "red"
+ duration: 2000
+ }
+ ColorAnimation {
+ from: "red"
+ to: "green"
+ duration: 2000
+ }
+ }
+
+ colorVariation: 0.5
+ }
+ Emitter {
+ id: trailsStars2
+ system: sys4
+
+ emitRate: 50
+ lifeSpan: 2200
+
+
+ y: mouseArea.pressed ? mouseArea.mouseY : circle2.cy
+ x: mouseArea.pressed ? mouseArea.mouseX : circle2.cx
+
+ velocityFromMovement: 16
+ velocity: PointDirection {xVariation: 2; yVariation: 2;}
+ acceleration: PointDirection {xVariation: 10; yVariation: 10;}
+
+ size: 22
+ sizeVariation: 4
+ }
+
+
+
+ Item {
+ id: circle
+ //anchors.fill: parent
+ property real radius: 0
+ property real dx: root.width / 2
+ property real dy: root.height / 2
+ property real cx: radius * Math.sin(percent*6.283185307179) + dx
+ property real cy: radius * Math.cos(percent*6.283185307179) + dy
+ property real percent: 0
+
+ SequentialAnimation on percent {
+ loops: Animation.Infinite
+ running: true
+ NumberAnimation {
+ duration: 1000
+ from: 1
+ to: 0
+ loops: 8
+ }
+ NumberAnimation {
+ duration: 1000
+ from: 0
+ to: 1
+ loops: 8
+ }
+
+ }
+
+ SequentialAnimation on radius {
+ loops: Animation.Infinite
+ running: true
+ NumberAnimation {
+ duration: 4000
+ from: 0
+ to: 100
+ }
+ NumberAnimation {
+ duration: 4000
+ from: 100
+ to: 0
+ }
+ }
+ }
+
+ Item {
+ id: circle3
+ property real radius: 100
+ property real dx: root.width / 2
+ property real dy: root.height / 2
+ property real cx: radius * Math.sin(percent*6.283185307179) + dx
+ property real cy: radius * Math.cos(percent*6.283185307179) + dy
+ property real percent: 0
+
+ SequentialAnimation on percent {
+ loops: Animation.Infinite
+ running: true
+ NumberAnimation { from: 0.0; to: 1 ; duration: 10000; }
+ }
+ }
+
+ Item {
+ id: circle2
+ property real radius: 30
+ property real dx: circle3.cx
+ property real dy: circle3.cy
+ property real cx: radius * Math.sin(percent*6.283185307179) + dx
+ property real cy: radius * Math.cos(percent*6.283185307179) + dy
+ property real percent: 0
+
+ SequentialAnimation on percent {
+ loops: Animation.Infinite
+ running: true
+ NumberAnimation { from: 0.0; to: 1 ; duration: 1000; }
+ }
+ }
+
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/.DS_Store b/basicsuite/Qt5 Launch Presentation/samegame/.DS_Store
new file mode 100644
index 0000000..9805454
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/.DS_Store
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/Samegame.qml b/basicsuite/Qt5 Launch Presentation/samegame/Samegame.qml
new file mode 100644
index 0000000..2b0b82a
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/Samegame.qml
@@ -0,0 +1,371 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+import "content/samegame.js" as Logic
+import "settings.js" as Settings
+import "content"
+
+Rectangle {
+ id: root
+ width: 320; height: 480
+ property int acc: 0
+
+
+ function loadPuzzle() {
+ if (gameCanvas.mode != "")
+ Logic.cleanUp();
+ Logic.startNewGame(gameCanvas,"puzzle","levels/level"+acc+".qml")
+ }
+ function nextPuzzle() {
+ acc = (acc + 1) % 10;
+ loadPuzzle();
+ }
+ Timer {
+ id: gameOverTimer
+ interval: 1500
+ running : gameCanvas.gameOver && gameCanvas.mode == "puzzle" //mode will be reset by cleanUp();
+ repeat : false
+ onTriggered: {
+ Logic.cleanUp();
+ nextPuzzle();
+ }
+ }
+
+ Image {
+ source: "content/gfx/background.png"
+ anchors.fill: parent
+ }
+
+ GameArea {
+ id: gameCanvas
+ z: 1
+ y: Settings.headerHeight
+
+ width: parent.width
+ height: parent.height - Settings.headerHeight - Settings.footerHeight
+
+ backgroundVisible: root.state == "in-game"
+ onModeChanged: if (gameCanvas.mode != "puzzle") puzzleWon = false; //UI has stricter constraints on this variable than the game does
+ Age {
+ groups: ["redspots", "greenspots", "bluespots", "yellowspots"]
+ enabled: root.state == ""
+ system: gameCanvas.ps
+ }
+
+ onPuzzleLost: acc--;//So that nextPuzzle() reloads the current one
+
+ }
+
+ Item {
+ id: menu
+ z: 2
+ width: parent.width;
+ anchors.top: parent.top
+ anchors.bottom: bottomBar.top
+
+ LogoAnimation {
+ x: 64
+ y: Settings.headerHeight
+ particleSystem: gameCanvas.ps
+ running: root.state == ""
+ }
+ Row {
+ x: 112
+ y: 20
+ Image { source: "content/gfx/logo-a.png" }
+ Image { source: "content/gfx/logo-m.png" }
+ Image { source: "content/gfx/logo-e.png" }
+ }
+
+ Column {
+ y: 100 + 40
+ spacing: Settings.menuButtonSpacing
+
+ Button {
+ width: root.width
+ rotatedButton: true
+ imgSrc: "content/gfx/but-game-1.png"
+ onClicked: {
+ if (root.state == "in-game")
+ return //Prevent double clicking
+ root.state = "in-game"
+ gameCanvas.blockFile = "Block.qml"
+ gameCanvas.background = "gfx/background.png"
+ arcadeTimer.start();
+ }
+ //Emitted particles don't fade out, because ImageParticle is on the GameArea
+ system: gameCanvas.ps
+ group: "green"
+ Timer {
+ id: arcadeTimer
+ interval: Settings.menuDelay
+ running : false
+ repeat : false
+ onTriggered: Logic.startNewGame(gameCanvas)
+ }
+ }
+
+ Button {
+ width: root.width
+ rotatedButton: true
+ imgSrc: "content/gfx/but-game-2.png"
+ onClicked: {
+ if (root.state == "in-game")
+ return
+ root.state = "in-game"
+ gameCanvas.blockFile = "Block.qml"
+ gameCanvas.background = "gfx/background.png"
+ twopTimer.start();
+ }
+ system: gameCanvas.ps
+ group: "green"
+ Timer {
+ id: twopTimer
+ interval: Settings.menuDelay
+ running : false
+ repeat : false
+ onTriggered: Logic.startNewGame(gameCanvas, "multiplayer")
+ }
+ }
+
+ Button {
+ width: root.width
+ rotatedButton: true
+ imgSrc: "content/gfx/but-game-3.png"
+ onClicked: {
+ if (root.state == "in-game")
+ return
+ root.state = "in-game"
+ gameCanvas.blockFile = "SimpleBlock.qml"
+ gameCanvas.background = "gfx/background.png"
+ endlessTimer.start();
+ }
+ system: gameCanvas.ps
+ group: "blue"
+ Timer {
+ id: endlessTimer
+ interval: Settings.menuDelay
+ running : false
+ repeat : false
+ onTriggered: Logic.startNewGame(gameCanvas, "endless")
+ }
+ }
+
+ Button {
+ width: root.width
+ rotatedButton: true
+ imgSrc: "content/gfx/but-game-4.png"
+ group: "yellow"
+ onClicked: {
+ if (root.state == "in-game")
+ return
+ root.state = "in-game"
+ gameCanvas.blockFile = "PuzzleBlock.qml"
+ gameCanvas.background = "gfx/background.png"
+ puzzleTimer.start();
+ }
+ Timer {
+ id: puzzleTimer
+ interval: Settings.menuDelay
+ running : false
+ repeat : false
+ onTriggered: loadPuzzle();
+ }
+ system: gameCanvas.ps
+ }
+ }
+ }
+
+ Image {
+ id: scoreBar
+ source: "content/gfx/bar.png"
+ width: parent.width
+ z: 6
+ y: -Settings.headerHeight
+ height: Settings.headerHeight
+ Behavior on opacity { NumberAnimation {} }
+ SamegameText {
+ id: arcadeScore
+ anchors { right: parent.right; topMargin: 3; rightMargin: 11; top: parent.top}
+ text: '<font color="#f7d303">P1:</font> ' + gameCanvas.score
+ font.pixelSize: Settings.fontPixelSize
+ textFormat: Text.StyledText
+ color: "white"
+ opacity: gameCanvas.mode == "arcade" ? 1 : 0
+ Behavior on opacity { NumberAnimation {} }
+ }
+ SamegameText {
+ id: arcadeHighScore
+ anchors { left: parent.left; topMargin: 3; leftMargin: 11; top: parent.top}
+ text: '<font color="#f7d303">Highscore:</font> ' + gameCanvas.highScore
+ opacity: gameCanvas.mode == "arcade" ? 1 : 0
+ }
+ SamegameText {
+ id: p1Score
+ anchors { right: parent.right; topMargin: 3; rightMargin: 11; top: parent.top}
+ text: '<font color="#f7d303">P1:</font> ' + gameCanvas.score
+ opacity: gameCanvas.mode == "multiplayer" ? 1 : 0
+ }
+ SamegameText {
+ id: p2Score
+ anchors { left: parent.left; topMargin: 3; leftMargin: 11; top: parent.top}
+ text: '<font color="#f7d303">P2:</font> ' + gameCanvas.score2
+ opacity: gameCanvas.mode == "multiplayer" ? 1 : 0
+ rotation: 180
+ }
+ SamegameText {
+ id: puzzleMoves
+ anchors { left: parent.left; topMargin: 3; leftMargin: 11; top: parent.top}
+ text: '<font color="#f7d303">Moves:</font> ' + gameCanvas.moves
+ opacity: gameCanvas.mode == "puzzle" ? 1 : 0
+ }
+ SamegameText {
+ Image {
+ source: "content/gfx/icon-time.png"
+ x: -20
+ }
+ id: puzzleTime
+ anchors { topMargin: 3; top: parent.top; horizontalCenter: parent.horizontalCenter; horizontalCenterOffset: 20}
+ text: "00:00"
+ opacity: gameCanvas.mode == "puzzle" ? 1 : 0
+ Timer {
+ interval: 1000
+ repeat: true
+ running: gameCanvas.mode == "puzzle" && !gameCanvas.gameOver
+ onTriggered: {
+ var elapsed = Math.floor((new Date() - Logic.gameDuration)/ 1000.0);
+ var mins = Math.floor(elapsed/60.0);
+ var secs = (elapsed % 60);
+ puzzleTime.text = (mins < 10 ? "0" : "") + mins + ":" + (secs < 10 ? "0" : "") + secs;
+ }
+ }
+ }
+ SamegameText {
+ id: puzzleScore
+ anchors { right: parent.right; topMargin: 3; rightMargin: 11; top: parent.top}
+ text: '<font color="#f7d303">Score:</font> ' + gameCanvas.score
+ opacity: gameCanvas.mode == "puzzle" ? 1 : 0
+ }
+ }
+
+ Image {
+ id: bottomBar
+ width: parent.width
+ height: Settings.footerHeight
+ source: "content/gfx/bar.png"
+ y: parent.height - Settings.footerHeight;
+ z: 2
+ Button {
+ id: quitButton
+ height: Settings.toolButtonHeight
+ imgSrc: "content/gfx/but-quit.png"
+ onClicked: {Qt.quit(); }
+ anchors { left: parent.left; verticalCenter: parent.verticalCenter; leftMargin: 11 }
+ }
+ Button {
+ id: menuButton
+ height: Settings.toolButtonHeight
+ imgSrc: "content/gfx/but-menu.png"
+ visible: (root.state == "in-game");
+ onClicked: {root.state = ""; Logic.cleanUp(); gameCanvas.mode = ""}
+ anchors { left: quitButton.right; verticalCenter: parent.verticalCenter; leftMargin: 0 }
+ }
+ Button {
+ id: againButton
+ height: Settings.toolButtonHeight
+ imgSrc: "content/gfx/but-game-new.png"
+ visible: (root.state == "in-game");
+ opacity: gameCanvas.gameOver && (gameCanvas.mode == "arcade" || gameCanvas.mode == "multiplayer")
+ Behavior on opacity{ NumberAnimation {} }
+ onClicked: {if (gameCanvas.gameOver) { Logic.startNewGame(gameCanvas, gameCanvas.mode);}}
+ anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 11 }
+ }
+ Button {
+ id: nextButton
+ height: Settings.toolButtonHeight
+ imgSrc: "content/gfx/but-puzzle-next.png"
+ visible: (root.state == "in-game") && gameCanvas.mode == "puzzle" && gameCanvas.puzzleWon
+ opacity: gameCanvas.puzzleWon ? 1 : 0
+ Behavior on opacity{ NumberAnimation {} }
+ onClicked: {if (gameCanvas.puzzleWon) nextPuzzle();}
+ anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 11 }
+ }
+ }
+
+ Connections {
+ target: root
+ onStateChanged: stateChangeAnim.running = true
+ }
+ SequentialAnimation {
+ id: stateChangeAnim
+ ParallelAnimation {
+ NumberAnimation { target: bottomBar; property: "y"; to: root.height; duration: Settings.menuDelay/2; easing.type: Easing.OutQuad }
+ NumberAnimation { target: scoreBar; property: "y"; to: -Settings.headerHeight; duration: Settings.menuDelay/2; easing.type: Easing.OutQuad }
+ }
+ ParallelAnimation {
+ NumberAnimation { target: bottomBar; property: "y"; to: root.height - Settings.footerHeight; duration: Settings.menuDelay/2; easing.type: Easing.OutBounce}
+ NumberAnimation { target: scoreBar; property: "y"; to: root.state == "" ? -Settings.headerHeight : 0; duration: Settings.menuDelay/2; easing.type: Easing.OutBounce}
+ }
+ }
+
+ states: [
+ State {
+ name: "in-game"
+ PropertyChanges {
+ target: menu
+ opacity: 0
+ visible: false
+ }
+ }
+ ]
+
+ transitions: [
+ Transition {
+ NumberAnimation {properties: "x,y,opacity"}
+ }
+ ]
+
+ //"Debug mode"
+ focus: true
+ Keys.onAsteriskPressed: Logic.nuke();
+ Keys.onSpacePressed: gameCanvas.puzzleWon = true;
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/Block.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/Block.qml
new file mode 100644
index 0000000..85f2e27
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/Block.qml
@@ -0,0 +1,114 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+Item {
+ id: block
+ property bool dying: false
+ property bool spawned: false
+ property int type: 0
+ property ParticleSystem particleSystem
+
+ Behavior on x {
+ enabled: spawned;
+ SpringAnimation{ spring: 2; damping: 0.2 }
+ }
+ Behavior on y {
+ SpringAnimation{ spring: 2; damping: 0.2 }
+ }
+
+ Image {
+ id: img
+ source: {
+ if (type == 0){
+ "gfx/red.png";
+ } else if (type == 1) {
+ "gfx/blue.png";
+ } else if (type == 2) {
+ "gfx/green.png";
+ } else {
+ "gfx/yellow.png";
+ }
+ }
+ opacity: 0
+ Behavior on opacity { NumberAnimation { duration: 200 } }
+ anchors.fill: parent
+ }
+
+ //Foreground particles
+ BlockEmitter {
+ id: particles
+ system: particleSystem
+ group: {
+ if (type == 0){
+ "red";
+ } else if (type == 1) {
+ "blue";
+ } else if (type == 2) {
+ "green";
+ } else {
+ "yellow";
+ }
+ }
+ anchors.fill: parent
+ }
+
+ //Paint particles on the background
+ PaintEmitter {
+ id: particles2
+ system: particleSystem
+ }
+
+ states: [
+ State {
+ name: "AliveState"; when: spawned == true && dying == false
+ PropertyChanges { target: img; opacity: 1 }
+ },
+
+ State {
+ name: "DeathState"; when: dying == true
+ StateChangeScript { script: {particleSystem.paused = false; particles.pulse(100); particles2.pulse(100);} }
+ PropertyChanges { target: img; opacity: 0 }
+ StateChangeScript { script: block.destroy(1000); }
+ }
+ ]
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/BlockEmitter.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/BlockEmitter.qml
new file mode 100644
index 0000000..7dad509
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/BlockEmitter.qml
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+import "../settings.js" as Settings
+
+Emitter {
+ property Item block: parent
+ velocity: TargetDirection{targetX: block.width/2; targetY: block.height/2; magnitude: -40; magnitudeVariation: 40}
+ acceleration: TargetDirection{targetX: block.width/2; targetY: block.height/2; magnitude: -100;}
+ shape: EllipseShape{fill:true}
+ enabled: false;
+ lifeSpan: 700; lifeSpanVariation: 100
+ emitRate: 1000
+ maximumEmitted: 100 //only fires 0.1s bursts (still 2x old number)
+ size: Settings.blockSize * 0.85
+ endSize: Settings.blockSize * 0.85 /2
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/Button.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/Button.qml
new file mode 100644
index 0000000..aab21ec
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/Button.qml
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+Item {
+ property alias imgSrc: image.source
+ property alias system: emitter.system
+ property alias group: emitter.group
+ signal clicked
+ property bool rotatedButton: false
+
+ width: image.width
+ height: image.sourceSize.height
+ Image {
+ id: image
+ height: parent.height
+ width: height/sourceSize.height * sourceSize.width
+
+ anchors.horizontalCenter: parent.horizontalCenter
+ rotation: rotatedButton ? ((Math.random() * 3 + 2) * (Math.random() <= 0.5 ? -1 : 1)) : 0
+ MenuEmitter {
+ id: emitter
+ anchors.fill: parent
+ //shape: MaskShape {source: image.source}
+ }
+ }
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {parent.clicked(); emitter.burst(400);}
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/GameArea.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/GameArea.qml
new file mode 100644
index 0000000..f3ca98d
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/GameArea.qml
@@ -0,0 +1,226 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+import "samegame.js" as Logic
+
+Item {
+ id: gameCanvas
+ property bool gameOver: true
+ property int score: 0
+ property int highScore: 0
+ property int moves: 0
+ property string mode: ""
+ property ParticleSystem ps: particleSystem
+ //For easy theming
+ property alias backgroundVisible: bg.visible
+ property string background: "gfx/background.png"
+ property string blockFile: "Block.qml"
+ onBlockFileChanged: Logic.changeBlock(blockFile);
+ property alias particlePack: auxLoader.source
+ //For multiplayer
+ property int score2: 0
+ property int curTurn: 1
+ property bool autoTurnChange: false
+ signal swapPlayers
+ property bool swapping: false
+ //onSwapPlayers: if (autoTurnChange) Logic.turnChange();//Now implemented below
+ //For puzzle
+ property url level
+ property bool puzzleWon: false
+ signal puzzleLost //Since root is tracking the puzzle progress
+ function showPuzzleEnd (won) {
+ if (won) {
+ smokeParticle.color = Qt.rgba(0,1,0,0);
+ puzzleWin.play();
+ } else {
+ smokeParticle.color = Qt.rgba(1,0,0,0);
+ puzzleFail.play();
+ puzzleLost();
+ }
+ }
+ function showPuzzleGoal (str) {
+ puzzleTextBubble.opacity = 1;
+ puzzleTextLabel.text = str;
+ }
+ Image {
+ id: bg
+ z: -1
+ anchors.fill: parent
+ source: background;
+ fillMode: Image.PreserveAspectCrop
+ }
+
+ MouseArea {
+ anchors.fill: parent; onClicked: {
+ if (puzzleTextBubble.opacity == 1) {
+ puzzleTextBubble.opacity = 0;
+ Logic.finishLoadingMap();
+ } else if (!swapping) {
+ Logic.handleClick(mouse.x,mouse.y);
+ }
+ }
+ }
+
+ Image {
+ id: highScoreTextBubble
+ opacity: mode == "arcade" && gameOver && gameCanvas.score == gameCanvas.highScore ? 1 : 0
+ Behavior on opacity { NumberAnimation {} }
+ anchors.centerIn: parent
+ z: 10
+ source: "gfx/bubble-highscore.png"
+ Image {
+ anchors.centerIn: parent
+ source: "gfx/text-highscore-new.png"
+ rotation: -10
+ }
+ }
+
+ Image {
+ id: puzzleTextBubble
+ anchors.centerIn: parent
+ opacity: 0
+ Behavior on opacity { NumberAnimation {} }
+ z: 10
+ source: "gfx/bubble-puzzle.png"
+ Connections {
+ target: gameCanvas
+ onModeChanged: if (mode != "puzzle" && puzzleTextBubble.opacity > 0) puzzleTextBubble.opacity = 0;
+ }
+ Text {
+ id: puzzleTextLabel
+ width: parent.width - 24
+ anchors.centerIn: parent
+ horizontalAlignment: Text.AlignHCenter
+ color: "white"
+ font.pixelSize: 24
+ font.bold: true
+ wrapMode: Text.WordWrap
+ }
+ }
+ onModeChanged: {
+ p1WonImg.opacity = 0;
+ p2WonImg.opacity = 0;
+ }
+ SmokeText { id: puzzleWin; source: "gfx/icon-ok.png"; system: particleSystem }
+ SmokeText { id: puzzleFail; source: "gfx/icon-fail.png"; system: particleSystem }
+
+ onSwapPlayers: {
+ smokeParticle.color = "yellow"
+ Logic.turnChange();
+ if (curTurn == 1) {
+ p1Text.play();
+ } else {
+ p2Text.play();
+ }
+ clickDelay.running = true;
+ }
+ SequentialAnimation {
+ id: clickDelay
+ ScriptAction { script: gameCanvas.swapping = true; }
+ PauseAnimation { duration: 750 }
+ ScriptAction { script: gameCanvas.swapping = false; }
+ }
+
+ SmokeText {
+ id: p1Text; source: "gfx/text-p1-go.png";
+ system: particleSystem; playerNum: 1
+ opacity: p1WonImg.opacity + p2WonImg.opacity > 0 ? 0 : 1
+ }
+
+ SmokeText {
+ id: p2Text; source: "gfx/text-p2-go.png";
+ system: particleSystem; playerNum: 2
+ opacity: p1WonImg.opacity + p2WonImg.opacity > 0 ? 0 : 1
+ }
+
+ onGameOverChanged: {
+ if (gameCanvas.mode == "multiplayer") {
+ if (gameCanvas.score >= gameCanvas.score2) {
+ p1WonImg.opacity = 1;
+ } else {
+ p2WonImg.opacity = 1;
+ }
+ }
+ }
+ Image {
+ id: p1WonImg
+ source: "gfx/text-p1-won.png"
+ anchors.centerIn: parent
+ opacity: 0
+ Behavior on opacity { NumberAnimation {} }
+ z: 10
+ }
+ Image {
+ id: p2WonImg
+ source: "gfx/text-p2-won.png"
+ anchors.centerIn: parent
+ opacity: 0
+ Behavior on opacity { NumberAnimation {} }
+ z: 10
+ }
+
+ ParticleSystem{
+ id: particleSystem;
+ anchors.fill: parent
+ z: 5
+ ImageParticle {
+ id: smokeParticle
+ groups: ["smoke"]
+ source: "gfx/particle-smoke.png"
+ alpha: 0.1
+ alphaVariation: 0.1
+ color: "yellow"
+ }
+ Loader {
+ id: auxLoader
+ anchors.fill: parent
+ source: "PrimaryPack.qml"
+ onItemChanged: {
+ if (item && "particleSystem" in item)
+ item.particleSystem = particleSystem
+ if (item && "gameArea" in item)
+ item.gameArea = gameCanvas
+ }
+ }
+ }
+}
+
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/LogoAnimation.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/LogoAnimation.qml
new file mode 100644
index 0000000..c879893
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/LogoAnimation.qml
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+Item {
+ id: container //Positioned where the 48x48 S/G should be
+ property alias running: mainAnim.running
+ property ParticleSystem particleSystem
+ property int dur: 500
+ signal boomTime
+ Image {
+ id: s1
+ source: "gfx/logo-s.png"
+ y: 0
+ }
+ Image {
+ id: g1
+ source: "gfx/logo-g.png"
+ y: -128
+ }
+ Column {
+ Repeater {
+ model: 2
+ Item {
+ width: 48
+ height: 48
+ BlockEmitter {
+ id: emitter
+ anchors.fill: parent
+ group: "red"
+ system: particleSystem
+ Connections {
+ target: container
+ onBoomTime: emitter.pulse(100);
+ }
+ }
+ }
+ }
+ }
+ SequentialAnimation {
+ id: mainAnim
+ running: true
+ loops: -1
+ PropertyAction { target: g1; property: "y"; value: -128}
+ PropertyAction { target: g1; property: "opacity"; value: 1}
+ PropertyAction { target: s1; property: "y"; value: 0}
+ PropertyAction { target: s1; property: "opacity"; value: 1}
+ NumberAnimation { target: g1; property: "y"; from: -96; to: -48; duration: dur}
+ ParallelAnimation {
+ NumberAnimation { target: g1; property: "y"; from: -48; to: 0; duration: dur}
+ NumberAnimation { target: s1; property: "y"; from: 0; to: 48; duration: dur }
+ }
+ PauseAnimation { duration: dur }
+ ScriptAction { script: container.boomTime(); }
+ ParallelAnimation {
+ NumberAnimation { target: g1; property: "opacity"; to: 0; duration: dur }
+ NumberAnimation { target: s1; property: "opacity"; to: 0; duration: dur }
+ }
+ PropertyAction { target: s1; property: "y"; value: -128}
+ PropertyAction { target: s1; property: "opacity"; value: 1}
+ NumberAnimation { target: s1; property: "y"; from: -96; to: 0; duration: dur * 2}
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/MenuEmitter.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/MenuEmitter.qml
new file mode 100644
index 0000000..16c7660
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/MenuEmitter.qml
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+Emitter {
+ anchors.fill: parent
+ velocity: AngleDirection{angleVariation: 360; magnitude: 140; magnitudeVariation: 40}
+ enabled: false;
+ lifeSpan: 500;
+ emitRate: 1
+ size: 28
+ endSize: 14
+ group: "yellow"
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/PaintEmitter.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/PaintEmitter.qml
new file mode 100644
index 0000000..4a67c4a
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/PaintEmitter.qml
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+import "../settings.js" as Settings
+
+Emitter {
+ property Item block: parent
+ anchors.fill: parent
+ shape: EllipseShape { fill: true }
+ group: {
+ if (block.type == 0){
+ "redspots";
+ } else if (block.type == 1) {
+ "bluespots";
+ } else if (block.type == 2) {
+ "greenspots";
+ } else {
+ "yellowspots";
+ }
+ }
+ size: Settings.blockSize * 2
+ endSize: Settings.blockSize/2
+ lifeSpan: 30000
+ enabled: false
+ emitRate: 60
+ maximumEmitted: 60
+ velocity: PointDirection{ y: 4; yVariation: 4 }
+ /* Possibly better, but dependent on gerrit change,28212
+ property real mainIntensity: 0.8
+ property real subIntensity: 0.1
+ property real colorVariation: 0.005
+ onEmitParticles: {//One group, many colors, for better stacking
+ for (var i=0; i<particles.length; i++) {
+ var particle = particles[i];
+ if (block.type == 0) {
+ particle.red = mainIntensity + (Math.random() * colorVariation * 2 - colorVariation);
+ particle.green = subIntensity + (Math.random() * colorVariation * 2 - colorVariation);
+ particle.blue = subIntensity + (Math.random() * colorVariation * 2 - colorVariation);
+ } else if (block.type == 1) {
+ particle.red = subIntensity + (Math.random() * colorVariation * 2 - colorVariation);
+ particle.green = subIntensity + (Math.random() * colorVariation * 2 - colorVariation);
+ particle.blue = mainIntensity + (Math.random() * colorVariation * 2 - colorVariation);
+ } else if (block.type == 2) {
+ particle.red = subIntensity + (Math.random() * colorVariation * 2 - colorVariation);
+ particle.green = mainIntensity + (Math.random() * colorVariation * 2 - colorVariation);
+ particle.blue = subIntensity + (Math.random() * colorVariation * 2 - colorVariation);
+ } else if (block.type == 3) {
+ particle.red = mainIntensity + (Math.random() * colorVariation * 2 - colorVariation);
+ particle.green = mainIntensity + (Math.random() * colorVariation * 2 - colorVariation);
+ particle.blue = subIntensity + (Math.random() * colorVariation * 2 - colorVariation);
+ } else {
+ particle.red = mainIntensity + (Math.random() * colorVariation * 2 - colorVariation);
+ particle.green = mainIntensity + (Math.random() * colorVariation * 2 - colorVariation);
+ particle.blue = mainIntensity + (Math.random() * colorVariation * 2 - colorVariation);
+ }
+ }
+ }
+ */
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/PrimaryPack.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/PrimaryPack.qml
new file mode 100644
index 0000000..278ed0e
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/PrimaryPack.qml
@@ -0,0 +1,122 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+Item {
+ id: container
+ property ParticleSystem particleSystem
+ property GameArea gameArea
+ onGameAreaChanged: bgstacker.parent = gameArea;//Move to direct child of game canvas
+ Item {
+ id: bgstacker
+ z: 0
+ ImageParticle {
+ groups: ["yellowspots"]
+ color: Qt.darker("yellow");//Actually want desaturated...
+ system: particleSystem
+ source: "gfx/particle-paint.png"
+ colorVariation: 0.2
+ alpha: 0.2
+ entryEffect: ImageParticle.None
+ }
+ ImageParticle {
+ groups: ["redspots"]
+ system: particleSystem
+ color: Qt.darker("red");//Actually want desaturated...
+ source: "gfx/particle-paint.png"
+ colorVariation: 0.2
+ alpha: 0.2
+ entryEffect: ImageParticle.None
+ }
+ ImageParticle {
+ groups: ["greenspots"]
+ system: particleSystem
+ color: Qt.darker("green");//Actually want desaturated...
+ source: "gfx/particle-paint.png"
+ colorVariation: 0.2
+ alpha: 0.2
+ entryEffect: ImageParticle.None
+ }
+ ImageParticle {
+ groups: ["bluespots"]
+ system: particleSystem
+ color: Qt.darker("blue");//Actually want desaturated...
+ source: "gfx/particle-paint.png"
+ colorVariation: 0.2
+ alpha: 0.2
+ entryEffect: ImageParticle.None
+ }
+ }
+ ImageParticle {
+ groups: ["yellow"]
+ system: particleSystem
+ color: Qt.darker("yellow");//Actually want desaturated...
+ source: "gfx/particle-brick.png"
+ colorVariation: 0.4
+ alpha: 0.1
+ }
+ ImageParticle {
+ groups: ["red"]
+ system: particleSystem
+ color: Qt.darker("red");//Actually want desaturated...
+ source: "gfx/particle-brick.png"
+ colorVariation: 0.4
+ alpha: 0.1
+ }
+ ImageParticle {
+ groups: ["green"]
+ system: particleSystem
+ color: Qt.darker("green");//Actually want desaturated...
+ source: "gfx/particle-brick.png"
+ colorVariation: 0.4
+ alpha: 0.1
+ }
+ ImageParticle {
+ groups: ["blue"]
+ system: particleSystem
+ color: Qt.darker("blue");//Actually want desaturated...
+ source: "gfx/particle-brick.png"
+ colorVariation: 0.4
+ alpha: 0.1
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/PuzzleBlock.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/PuzzleBlock.qml
new file mode 100644
index 0000000..8a0e725
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/PuzzleBlock.qml
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+Item {
+ id: block
+ property bool dying: false
+ property bool spawned: false
+ property int type: 0
+ property ParticleSystem particleSystem
+
+ Behavior on x {
+ enabled: spawned;
+ NumberAnimation{ easing.type: Easing.OutBounce }
+ }
+ Behavior on y {
+ NumberAnimation{ easing.type: Easing.InQuad }
+ }
+
+ Image {
+ id: img
+ source: {
+ if (type == 0){
+ "gfx/red-puzzle.png";
+ } else if (type == 1) {
+ "gfx/blue-puzzle.png";
+ } else if (type == 2) {
+ "gfx/green-puzzle.png";
+ } else {
+ "gfx/yellow-puzzle.png";
+ }
+ }
+ opacity: 0
+ Behavior on opacity { NumberAnimation { duration: 200 } }
+ anchors.centerIn: parent
+ anchors.verticalCenterOffset: -4
+ anchors.horizontalCenterOffset: 4
+ }
+
+ //Foreground particles
+ BlockEmitter {
+ id: particles
+ system: particleSystem
+ group: {
+ if (type == 0){
+ "red";
+ } else if (type == 1) {
+ "blue";
+ } else if (type == 2) {
+ "green";
+ } else {
+ "yellow";
+ }
+ }
+ anchors.fill: parent
+ }
+
+ states: [
+ State {
+ name: "AliveState"; when: spawned == true && dying == false
+ PropertyChanges { target: img; opacity: 1 }
+ },
+
+ State {
+ name: "DeathState"; when: dying == true
+ PropertyChanges { target: img; scale: 2 }
+ StateChangeScript { script: particles.pulse(200); }
+ PropertyChanges { target: img; opacity: 0 }
+ StateChangeScript { script: block.destroy(1000); }
+ }
+ ]
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/SamegameText.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/SamegameText.qml
new file mode 100644
index 0000000..28c85f9
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/SamegameText.qml
@@ -0,0 +1,49 @@
+/***************************************************************************
+**
+** Copyright (C) 2012 Research In Motion
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import "../settings.js" as Settings
+
+Text {
+ font.pixelSize: Settings.fontPixelSize;
+ color: "white";
+ textFormat: Text.StyledText;
+ Behavior on opacity { NumberAnimation {} }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/SimpleBlock.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/SimpleBlock.qml
new file mode 100644
index 0000000..22a1fa3
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/SimpleBlock.qml
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+Item {
+ id: block
+ property bool dying: false
+ property bool spawned: false
+ property int type: 0
+ property ParticleSystem particleSystem
+
+ Behavior on x {
+ enabled: spawned;
+ SpringAnimation{ spring: 2; damping: 0.2 }
+ }
+ Behavior on y {
+ SpringAnimation{ spring: 2; damping: 0.2 }
+ }
+
+ Image {
+ id: img
+ source: {
+ if (type == 0){
+ "gfx/red.png";
+ } else if (type == 1) {
+ "gfx/blue.png";
+ } else if (type == 2) {
+ "gfx/green.png";
+ } else {
+ "gfx/yellow.png";
+ }
+ }
+ opacity: 0
+ Behavior on opacity { NumberAnimation { duration: 200 } }
+ anchors.fill: parent
+ }
+
+ //Foreground particles
+ BlockEmitter {
+ id: particles
+ system: particleSystem
+ group: {
+ if (type == 0){
+ "red";
+ } else if (type == 1) {
+ "blue";
+ } else if (type == 2) {
+ "green";
+ } else {
+ "yellow";
+ }
+ }
+ anchors.fill: parent
+ }
+
+ states: [
+ State {
+ name: "AliveState"; when: spawned == true && dying == false
+ PropertyChanges { target: img; opacity: 1 }
+ },
+
+ State {
+ name: "DeathState"; when: dying == true
+ StateChangeScript { script: {particleSystem.paused = false; particles.pulse(100); } }
+ PropertyChanges { target: img; opacity: 0 }
+ StateChangeScript { script: block.destroy(1000); }
+ }
+ ]
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/SmokeText.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/SmokeText.qml
new file mode 100644
index 0000000..73d9ae4
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/SmokeText.qml
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+Item {
+ z: 10
+ property alias source: img.source
+ property alias system: emitter.system
+ property int playerNum: 1
+ function play() {
+ anim.running = true;
+ }
+ anchors.centerIn: parent
+ Image {
+ opacity: 0
+ id: img
+ anchors.centerIn: parent
+ rotation: playerNum == 1 ? -8 : -5
+ Emitter {
+ id: emitter
+ group: "smoke"
+ anchors.fill: parent
+ shape: MaskShape { source: img.source }
+ enabled: false
+ emitRate: 1000
+ lifeSpan: 600
+ size: 64
+ endSize: 32
+ velocity: AngleDirection { angleVariation: 360; magnitudeVariation: 160 }
+ }
+ }
+ SequentialAnimation {
+ id: anim
+ running: false
+ PauseAnimation { duration: 500}
+ ParallelAnimation {
+ NumberAnimation { target: img; property: "opacity"; from: 0.1; to: 1.0 }
+ NumberAnimation { target: img; property: "scale"; from: 0.1; to: 1.0 }
+ }
+ PauseAnimation { duration: 250}
+ ScriptAction { script: emitter.pulse(100); }
+ NumberAnimation { target: img; property: "opacity"; from: 1.0; to: 0.0 }
+ }
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/background-puzzle.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/background-puzzle.png
new file mode 100644
index 0000000..c2eca5f
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/background-puzzle.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/background.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/background.png
new file mode 100644
index 0000000..60f57b6
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/background.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/bar.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/bar.png
new file mode 100644
index 0000000..4953cd6
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/bar.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/blue-puzzle.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/blue-puzzle.png
new file mode 100644
index 0000000..e550d59
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/blue-puzzle.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/blue.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/blue.png
new file mode 100644
index 0000000..b8161c0
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/blue.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/bubble-highscore.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/bubble-highscore.png
new file mode 100644
index 0000000..c4e38df
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/bubble-highscore.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/bubble-puzzle.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/bubble-puzzle.png
new file mode 100644
index 0000000..278556b
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/bubble-puzzle.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-1.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-1.png
new file mode 100644
index 0000000..3343b7f
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-1.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-2.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-2.png
new file mode 100644
index 0000000..afba106
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-2.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-3.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-3.png
new file mode 100644
index 0000000..adea77a
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-3.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-4.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-4.png
new file mode 100644
index 0000000..18c922b
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-4.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-new.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-new.png
new file mode 100644
index 0000000..257e182
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-game-new.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-menu.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-menu.png
new file mode 100644
index 0000000..8440e87
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-menu.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-puzzle-next.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-puzzle-next.png
new file mode 100644
index 0000000..7e3ed41
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-puzzle-next.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-quit.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-quit.png
new file mode 100644
index 0000000..95c77ce
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/but-quit.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/green-puzzle.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/green-puzzle.png
new file mode 100644
index 0000000..581f76f
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/green-puzzle.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/green.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/green.png
new file mode 100644
index 0000000..da4cca5
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/green.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/icon-fail.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/icon-fail.png
new file mode 100644
index 0000000..4072611
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/icon-fail.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/icon-ok.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/icon-ok.png
new file mode 100644
index 0000000..15a8442
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/icon-ok.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/icon-time.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/icon-time.png
new file mode 100644
index 0000000..9490e49
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/icon-time.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-a.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-a.png
new file mode 100644
index 0000000..20c20ba
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-a.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-e.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-e.png
new file mode 100644
index 0000000..dd663f1
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-e.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-g.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-g.png
new file mode 100644
index 0000000..a319bf9
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-g.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-m.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-m.png
new file mode 100644
index 0000000..6a029b3
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-m.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-s.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-s.png
new file mode 100644
index 0000000..963b175
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo-s.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo.png
new file mode 100644
index 0000000..e900edd
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/logo.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/particle-brick.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/particle-brick.png
new file mode 100644
index 0000000..5c83896
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/particle-brick.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/particle-paint.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/particle-paint.png
new file mode 100644
index 0000000..9bd0a2a
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/particle-paint.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/particle-smoke.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/particle-smoke.png
new file mode 100644
index 0000000..b27f954
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/particle-smoke.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/red-puzzle.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/red-puzzle.png
new file mode 100644
index 0000000..9ceb17e
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/red-puzzle.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/red.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/red.png
new file mode 100644
index 0000000..681810f
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/red.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-highscore-new.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-highscore-new.png
new file mode 100644
index 0000000..50f7fcd
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-highscore-new.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-highscore.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-highscore.png
new file mode 100644
index 0000000..7198c27
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-highscore.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-no-winner.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-no-winner.png
new file mode 100644
index 0000000..b4a6685
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-no-winner.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p1-go.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p1-go.png
new file mode 100644
index 0000000..c7bd2a5
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p1-go.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p1-won.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p1-won.png
new file mode 100644
index 0000000..41c2eb7
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p1-won.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p1.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p1.png
new file mode 100644
index 0000000..b59c87b
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p1.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p2-go.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p2-go.png
new file mode 100644
index 0000000..f03cd93
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p2-go.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p2-won.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p2-won.png
new file mode 100644
index 0000000..116b7f2
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p2-won.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p2.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p2.png
new file mode 100644
index 0000000..d4f2bc7
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/text-p2.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/yellow-puzzle.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/yellow-puzzle.png
new file mode 100644
index 0000000..66044c8
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/yellow-puzzle.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/yellow.png b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/yellow.png
new file mode 100644
index 0000000..6bc5d38
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/gfx/yellow.png
Binary files differ
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/levels/TemplateBase.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/TemplateBase.qml
new file mode 100644
index 0000000..f0832d4
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/TemplateBase.qml
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+Rectangle{
+ id: control
+ property int scoreTarget: -1
+ property int timeTarget: -1
+ property int moveTarget: -1
+ property bool mustClear: true
+ property string goalText: "Clear the level..."
+
+ property var startingGrid //If this isn't an array of ints, we will refuse to load the level.
+ /* Ints are 0-4. If not enough ints are there it will be prepadded with 0s to fill the grid
+ (which ruins everything if you have the wrong number of rows).
+ 0 - No block
+ 1 - Red
+ 2 - Blue
+ 3 - Green
+ 4 - Yellow
+ Ideas for future colors, but not supported in this version:
+ 5 - Purple
+ 6 - Cyan
+ 7 - Gray
+ 8 - Black
+ 9 - White
+ */
+
+ width: 320
+ height: 416
+ color: "white" //TODO: Theme support for both setting themes per level, and seeing it in the control!
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level0.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level0.qml
new file mode 100644
index 0000000..5d2fa4f
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level0.qml
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+TemplateBase{
+ moveTarget: 3
+ goalText: "1 of 10<br><br>Clear in three moves..."
+ startingGrid: [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 ,
+ 0 , 0 , 0 , 0 , 0 , 1 , 1 , 2 , 1 , 1 ,
+ 0 , 0 , 0 , 1 , 1 , 3 , 3 , 3 , 3 , 3 ,
+ 0 , 1 , 1 , 3 , 3 , 3 , 1 , 3 , 1 , 1 ,
+ 1 , 2 , 3 , 3 , 1 , 1 , 3 , 3 , 3 , 3 ,
+ 1 , 3 , 3 , 2 , 3 , 3 , 3 , 3 , 1 , 1 ,
+ 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 ]
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level1.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level1.qml
new file mode 100644
index 0000000..4bb15cb
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level1.qml
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+TemplateBase{
+ timeTarget: 10
+ goalText: "2 of 10<br><br>Clear in 10 seconds..."
+ startingGrid: [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 1 , 3 , 3 , 3 , 1 , 1 , 1 , 1 , 2 , 2 ,
+ 1 , 2 , 3 , 3 , 3 , 1 , 1 , 1 , 1 , 2 ,
+ 2 , 2 , 1 , 3 , 3 , 3 , 1 , 1 , 1 , 2 ,
+ 2 , 1 , 1 , 1 , 3 , 3 , 3 , 1 , 2 , 2 ,
+ 1 , 1 , 1 , 1 , 1 , 3 , 3 , 3 , 2 , 1 ]
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level2.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level2.qml
new file mode 100644
index 0000000..a319479
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level2.qml
@@ -0,0 +1,61 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+TemplateBase{
+ scoreTarget: 1200
+ timeTarget: 60
+ goalText: "3 of 10<br><br>Score over 1200 points in one minute..."
+ mustClear: false
+ startingGrid: [ 3 , 1 , 2 , 1 , 1 , 2 , 1 , 1 , 3 , 3 ,
+ 1 , 3 , 3 , 2 , 3 , 3 , 1 , 1 , 3 , 1 ,
+ 3 , 1 , 3 , 3 , 2 , 3 , 3 , 3 , 1 , 2 ,
+ 3 , 2 , 2 , 1 , 3 , 3 , 2 , 1 , 1 , 2 ,
+ 3 , 1 , 2 , 2 , 2 , 2 , 2 , 1 , 3 , 1 ,
+ 2 , 3 , 1 , 2 , 2 , 3 , 3 , 1 , 3 , 2 ,
+ 3 , 2 , 1 , 1 , 3 , 3 , 3 , 2 , 2 , 1 ,
+ 1 , 2 , 2 , 3 , 2 , 3 , 3 , 3 , 1 , 1 ,
+ 1 , 3 , 3 , 3 , 1 , 2 , 2 , 3 , 3 , 1 ,
+ 3 , 3 , 2 , 1 , 2 , 2 , 1 , 1 , 1 , 3 ,
+ 2 , 1 , 3 , 2 , 3 , 2 , 3 , 2 , 2 , 1 ,
+ 1 , 3 , 1 , 2 , 1 , 2 , 3 , 1 , 2 , 2 ,
+ 1 , 2 , 2 , 2 , 1 , 1 , 2 , 3 , 1 , 2 ]
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level3.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level3.qml
new file mode 100644
index 0000000..43e82d7
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level3.qml
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+TemplateBase{
+ scoreTarget: 3000
+ timeTarget: 60
+ goalText: "4 of 10<br>Clear the board with over 3000 points in under a minute..."
+ startingGrid: [ 3 , 3 , 1 , 1 , 1 , 2 , 2 , 4 , 3 , 3 ,
+ 4 , 3 , 1 , 4 , 2 , 2 , 2 , 4 , 3 , 4 ,
+ 4 , 3 , 3 , 4 , 1 , 1 , 3 , 3 , 4 , 4 ,
+ 3 , 3 , 3 , 3 , 3 , 1 , 3 , 2 , 2 , 4 ,
+ 4 , 4 , 3 , 4 , 3 , 1 , 4 , 4 , 4 , 4 ,
+ 4 , 4 , 3 , 4 , 1 , 1 , 4 , 4 , 3 , 3 ,
+ 4 , 2 , 2 , 2 , 2 , 2 , 4 , 4 , 4 , 1 ,
+ 4 , 4 , 2 , 4 , 2 , 2 , 1 , 1 , 1 , 1 ,
+ 4 , 4 , 2 , 4 , 2 , 2 , 1 , 4 , 4 , 1 ,
+ 4 , 1 , 1 , 4 , 3 , 3 , 4 , 2 , 4 , 1 ,
+ 4 , 1 , 1 , 2 , 3 , 3 , 4 , 2 , 2 , 1 ,
+ 1 , 1 , 2 , 2 , 2 , 3 , 3 , 3 , 2 , 1 ,
+ 4 , 1 , 1 , 2 , 2 , 3 , 4 , 3 , 4 , 4 ]
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level4.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level4.qml
new file mode 100644
index 0000000..46ad42f
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level4.qml
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+TemplateBase{
+ goalText: "5 of 10<br><br>Clear the level..."
+ startingGrid: [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
+ 1 , 3 , 2 , 1 , 1 , 1 , 1 , 3 , 2 , 3 ,
+ 1 , 2 , 3 , 1 , 3 , 2 , 2 , 1 , 1 , 2 ,
+ 3 , 2 , 2 , 2 , 1 , 1 , 1 , 1 , 3 , 3 ,
+ 2 , 1 , 1 , 3 , 2 , 1 , 1 , 2 , 1 , 3 ,
+ 1 , 3 , 3 , 1 , 2 , 1 , 2 , 1 , 3 , 3 ,
+ 1 , 3 , 2 , 2 , 2 , 1 , 1 , 3 , 2 , 3 ,
+ 1 , 1 , 3 , 2 , 3 , 3 , 2 , 1 , 1 , 1 ,
+ 1 , 2 , 2 , 3 , 2 , 2 , 1 , 3 , 1 , 3 ]
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level5.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level5.qml
new file mode 100644
index 0000000..3716264
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level5.qml
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+TemplateBase{
+ moveTarget: 4
+ goalText: "6 of 10<br><br>Clear in four or less moves..."
+ startingGrid: [ 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ,
+ 4 , 2 , 2 , 2 , 4 , 3 , 3 , 3 , 4 , 4 ,
+ 4 , 2 , 4 , 4 , 4 , 3 , 2 , 3 , 4 , 4 ,
+ 4 , 2 , 2 , 2 , 4 , 3 , 3 , 3 , 4 , 4 ,
+ 4 , 4 , 4 , 2 , 4 , 3 , 4 , 3 , 4 , 4 ,
+ 4 , 2 , 2 , 2 , 4 , 3 , 4 , 3 , 4 , 4 ,
+ 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ,
+ 4 , 3 , 4 , 3 , 4 , 2 , 2 , 2 , 4 , 3 ,
+ 4 , 3 , 3 , 3 , 4 , 2 , 4 , 4 , 4 , 3 ,
+ 4 , 3 , 3 , 3 , 4 , 2 , 2 , 2 , 4 , 3 ,
+ 4 , 3 , 4 , 3 , 4 , 2 , 4 , 4 , 4 , 4 ,
+ 4 , 3 , 4 , 3 , 4 , 2 , 2 , 2 , 4 , 3 ,
+ 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ]
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level6.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level6.qml
new file mode 100644
index 0000000..4547b75
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level6.qml
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+TemplateBase{
+ moveTarget: 20
+ timeTarget: 40
+ goalText: "7 of 10<br><br>Clear with 20 moves in 40 seconds (or better)."
+ startingGrid: [ 1 , 3 , 1 , 1 , 1 , 1 , 2 , 1 , 2 , 2 ,
+ 2 , 1 , 2 , 3 , 3 , 1 , 3 , 1 , 1 , 3 ,
+ 3 , 1 , 1 , 1 , 2 , 2 , 3 , 2 , 3 , 1 ,
+ 1 , 3 , 1 , 1 , 3 , 1 , 1 , 1 , 2 , 3 ,
+ 2 , 1 , 1 , 1 , 3 , 2 , 3 , 3 , 2 , 3 ,
+ 3 , 3 , 3 , 3 , 2 , 2 , 3 , 1 , 3 , 2 ,
+ 2 , 2 , 3 , 2 , 2 , 3 , 2 , 2 , 2 , 2 ,
+ 1 , 2 , 1 , 2 , 1 , 3 , 2 , 3 , 2 , 3 ,
+ 1 , 1 , 2 , 3 , 3 , 3 , 3 , 1 , 1 , 2 ,
+ 3 , 3 , 2 , 2 , 2 , 2 , 3 , 1 , 3 , 1 ,
+ 1 , 2 , 3 , 3 , 3 , 1 , 3 , 2 , 1 , 2 ,
+ 1 , 2 , 1 , 1 , 2 , 3 , 1 , 2 , 1 , 3 ,
+ 3 , 1 , 2 , 2 , 1 , 3 , 3 , 1 , 3 , 2 ]
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level7.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level7.qml
new file mode 100644
index 0000000..5d71d7c
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level7.qml
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+TemplateBase{
+ goalText: "8 of 10<br><br>Clear the grid."
+ startingGrid: [ 2 , 4 , 3 , 2 , 3 , 2 , 3 , 3 , 4 , 3 ,
+ 2 , 2 , 3 , 3 , 1 , 4 , 3 , 3 , 3 , 2 ,
+ 1 , 4 , 2 , 3 , 4 , 3 , 3 , 1 , 1 , 1 ,
+ 2 , 1 , 2 , 4 , 4 , 2 , 2 , 3 , 2 , 1 ,
+ 3 , 4 , 4 , 1 , 3 , 2 , 4 , 2 , 1 , 1 ,
+ 2 , 2 , 3 , 1 , 2 , 4 , 1 , 2 , 1 , 2 ,
+ 1 , 2 , 3 , 2 , 4 , 4 , 3 , 1 , 1 , 2 ,
+ 4 , 4 , 2 , 1 , 2 , 4 , 2 , 2 , 4 , 3 ,
+ 4 , 2 , 4 , 1 , 3 , 4 , 1 , 4 , 2 , 4 ,
+ 4 , 3 , 4 , 1 , 4 , 3 , 1 , 3 , 1 , 1 ,
+ 3 , 3 , 2 , 3 , 2 , 4 , 1 , 2 , 4 , 4 ,
+ 3 , 4 , 2 , 2 , 4 , 3 , 4 , 1 , 3 , 2 ,
+ 4 , 3 , 3 , 4 , 2 , 4 , 1 , 2 , 3 , 2 ]
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level8.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level8.qml
new file mode 100644
index 0000000..9dbb8c2
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level8.qml
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+TemplateBase{
+ scoreTarget: 1000
+ goalText: "9 of 10<br><br>Score over 1000 points"
+ startingGrid: [ 1 , 4 , 4 , 3 , 2 , 1 , 4 , 2 , 4 , 2 ,
+ 2 , 3 , 4 , 4 , 1 , 1 , 1 , 4 , 4 , 4 ,
+ 1 , 3 , 1 , 2 , 2 , 1 , 2 , 1 , 4 , 2 ,
+ 4 , 3 , 4 , 2 , 1 , 4 , 1 , 2 , 2 , 3 ,
+ 3 , 4 , 2 , 4 , 4 , 3 , 2 , 2 , 2 , 1 ,
+ 4 , 4 , 3 , 2 , 4 , 4 , 2 , 1 , 1 , 1 ,
+ 1 , 2 , 1 , 3 , 4 , 1 , 1 , 3 , 2 , 3 ,
+ 3 , 4 , 2 , 2 , 1 , 3 , 2 , 2 , 4 , 2 ,
+ 2 , 4 , 1 , 2 , 2 , 4 , 3 , 3 , 3 , 1 ,
+ 1 , 2 , 2 , 4 , 1 , 2 , 2 , 3 , 3 , 3 ,
+ 4 , 4 , 1 , 4 , 3 , 1 , 3 , 3 , 3 , 4 ,
+ 1 , 2 , 4 , 1 , 2 , 1 , 1 , 4 , 2 , 1 ,
+ 1 , 2 , 3 , 4 , 2 , 4 , 4 , 2 , 1 , 3 ]
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level9.qml b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level9.qml
new file mode 100644
index 0000000..4e8bf19
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/levels/level9.qml
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+TemplateBase{
+ scoreTarget: 2000
+ timeTarget: 60
+ moveTarget: 20
+ mustClear: false
+ goalText: "10 of 10<br><br>Score 2000 in one minute with less than 20 moves!"
+ startingGrid: [ 3 , 2 , 3 , 1 , 3 , 3 , 4 , 1 , 3 , 3 ,
+ 2 , 3 , 2 , 1 , 1 , 2 , 2 , 2 , 4 , 1 ,
+ 2 , 4 , 4 , 4 , 3 , 1 , 4 , 4 , 4 , 1 ,
+ 3 , 1 , 3 , 4 , 4 , 2 , 2 , 2 , 2 , 3 ,
+ 2 , 1 , 4 , 4 , 3 , 3 , 1 , 1 , 3 , 2 ,
+ 3 , 2 , 1 , 4 , 3 , 4 , 1 , 3 , 4 , 2 ,
+ 3 , 3 , 1 , 4 , 4 , 4 , 2 , 1 , 2 , 3 ,
+ 2 , 3 , 4 , 3 , 4 , 1 , 1 , 3 , 2 , 4 ,
+ 4 , 4 , 1 , 2 , 4 , 3 , 2 , 2 , 2 , 4 ,
+ 1 , 4 , 2 , 2 , 1 , 1 , 2 , 1 , 1 , 4 ,
+ 1 , 4 , 3 , 3 , 3 , 1 , 3 , 4 , 4 , 2 ,
+ 3 , 4 , 1 , 1 , 2 , 2 , 2 , 3 , 2 , 1 ,
+ 3 , 3 , 4 , 3 , 1 , 1 , 1 , 4 , 4 , 3 ]
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/content/samegame.js b/basicsuite/Qt5 Launch Presentation/samegame/content/samegame.js
new file mode 100755
index 0000000..7b226cb
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/content/samegame.js
@@ -0,0 +1,581 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 script file handles the game logic */
+.pragma library
+.import QtQuick.LocalStorage 2.0 as Sql
+.import "../settings.js" as Settings
+
+var maxColumn = 10;
+var maxRow = 13;
+var types = 3;
+var maxIndex = maxColumn*maxRow;
+var board = new Array(maxIndex);
+var blockSrc = "Block.qml";
+var gameDuration;
+var component = Qt.createComponent(blockSrc);
+var gameCanvas;
+var betweenTurns = false;
+
+var puzzleLevel = null;
+var puzzlePath = "";
+
+var gameMode = "arcade"; //Set in new game, then tweaks behaviour of other functions
+var gameOver = false;
+
+function changeBlock(src)
+{
+ blockSrc = src;
+ component = Qt.createComponent(blockSrc);
+}
+
+// Index function used instead of a 2D array
+function index(column, row)
+{
+ return column + row * maxColumn;
+}
+
+function timeStr(msecs)
+{
+ var secs = Math.floor(msecs/1000);
+ var m = Math.floor(secs/60);
+ var ret = "" + m + "m " + (secs%60) + "s";
+ return ret;
+}
+
+function cleanUp()
+{
+ if (gameCanvas == undefined)
+ return;
+ // Delete blocks from previous game
+ for (var i = 0; i < maxIndex; i++) {
+ if (board[i] != null)
+ board[i].destroy();
+ board[i] = null;
+ }
+ if (puzzleLevel != null){
+ puzzleLevel.destroy();
+ puzzleLevel = null;
+ }
+ gameCanvas.mode = ""
+}
+
+function startNewGame(gc, mode, map)
+{
+ gameCanvas = gc;
+ if (mode == undefined)
+ gameMode = "arcade";
+ else
+ gameMode = mode;
+ gameOver = false;
+
+ cleanUp();
+
+ gc.gameOver = false;
+ gc.mode = gameMode;
+ // Calculate board size
+ maxColumn = Math.floor(gameCanvas.width/Settings.blockSize);
+ maxRow = Math.floor(gameCanvas.height/Settings.blockSize);
+ maxIndex = maxRow * maxColumn;
+ if (gameMode == "arcade") //Needs to be after board sizing
+ getHighScore();
+
+
+ // Initialize Board
+ board = new Array(maxIndex);
+ gameCanvas.score = 0;
+ gameCanvas.score2 = 0;
+ gameCanvas.moves = 0;
+ gameCanvas.curTurn = 1;
+ if (gameMode == "puzzle")
+ loadMap(map);
+ else//Note that we load them in reverse order for correct visual stacking
+ for (var column = maxColumn - 1; column >= 0; column--)
+ for (var row = maxRow - 1; row >= 0; row--)
+ createBlock(column, row);
+ if (gameMode == "puzzle")
+ getLevelHistory();//Needs to be after map load
+ gameDuration = new Date();
+}
+
+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
+
+// NOTE: Be careful with vars named x,y, as the calling object's x,y are still in scope
+function handleClick(x,y)
+{
+ if (betweenTurns || gameOver || gameCanvas == undefined)
+ return;
+ var column = Math.floor(x/Settings.blockSize);
+ var row = Math.floor(y/Settings.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;
+ if (gameMode == "multiplayer" && gameCanvas.curTurn == 2)
+ gameCanvas.score2 += (fillFound - 1) * (fillFound - 1);
+ else
+ gameCanvas.score += (fillFound - 1) * (fillFound - 1);
+ if (gameMode == "multiplayer" && gameCanvas.curTurn == 2)
+ shuffleUp();
+ else
+ shuffleDown();
+ gameCanvas.moves += 1;
+ if (gameMode == "endless")
+ refill();
+ else if (gameMode != "multiplayer")
+ victoryCheck();
+ if (gameMode == "multiplayer" && !gc.gameOver){
+ betweenTurns = true;
+ gameCanvas.swapPlayers();//signal, animate and call turnChange() when ready
+ }
+}
+
+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) * Settings.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) * Settings.blockSize;
+ board[index(column - fallDist,row)] = obj;
+ board[index(column, row)] = null;
+ }
+ }
+ }
+ }
+}
+
+
+function shuffleUp()
+{
+ // Fall up
+ for (var column = 0; column < maxColumn; column++) {
+ var fallDist = 0;
+ for (var row = 0; row < maxRow; row++) {
+ if (board[index(column,row)] == null) {
+ fallDist += 1;
+ } else {
+ if (fallDist > 0) {
+ var obj = board[index(column, row)];
+ obj.y = (row - fallDist) * Settings.blockSize;
+ board[index(column, row - fallDist)] = obj;
+ board[index(column, row)] = null;
+ }
+ }
+ }
+ }
+ // Fall to the left (or should it be right, so as to be left for P2?)
+ fallDist = 0;
+ for (column = 0; column < maxColumn; column++) {
+ if (board[index(column, 0)] == 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) * Settings.blockSize;
+ board[index(column - fallDist,row)] = obj;
+ board[index(column, row)] = null;
+ }
+ }
+ }
+ }
+}
+
+function turnChange()//called by ui outside
+{
+ betweenTurns = false;
+ if (gameCanvas.curTurn == 1){
+ shuffleUp();
+ gameCanvas.curTurn = 2;
+ victoryCheck();
+ }else{
+ shuffleDown();
+ gameCanvas.curTurn = 1;
+ victoryCheck();
+ }
+}
+
+function refill()
+{
+ for (var column = 0; column < maxColumn; column++) {
+ for (var row = 0; row < maxRow; row++) {
+ if (board[index(column, row)] == null)
+ createBlock(column, row);
+ }
+ }
+}
+
+function victoryCheck()
+{
+ // Awards bonuses for no blocks left
+ var deservesBonus = true;
+ if (board[index(0,maxRow - 1)] != null || board[index(0,0)] != null)
+ deservesBonus = false;
+ // Checks for game over
+ if (deservesBonus){
+ if (gameCanvas.curTurn = 1)
+ gameCanvas.score += 1000;
+ else
+ gameCanvas.score2 += 1000;
+ }
+ gameOver = deservesBonus;
+ if (gameCanvas.curTurn == 1){
+ if (!(floodMoveCheck(0, maxRow - 1, -1)))
+ gameOver = true;
+ }else{
+ if (!(floodMoveCheck(0, 0, -1, true)))
+ gameOver = true;
+ }
+ if (gameMode == "puzzle"){
+ puzzleVictoryCheck(deservesBonus);//Takes it from here
+ return;
+ }
+ if (gameOver) {
+ var winnerScore = Math.max(gameCanvas.score, gameCanvas.score2);
+ if (gameMode == "multiplayer"){
+ gameCanvas.score = winnerScore;
+ saveHighScore(gameCanvas.score2);
+ }
+ saveHighScore(gameCanvas.score);
+ gameDuration = new Date() - gameDuration;
+ gameCanvas.gameOver = true;
+ }
+}
+
+// Only floods up and right, to see if it can find adjacent same-typed blocks
+function floodMoveCheck(column, row, type, goDownInstead)
+{
+ 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;
+ if (goDownInstead)
+ return floodMoveCheck(column + 1, row, myType, goDownInstead) ||
+ floodMoveCheck(column, row + 1, myType, goDownInstead);
+ else
+ return floodMoveCheck(column + 1, row, myType) ||
+ floodMoveCheck(column, row - 1, myType);
+}
+
+function createBlock(column,row,type)
+{
+ // Note that we don't wait for the component to become ready. This will
+ // only work if the block QML is a local file. Otherwise the component will
+ // not be ready immediately. There is a statusChanged signal on the
+ // component you could use if you want to wait to load remote files.
+ if (component.status == 1){
+ if (type == undefined)
+ type = Math.floor(Math.random() * types);
+ if (type < 0 || type > 4) {
+ console.log("Invalid type requested");//TODO: Is this triggered by custom levels much?
+ return;
+ }
+ var dynamicObject = component.createObject(gameCanvas,
+ {"type": type,
+ "x": column*Settings.blockSize,
+ "y": -1*Settings.blockSize,
+ "width": Settings.blockSize,
+ "height": Settings.blockSize,
+ "particleSystem": gameCanvas.ps});
+ if (dynamicObject == null){
+ console.log("error creating block");
+ console.log(component.errorString());
+ return false;
+ }
+ dynamicObject.y = row*Settings.blockSize;
+ dynamicObject.spawned = true;
+
+ board[index(column,row)] = dynamicObject;
+ }else{
+ console.log("error loading block component");
+ console.log(component.errorString());
+ return false;
+ }
+ return true;
+}
+
+function showPuzzleError(str)
+{
+ //TODO: Nice user visible UI?
+ console.log(str);
+}
+
+function loadMap(map)
+{
+ puzzlePath = map;
+ var levelComp = Qt.createComponent(puzzlePath);
+ if (levelComp.status != 1){
+ console.log("Error loading level");
+ showPuzzleError(levelComp.errorString());
+ return;
+ }
+ puzzleLevel = levelComp.createObject();
+ if (puzzleLevel == null || !puzzleLevel.startingGrid instanceof Array) {
+ showPuzzleError("Bugger!");
+ return;
+ }
+ gameCanvas.showPuzzleGoal(puzzleLevel.goalText);
+ //showPuzzleGoal should call finishLoadingMap as the next thing it does, before handling more events
+}
+
+function finishLoadingMap()
+{
+ for (var i in puzzleLevel.startingGrid)
+ if (! (puzzleLevel.startingGrid[i] >= 0 && puzzleLevel.startingGrid[i] <= 9) )
+ puzzleLevel.startingGrid[i] = 0;
+ //TODO: Don't allow loading larger levels, leads to cheating
+ while (puzzleLevel.startingGrid.length > maxIndex) puzzleLevel.startingGrid.shift();
+ while (puzzleLevel.startingGrid.length < maxIndex) puzzleLevel.startingGrid.unshift(0);
+ for (var i in puzzleLevel.startingGrid)
+ if (puzzleLevel.startingGrid[i] > 0)
+ createBlock(i % maxColumn, Math.floor(i / maxColumn), puzzleLevel.startingGrid[i] - 1);
+
+ //### Experimental feature - allow levels to contain arbitrary QML scenes as well!
+ //while (puzzleLevel.children.length)
+ // puzzleLevel.children[0].parent = gameCanvas;
+ gameDuration = new Date(); //Don't start until we finish loading
+}
+
+function puzzleVictoryCheck(clearedAll)//gameOver has also been set if no more moves
+{
+ var won = true;
+ var soFar = new Date() - gameDuration;
+ if (puzzleLevel.scoreTarget != -1 && gameCanvas.score < puzzleLevel.scoreTarget){
+ won = false;
+ } if (puzzleLevel.scoreTarget != -1 && gameCanvas.score >= puzzleLevel.scoreTarget && !puzzleLevel.mustClear){
+ gameOver = true;
+ } if (puzzleLevel.timeTarget != -1 && soFar/1000.0 > puzzleLevel.timeTarget){
+ gameOver = true;
+ } if (puzzleLevel.moveTarget != -1 && gameCanvas.moves >= puzzleLevel.moveTarget){
+ gameOver = true;
+ } if (puzzleLevel.mustClear && gameOver && !clearedAll) {
+ won = false;
+ }
+
+ if (gameOver) {
+ gameCanvas.gameOver = true;
+ gameCanvas.showPuzzleEnd(won);
+
+ if (won) {
+ // Store progress
+ saveLevelHistory();
+ }
+ }
+}
+
+function getHighScore()
+{
+ var db = Sql.LocalStorage.openDatabaseSync(
+ "SameGame",
+ "2.0",
+ "SameGame Local Data",
+ 100
+ );
+ db.transaction(
+ function(tx) {
+ tx.executeSql('CREATE TABLE IF NOT EXISTS Scores(game TEXT, score NUMBER, gridSize TEXT, time NUMBER)');
+ // Only show results for the current grid size
+ var rs = tx.executeSql('SELECT * FROM Scores WHERE gridSize = "'
+ + maxColumn + "x" + maxRow + '" AND game = "' + gameMode + '" ORDER BY score desc');
+ if (rs.rows.length > 0)
+ gameCanvas.highScore = rs.rows.item(0).score;
+ else
+ gameCanvas.highScore = 0;
+ }
+ );
+}
+
+function saveHighScore(score)
+{
+ // Offline storage
+ var db = Sql.LocalStorage.openDatabaseSync(
+ "SameGame",
+ "2.0",
+ "SameGame Local Data",
+ 100
+ );
+ var dataStr = "INSERT INTO Scores VALUES(?, ?, ?, ?)";
+ var data = [
+ gameMode,
+ score,
+ maxColumn + "x" + maxRow,
+ Math.floor(gameDuration / 1000)
+ ];
+ if (score >= gameCanvas.highScore)//Update UI field
+ gameCanvas.highScore = score;
+
+ db.transaction(
+ function(tx) {
+ tx.executeSql('CREATE TABLE IF NOT EXISTS Scores(game TEXT, score NUMBER, gridSize TEXT, time NUMBER)');
+ tx.executeSql(dataStr, data);
+ }
+ );
+}
+
+function getLevelHistory()
+{
+ var db = Sql.LocalStorage.openDatabaseSync(
+ "SameGame",
+ "2.0",
+ "SameGame Local Data",
+ 100
+ );
+ db.transaction(
+ function(tx) {
+ tx.executeSql('CREATE TABLE IF NOT EXISTS Puzzle(level TEXT, score NUMBER, moves NUMBER, time NUMBER)');
+ var rs = tx.executeSql('SELECT * FROM Puzzle WHERE level = "' + puzzlePath + '" ORDER BY score desc');
+ if (rs.rows.length > 0) {
+ gameCanvas.puzzleWon = true;
+ gameCanvas.highScore = rs.rows.item(0).score;
+ } else {
+ gameCanvas.puzzleWon = false;
+ gameCanvas.highScore = 0;
+ }
+ }
+ );
+}
+
+function saveLevelHistory()
+{
+ var db = Sql.LocalStorage.openDatabaseSync(
+ "SameGame",
+ "2.0",
+ "SameGame Local Data",
+ 100
+ );
+ var dataStr = "INSERT INTO Puzzle VALUES(?, ?, ?, ?)";
+ var data = [
+ puzzlePath,
+ gameCanvas.score,
+ gameCanvas.moves,
+ Math.floor(gameDuration / 1000)
+ ];
+ gameCanvas.puzzleWon = true;
+
+ db.transaction(
+ function(tx) {
+ tx.executeSql('CREATE TABLE IF NOT EXISTS Puzzle(level TEXT, score NUMBER, moves NUMBER, time NUMBER)');
+ tx.executeSql(dataStr, data);
+ }
+ );
+}
+
+function nuke() //For "Debug mode"
+{
+ for (var row = 1; row <= 5; row++) {
+ for (var col = 0; col < 5; col++) {
+ if (board[index(col, maxRow - row)] != null) {
+ board[index(col, maxRow - row)].dying = true;
+ board[index(col, maxRow - row)] = null;
+ }
+ }
+ }
+ if (gameMode == "multiplayer" && gameCanvas.curTurn == 2)
+ shuffleUp();
+ else
+ shuffleDown();
+ if (gameMode == "endless")
+ refill();
+ else
+ victoryCheck();
+}
diff --git a/basicsuite/Qt5 Launch Presentation/samegame/settings.js b/basicsuite/Qt5 Launch Presentation/samegame/settings.js
new file mode 100644
index 0000000..e09dee9
--- /dev/null
+++ b/basicsuite/Qt5 Launch Presentation/samegame/settings.js
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Research In Motion
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+.pragma library
+
+//This should be switched over once a proper QML settings API exists
+
+var menuDelay = 500
+
+var headerHeight = 20 // 70 on BB10
+var footerHeight = 44 // 100 on BB10
+
+var fontPixelSize = 14 // 55 on BB10
+
+var blockSize = 32 // 64 on BB10
+
+var toolButtonHeight = 32 // 64 on BB10
+
+var menuButtonSpacing = 0 // 15 on BB10
diff --git a/basicsuite/Qt5 Particles Demo/content/burstandpulse.qml b/basicsuite/Qt5 Particles Demo/content/burstandpulse.qml
new file mode 100644
index 0000000..c44c8dc
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/content/burstandpulse.qml
@@ -0,0 +1,110 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ color: "black"
+ property bool lastWasPulse: false
+ Timer {
+ interval: 3500
+ triggeredOnStart: true
+ running: true
+ repeat: true
+ onTriggered: {
+ //! [0]
+ if (lastWasPulse) {
+ burstEmitter.burst(500);
+ lastWasPulse = false;
+ } else {
+ pulseEmitter.pulse(500);
+ lastWasPulse = true;
+ }
+ //! [0]
+ }
+ }
+ ParticleSystem {
+ id: particles
+ anchors.fill: parent
+ ImageParticle {
+ source: "../images/star.png"
+ alpha: 0
+ colorVariation: 0.6
+ }
+
+ Emitter {
+ id: burstEmitter
+ x: parent.width/2
+ y: parent.height/3
+ emitRate: 1000
+ lifeSpan: 2000
+ enabled: false
+ velocity: AngleDirection{magnitude: 64; angleVariation: 360}
+ size: 24
+ sizeVariation: 8
+ Text {
+ anchors.centerIn: parent
+ color: "white"
+ font.pixelSize: 18
+ text: "Burst"
+ }
+ }
+ Emitter {
+ id: pulseEmitter
+ x: parent.width/2
+ y: 2*parent.height/3
+ emitRate: 1000
+ lifeSpan: 2000
+ enabled: false
+ velocity: AngleDirection{magnitude: 64; angleVariation: 360}
+ size: 24
+ sizeVariation: 8
+ Text {
+ anchors.centerIn: parent
+ color: "white"
+ font.pixelSize: 18
+ text: "Pulse"
+ }
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Particles Demo/content/customemitter.qml b/basicsuite/Qt5 Particles Demo/content/customemitter.qml
new file mode 100644
index 0000000..bcf7da3
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/content/customemitter.qml
@@ -0,0 +1,96 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+ParticleSystem {
+ id: sys
+ width: 360
+ height: 600
+ running: true
+ Rectangle {
+ z: -1
+ anchors.fill: parent
+ color: "black"
+ }
+
+ property real petalLength: 180
+ property real petalRotation: 0
+ NumberAnimation on petalRotation {
+ from: 0;
+ to: 360;
+ loops: -1;
+ running: true
+ duration: 24000
+ }
+
+ function convert(a) {return a*(Math.PI/180);}
+ Emitter {
+ lifeSpan: 4000
+ emitRate: 120
+ size: 12
+ anchors.centerIn: parent
+ //! [0]
+ onEmitParticles: {
+ for (var i=0; i<particles.length; i++) {
+ var particle = particles[i];
+ particle.startSize = Math.max(02,Math.min(492,Math.tan(particle.t/2)*24));
+ var theta = Math.floor(Math.random() * 6.0);
+ particle.red = theta == 0 || theta == 1 || theta == 2 ? 0.2 : 1;
+ particle.green = theta == 2 || theta == 3 || theta == 4 ? 0.2 : 1;
+ particle.blue = theta == 4 || theta == 5 || theta == 0 ? 0.2 : 1;
+ theta /= 6.0;
+ theta *= 2.0*Math.PI;
+ theta += sys.convert(sys.petalRotation);//Convert from degrees to radians
+ particle.initialVX = petalLength * Math.cos(theta);
+ particle.initialVY = petalLength * Math.sin(theta);
+ particle.initialAX = particle.initialVX * -0.5;
+ particle.initialAY = particle.initialVY * -0.5;
+ }
+ }
+ //! [0]
+ }
+
+ ImageParticle {
+ source: "../images/particle4.png"
+ alpha: 0.0
+ }
+}
diff --git a/basicsuite/Qt5 Particles Demo/content/emitmask.qml b/basicsuite/Qt5 Particles Demo/content/emitmask.qml
new file mode 100644
index 0000000..575f9a1
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/content/emitmask.qml
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+Rectangle {
+ color: "goldenrod"
+ width: 400
+ height: 400
+ ParticleSystem {
+ width: 300
+ height: 300
+ anchors.centerIn: parent
+
+ ImageParticle {
+ source: "../images/particle.png"
+ z: 2
+ anchors.fill: parent
+ color: "#336666CC"
+ colorVariation: 0.0
+ }
+
+ Emitter {
+ anchors.fill: parent
+ emitRate: 6000
+ lifeSpan: 720
+ size: 10
+ //! [0]
+ shape: MaskShape {
+ source: "../images/starfish_mask.png"
+ }
+ //! [0]
+ }
+
+ }
+}
diff --git a/basicsuite/Qt5 Particles Demo/content/maximumemitted.qml b/basicsuite/Qt5 Particles Demo/content/maximumemitted.qml
new file mode 100644
index 0000000..cf87159
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/content/maximumemitted.qml
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+Rectangle {
+ color: "black"
+ width: 360
+ height: 540
+ ParticleSystem {
+ id: sys
+ anchors.fill: parent
+ onEmptyChanged: if (empty) sys.pause();
+
+ ImageParticle {
+ system: sys
+ id: cp
+ source: "../images/particle.png"
+ colorVariation: 0.4
+ color: "#000000FF"
+ }
+
+ Emitter {
+ //burst on click
+ id: bursty
+ system: sys
+ enabled: ma.pressed
+ x: ma.mouseX
+ y: ma.mouseY
+ emitRate: 16000
+ maximumEmitted: 4000
+ acceleration: AngleDirection {angleVariation: 360; magnitude: 360; }
+ size: 8
+ endSize: 16
+ sizeVariation: 4
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onPressed: sys.resume()
+ id: ma
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Particles Demo/content/shapeanddirection.qml b/basicsuite/Qt5 Particles Demo/content/shapeanddirection.qml
new file mode 100644
index 0000000..9d5ea98
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/content/shapeanddirection.qml
@@ -0,0 +1,112 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+Rectangle {
+ id: root
+ width: 360
+ height: 540
+ color: "black"
+ Image {
+ anchors.fill: parent
+ source: "../images/portal_bg.png"
+ }
+
+ ParticleSystem {
+ id: particles
+ anchors.fill: parent
+
+ ImageParticle {
+ groups: ["center","edge"]
+ anchors.fill: parent
+ source: "../images/particle.png"
+ colorVariation: 0.1
+ color: "#009999FF"
+ }
+
+ Emitter {
+ anchors.fill: parent
+ group: "center"
+ emitRate: 400
+ lifeSpan: 2000
+ size: 20
+ sizeVariation: 2
+ endSize: 0
+ //! [0]
+ shape: EllipseShape {fill: false}
+ velocity: TargetDirection {
+ targetX: root.width/2
+ targetY: root.height/2
+ proportionalMagnitude: true
+ magnitude: 0.5
+ }
+ //! [0]
+ }
+
+ Emitter {
+ anchors.fill: parent
+ group: "edge"
+ startTime: 2000
+ emitRate: 2000
+ lifeSpan: 2000
+ size: 28
+ sizeVariation: 2
+ endSize: 16
+ shape: EllipseShape {fill: false}
+ velocity: TargetDirection {
+ targetX: root.width/2
+ targetY: root.height/2
+ proportionalMagnitude: true
+ magnitude: 0.1
+ magnitudeVariation: 0.1
+ }
+ acceleration: TargetDirection {
+ targetX: root.width/2
+ targetY: root.height/2
+ targetVariation: 200
+ proportionalMagnitude: true
+ magnitude: 0.1
+ magnitudeVariation: 0.1
+ }
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Particles Demo/content/trailemitter.qml b/basicsuite/Qt5 Particles Demo/content/trailemitter.qml
new file mode 100644
index 0000000..d876bbb
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/content/trailemitter.qml
@@ -0,0 +1,176 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+Rectangle {
+ id: root
+ width: 360
+ height: 540
+ color: "black"
+
+ ParticleSystem {
+ id: particles
+ anchors.fill: parent
+
+ ImageParticle {
+ id: smoke
+ system: particles
+ anchors.fill: parent
+ groups: ["A", "B"]
+ source: "../images/particle.png"
+ colorVariation: 0
+ color: "#00111111"
+ }
+ ImageParticle {
+ id: flame
+ anchors.fill: parent
+ system: particles
+ groups: ["C", "D"]
+ source: "../images/particle.png"
+ colorVariation: 0.1
+ color: "#00ff400f"
+ }
+
+ Emitter {
+ id: fire
+ system: particles
+ group: "C"
+
+ y: parent.height
+ width: parent.width
+
+ emitRate: 350
+ lifeSpan: 3500
+
+ acceleration: PointDirection { y: -17; xVariation: 3 }
+ velocity: PointDirection {xVariation: 3}
+
+ size: 24
+ sizeVariation: 8
+ endSize: 4
+ }
+
+ TrailEmitter {
+ id: fireSmoke
+ group: "B"
+ system: particles
+ follow: "C"
+ width: root.width
+ height: root.height - 68
+
+ emitRatePerParticle: 1
+ lifeSpan: 2000
+
+ velocity: PointDirection {y:-17*6; yVariation: -17; xVariation: 3}
+ acceleration: PointDirection {xVariation: 3}
+
+ size: 36
+ sizeVariation: 8
+ endSize: 16
+ }
+
+ TrailEmitter {
+ id: fireballFlame
+ anchors.fill: parent
+ system: particles
+ group: "D"
+ follow: "E"
+
+ emitRatePerParticle: 120
+ lifeSpan: 180
+ emitWidth: TrailEmitter.ParticleSize
+ emitHeight: TrailEmitter.ParticleSize
+ emitShape: EllipseShape{}
+
+ size: 16
+ sizeVariation: 4
+ endSize: 4
+ }
+
+ TrailEmitter {
+ id: fireballSmoke
+ anchors.fill: parent
+ system: particles
+ group: "A"
+ follow: "E"
+
+ emitRatePerParticle: 128
+ lifeSpan: 2400
+ emitWidth: TrailEmitter.ParticleSize
+ emitHeight: TrailEmitter.ParticleSize
+ emitShape: EllipseShape{}
+
+ velocity: PointDirection {yVariation: 16; xVariation: 16}
+ acceleration: PointDirection {y: -16}
+
+ size: 24
+ sizeVariation: 8
+ endSize: 8
+ }
+
+ Emitter {
+ id: balls
+ system: particles
+ group: "E"
+
+ y: parent.height
+ width: parent.width
+
+ emitRate: 2
+ lifeSpan: 7000
+
+ velocity: PointDirection {y:-17*4*2; xVariation: 6*6}
+ acceleration: PointDirection {y: 17*2; xVariation: 6*6}
+
+ size: 8
+ sizeVariation: 4
+ }
+
+ Turbulence { //A bit of turbulence makes the smoke look better
+ anchors.fill: parent
+ groups: ["A","B"]
+ strength: 32
+ system: particles
+ }
+ }
+}
+
diff --git a/basicsuite/Qt5 Particles Demo/content/velocityfrommotion.qml b/basicsuite/Qt5 Particles Demo/content/velocityfrommotion.qml
new file mode 100644
index 0000000..40698b1
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/content/velocityfrommotion.qml
@@ -0,0 +1,312 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import QtQuick.Particles 2.0
+
+Rectangle {
+
+ id: root
+
+ height: 540
+ width: 360
+
+ gradient: Gradient {
+ GradientStop { position: 0; color: "#000020" }
+ GradientStop { position: 1; color: "#000000" }
+ }
+
+ MouseArea {
+ id: mouseArea
+ anchors.fill: root
+ }
+
+ ParticleSystem { id: sys1 }
+ ImageParticle {
+ system: sys1
+ source: "../images/particle.png"
+ color: "cyan"
+ alpha: 0
+ SequentialAnimation on color {
+ loops: Animation.Infinite
+ ColorAnimation {
+ from: "cyan"
+ to: "magenta"
+ duration: 1000
+ }
+ ColorAnimation {
+ from: "magenta"
+ to: "blue"
+ duration: 2000
+ }
+ ColorAnimation {
+ from: "blue"
+ to: "violet"
+ duration: 2000
+ }
+ ColorAnimation {
+ from: "violet"
+ to: "cyan"
+ duration: 2000
+ }
+ }
+ colorVariation: 0.3
+ }
+ //! [0]
+ Emitter {
+ id: trailsNormal
+ system: sys1
+
+ emitRate: 500
+ lifeSpan: 2000
+
+ y: mouseArea.pressed ? mouseArea.mouseY : circle.cy
+ x: mouseArea.pressed ? mouseArea.mouseX : circle.cx
+
+ velocity: PointDirection {xVariation: 4; yVariation: 4;}
+ acceleration: PointDirection {xVariation: 10; yVariation: 10;}
+ velocityFromMovement: 8
+
+ size: 8
+ sizeVariation: 4
+ }
+ //! [0]
+ ParticleSystem { id: sys2 }
+ ImageParticle {
+ color: "cyan"
+ system: sys2
+ alpha: 0
+ SequentialAnimation on color {
+ loops: Animation.Infinite
+ ColorAnimation {
+ from: "magenta"
+ to: "cyan"
+ duration: 1000
+ }
+ ColorAnimation {
+ from: "cyan"
+ to: "magenta"
+ duration: 2000
+ }
+ }
+ colorVariation: 0.5
+ source: "../images/star.png"
+ }
+ Emitter {
+ id: trailsStars
+ system: sys2
+
+ emitRate: 100
+ lifeSpan: 2200
+
+
+ y: mouseArea.pressed ? mouseArea.mouseY : circle.cy
+ x: mouseArea.pressed ? mouseArea.mouseX : circle.cx
+
+ velocity: PointDirection {xVariation: 4; yVariation: 4;}
+ acceleration: PointDirection {xVariation: 10; yVariation: 10;}
+ velocityFromMovement: 8
+
+ size: 22
+ sizeVariation: 4
+ }
+ ParticleSystem { id: sys3; }
+ ImageParticle {
+ source: "../images/particle.png"
+ system: sys3
+ color: "orange"
+ alpha: 0
+ SequentialAnimation on color {
+ loops: Animation.Infinite
+ ColorAnimation {
+ from: "red"
+ to: "green"
+ duration: 2000
+ }
+ ColorAnimation {
+ from: "green"
+ to: "red"
+ duration: 2000
+ }
+ }
+
+ colorVariation: 0.2
+
+ }
+ Emitter {
+ id: trailsNormal2
+ system: sys3
+
+ emitRate: 300
+ lifeSpan: 2000
+
+ y: mouseArea.pressed ? mouseArea.mouseY : circle2.cy
+ x: mouseArea.pressed ? mouseArea.mouseX : circle2.cx
+
+ velocityFromMovement: 16
+
+ velocity: PointDirection {xVariation: 4; yVariation: 4;}
+ acceleration: PointDirection {xVariation: 10; yVariation: 10;}
+
+ size: 12
+ sizeVariation: 4
+ }
+ ParticleSystem { id: sys4; }
+ ImageParticle {
+ system: sys4
+ source: "../images/star.png"
+ color: "green"
+ alpha: 0
+ SequentialAnimation on color {
+ loops: Animation.Infinite
+ ColorAnimation {
+ from: "green"
+ to: "red"
+ duration: 2000
+ }
+ ColorAnimation {
+ from: "red"
+ to: "green"
+ duration: 2000
+ }
+ }
+
+ colorVariation: 0.5
+ }
+ Emitter {
+ id: trailsStars2
+ system: sys4
+
+ emitRate: 50
+ lifeSpan: 2200
+
+
+ y: mouseArea.pressed ? mouseArea.mouseY : circle2.cy
+ x: mouseArea.pressed ? mouseArea.mouseX : circle2.cx
+
+ velocityFromMovement: 16
+ velocity: PointDirection {xVariation: 2; yVariation: 2;}
+ acceleration: PointDirection {xVariation: 10; yVariation: 10;}
+
+ size: 22
+ sizeVariation: 4
+ }
+
+
+
+ color: "white"
+
+ Item {
+ id: circle
+ //anchors.fill: parent
+ property real radius: 0
+ property real dx: root.width / 2
+ property real dy: root.height / 2
+ property real cx: radius * Math.sin(percent*6.283185307179) + dx
+ property real cy: radius * Math.cos(percent*6.283185307179) + dy
+ property real percent: 0
+
+ SequentialAnimation on percent {
+ loops: Animation.Infinite
+ running: true
+ NumberAnimation {
+ duration: 1000
+ from: 1
+ to: 0
+ loops: 8
+ }
+ NumberAnimation {
+ duration: 1000
+ from: 0
+ to: 1
+ loops: 8
+ }
+
+ }
+
+ SequentialAnimation on radius {
+ loops: Animation.Infinite
+ running: true
+ NumberAnimation {
+ duration: 4000
+ from: 0
+ to: 100
+ }
+ NumberAnimation {
+ duration: 4000
+ from: 100
+ to: 0
+ }
+ }
+ }
+
+ Item {
+ id: circle3
+ property real radius: 100
+ property real dx: root.width / 2
+ property real dy: root.height / 2
+ property real cx: radius * Math.sin(percent*6.283185307179) + dx
+ property real cy: radius * Math.cos(percent*6.283185307179) + dy
+ property real percent: 0
+
+ SequentialAnimation on percent {
+ loops: Animation.Infinite
+ running: true
+ NumberAnimation { from: 0.0; to: 1 ; duration: 10000; }
+ }
+ }
+
+ Item {
+ id: circle2
+ property real radius: 30
+ property real dx: circle3.cx
+ property real dy: circle3.cy
+ property real cx: radius * Math.sin(percent*6.283185307179) + dx
+ property real cy: radius * Math.cos(percent*6.283185307179) + dy
+ property real percent: 0
+
+ SequentialAnimation on percent {
+ loops: Animation.Infinite
+ running: true
+ NumberAnimation { from: 0.0; to: 1 ; duration: 1000; }
+ }
+ }
+
+}
diff --git a/basicsuite/Qt5 Particles Demo/doc/images/qml-emitters-example.png b/basicsuite/Qt5 Particles Demo/doc/images/qml-emitters-example.png
new file mode 100644
index 0000000..0025afd
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/doc/images/qml-emitters-example.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/doc/src/emitters.qdoc b/basicsuite/Qt5 Particles Demo/doc/src/emitters.qdoc
new file mode 100644
index 0000000..5644ab1
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/doc/src/emitters.qdoc
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+/*!
+ \title QtQuick.Particles Examples - Emitters
+ \example quick/particles/emitters
+ \brief This is a collection of examples using Emitters in the QML particle system.
+ \image qml-emitters-example.png
+
+ This is a collection of small QML examples relating to using Emitters in the particle system.
+ Each example is a small QML file emphasizing a particular element or feature.
+
+ Velocity from motion gives the effect of strong particle motion through primarily moving the emitters:
+ \snippet quick/particles/emitters/content/velocityfrommotion.qml 0
+
+ Burst and pulse calls the burst and pulse methods on two idential emitters.
+ \snippet quick/particles/emitters/content/burstandpulse.qml 0
+ Note how burst takes an argument of number of particles to emit, and pulse takes an argument of number of milliseconds to emit for.
+ This gives a slightly different behaviour, which is easy to see in this example.
+
+ Custom Emitter connects to the emitParticles signal to set arbitrary values on particle data as they're emitted;
+ \snippet quick/particles/emitters/content/customemitter.qml 0
+ This is used to emit curving particles in six rotating spokes.
+
+ Emit mask sets an image mask on the Emitter, to emit out of an arbitrary shape.
+ \snippet quick/particles/emitters/content/emitmask.qml 0
+
+ Maximum emitted emits no more than a certain number of particles at a time. This example makes it easy to see what happens when the limit is reached.
+
+ Shape and Direction emits particles out of an unfilled Ellipse shape, using a TargetDirection
+ \snippet quick/particles/emitters/content/shapeanddirection.qml 0
+ This sends the particles towards the center of the ellipse with proportional speed, keeping the ellipse outline as they move to the center.
+
+ TrailEmitter uses that element to add smoke particles to trail the fire particles in the scene.
+ \snippet quick/particles/emitters/content/customemitter.qml 0
+
+*/
diff --git a/basicsuite/Qt5 Particles Demo/emitters.pro b/basicsuite/Qt5 Particles Demo/emitters.pro
new file mode 100644
index 0000000..c5d8b8b
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/emitters.pro
@@ -0,0 +1,11 @@
+TEMPLATE = app
+
+QT += quick qml
+SOURCES += main.cpp
+RESOURCES += \
+ emitters.qrc \
+ ../images.qrc \
+ ../../shared/shared.qrc
+
+target.path = $$[QT_INSTALL_EXAMPLES]/quick/particles/emitters
+INSTALLS += target
diff --git a/basicsuite/Qt5 Particles Demo/emitters.qmlproject b/basicsuite/Qt5 Particles Demo/emitters.qmlproject
new file mode 100644
index 0000000..5379aac
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/emitters.qmlproject
@@ -0,0 +1,16 @@
+import QmlProject 1.1
+
+Project {
+ mainFile: "emitters.qml"
+
+ /* Include .qml, .js, and image files from current directory and subdirectories */
+ QmlFiles {
+ directory: "."
+ }
+ JavaScriptFiles {
+ directory: "."
+ }
+ ImageFiles {
+ directory: "."
+ }
+}
diff --git a/basicsuite/Qt5 Particles Demo/emitters.qrc b/basicsuite/Qt5 Particles Demo/emitters.qrc
new file mode 100644
index 0000000..708c868
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/emitters.qrc
@@ -0,0 +1,12 @@
+<RCC>
+ <qresource prefix="/particles/emitters">
+ <file>emitters.qml</file>
+ <file>content/burstandpulse.qml</file>
+ <file>content/customemitter.qml</file>
+ <file>content/emitmask.qml</file>
+ <file>content/maximumemitted.qml</file>
+ <file>content/shapeanddirection.qml</file>
+ <file>content/trailemitter.qml</file>
+ <file>content/velocityfrommotion.qml</file>
+ </qresource>
+</RCC>
diff --git a/basicsuite/Qt5 Particles Demo/icon.png b/basicsuite/Qt5 Particles Demo/icon.png
new file mode 100755
index 0000000..a418e30
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/icon.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/_explo.png b/basicsuite/Qt5 Particles Demo/images/_explo.png
new file mode 100644
index 0000000..4297245
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/_explo.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/backgroundLeaves.jpg b/basicsuite/Qt5 Particles Demo/images/backgroundLeaves.jpg
new file mode 100755
index 0000000..08be167
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/backgroundLeaves.jpg
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/bear_tiles.png b/basicsuite/Qt5 Particles Demo/images/bear_tiles.png
new file mode 100644
index 0000000..6bbb2a9
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/bear_tiles.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/candle.png b/basicsuite/Qt5 Particles Demo/images/candle.png
new file mode 100644
index 0000000..8fa3193
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/candle.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/colortable.png b/basicsuite/Qt5 Particles Demo/images/colortable.png
new file mode 100644
index 0000000..a62ceeb
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/colortable.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/finalfrontier.png b/basicsuite/Qt5 Particles Demo/images/finalfrontier.png
new file mode 100644
index 0000000..2ba1815
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/finalfrontier.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/flower.png b/basicsuite/Qt5 Particles Demo/images/flower.png
new file mode 100644
index 0000000..b5c6062
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/flower.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/matchmask.png b/basicsuite/Qt5 Particles Demo/images/matchmask.png
new file mode 100644
index 0000000..e575875
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/matchmask.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/meteor.png b/basicsuite/Qt5 Particles Demo/images/meteor.png
new file mode 100644
index 0000000..e8c368a
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/meteor.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/meteor_explo.png b/basicsuite/Qt5 Particles Demo/images/meteor_explo.png
new file mode 100644
index 0000000..e659bfe
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/meteor_explo.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/meteors.png b/basicsuite/Qt5 Particles Demo/images/meteors.png
new file mode 100644
index 0000000..bada8a1
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/meteors.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/nullRock.png b/basicsuite/Qt5 Particles Demo/images/nullRock.png
new file mode 100644
index 0000000..4076327
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/nullRock.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/particle.png b/basicsuite/Qt5 Particles Demo/images/particle.png
new file mode 100644
index 0000000..5c83896
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/particle.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/particle2.png b/basicsuite/Qt5 Particles Demo/images/particle2.png
new file mode 100644
index 0000000..36349c6
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/particle2.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/particle3.png b/basicsuite/Qt5 Particles Demo/images/particle3.png
new file mode 100644
index 0000000..905d8f3
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/particle3.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/particle4.png b/basicsuite/Qt5 Particles Demo/images/particle4.png
new file mode 100644
index 0000000..bc95b70
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/particle4.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/particleA.png b/basicsuite/Qt5 Particles Demo/images/particleA.png
new file mode 100644
index 0000000..c63acde
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/particleA.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/portal_bg.png b/basicsuite/Qt5 Particles Demo/images/portal_bg.png
new file mode 100644
index 0000000..3c59eea
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/portal_bg.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/realLeaf1.png b/basicsuite/Qt5 Particles Demo/images/realLeaf1.png
new file mode 100644
index 0000000..6cabf29
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/realLeaf1.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/realLeaf2.png b/basicsuite/Qt5 Particles Demo/images/realLeaf2.png
new file mode 100644
index 0000000..bfeca86
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/realLeaf2.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/realLeaf3.png b/basicsuite/Qt5 Particles Demo/images/realLeaf3.png
new file mode 100644
index 0000000..b1071e8
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/realLeaf3.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/realLeaf4.png b/basicsuite/Qt5 Particles Demo/images/realLeaf4.png
new file mode 100644
index 0000000..d61d53d
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/realLeaf4.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/rocket.png b/basicsuite/Qt5 Particles Demo/images/rocket.png
new file mode 100644
index 0000000..a171610
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/rocket.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/rocket2.png b/basicsuite/Qt5 Particles Demo/images/rocket2.png
new file mode 100644
index 0000000..7110f8f
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/rocket2.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/sizeInOut.png b/basicsuite/Qt5 Particles Demo/images/sizeInOut.png
new file mode 100644
index 0000000..0a306ea
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/sizeInOut.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/snowflake.png b/basicsuite/Qt5 Particles Demo/images/snowflake.png
new file mode 100644
index 0000000..490887a
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/snowflake.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/sparkleSize.png b/basicsuite/Qt5 Particles Demo/images/sparkleSize.png
new file mode 100644
index 0000000..7520565
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/sparkleSize.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/star.png b/basicsuite/Qt5 Particles Demo/images/star.png
new file mode 100644
index 0000000..0d592cf
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/star.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/starfish_0.png b/basicsuite/Qt5 Particles Demo/images/starfish_0.png
new file mode 100644
index 0000000..8747f02
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/starfish_0.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/starfish_1.png b/basicsuite/Qt5 Particles Demo/images/starfish_1.png
new file mode 100644
index 0000000..1f3f159
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/starfish_1.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/starfish_2.png b/basicsuite/Qt5 Particles Demo/images/starfish_2.png
new file mode 100644
index 0000000..c6c7e5a
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/starfish_2.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/starfish_3.png b/basicsuite/Qt5 Particles Demo/images/starfish_3.png
new file mode 100644
index 0000000..307a89f
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/starfish_3.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/starfish_4.png b/basicsuite/Qt5 Particles Demo/images/starfish_4.png
new file mode 100644
index 0000000..d61c265
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/starfish_4.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/images/starfish_mask.png b/basicsuite/Qt5 Particles Demo/images/starfish_mask.png
new file mode 100644
index 0000000..2ef74f9
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/images/starfish_mask.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/main.cpp b/basicsuite/Qt5 Particles Demo/main.cpp
new file mode 100644
index 0000000..66e7ce4
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/main.cpp
@@ -0,0 +1,41 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 "../../shared/shared.h"
+DECLARATIVE_EXAMPLE_MAIN(particles/emitters/emitters)
diff --git a/basicsuite/Qt5 Particles Demo/main.qml b/basicsuite/Qt5 Particles Demo/main.qml
new file mode 100644
index 0000000..2b9a338
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/main.qml
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+import "shared" as Examples
+
+Item {
+ height: 480
+ width: 320
+ Examples.LauncherList {
+ id: ll
+ anchors.fill: parent
+ Component.onCompleted: {
+ addExample("Velocity from Motion", "Particle motion just by moving emitters", Qt.resolvedUrl("content/velocityfrommotion.qml"));
+ addExample("Burst and Pulse", "Emit imperatively", Qt.resolvedUrl("content/burstandpulse.qml"));
+ addExample("Custom Emitter", "Custom starting state", Qt.resolvedUrl("content/customemitter.qml"));
+ addExample("Emit Mask", "Emit arbitrary shapes", Qt.resolvedUrl("content/emitmask.qml"));
+ addExample("Maximum Emitted", "Put a limit on emissions", Qt.resolvedUrl("content/maximumemitted.qml"));
+ addExample("Shape and Direction", "Creates a portal effect", Qt.resolvedUrl("content/shapeanddirection.qml"));
+ addExample("TrailEmitter", "Emit from other particles", Qt.resolvedUrl("content/trailemitter.qml"));
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Particles Demo/shared/Button.qml b/basicsuite/Qt5 Particles Demo/shared/Button.qml
new file mode 100644
index 0000000..9bbc01a
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/shared/Button.qml
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+Item {
+ id: container
+
+ property string text: "Button"
+ property string subText: ""
+ signal clicked
+ property alias containsMouse: mouseArea.containsMouse
+ property alias pressed: mouseArea.pressed
+ implicitHeight: col.height
+ height: implicitHeight
+ width: buttonLabel.width + 20
+
+ MouseArea {
+ id: mouseArea
+ anchors.fill: parent
+ onClicked: container.clicked()
+ hoverEnabled: true
+ }
+
+ Column {
+ spacing: 2
+ id: col
+ anchors.verticalCenter: parent.verticalCenter
+ width: parent.width
+ Text {
+ id: buttonLabel
+ anchors.left: parent.left
+ anchors.leftMargin: 10
+ anchors.right: parent.right
+ anchors.rightMargin: 10
+ text: container.text
+ color: "black"
+ font.pixelSize: 22
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ styleColor: "white"
+ style: Text.Raised
+
+ }
+ Text {
+ id: buttonLabel2
+ anchors.left: parent.left
+ anchors.leftMargin: 10
+ text: container.subText
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ color: "#666"
+ font.pixelSize: 12
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Particles Demo/shared/LauncherList.qml b/basicsuite/Qt5 Particles Demo/shared/LauncherList.qml
new file mode 100644
index 0000000..20f9c2b
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/shared/LauncherList.qml
@@ -0,0 +1,153 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+Rectangle {
+ //model is a list of {"name":"somename", "url":"file:///some/url/mainfile.qml"}
+ //function used to add to model A) to enforce scheme B) to allow Qt.resolveUrl in url assignments
+
+ color: "#eee"
+ function addExample(name, desc, url)
+ {
+ myModel.append({"name":name, "description":desc, "url":url})
+ }
+ function hideExample()
+ {
+ ei.visible = false;
+ }
+
+ ListView {
+ clip: true
+ delegate: SimpleLauncherDelegate{exampleItem: ei}
+ model: ListModel {id:myModel}
+ anchors.fill: parent
+ }
+
+ Item {
+ id: ei
+ visible: false
+ clip: true
+ property url exampleUrl
+ onExampleUrlChanged: visible = (exampleUrl == '' ? false : true); //Setting exampleUrl automatically shows example
+ anchors.fill: parent
+ anchors.bottomMargin: 40
+ Rectangle {
+ id: bg
+ anchors.fill: parent
+ color: "white"
+ }
+ MouseArea{
+ anchors.fill: parent
+ enabled: ei.visible
+ //Eats mouse events
+ }
+ Loader{
+ focus: true
+ source: ei.exampleUrl
+ anchors.fill: parent
+ }
+ }
+ Rectangle {
+ id: bar
+ visible: ei.visible
+ anchors.bottom: parent.bottom
+ width: parent.width
+ height: 40
+
+ Rectangle {
+ height: 1
+ color: "#ccc"
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+ }
+
+ Rectangle {
+ height: 1
+ color: "#fff"
+ anchors.top: parent.top
+ anchors.topMargin: 1
+ anchors.left: parent.left
+ anchors.right: parent.right
+ }
+
+ gradient: Gradient {
+ GradientStop { position: 0 ; color: "#eee" }
+ GradientStop { position: 1 ; color: "#ccc" }
+ }
+
+ MouseArea{
+ anchors.fill: parent
+ enabled: ei.visible
+ //Eats mouse events
+ }
+
+ Image {
+ id: back
+ source: "images/back.png"
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.verticalCenterOffset: 2
+ anchors.left: parent.left
+ anchors.leftMargin: 16
+
+ MouseArea {
+ id: mouse
+ hoverEnabled: true
+ anchors.centerIn: parent
+ width: 38
+ height: 31
+ anchors.verticalCenterOffset: -1
+ onClicked: ei.exampleUrl = ""
+ Rectangle {
+ anchors.fill: parent
+ opacity: mouse.pressed ? 1 : 0
+ Behavior on opacity { NumberAnimation{ duration: 100 }}
+ gradient: Gradient {
+ GradientStop { position: 0 ; color: "#22000000" }
+ GradientStop { position: 0.2 ; color: "#11000000" }
+ }
+ border.color: "darkgray"
+ antialiasing: true
+ radius: 4
+ }
+ }
+ }
+ }
+}
diff --git a/basicsuite/Qt5 Particles Demo/shared/README b/basicsuite/Qt5 Particles Demo/shared/README
new file mode 100644
index 0000000..bf16f23
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/shared/README
@@ -0,0 +1,11 @@
+These files are shared between multiple examples as a set of common and
+reusuable components. While they do demonstrate the building of reusable
+components in QML, they are not official examples themselves.
+Consequently they do not have entries in the Qt documentation, and are
+documented only through the code comments within the files. Developers
+new to QML are strongly encouraged to go through the official examples
+before delving into this directory.
+
+For most application use, see the Qt Quick Components project to find
+ready-made Components you can use in your own projects. Qt Declarative
+examples do not use them only to avoid external dependencies.
diff --git a/basicsuite/Qt5 Particles Demo/shared/SimpleLauncherDelegate.qml b/basicsuite/Qt5 Particles Demo/shared/SimpleLauncherDelegate.qml
new file mode 100644
index 0000000..e891266
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/shared/SimpleLauncherDelegate.qml
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 2.0
+
+Rectangle {
+ id: container
+ property Item exampleItem
+ width: ListView.view.width
+ height: button.implicitHeight + 22
+
+ gradient: Gradient {
+ GradientStop {
+ position: 0
+ Behavior on color {ColorAnimation { duration: 100 }}
+ color: button.pressed ? "#e0e0e0" : "#fff"
+ }
+ GradientStop {
+ position: 1
+ Behavior on color {ColorAnimation { duration: 100 }}
+ color: button.pressed ? "#e0e0e0" : button.containsMouse ? "#f5f5f5" : "#eee"
+ }
+ }
+
+ Image {
+ id: image
+ opacity: 0.7
+ Behavior on opacity {NumberAnimation {duration: 100}}
+ source: "images/next.png"
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.right: parent.right
+ anchors.rightMargin: 16
+ }
+
+ Button {
+ id: button
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.bottom: parent.bottom
+ anchors.right:image.left
+ text: name
+ subText: description
+ onClicked: exampleItem.exampleUrl = url;
+ }
+
+ Rectangle {
+ height: 1
+ color: "#ccc"
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ }
+}
diff --git a/basicsuite/Qt5 Particles Demo/shared/images/back.png b/basicsuite/Qt5 Particles Demo/shared/images/back.png
new file mode 100644
index 0000000..5340209
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/shared/images/back.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/shared/images/next.png b/basicsuite/Qt5 Particles Demo/shared/images/next.png
new file mode 100644
index 0000000..cdef8db
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/shared/images/next.png
Binary files differ
diff --git a/basicsuite/Qt5 Particles Demo/shared/qmldir b/basicsuite/Qt5 Particles Demo/shared/qmldir
new file mode 100644
index 0000000..2f1e56a
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/shared/qmldir
@@ -0,0 +1,3 @@
+Button 2.0 Button.qml
+LauncherList 2.0 LauncherList.qml
+SimpleLauncherDelegate 2.0 SimpleLauncherDelegate.qml
diff --git a/basicsuite/Qt5 Particles Demo/shared/quick_shared.qrc b/basicsuite/Qt5 Particles Demo/shared/quick_shared.qrc
new file mode 100644
index 0000000..9fc114d
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/shared/quick_shared.qrc
@@ -0,0 +1,8 @@
+<RCC>
+ <qresource prefix="/quick/shared">
+ <file>LauncherList.qml</file>
+ <file>SimpleLauncherDelegate.qml</file>
+ <file>Button.qml</file>
+ <file>images/back.png</file>
+ </qresource>
+</RCC>
diff --git a/basicsuite/Qt5 Particles Demo/shared/shared.h b/basicsuite/Qt5 Particles Demo/shared/shared.h
new file mode 100644
index 0000000..eab15f3
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/shared/shared.h
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR 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 <QDir>
+#include <QGuiApplication>
+#include <QQmlEngine>
+#include <QQuickView>
+#define DECLARATIVE_EXAMPLE_MAIN(NAME) int main(int argc, char* argv[]) \
+{\
+ QGuiApplication app(argc,argv);\
+ QQuickView view;\
+ view.connect(view.engine(), SIGNAL(quit()), &app, SLOT(quit()));\
+ view.setSource(QUrl("qrc:///" #NAME ".qml")); \
+ if (QGuiApplication::platformName() == QLatin1String("qnx") || \
+ QGuiApplication::platformName() == QLatin1String("eglfs")) {\
+ view.setResizeMode(QQuickView::SizeRootObjectToView);\
+ view.showFullScreen();\
+ } else {\
+ view.show();\
+ }\
+ return app.exec();\
+}
diff --git a/basicsuite/Qt5 Particles Demo/shared/shared.qrc b/basicsuite/Qt5 Particles Demo/shared/shared.qrc
new file mode 100644
index 0000000..4ac856e
--- /dev/null
+++ b/basicsuite/Qt5 Particles Demo/shared/shared.qrc
@@ -0,0 +1,8 @@
+<RCC>
+ <qresource prefix="/shared">
+ <file>LauncherList.qml</file>
+ <file>SimpleLauncherDelegate.qml</file>
+ <file>Button.qml</file>
+ <file>images/back.png</file>
+ </qresource>
+</RCC>
diff --git a/basicsuite/README b/basicsuite/README
new file mode 100644
index 0000000..064fca1
--- /dev/null
+++ b/basicsuite/README
@@ -0,0 +1,15 @@
+
+A collection of generic demos, originally created for demoing Boot2Qt
+at Embedded World 2013.
+
+The contents of this directory should be placed in /data/user/qt on a
+device set up to boot the Qt launcher (b2qt-launcher and b2qt-utils
+repos).
+
+Note: The "Qt5 Launch Presentation" is by default setup to run in lofi
+mode (suitable for e.g. beagleboard). For better devices, copy
+main_hifi.qml to main.qml.
+
+It is assumed that the QML Presentation System is installed.
+(git://gitorious.org/qt-labs/qml-presentation-system.git)
+
diff --git a/basicsuite/Social/icon.png b/basicsuite/Social/icon.png
new file mode 100755
index 0000000..d3d1a99
--- /dev/null
+++ b/basicsuite/Social/icon.png
Binary files differ
diff --git a/basicsuite/Social/main.qml b/basicsuite/Social/main.qml
new file mode 100644
index 0000000..13183d7
--- /dev/null
+++ b/basicsuite/Social/main.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 200
+ height: 200
+ color: "black"
+
+ Text {
+ anchors.fill: parent
+ color: "white"
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ text: "More to come..."
+ font.pixelSize: Math.min(width, height) * 0.03
+ }
+}
diff --git a/basicsuite/Web/icon.png b/basicsuite/Web/icon.png
new file mode 100755
index 0000000..f9ce002
--- /dev/null
+++ b/basicsuite/Web/icon.png
Binary files differ
diff --git a/basicsuite/Web/main.qml b/basicsuite/Web/main.qml
new file mode 100644
index 0000000..13183d7
--- /dev/null
+++ b/basicsuite/Web/main.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 200
+ height: 200
+ color: "black"
+
+ Text {
+ anchors.fill: parent
+ color: "white"
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ text: "More to come..."
+ font.pixelSize: Math.min(width, height) * 0.03
+ }
+}