1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
|
import QtQuick 2.0
Rectangle {
id: root
width: 500
height: 600
// time to pause between each add, remove, etc.
// (obviously, must be less than 'duration' value to actually test that
// interrupting transitions will still produce the correct result)
property int timeBetweenActions: duration / 2
property int duration: 100
property int count: grid.count
Component {
id: myDelegate
Rectangle {
id: wrapper
objectName: "wrapper"
width: 80
height: 60
border.width: 1
Column {
Text { text: index }
Text {
text: wrapper.x + ", " + wrapper.y
}
Text {
id: textName
objectName: "textName"
text: name
}
}
color: GridView.isCurrentItem ? "lightsteelblue" : "white"
}
}
GridView {
id: grid
property bool populateDone
property bool runningAddTargets: false
property bool runningAddDisplaced: false
property bool runningMoveTargets: false
property bool runningMoveDisplaced: false
property bool runningRemoveTargets: false
property bool runningRemoveDisplaced: false
objectName: "grid"
width: 240
height: 320
cellWidth: 80
cellHeight: 60
anchors.centerIn: parent
cacheBuffer: 0
model: testModel
delegate: myDelegate
add: Transition {
id: addTargets
enabled: enableAddTransitions
SequentialAnimation {
ScriptAction { script: grid.runningAddTargets = true }
ParallelAnimation {
NumberAnimation { properties: "x"; from: addTargets_transitionFrom.x; duration: root.duration }
NumberAnimation { properties: "y"; from: addTargets_transitionFrom.y; duration: root.duration }
}
ScriptAction { script: grid.runningAddTargets = false }
}
}
addDisplaced: Transition {
id: addDisplaced
enabled: enableAddTransitions
SequentialAnimation {
ScriptAction { script: grid.runningAddDisplaced = true }
ParallelAnimation {
NumberAnimation { properties: "x"; from: addDisplaced_transitionFrom.x; duration: root.duration }
NumberAnimation { properties: "y"; from: addDisplaced_transitionFrom.y; duration: root.duration }
}
ScriptAction { script: grid.runningAddDisplaced = false }
}
}
move: Transition {
id: moveTargets
enabled: enableMoveTransitions
SequentialAnimation {
ScriptAction { script: grid.runningMoveTargets = true }
ParallelAnimation {
NumberAnimation { properties: "x"; from: moveTargets_transitionFrom.x; duration: root.duration }
NumberAnimation { properties: "y"; from: moveTargets_transitionFrom.y; duration: root.duration }
}
ScriptAction { script: grid.runningMoveTargets = false }
}
}
moveDisplaced: Transition {
id: moveDisplaced
enabled: enableMoveTransitions
SequentialAnimation {
ScriptAction { script: grid.runningMoveDisplaced = true }
ParallelAnimation {
NumberAnimation { properties: "x"; from: moveDisplaced_transitionFrom.x; duration: root.duration }
NumberAnimation { properties: "y"; from: moveDisplaced_transitionFrom.y; duration: root.duration }
}
ScriptAction { script: grid.runningMoveDisplaced = false }
}
}
remove: Transition {
id: removeTargets
enabled: enableRemoveTransitions
SequentialAnimation {
ScriptAction { script: grid.runningRemoveTargets = true }
ParallelAnimation {
NumberAnimation { properties: "x"; to: removeTargets_transitionTo.x; duration: root.duration }
NumberAnimation { properties: "y"; to: removeTargets_transitionTo.y; duration: root.duration }
}
ScriptAction { script: grid.runningRemoveTargets = false }
}
}
removeDisplaced: Transition {
id: removeDisplaced
enabled: enableRemoveTransitions
SequentialAnimation {
ScriptAction { script: grid.runningRemoveDisplaced = true }
ParallelAnimation {
NumberAnimation { properties: "x"; from: removeDisplaced_transitionFrom.x; duration: root.duration }
NumberAnimation { properties: "y"; from: removeDisplaced_transitionFrom.y; duration: root.duration }
}
ScriptAction { script: grid.runningRemoveDisplaced = false }
}
}
}
Rectangle {
anchors.fill: grid
color: "lightsteelblue"
opacity: 0.2
}
Rectangle {
anchors.bottom: parent.bottom
width: 20; height: 20
color: "white"
NumberAnimation on x { loops: Animation.Infinite; from: 0; to: 300; duration: 100000 }
}
}
|