X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=remote%2Fqml%2Fpages%2FBrowsePage.qml;h=2a3a123363f5c8f781bc250fcdfcddb3170110d1;hb=afa557f5c0b0debaaaf6c4c777ccc2ba10965c50;hp=f85388098409e48e9d104827ebef3cbd173fc223;hpb=6fd809bbdbfe628ef1e63b68665f374751838baf;p=xinema.git diff --git a/remote/qml/pages/BrowsePage.qml b/remote/qml/pages/BrowsePage.qml index f853880..2a3a123 100644 --- a/remote/qml/pages/BrowsePage.qml +++ b/remote/qml/pages/BrowsePage.qml @@ -1,88 +1,90 @@ 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 @@ -91,20 +93,32 @@ Page 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: "/" } }