]> git.tdb.fi Git - xinema.git/blob - remote/qml/pages/BrowsePage.qml
d1b74e606b7f1b34983c78be4532b27692adeece
[xinema.git] / remote / qml / pages / BrowsePage.qml
1 import QtQuick 2.0
2 import Sailfish.Silica 1.0
3 import fi.mikkosoft.xinema 0.1
4
5 Page
6 {
7         id: page
8
9         function navigate(dir)
10         {
11                 var newDir = browseDirectory.directory;
12                 if(newDir!="/")
13                         newDir += "/";
14                 newDir += dir;
15                 browseDirectory.directory = newDir;
16         }
17
18         function navigateUp()
19         {
20                 var newDir = browseDirectory.directory;
21                 var slash = newDir.lastIndexOf("/");
22                 if(slash>0)
23                         newDir = newDir.substring(0, slash);
24                 else
25                         newDir = "/";
26                 browseDirectory.directory = newDir;
27         }
28
29         SilicaListView
30         {
31                 anchors.fill: parent
32
33                 PullDownMenu
34                 {
35                         MenuItem
36                         {
37                                 text: "Set as default location"
38                         }
39
40                         MenuItem
41                         {
42                                 visible: streamControl.title
43                                 text: streamControl.title
44
45                                 onClicked: pageStack.push("PlaybackPage.qml");
46                         }
47                 }
48
49                 header: PageHeader
50                 {
51                         title: qsTr("Browse files")
52                 }
53
54                 model: browseDirectory.model
55
56                 delegate: DirectoryEntry
57                 {
58                         width: parent.width
59
60                         icon:
61                         {
62                                 if(type==DirectoryModel.ParentDir)
63                                         return "image://theme/icon-m-back";
64                                 else if(type==DirectoryModel.SubDir)
65                                         return "image://theme/icon-m-folder";
66                                 else
67                                         return "";
68                         }
69
70                         text: name
71
72                         onClicked:
73                         {
74                                 if(type==DirectoryModel.File)
75                                         xinemaControl.play_file(browseDirectory.directory+"/"+name);
76                                 else if(type==DirectoryModel.ParentDir)
77                                         page.navigateUp();
78                                 else if(type==DirectoryModel.SubDir)
79                                         page.navigate(name);
80                         }
81                 }
82
83                 VerticalScrollDecorator { }
84         }
85
86         BrowseDirectory
87         {
88                 id: browseDirectory
89                 control: xinemaControl
90         }
91
92         Component.onCompleted:
93         {
94                 if(xinemaControl.connected)
95                         browseDirectory.directory = "/";
96         }
97
98         StreamControl
99         {
100                 id: streamControl
101                 control: xinemaControl
102                 onPlaybackStateChanged:
103                 {
104                         if(playbackState==StreamControl.Playing)
105                         {
106                                 if(pageContainer.busy)
107                                         pageContainer.completeAnimation();
108                                 pageStack.push("PlaybackPage.qml");
109                         }
110                 }
111         }
112 }
113