acf20eb0974dd8ec2c5b6e03f7a4bf6c9c602567
[profile/ivi/qtdeclarative.git] / doc / src / snippets / declarative / gridview / gridview.qml
1 /****************************************************************************
2 **
3 ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: http://www.qt-project.org/
6 **
7 ** This file is part of the documentation of the Qt Toolkit.
8 **
9 ** $QT_BEGIN_LICENSE:BSD$
10 ** You may use this file under the terms of the BSD license as follows:
11 **
12 ** "Redistribution and use in source and binary forms, with or without
13 ** modification, are permitted provided that the following conditions are
14 ** met:
15 **   * Redistributions of source code must retain the above copyright
16 **     notice, this list of conditions and the following disclaimer.
17 **   * Redistributions in binary form must reproduce the above copyright
18 **     notice, this list of conditions and the following disclaimer in
19 **     the documentation and/or other materials provided with the
20 **     distribution.
21 **   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
22 **     the names of its contributors may be used to endorse or promote
23 **     products derived from this software without specific prior written
24 **     permission.
25 **
26 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
37 ** $QT_END_LICENSE$
38 **
39 ****************************************************************************/
40
41 //![import]
42 import QtQuick 2.0
43 //![import]
44
45 Rectangle {
46     width: childrenRect.width; height: childrenRect.height
47
48 Row {
49
50 //![classdocs simple]
51 GridView {
52     width: 300; height: 200
53
54     model: ContactModel {}
55     delegate: Column {
56         Image { source: portrait; anchors.horizontalCenter: parent.horizontalCenter }
57         Text { text: name; anchors.horizontalCenter: parent.horizontalCenter }
58     }
59 }
60 //![classdocs simple]
61
62
63 //![classdocs advanced]
64 Rectangle {
65     width: 300; height: 200
66
67     Component {
68         id: contactDelegate
69         Item {
70             width: grid.cellWidth; height: grid.cellHeight
71             Column {
72                 anchors.fill: parent
73                 Image { source: portrait; anchors.horizontalCenter: parent.horizontalCenter }
74                 Text { text: name; anchors.horizontalCenter: parent.horizontalCenter }
75             }
76         }
77     }
78
79     GridView {
80         id: grid
81         anchors.fill: parent
82         cellWidth: 80; cellHeight: 80
83
84         model: ContactModel {}
85         delegate: contactDelegate
86         highlight: Rectangle { color: "lightsteelblue"; radius: 5 }
87         focus: true
88     }
89 }
90 //![classdocs advanced]
91
92 //![delayRemove]
93 Component {
94     id: delegate
95     Item {
96         GridView.onRemove: SequentialAnimation {
97             PropertyAction { target: wrapper; property: "GridView.delayRemove"; value: true }
98             NumberAnimation { target: wrapper; property: "scale"; to: 0; duration: 250; easing.type: Easing.InOutQuad }
99             PropertyAction { target: wrapper; property: "GridView.delayRemove"; value: false }
100         }
101     }
102 }
103 //![delayRemove]
104
105 //![highlightFollowsCurrentItem]
106 Component {
107     id: highlight
108     Rectangle {
109         width: view.cellWidth; height: view.cellHeight
110         color: "lightsteelblue"; radius: 5
111         x: view.currentItem.x
112         y: view.currentItem.y
113         Behavior on x { SpringAnimation { spring: 3; damping: 0.2 } }
114         Behavior on y { SpringAnimation { spring: 3; damping: 0.2 } }
115     }
116 }
117
118 GridView {
119     id: view
120     width: 300; height: 200
121     cellWidth: 80; cellHeight: 80
122
123     model: ContactModel {}
124     delegate: Column {
125         Image { source: portrait; anchors.horizontalCenter: parent.horizontalCenter }
126         Text { text: name; anchors.horizontalCenter: parent.horizontalCenter }
127     }
128
129     highlight: highlight
130     highlightFollowsCurrentItem: false
131     focus: true
132 }
133 //![highlightFollowsCurrentItem]
134
135 //![isCurrentItem]
136 GridView {
137     width: 300; height: 200
138     cellWidth: 80; cellHeight: 80
139
140     Component {
141         id: contactsDelegate
142         Rectangle {
143             id: wrapper
144             width: 80
145             height: 80
146             color: GridView.isCurrentItem ? "black" : "red"
147             Text {
148                 id: contactInfo
149                 text: name + ": " + number
150                 color: wrapper.GridView.isCurrentItem ? "red" : "black"
151             }
152         }
153     }
154
155     model: ContactModel {}
156     delegate: contactsDelegate
157     focus: true
158 }
159 //![isCurrentItem]
160
161 }
162
163 }