huge update to qml
[panucci.git] / data / ui / qml / Filechooser.qml
blobd80c817e62f6b1419618865fb956247ee9259964
2 import Qt 4.7
4 Item {
5     id: filechooserArea
6     signal close
7     property variant items: []
8     property variant path: ""
9     property variant action: ""
11     MouseArea {
12         anchors.fill: parent
13     }
14     Rectangle {
15         color: "#" + config.background
16         anchors.fill: parent
17         opacity: .9
18     }
19     ListView {
20         id: filechooserView
21         width: root.width
22         height: root.height - config.button_height - config.button_border_width - config.font_size + 4
23         model: filechooserArea.items
24         clip: true
25         currentIndex: -1
26         header: Item { height: config.font_size }
27         footer: Item { height: config.font_size }
28         
29         highlight: Rectangle { color: "#" + config.progress_color
30                                width: filechooserView.width
31                                height: config.font_size * 3
32                                y: filechooserView.currentItem?filechooserView.currentItem.y:root.height
33                    }
34         highlightFollowsCurrentItem: false
35         
36         delegate: FilechooserItem {
37             property variant item: modelData
38             Image {
39                 x: 10
40                 source: modelData.directory ? "folder.png" : "file.png"
41                 anchors {
42                     verticalCenter: parent.verticalCenter
43                 }
44             }
45             Text {
46                 anchors {
47                     left: parent.left
48                     right: parent.right
49                     verticalCenter: parent.verticalCenter
50                     leftMargin: 40
51                 }
52                 color: "#" + config.foreground
53                 font.pixelSize: config.font_size
54                 text: modelData.caption
55             }
56             onSelected: {
57                 filechooserView.currentIndex = index
58                 filechooserArea.path = modelData.path + "/" + modelData.caption
59                 if (modelData.directory == true) {
60                     filechooserView.currentIndex = -1
61                     main.filechooser_callback("open", filechooserArea.path)
62                     
63                 }
64             }
65         }
66     }
67     Rectangle {
68         width: root.width
69         height: config.font_size * 1.1
70         x: 0
71         y: root.height - config.button_height - textinput.height - config.button_border_width
72         color: "#" + config.progress_bg_color
73     }
74     TextInput {
75         id: textinput
76         width: root.width
77         x: 5
78         y: root.height - config.button_height - textinput.height - config.button_border_width
79         color: "#" + config.foreground
80         font.pixelSize: config.font_size
81         text: filechooserArea.path
82     }
83     Rectangle {
84         x: 0
85         y: root.height - config.button_height
86         color: "#" + config.button_color
87         width: config.button_width
88         height: config.button_height
89         border.color: "#" + config.button_border_color
90         border.width: config.button_border_width
91         radius: config.button_radius
92         smooth: true
94         Image {
95             anchors.centerIn: parent
96             smooth: true
97             source: "home.png"
98         }
99         MouseArea {
100             anchors.fill: parent
101             onClicked: { filechooserView.currentIndex = -1
102                          main.filechooser_callback("open", "~")
103                        }
104         }
105     }
106     Rectangle {
107         x: (config.button_width + config.button_border_width + 2)
108         y: root.height - config.button_height
109         color: "#" + config.button_color
110         width: config.button_width
111         height: config.button_height
112         border.color: "#" + config.button_border_color
113         border.width: config.button_border_width
114         radius: config.button_radius
115         smooth: true
117         Image {
118             anchors.centerIn: parent
119             smooth: true
120             source: "left.png"
121         }
122         MouseArea {
123             anchors.fill: parent
124         }
125     }
126     Rectangle {
127         x: (config.button_width + config.button_border_width + 2) * 2
128         y: root.height - config.button_height
129         color: "#" + config.button_color
130         width: config.button_width
131         height: config.button_height
132         border.color: "#" + config.button_border_color
133         border.width: config.button_border_width
134         radius: config.button_radius
135         smooth: true
137         Image {
138             anchors.centerIn: parent
139             smooth: true
140             source: "right.png"
141         }
142         MouseArea {
143             anchors.fill: parent
144         }
145     }
146     Rectangle {
147         x: (config.button_width + config.button_border_width + 2) * 3
148         y: root.height - config.button_height
149         color: "#" + config.button_color
150         width: config.button_width
151         height: config.button_height
152         border.color: "#" + config.button_border_color
153         border.width: config.button_border_width
154         radius: config.button_radius
155         smooth: true
157         Image {
158             anchors.centerIn: parent
159             smooth: true
160             source: "up.png"
161         }
162         MouseArea {
163             anchors.fill: parent
164             onClicked: { filechooserView.currentIndex = -1
165                          if (filechooserView.currentItem)
166                              main.filechooser_callback("up", filechooserView.currentItem.item.path)
167                          else
168                              main.filechooser_callback("up", filechooserArea.path)
169                        }
170         }
171     }
172     Rectangle {
173         x: (config.button_width + config.button_border_width + 2) * 4
174         y: root.height - config.button_height
175         color: "#" + config.button_color
176         width: config.button_width
177         height: config.button_height
178         border.color: "#" + config.button_border_color
179         border.width: config.button_border_width
180         radius: config.button_radius
181         smooth: true
183         Image {
184             anchors.centerIn: parent
185             smooth: true
186             source: "cancel.png"
187         }
188         MouseArea {
189             anchors.fill: parent
190             onClicked: { filechooserView.currentIndex = -1
191                          filechooserArea.close()
192                        }
193         }
194     }
195     Rectangle {
196         x: (config.button_width + config.button_border_width + 2) * 5
197         y: root.height - config.button_height
198         color: "#" + config.button_color
199         width: config.button_width
200         height: config.button_height
201         border.color: "#" + config.button_border_color
202         border.width: config.button_border_width
203         radius: config.button_radius
204         smooth: true
206         Image {
207             anchors.centerIn: parent
208             smooth: true
209             source: "apply.png"
210         }
211         MouseArea {
212             anchors.fill: parent
213             onClicked: { filechooserArea.close()
214                          filechooserView.currentIndex = -1
215                          main.filechooser_callback(filechooserArea.action, textinput.text)
216                        }
217         }
218     }