2021-02-16 17:01:17 +00:00
|
|
|
import QtQuick 2.12
|
2021-03-04 16:26:51 +00:00
|
|
|
import QtQuick.Controls 2.12
|
2021-02-16 17:01:17 +00:00
|
|
|
import QtQuick.Window 2.12
|
|
|
|
|
2021-07-31 13:06:17 +00:00
|
|
|
import QtMultimedia 5.12
|
|
|
|
|
2021-03-24 19:04:03 +00:00
|
|
|
import nl.netsoj.chris.Jellyfin 1.0 as J
|
2021-03-04 16:26:51 +00:00
|
|
|
|
2021-02-16 17:01:17 +00:00
|
|
|
import "components"
|
2021-03-07 15:26:13 +00:00
|
|
|
import ".."
|
2021-03-24 19:04:03 +00:00
|
|
|
import "."
|
2021-02-16 17:01:17 +00:00
|
|
|
|
2021-03-04 16:26:51 +00:00
|
|
|
ApplicationWindow {
|
2021-03-07 15:26:13 +00:00
|
|
|
id: appWindow
|
2021-02-16 17:01:17 +00:00
|
|
|
width: 600
|
|
|
|
height: 600
|
|
|
|
visible: true
|
2021-03-07 15:26:13 +00:00
|
|
|
property int _oldDepth: 0
|
2021-03-29 21:48:16 +00:00
|
|
|
property alias playbackManager: playbackManager
|
|
|
|
|
|
|
|
J.PlaybackManager {
|
|
|
|
id: playbackManager
|
2021-07-31 13:06:17 +00:00
|
|
|
apiClient: ApiClient
|
2021-03-29 21:48:16 +00:00
|
|
|
}
|
2021-02-16 17:01:17 +00:00
|
|
|
|
2021-03-04 16:26:51 +00:00
|
|
|
background: Background {
|
2021-03-07 15:26:13 +00:00
|
|
|
id: background
|
2021-03-04 16:26:51 +00:00
|
|
|
anchors.fill: parent
|
|
|
|
}
|
|
|
|
|
|
|
|
StackView {
|
|
|
|
id: pageStack
|
2021-02-16 17:01:17 +00:00
|
|
|
anchors.fill: parent
|
2021-03-07 15:26:13 +00:00
|
|
|
onDepthChanged: {
|
|
|
|
if (depth >= _oldDepth) {
|
|
|
|
background.enter();
|
|
|
|
} else {
|
|
|
|
background.exit();
|
|
|
|
}
|
|
|
|
_oldDepth = depth
|
|
|
|
}
|
2021-03-19 19:57:04 +00:00
|
|
|
initialItem: Qt.resolvedUrl("pages/MainPage.qml")
|
|
|
|
Keys.onEscapePressed: pop()
|
2021-02-16 17:01:17 +00:00
|
|
|
}
|
2021-03-04 16:26:51 +00:00
|
|
|
|
|
|
|
Connections {
|
|
|
|
target: ApiClient
|
2021-03-28 02:00:00 +00:00
|
|
|
onSetupRequired: { pageStack.replace(Qt.resolvedUrl("pages/setup/ServerSelectPage.qml")); }
|
2021-03-04 16:26:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
Component.onCompleted: {
|
|
|
|
ApiClient.restoreSavedSession()
|
|
|
|
}
|
2021-03-29 21:48:16 +00:00
|
|
|
|
2021-07-31 13:06:17 +00:00
|
|
|
footer: Item {
|
2021-03-29 21:48:16 +00:00
|
|
|
id: footer
|
2021-07-31 13:06:17 +00:00
|
|
|
height: Math.max(details.height, playButtons.height)
|
|
|
|
Column {
|
|
|
|
id: details
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
|
|
Text {
|
|
|
|
text: qsTr("Now playing")
|
|
|
|
color: "white"
|
|
|
|
}
|
|
|
|
Text {
|
|
|
|
text: "%1\n%2".arg(playbackManager.item.name ? playbackManager.item.name : "Nothing").arg(playbackManager.streamUrl)
|
|
|
|
color: "white"
|
|
|
|
}
|
2021-03-29 21:48:16 +00:00
|
|
|
}
|
2021-07-31 13:06:17 +00:00
|
|
|
Row {
|
|
|
|
id: playButtons
|
|
|
|
anchors {
|
|
|
|
verticalCenter: parent.verticalCenter
|
|
|
|
right: parent.right
|
|
|
|
}
|
|
|
|
Button {
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
|
|
text: "Previous"
|
|
|
|
onClicked: playbackManager.previous();
|
|
|
|
}
|
|
|
|
Button {
|
|
|
|
readonly property bool _playing: manager.playbackState === MediaPlayer.PlayingState;
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
|
|
text: _playing ? "Pause" : "Play"
|
|
|
|
onClicked: _playing ? playbackManager.pause() : playbackManager.play()
|
|
|
|
}
|
|
|
|
Button {
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
|
|
text: "Next"
|
|
|
|
onClicked: playbackManager.next();
|
|
|
|
}
|
2021-03-29 21:48:16 +00:00
|
|
|
}
|
2021-07-31 13:06:17 +00:00
|
|
|
|
2021-03-29 21:48:16 +00:00
|
|
|
}
|
|
|
|
Rectangle {
|
|
|
|
color: "darkblue"
|
|
|
|
anchors.fill: footer
|
|
|
|
}
|
2021-02-16 17:01:17 +00:00
|
|
|
}
|