mirror of
https://github.com/HenkKalkwater/harbour-sailfin.git
synced 2025-09-06 10:32:44 +00:00
core: Split PlaybackManager up into smaller parts
The PlaybackManager was a giant class that handled UI bindings, fetching stream URLS, playback logic. It now has been split up into: - ViewModel::PlaybackManager, which handles UI interfacing and allowing to swap out the Model::Playback implementation on the fly. - Model::PlaybackManager, which is an interface for what a PlaybackManager must do, handling queues/playlists, and controlling a player. - Model::LocalPlaybackManager, which is an Model::PlaybackManager implementation for playing back Jellyfin media within the application. - Model::PlaybackReporter, which reports the current playback state to the Jellyfin server, for keeping track of played items. - Model::Player, which handles playing back media from an URL and the usual play/pause et cetera. In a future commit, this would allow for introducing a Model::RemoteJellyfinPlaybackManager, to control other Jellyfin instances.
This commit is contained in:
parent
f91e9f88e7
commit
c72c10bad4
20 changed files with 1916 additions and 684 deletions
|
@ -42,6 +42,7 @@ SilicaItem {
|
|||
property int subtitleTrack: 0
|
||||
//FIXME: Once QTBUG-10822 is resolved, change to J.PlaybackManager
|
||||
property var manager;
|
||||
onManagerChanged: console.log(manager.player)
|
||||
|
||||
// Blackground to prevent the ambience from leaking through
|
||||
Rectangle {
|
||||
|
@ -53,6 +54,9 @@ SilicaItem {
|
|||
id: videoOutput
|
||||
source: manager
|
||||
anchors.fill: parent
|
||||
Component.onCompleted: {
|
||||
console.log(manager.player)
|
||||
}
|
||||
}
|
||||
|
||||
VideoHud {
|
||||
|
@ -71,14 +75,16 @@ SilicaItem {
|
|||
Label {
|
||||
readonly property string _playbackMethod: {
|
||||
switch(manager.playMethod) {
|
||||
case J.PlaybackManager.DirectPlay:
|
||||
return"Direct Play"
|
||||
case J.PlaybackManager.Transcoding:
|
||||
case J.PlayMethod.EnumNotSet:
|
||||
return "Enum not set"
|
||||
case J.PlayMethod.DirectPlay:
|
||||
return "Direct Play"
|
||||
case J.PlayMethod.Transcode:
|
||||
return "Transcoding"
|
||||
case J.PlaybackManager.DirectStream:
|
||||
case J.PlayMethod.DirectStream:
|
||||
return "Direct Stream"
|
||||
default:
|
||||
return "Unknown playback method"
|
||||
return "Unknown playback method '%1'".arg(manager.playMethod)
|
||||
}
|
||||
}
|
||||
anchors.fill: parent
|
||||
|
@ -86,6 +92,7 @@ SilicaItem {
|
|||
text: item.jellyfinId + "\n" + appWindow.playbackManager.streamUrl + "\n"
|
||||
+ "Playback method: " + _playbackMethod + "\n"
|
||||
+ "Media status: " + manager.mediaStatus + "\n"
|
||||
+ "Playback state: " + manager.playbackState + "\n"
|
||||
// + player.bufferProgress + "\n"
|
||||
// + player.metaData.videoCodec + "@" + player.metaData.videoFrameRate + "(" + player.metaData.videoBitRate + ")" + "\n"
|
||||
// + player.metaData.audioCodec + "(" + player.metaData.audioBitRate + ")" + "\n"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue