diff options
| author | Gunnar Sletta <gunnar.sletta@nokia.com> | 2011-05-14 17:51:22 +0200 |
|---|---|---|
| committer | Gunnar Sletta <gunnar.sletta@nokia.com> | 2011-05-14 17:51:22 +0200 |
| commit | 4b66cdf14b8c8ed302f601ccfdf512bef3ccf83c (patch) | |
| tree | 2f2614bee63a1f9fc293839f9e33bffba5ca5d3c /Qt/labs/presentation/Presentation.qml | |
| parent | 8498d8076364cd3cf3952bf64d83f1a1cd2491f5 (diff) | |
renamed to Qt.labs.presentation
Diffstat (limited to 'Qt/labs/presentation/Presentation.qml')
| -rw-r--r-- | Qt/labs/presentation/Presentation.qml | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/Qt/labs/presentation/Presentation.qml b/Qt/labs/presentation/Presentation.qml new file mode 100644 index 0000000..b985880 --- /dev/null +++ b/Qt/labs/presentation/Presentation.qml @@ -0,0 +1,80 @@ +import QtQuick 2.0 + +Item { + id: root + + property variant slides: [] + property int currentSlide; + + property bool faded: false + + Component.onCompleted: { + var slideCount = 0; + var slides = []; + for (var i=0; i<root.resources.length; ++i) { + var r = root.resources[i]; + if (r.isSlide) { + slides.push(r); + } + } + + root.slides = slides; + + // Make first slide visible... + if (root.slides.length > 0) { + root.currentSlide = 0; + root.slides[root.currentSlide].visible = true; + } + } + + function switchSlides(from, to) { + from.visible = false + to.visible = true + return true + } + + function goToNextSlide() { + if (faded) + return + if (root.currentSlide + 1 < root.slides.length) { + var from = slides[currentSlide] + var to = slides[currentSlide + 1] + if (switchSlides(from, to)) + currentSlide = currentSlide + 1; + } + } + + function goToPreviousSlide() { + if (root.faded) + return + if (root.currentSlide - 1 >= 0) { + var from = slides[currentSlide] + var to = slides[currentSlide - 1] + if (switchSlides(from, to)) + currentSlide = currentSlide - 1; + } + } + + focus: true + + Keys.onSpacePressed: goToNextSlide(); + Keys.onRightPressed: goToNextSlide(); + Keys.onLeftPressed: goToPreviousSlide(); + Keys.onEscapePressed: root.faded = !root.faded; + + Rectangle { + z: 1000 + color: "black" + anchors.fill: parent + opacity: root.faded ? 1 : 0 + Behavior on opacity { NumberAnimation { duration: 250 } } + } + + MouseArea { + id: mouseArea + anchors.fill: parent + onClicked: goToNextSlide() + } + + +} |
