import QtQuick 2.0
import Sailfish.Silica 1.0
+import org.nemomobile.configuration 1.0
import fi.mikkosoft.xinema 0.1
+import "../components"
Page
{
id: page
- SilicaFlickable
+ function navigate(dir)
+ {
+ var newDir = browseDirectory.directory;
+ if(newDir!="/")
+ newDir += "/";
+ newDir += dir;
+ browseDirectory.directory = newDir;
+ }
+
+ function navigateUp()
+ {
+ var newDir = browseDirectory.directory;
+ var slash = newDir.lastIndexOf("/");
+ if(slash>0)
+ newDir = newDir.substring(0, slash);
+ else
+ newDir = "/";
+ browseDirectory.directory = newDir;
+ }
+
+ SilicaListView
{
anchors.fill: parent
- contentHeight: column.height
- Column
+ PullDownMenu
{
- id: column
+ MenuItem
+ {
+ text: "Set as default location"
+
+ onClicked: defaultLocation.value = browseDirectory.directory
+ }
+
+ MenuItem
+ {
+ visible: streamControl.title
+ text: streamControl.title
+
+ onClicked: pageStack.push("PlaybackPage.qml");
+ }
+ }
+ header: PageHeader
+ {
+ title: qsTr("Browse files")
+ }
+
+ model: browseDirectory.model
+
+ delegate: DirectoryEntry
+ {
width: parent.width
- spacing: Theme.paddingLarge
- PageHeader
+ icon:
{
- title: qsTr("Browse files")
+ if(type==DirectoryModel.ParentDir)
+ return "image://theme/icon-m-back";
+ else if(type==DirectoryModel.SubDir)
+ return "image://theme/icon-m-folder";
+ else
+ return "";
}
- // This really should be SilicaListView, but I can't figure out an
- // easy way to turn the string lists into a suitable ListModel
- Column
+ text: name
+
+ onClicked:
{
- width: parent.width
- spacing: Theme.paddingSmall
-
- DirectoryEntry
- {
- visible: browseDirectory.directory!="/"
- icon: "image://theme/icon-m-back"
- text: ".."
- onPressed:
- {
- var newDir = browseDirectory.directory;
- var slash = newDir.lastIndexOf("/");
- if(slash>0)
- newDir = newDir.substring(0, slash);
- else
- newDir = "/";
- browseDirectory.directory = newDir;
- }
- }
-
- Repeater
- {
- model: browseDirectory.subdirectories
-
- DirectoryEntry
- {
- icon: "image://theme/icon-m-folder"
- text: modelData
-
- onPressed:
- {
- var newDir = browseDirectory.directory;
- if(newDir!="/")
- newDir += "/";
- newDir += modelData;
- browseDirectory.directory = newDir;
- }
- }
- }
-
- Repeater
- {
- model: browseDirectory.files
- DirectoryEntry
- {
- text: modelData
-
- onPressed:
- {
- xinemaControl.play_file(browseDirectory.directory+"/"+modelData);
- pageStack.replace("PlaybackPage.qml");
- }
- }
- }
+ if(type==DirectoryModel.File)
+ xinemaControl.play_file(browseDirectory.directory+"/"+name);
+ else if(type==DirectoryModel.ParentDir)
+ page.navigateUp();
+ else if(type==DirectoryModel.SubDir)
+ page.navigate(name);
}
}
+
+ VerticalScrollDecorator { }
}
BrowseDirectory
control: xinemaControl
}
- Connections
+ Component.onCompleted:
{
- target: xinemaControl
- onConnectedChanged:
+ if(xinemaControl.connected)
+ browseDirectory.directory = defaultLocation.value;
+ }
+
+ StreamControl
+ {
+ id: streamControl
+ control: xinemaControl
+ onPlaybackStateChanged:
{
- if(xinemaControl.connected)
- browseDirectory.directory = "/";
+ if(playbackState==StreamControl.Playing && pageContainer.currentPage==page)
+ {
+ if(pageContainer.busy)
+ pageContainer.completeAnimation();
+ pageStack.push("PlaybackPage.qml");
+ }
}
}
- Component.onCompleted:
+ ConfigurationValue
{
- if(xinemaControl.connected)
- browseDirectory.directory = "/";
+ id: defaultLocation
+ key: "/fi/mikkosoft/xinema-remote/defaultLocation"
+ defaultValue: "/"
}
}