summaryrefslogtreecommitdiffstats
path: root/Qt/labs/presentation/Presentation.qml
diff options
context:
space:
mode:
Diffstat (limited to 'Qt/labs/presentation/Presentation.qml')
-rw-r--r--Qt/labs/presentation/Presentation.qml80
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()
+ }
+
+
+}