1 import QtQuick 1.0 // to target S60 5th Edition or Maemo 5
3 import "UIConstants.js" as Const
5 import Qt.labs.folderlistmodel 1.0
10 property string currentFilePath: fileSelector.currentFilePath
11 property bool load: fileSelector.load
12 property alias folder: folderModel.folder
13 property bool folderOnly: true
15 signal folderSelected(string folder)
16 signal fileSelected(string folder, string file)
18 function fixPath(path) {
19 path = path.toString();
20 var ind = path.lastIndexOf("/");
22 path = path.substr(ind+1);
24 if(path=="") path = "/";
36 anchors.left: root.left; anchors.right: root.right
41 property string currentFilePath: folderModel.folder
42 property bool load: true
43 property string folder: folderModel.folder
45 color: Const.DEFAULT_DIALOG_BACKGROUND_COLOR
47 function setFolder(folder) {
48 folderAnimation.folderToChange = folder;
49 folderAnimation.start();
55 height: currentFolderButton.height+2*Const.DEFAULT_MARGIN
56 anchors.top: parent.top
58 color: Const.LIGHT_AUBERGINE_COLOR
61 id: currentFolderButton
62 anchors.margins: Const.DEFAULT_MARGIN
63 anchors.left: parent.left
64 anchors.verticalCenter: parent.verticalCenter
65 text: fixPath(folderModel.folder)
66 width: pathController.width-folderUpButton.width-cancelButton.width-4*Const.DEFAULT_MARGIN
67 height: folderUpButton.height
68 onClicked: root.folderSelected(folderModel.folder)
69 disabled: !root.folderOnly
73 anchors.margins: Const.DEFAULT_MARGIN
74 anchors.right: cancelButton.left
75 anchors.verticalCenter: parent.verticalCenter
77 iconSource: "images/up.png"
78 onButtonClicked: fileSelector.setFolder(folderModel.parentFolder);
83 anchors.margins: Const.DEFAULT_MARGIN
84 anchors.right: parent.right
85 anchors.verticalCenter: parent.verticalCenter
87 iconSource: "images/close.png"
97 y: pathController.height
102 id: folderModelContainer
104 anchors.top: pathController.bottom;
105 anchors.bottom: parent.bottom
106 color: Const.TRANSPARENT
111 nameFilters: root.folderOnly ? [""] : ["*"]
115 id: folderModelDelegate
120 visible: root.folderOnly? folderModel.isFolder(index) : true
122 isDirectory: folderModel.isFolder(index)
125 fileSelector.setFolder(filePath);
127 root.fileSelected(folderModel.folder,text)
130 Component.onCompleted: {
131 var ind = text.lastIndexOf(".");
133 if(ind>=0) ext = text.substr(ind+1);
134 if(ext=="jpg" || ext=="JPG" || ext=="Jpg" ||
135 ext=="jpeg" || ext=="JPEG" || ext=="Jpeg" ||
136 ext=="gif" || ext=="GIF" || ext=="Gif" ||
137 ext=="svg" || ext=="SVG" || ext=="Svg" ||
138 ext=="png" || ext=="PNG" || ext=="Png") {
141 if(ext=="mp3" || ext=="MP3" || ext=="Mp3" ||
142 ext=="wma" || ext=="WMA" || ext=="Wma" ||
143 ext=="wav" || ext=="WAV" || ext=="Wav" ||
144 ext=="ogg" || ext=="OGG" || ext=="Ogg" ||
145 ext=="acc" || ext=="ACC" || ext=="Acc" ||
146 ext=="flac" || ext=="FLAC" || ext=="Flac") {
149 if(ext=="avi" || ext=="AVI" || ext=="Avi" ||
150 ext=="mp4" || ext=="MP4" || ext=="Mp4" ||
151 ext=="mpg" || ext=="MPG" || ext=="Mpg" ||
152 ext=="mkv" || ext=="MKV" || ext=="Mkv" ||
153 ext=="flv" || ext=="FLV" || ext=="Flv" ||
154 ext=="3gp" || ext=="3GP") {
169 delegate: folderModelDelegate
171 SequentialAnimation {
174 property string folderToChange
176 PropertyAnimation { target: folderModelView; property: "opacity"; to: 0; duration: 100 }
177 PropertyAction { target: folderModel; property: "folder"; value: folderAnimation.folderToChange }
178 PropertyAnimation { target: folderModelView; property: "opacity"; to: 1.0; duration: 100 }