9f57bf4f53f0569225a509de97c81f97e0addeb0
[profile/ivi/qtdeclarative.git] / examples / tutorials / gettingStartedQml / core / FileDialog.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 QtDeclarative module 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 QtQuick 2.0
42
43 Rectangle {
44     id:dialog
45     height: 200 * partition; width: 200
46     color: "transparent"
47
48     signal selectChanged()
49     signal notifyRefresh()
50     onNotifyRefresh:dirView.model = directory.files
51
52     property string selectedFile
53     property int selectedIndex: 0
54
55     Rectangle {
56         id: dirBox
57         radius: 10
58         anchors.centerIn:parent
59         height: parent.height -15; width: parent.width -30
60
61         Rectangle {
62             id:header
63             height: parent.height*0.1; width: parent.width
64             radius:3
65             z:1
66             gradient: Gradient {
67                 GradientStop { position: 0.0; color: "#8C8F8C" }
68                 GradientStop { position: 0.17; color: "#6A6D6A" }
69                 GradientStop { position: 0.98;color: "#3F3F3F" }
70                 GradientStop { position: 1.0; color: "#0e1B20" }
71             }
72             Text {
73                 height: header.height; anchors.centerIn: header
74                 text: "files:" 
75                 color: "lightblue"
76                 font.weight: Font.Light
77                 font.italic: true
78             }
79         }
80         GridView {
81             id:dirView
82             width:parent.width; height:parent.height*.9
83             anchors.top: header.bottom
84             cellWidth: 100; cellHeight: 75
85             model: directory.files
86             delegate: dirDelegate
87             clip: true
88             highlightMoveDuration: 40
89         }
90         Component {
91             id: dirDelegate
92             Rectangle {
93                 id:file
94                 color: "transparent"
95                 width: GridView.view.cellWidth; height: GridView.view.cellHeight
96
97                 Text {
98                     id:fileName
99                     width: parent.width
100                     anchors.centerIn: parent
101                     text: name
102                     color: "#BDCACD"
103                     font.weight: GridView.view.currentIndex == index ?  Font.DemiBold : Font.Normal
104                     font.pointSize: GridView.view.currentIndex == index ?  12 : 10
105                     elide: Text.ElideMiddle
106                     horizontalAlignment: Text.AlignHCenter
107                 }
108                 Rectangle {
109                     id: selection
110                     width: parent.width; height: parent.height
111                     anchors.centerIn: parent
112                     radius: 10
113                     smooth: true
114                     scale: GridView.view.currentIndex == index ?  1 : 0.5
115                     opacity: GridView.view.currentIndex == index ?  1 : 0
116                     Text {
117                         id: overlay
118                         width: parent.width
119                         anchors.centerIn: parent
120                         text: name
121                         color: "#696167"
122                         font.weight: Font.DemiBold
123                         font.pointSize: 12
124                         smooth: true
125                         elide: Text.ElideMiddle
126                         horizontalAlignment: Text.AlignHCenter
127                     }
128                     Behavior on opacity { NumberAnimation{ duration: 45 } }
129                     Behavior on scale { NumberAnimation{ duration: 45 } }
130                     gradient: Gradient {
131                         GradientStop { position: 0.0; color: Qt.lighter("lightsteelblue",1.25) }
132                         GradientStop { position: 0.67; color: Qt.darker("lightsteelblue",1.3) }
133                     }
134                     border.color: "lightsteelblue"
135                     border.width: 1
136                 }
137                 MouseArea {
138                     id:fileMouseArea
139                     anchors.fill:parent
140                     hoverEnabled: true
141
142                     onClicked: {
143                         GridView.view.currentIndex = index
144                         selectedFile = directory.files[index].name
145                         selectChanged()
146                     }
147                     onEntered: {
148                             fileName.color = "lightsteelblue"
149                             fileName.font.weight = Font.DemiBold
150                         }
151                     onExited: {
152                             fileName.font.weight = Font.Normal
153                             fileName.color = "#BDCACD"
154                         }
155                 }
156             }
157         }
158         gradient: Gradient {
159             GradientStop { position: 0.0; color: "#A5333333" }
160             GradientStop { position: 1.0; color: "#03333333" }
161         }
162     }
163 }