mirror of
https://github.com/HenkKalkwater/harbour-sailfin.git
synced 2024-11-14 13:35:17 +00:00
139 lines
5.3 KiB
QML
139 lines
5.3 KiB
QML
import QtQuick 2.6
|
|
import Sailfish.Silica 1.0
|
|
|
|
import nl.netsoj.chris.Jellyfin 1.0 as J
|
|
|
|
import "../../components"
|
|
import "../.."
|
|
|
|
BaseDetailPage {
|
|
id: musicLibraryPage
|
|
property bool _firstTimeLoaded: false
|
|
|
|
onStatusChanged: {
|
|
if (status == PageStatus.Active) {
|
|
_firstTimeLoaded = true
|
|
}
|
|
}
|
|
|
|
SilicaFlickable {
|
|
anchors.fill: parent
|
|
contentHeight: content.height
|
|
|
|
Component {
|
|
id: albumArtistLoaderComponent
|
|
J.AlbumArtistLoader {
|
|
apiClient: appWindow.apiClient
|
|
parentId: itemData.jellyfinId
|
|
autoReload: false
|
|
}
|
|
}
|
|
Component {
|
|
id: albumLoaderComponent
|
|
J.UserItemsLoader {
|
|
apiClient: appWindow.apiClient
|
|
parentId: itemData.jellyfinId
|
|
includeItemTypes: "MusicAlbum"
|
|
recursive: true
|
|
sortBy: "SortName"
|
|
autoReload: false
|
|
}
|
|
}
|
|
Component {
|
|
id: playlistLoaderComponent
|
|
J.UserItemsLoader {
|
|
apiClient: appWindow.apiClient
|
|
parentId: itemData.jellyfinId
|
|
includeItemTypes: "Playlist"
|
|
recursive: true
|
|
sortBy: "SortName"
|
|
autoReload: false
|
|
}
|
|
}
|
|
|
|
Column {
|
|
id: content
|
|
width: parent.width
|
|
|
|
PageHeader {
|
|
title: itemData.name
|
|
}
|
|
|
|
ItemChildrenShowcase {
|
|
//: Header on music library: Recently added music albums
|
|
text: qsTr("Recently added")
|
|
//collapseWhenEmpty: false
|
|
extraBusy: !_firstTimeLoaded
|
|
clickable: false
|
|
loader: J.LatestMediaLoader {
|
|
apiClient: appWindow.apiClient
|
|
parentId: itemData.jellyfinId
|
|
autoReload: _firstTimeLoaded && itemData.jellyfinId.length > 0
|
|
includeItemTypes: "Audio"
|
|
limit: 12
|
|
}
|
|
|
|
}
|
|
|
|
ItemChildrenShowcase {
|
|
text: qsTr("Albums")
|
|
//collapseWhenEmpty: false
|
|
extraBusy: !_firstTimeLoaded
|
|
loader: J.UserItemsLoader {
|
|
apiClient: appWindow.apiClient
|
|
parentId: itemData.jellyfinId
|
|
includeItemTypes: "MusicAlbum"
|
|
autoReload: _firstTimeLoaded && itemData.jellyfinId.length > 0
|
|
sortBy: "Random"
|
|
recursive: true
|
|
limit: 12
|
|
}
|
|
onHeaderClicked: pageStack.push(Qt.resolvedUrl("CollectionPage.qml"), {
|
|
"loader": albumLoaderComponent.createObject(musicLibraryPage),
|
|
//: Page title for the list of all albums within the music library
|
|
"pageTitle": qsTr("Albums")
|
|
})
|
|
}
|
|
|
|
ItemChildrenShowcase {
|
|
text: qsTr("Playlists")
|
|
//collapseWhenEmpty: false
|
|
extraBusy: !_firstTimeLoaded
|
|
loader: J.UserItemsLoader {
|
|
apiClient: appWindow.apiClient
|
|
parentId: itemData.jellyfinId
|
|
includeItemTypes: "Playlist"
|
|
autoReload: _firstTimeLoaded && itemData.jellyfinId.length > 0
|
|
sortBy: "Random"
|
|
recursive: true
|
|
limit: 12
|
|
}
|
|
onHeaderClicked: pageStack.push(Qt.resolvedUrl("CollectionPage.qml"), {
|
|
"loader": playlistLoaderComponent.createObject(musicLibraryPage),
|
|
//: Page title for the list of all playlists within the music library
|
|
"pageTitle": qsTr("Playlists")
|
|
})
|
|
}
|
|
|
|
ItemChildrenShowcase {
|
|
//: Header for music artists
|
|
text: qsTr("Artists")
|
|
//collapseWhenEmpty: false
|
|
extraBusy: !_firstTimeLoaded
|
|
loader: J.AlbumArtistLoader {
|
|
apiClient: appWindow.apiClient
|
|
parentId: itemData.jellyfinId
|
|
autoReload: _firstTimeLoaded && itemData.jellyfinId.length > 0
|
|
limit: 12
|
|
}
|
|
onHeaderClicked: pageStack.push(Qt.resolvedUrl("CollectionPage.qml"), {
|
|
"loader": albumArtistLoaderComponent.createObject(musicLibraryPage),
|
|
"allowSort": false,
|
|
//: Page title for the list of all artists within the music library
|
|
"pageTitle": qsTr("Artists")
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|