aboutsummaryrefslogtreecommitdiffstats
path: root/tests/manual/delegatemodel/slideshow.qml
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual/delegatemodel/slideshow.qml')
-rw-r--r--tests/manual/delegatemodel/slideshow.qml158
1 files changed, 158 insertions, 0 deletions
diff --git a/tests/manual/delegatemodel/slideshow.qml b/tests/manual/delegatemodel/slideshow.qml
new file mode 100644
index 0000000000..29591e06fe
--- /dev/null
+++ b/tests/manual/delegatemodel/slideshow.qml
@@ -0,0 +1,158 @@
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+import QtQuick
+import QtQml.Models
+import shared as Shared
+
+pragma ComponentBehavior: Bound
+
+Rectangle {
+ id: root
+
+ property Item displayItem: null
+
+ width: 300
+ height: 400
+
+ color: "black"
+
+ Shared.FlickrRssModel {
+ id: flickrModel
+ tags: "fjords,mountains"
+ }
+ DelegateModel {
+ id: visualModel
+
+ model: flickrModel
+ delegate: Item {
+ id: delegateItem
+
+ width: 76
+ height: 76
+
+ required property string thumbnail
+
+ Rectangle {
+ id: image
+ x: 0
+ y: 0
+ width: 76
+ height: 76
+ border.width: 1
+ border.color: "white"
+ color: "black"
+
+ Image {
+ anchors.fill: parent
+ anchors.leftMargin: 1
+ anchors.topMargin: 1
+
+ source: delegateItem.thumbnail
+ fillMode: Image.PreserveAspectFit
+ }
+
+ MouseArea {
+ id: clickArea
+ anchors.fill: parent
+
+ onClicked: root.displayItem = root.displayItem !== delegateItem ? delegateItem : null
+ }
+
+ states: [
+ State {
+ when: root.displayItem === delegateItem
+ name: "inDisplay";
+ ParentChange {
+ target: image
+ parent: imageContainer
+ x: 75
+ y: 75
+ width: 150
+ height: 150
+ }
+ PropertyChanges {
+ image.z: 2
+ delegateItem.DelegateModel.inItems: false
+ }
+ },
+ State {
+ when: root.displayItem !== delegateItem
+ name: "inList";
+ ParentChange {
+ target: image
+ parent: delegateItem
+ x: 2
+ y: 2
+ width: 75
+ height: 75
+ }
+ PropertyChanges {
+ image.z: 1
+ delegateItem.DelegateModel.inItems: true
+ }
+ }
+ ]
+
+ transitions: [
+ Transition {
+ from: "inList"
+ SequentialAnimation {
+ PropertyAction {
+ target: delegateItem
+ property: "DelegateModel.inPersistedItems"
+ value: true
+ }
+ ParentAnimation {
+ target: image;
+ via: root
+ NumberAnimation {
+ target: image
+ properties: "x,y,width,height"
+ duration: 1000
+ }
+ }
+ }
+ }, Transition {
+ from: "inDisplay"
+ SequentialAnimation {
+ ParentAnimation {
+ target: image
+ NumberAnimation {
+ target: image
+ properties: "x,y,width,height"
+ duration: 1000
+ }
+ }
+ PropertyAction {
+ target: delegateItem
+ property: "DelegateModel.inPersistedItems"
+ value: false
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+
+
+ PathView {
+ id: imagePath
+
+ anchors { left: parent.left; top: imageContainer.bottom; right: parent.right; bottom: parent.bottom }
+ model: visualModel
+
+ pathItemCount: 7
+ path: Path {
+ startX: -50; startY: 0
+ PathQuad { x: 150; y: 50; controlX: 0; controlY: 50 }
+ PathQuad { x: 350; y: 0; controlX: 300; controlY: 50 }
+ }
+ }
+
+ Item {
+ id: imageContainer
+ anchors { fill: parent; bottomMargin: 100 }
+ }
+}