PlaylistsView.qml 3.94 KB
Newer Older
1 2 3
import QtQuick 2.9
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.2
4
import org.kde.kirigami 2.2 as Kirigami
5 6 7

import "../../view_models/BabeTable"
import "../../view_models"
Camilo Higuita's avatar
Camilo Higuita committed
8
import "../../db/Queries.js" as Q
9 10


11 12 13 14 15 16 17
//    transform: Translate
//    {
//        x: (playlistViewDrawer.position * playlistViewRoot.width * 0.33)*-1
//    }

Kirigami.PageRow
{
18
    id: playlistViewRoot
Camilo Higuita's avatar
Camilo Higuita committed
19
    property string playlistQuery
20 21 22

    signal rowClicked(var track)
    signal quickPlayTrack(var track)
Camilo Higuita's avatar
Camilo Higuita committed
23 24
    signal playAll(var tracks)
    signal appendAll(var tracks)
25

Camilo Higuita's avatar
Camilo Higuita committed
26
    clip: true
27 28 29
    separatorVisible: wideMode
    initialPage:[playlistList, playlistViewDrawer]
    defaultColumnWidth: Kirigami.Units.gridUnit * 15
30 31
    interactive: false      

Camilo Higuita's avatar
Camilo Higuita committed
32
    Page
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
    {
        id: playlistList
        ColumnLayout
        {
            anchors.fill: parent
            spacing: 0
            Layout.margins: 0

            PlaylistsViewModel
            {
                id: playlistViewModel

                Layout.fillHeight: true
                Layout.fillWidth: true

            }

            ColorTagsBar
            {
                Layout.fillWidth: true
53 54
                height: rowHeightAlt
                recSize: toolBarIconSize
55 56 57 58
                Rectangle
                {
                    anchors.fill: parent
                    z: -999
59
                    color:midColor
60
                }
Camilo Higuita's avatar
Camilo Higuita committed
61 62 63 64 65 66
                onColorClicked:
                {
                    populate(Q.GET.colorTracks_.arg(color))
                    if(!playlistViewRoot.wideMode)
                        playlistViewRoot.currentIndex = 1
                }
67 68 69 70 71 72 73 74
            }


        }
    }


    Page
75 76
    {
        id: playlistViewDrawer
77 78 79 80 81 82 83 84
        anchors.fill: parent
        //        y: root.header.height
        //        height: parent.height - root.header.height - root.footer.height
        //        width: root.isMobile ? parent.width : parent.width* 0.7
        //        edge: Qt.RightEdge
        //        interactive: true
        //        focus: true
        //        modal: isMobile
85

86 87
        //        modal: !root.wideScreen
        //        onModalChanged: drawerOpen = !modal
88 89 90

        background: Rectangle
        {
91
            color: altColor
92 93 94 95 96 97 98 99 100
        }

        BabeTable
        {
            id: filterList
            width: parent.width
            height: parent.height
            quickPlayVisible: true
            coverArtVisible: true
101 102
            trackRating: true
            trackDuration: false
103
            headerBar: true
104
            headerClose: !playlistViewRoot.wideMode
Camilo Higuita's avatar
Camilo Higuita committed
105
            headerTitle: playlistViewRoot.wideMode ? "" : playlistViewModel.model.get(playlistViewModel.currentIndex).playlist
106 107 108
            onHeaderClosed: if(!playlistViewRoot.wideMode)
                                playlistViewRoot.currentIndex = 0

109
            holder.message:  "<h2>"+playlistViewModel.model.get(playlistViewModel.currentIndex).playlist+"</h2><p>Your playlist is empty, start adding new music to it</p>"
Camilo Higuita's avatar
Camilo Higuita committed
110
            holder.emoji: "qrc:/assets/face-hug.png"
111 112 113 114 115 116 117 118 119

            Connections
            {
                target: filterList
                onRowClicked: playlistViewRoot.rowClicked(filterList.model.get(index))
                onQuickPlayTrack:
                {
                    playlistViewRoot.quickPlayTrack(filterList.model.get(index))
                }
Camilo Higuita's avatar
Camilo Higuita committed
120 121
                onPlayAll: playAll(bae.get(playlistQuery))
                onAppendAll: appendAll(bae.get(playlistQuery))
122 123 124 125 126 127 128 129 130
            }
        }

    }



    function populate(query)
    {
Camilo Higuita's avatar
Camilo Higuita committed
131
        playlistQuery = query
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
        filterList.clearTable()

        var tracks = bae.get(query)

        if(tracks.length>0)
            for(var i in tracks)
                filterList.model.append(tracks[i])

    }

    Component.onCompleted:
    {
        var playlists = bae.get("select * from playlists order by addDate desc")
        if(playlists.length > 0)
            for(var i in playlists)
                playlistViewModel.model.append(playlists[i])
    }
}