]> git.tdb.fi Git - xinema.git/blobdiff - remote/qml/pages/BrowsePage.qml
Overhaul BrowsePage to look and feel better
[xinema.git] / remote / qml / pages / BrowsePage.qml
index f85388098409e48e9d104827ebef3cbd173fc223..cfd518b02412acdc3c82e59894538a7fb871824b 100644 (file)
@@ -6,83 +6,65 @@ 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
+               header: PageHeader
                {
-                       id: column
+                       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
-                       {
-                               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
+                       text: name
 
-                                               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");
-                                               }
-                                       }
-                               }
+                       onClicked:
+                       {
+                               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