2c1d52a40eb28916ba755d477926e26f9e1b88c9
[profile/ivi/qtdeclarative.git] / tests / testapplications / listview / onRemove.qml
1 /****************************************************************************
2 **
3 ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/
5 **
6 ** This file is part of the test suite of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:BSD$
9 ** You may use this file under the terms of the BSD license as follows:
10 **
11 ** "Redistribution and use in source and binary forms, with or without
12 ** modification, are permitted provided that the following conditions are
13 ** met:
14 **   * Redistributions of source code must retain the above copyright
15 **     notice, this list of conditions and the following disclaimer.
16 **   * Redistributions in binary form must reproduce the above copyright
17 **     notice, this list of conditions and the following disclaimer in
18 **     the documentation and/or other materials provided with the
19 **     distribution.
20 **   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
21 **     the names of its contributors may be used to endorse or promote
22 **     products derived from this software without specific prior written
23 **     permission.
24 **
25 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
36 **
37 ** $QT_END_LICENSE$
38 **
39 ****************************************************************************/
40
41 import QtQuick 2.0
42 import QtQuick.Particles 2.0
43 Item {
44     id: root
45     width: 450; height: 600
46
47     Component {
48         id: viewDelegate
49
50         Rectangle {
51             id: item
52             signal boom
53             Connections {
54                 target: item
55                 onBoom: emitter.burst(1000)
56             }
57
58             width: 225; height: 40
59             border.width: ListView.isCurrentItem ? 3 : 1
60             z: ListView.isCurrentItem ? 100 : 1
61             color: original ? "lightsteelblue" : "yellow"
62             objectName: name
63             Text { x: 10; text: name; font.pixelSize: 20 }
64             MouseArea { anchors.fill: parent; onClicked: listview.currentIndex = index }
65
66             Emitter {
67                 id: emitter
68                 system: ps
69                 anchors.fill: parent
70                 enabled: false
71                 speed: AngleDirection {
72                     angle: 0
73                     angleVariation: 360
74                     magnitude: 50
75                     magnitudeVariation: 50
76                 }
77                 lifeSpan: 2000
78             }
79
80             ListView.onRemove: SequentialAnimation {
81                 PropertyAction { target: item; property: "ListView.delayRemove"; value: true }
82                 PropertyAction { target: item; property: "opacity"; value: 0 }
83                 ScriptAction { script: item.boom() }
84                 PauseAnimation { duration: 1000 }
85                 PropertyAction { target: item; property: "ListView.delayRemove"; value: false }
86             }
87         }
88     }
89
90
91     ListView {
92         id: listview
93         width: 225; height: 500
94         anchors.centerIn: parent
95         delegate: viewDelegate
96         header: Rectangle {
97             height: 50; width: 225
98             color: "blue"
99             Text { anchors.centerIn: parent; text: "Transitions!"; color: "goldenrod" }
100         }
101         model: ListModel {
102             id: a_model
103             ListElement { name: "Item A"; original: true }
104             ListElement { name: "Item B"; original: true }
105             ListElement { name: "Item C"; original: true }
106             ListElement { name: "Item D"; original: true }
107             ListElement { name: "Item E"; original: true }
108             ListElement { name: "Item F"; original: true }
109         }
110         Rectangle {
111             anchors.fill: parent
112             color: "transparent"
113             border.color: "black"
114         }
115
116     }
117
118     ParticleSystem {
119         id: ps
120         ImageParticle {
121             id: imageparticle
122             source: "star.png"
123             color: "blue"
124         }
125     }
126     Column {
127         spacing: 2
128         Rectangle {
129             gradient: Gradient {
130                 GradientStop { position: 0.0; color: "darkgray" }
131                 GradientStop { position: 0.5; color: "lightgray" }
132                 GradientStop { position: 1.0; color: "darkgray" }
133             }
134             radius: 6
135             border.color: "black"
136             height: 50; width: 80
137             Text { anchors.centerIn: parent; text: "+"; font.pixelSize: 25; font.bold: true }
138             MouseArea { anchors.fill: parent; onClicked: listview.model.insert(listview.currentIndex+1, {"name": "New item", "original": false } ) }
139         }
140         Rectangle {
141             gradient: Gradient {
142                 GradientStop { position: 0.0; color: "darkgray" }
143                 GradientStop { position: 0.5; color: "lightgray" }
144                 GradientStop { position: 1.0; color: "darkgray" }
145             }
146             radius: 6
147             border.color: "black"
148             height: 50; width: 80
149             Text { anchors.centerIn: parent; text: "-"; font.pixelSize: 25; font.bold: true }
150             MouseArea { anchors.fill: parent; onClicked: listview.model.remove(listview.currentIndex) }
151         }
152     }
153 }
154
155
156