Initial import from the monolithic Qt.
[profile/ivi/qtdeclarative.git] / examples / tutorials / gettingStarted / gsQml / parts / part5 / core / FileDialog.qml
1 /****************************************************************************
2 **
3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
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 1.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
64             width: parent.width
65             radius:3
66             z:1
67             gradient: Gradient {
68                 GradientStop { position: 0.0; color: "#8C8F8C" }
69                 GradientStop { position: 0.17; color: "#6A6D6A" }
70                 GradientStop { position: 0.98;color: "#3F3F3F" }
71                 GradientStop { position: 1.0; color: "#0e1B20" }
72             }
73             Text{
74                 height: header.height
75                 anchors.centerIn: header
76                 text: "files:" 
77                 color: "lightblue"
78                 font.weight: Font.Light
79                 font.italic: true
80             }
81         }
82         GridView{
83             id:dirView
84             width:parent.width
85             height:parent.height*.9
86             anchors.top: header.bottom
87             cellWidth: 100
88             cellHeight: 75
89 //             highlight: Rectangle { width:cellWidth; height: cellHeight; color: "lightsteelblue" ;radius: 13}
90             model: directory.files
91             delegate: dirDelegate
92             clip: true
93             highlightMoveDuration:40
94         }
95
96         Component{
97             id:dirDelegate
98             
99             Rectangle{
100                 id:file
101                 color: "transparent"
102                 width: GridView.view.cellWidth; height: GridView.view.cellHeight
103
104                 Text{
105                     id:fileName
106                     width: parent.width
107                     anchors.centerIn:parent
108                     text: name
109                     color: "#BDCACD"
110                     font.weight: GridView.view.currentIndex == index ?  Font.DemiBold : Font.Normal
111                     font.pointSize: GridView.view.currentIndex == index ?  12 : 10
112                     elide: Text.ElideMiddle
113                     horizontalAlignment: Text.AlignHCenter
114                 }
115                 Rectangle{
116                     id:selection
117                     width:parent.width; height:parent.height
118                     anchors.centerIn: parent
119                     radius: 10
120                     smooth: true
121                     scale: GridView.view.currentIndex == index ?  1 : 0.5
122                     opacity: GridView.view.currentIndex == index ?  1 : 0
123                     Text{
124                         id:overlay
125                         width: parent.width
126                         anchors.centerIn:parent
127                         text: name
128                         color: "#696167"
129                         font.weight: Font.DemiBold
130                         font.pointSize: 12
131                         smooth:true
132                         elide: Text.ElideMiddle
133                         horizontalAlignment: Text.AlignHCenter
134                     }
135                     Behavior on opacity{ NumberAnimation{ duration: 45} }
136                     Behavior on scale { NumberAnimation{ duration: 45} }
137                     gradient: Gradient {
138                         GradientStop { position: 0.0; color: Qt.lighter("lightsteelblue",1.25) }
139                         GradientStop { position: 0.67; color: Qt.darker("lightsteelblue",1.3) }
140                     }
141                     border.color:"lightsteelblue"
142                     border.width:1
143                 }
144                 MouseArea{
145                     id:fileMouseArea
146                     anchors.fill:parent
147                     hoverEnabled: true
148                     
149                     onClicked:{
150                         GridView.view.currentIndex = index
151                         selectedFile = directory.files[index].name
152                         selectChanged()
153                     }
154                     onEntered:{     
155                             fileName.color = "lightsteelblue"
156                             fileName.font.weight = Font.DemiBold
157                         }
158                     onExited: {     
159                             fileName.font.weight = Font.Normal
160                             fileName.color = "#BDCACD"
161                         }
162                 }
163             }
164         }
165         gradient: Gradient{
166             GradientStop { position: 0.0; color: "#A5333333" }
167             GradientStop { position: 1.0; color: "#03333333" }
168         }
169     }
170 }