add autoplay setting
This commit is contained in:
parent
c4466c2cb9
commit
678fdd03bf
|
@ -117,6 +117,18 @@ struct VLCPlayerCompactOverlayView: View, VideoPlayerOverlay {
|
|||
.foregroundColor(viewModel.selectedSubtitleStreamIndex == -1 ? .gray : .white)
|
||||
}
|
||||
|
||||
if viewModel.shouldShowAutoPlayNextItem {
|
||||
Button {
|
||||
viewModel.autoPlayNextItem.toggle()
|
||||
} label: {
|
||||
if viewModel.autoPlayNextItem {
|
||||
Image(systemName: "play.circle.fill")
|
||||
} else {
|
||||
Image(systemName: "play.circle")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Settings Menu
|
||||
Menu {
|
||||
|
||||
|
@ -342,7 +354,9 @@ struct VLCPlayerCompactOverlayView_Previews: PreviewProvider {
|
|||
sliderPercentage: 0.432,
|
||||
selectedAudioStreamIndex: -1,
|
||||
selectedSubtitleStreamIndex: -1,
|
||||
showAdjacentItems: true))
|
||||
showAdjacentItems: true,
|
||||
shouldShowAutoPlayNextItem: true,
|
||||
autoPlayNextItem: true))
|
||||
}
|
||||
.previewInterfaceOrientation(.landscapeLeft)
|
||||
}
|
||||
|
|
|
@ -240,7 +240,9 @@ struct VLCPlayerOverlayView_Previews: PreviewProvider {
|
|||
sliderPercentage: 0.0,
|
||||
selectedAudioStreamIndex: -1,
|
||||
selectedSubtitleStreamIndex: -1,
|
||||
showAdjacentItems: true))
|
||||
showAdjacentItems: true,
|
||||
shouldShowAutoPlayNextItem: true,
|
||||
autoPlayNextItem: true))
|
||||
}
|
||||
.previewInterfaceOrientation(.landscapeLeft)
|
||||
}
|
||||
|
|
|
@ -382,10 +382,14 @@ extension VLCPlayerViewController: VLCMediaPlayerDelegate {
|
|||
// MARK: mediaPlayerStateChanged
|
||||
func mediaPlayerStateChanged(_ aNotification: Notification!) {
|
||||
|
||||
self.viewModel.playerState = vlcMediaPlayer.state
|
||||
viewModel.playerState = vlcMediaPlayer.state
|
||||
|
||||
if vlcMediaPlayer.state == VLCMediaPlayerState.ended {
|
||||
didSelectClose()
|
||||
if viewModel.autoPlayNextItem && viewModel.nextItemVideoPlayerViewModel != nil {
|
||||
didSelectNextItem()
|
||||
} else {
|
||||
didSelectClose()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
*/
|
||||
|
||||
import Combine
|
||||
import Defaults
|
||||
import JellyfinAPI
|
||||
import UIKit
|
||||
|
||||
|
@ -88,6 +89,14 @@ extension BaseItemDto {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// MARK: VidoPlayerViewModel Creation
|
||||
|
||||
// TODO: show adjacent items
|
||||
|
||||
let shouldShowAutoPlayNextItem = Defaults[.shouldShowAutoPlayNextItem]
|
||||
let autoPlayNextItem = Defaults[.autoPlayNextItem]
|
||||
|
||||
let videoPlayerViewModel = VideoPlayerViewModel(item: self,
|
||||
title: self.name!,
|
||||
subtitle: subtitle,
|
||||
|
@ -105,7 +114,9 @@ extension BaseItemDto {
|
|||
sliderPercentage: (self.userData?.playedPercentage ?? 0) / 100,
|
||||
selectedAudioStreamIndex: defaultAudioStream?.index ?? -1,
|
||||
selectedSubtitleStreamIndex: defaultSubtitleStream?.index ?? -1,
|
||||
showAdjacentItems: true)
|
||||
showAdjacentItems: true,
|
||||
shouldShowAutoPlayNextItem: shouldShowAutoPlayNextItem,
|
||||
autoPlayNextItem: autoPlayNextItem)
|
||||
|
||||
return videoPlayerViewModel
|
||||
})
|
||||
|
|
|
@ -33,4 +33,6 @@ extension Defaults.Keys {
|
|||
static let videoPlayerJumpForward = Key<VideoPlayerJumpLength>("videoPlayerJumpForward", default: .fifteen, suite: SwiftfinStore.Defaults.suite)
|
||||
static let videoPlayerJumpBackward = Key<VideoPlayerJumpLength>("videoPlayerJumpBackward", default: .fifteen, suite: SwiftfinStore.Defaults.suite)
|
||||
static let nativeVideoPlayer = Key<Bool>("nativeVideoPlayer", default: false, suite: SwiftfinStore.Defaults.suite)
|
||||
static let shouldShowAutoPlayNextItem = Key<Bool>("shouldShowAutoPlayNextItem", default: true, suite: SwiftfinStore.Defaults.suite)
|
||||
static let autoPlayNextItem = Key<Bool>("autoPlayNextItem", default: true, suite: SwiftfinStore.Defaults.suite)
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
//
|
||||
|
||||
import Combine
|
||||
import Defaults
|
||||
import Foundation
|
||||
import JellyfinAPI
|
||||
import UIKit
|
||||
|
@ -54,6 +55,16 @@ final class VideoPlayerViewModel: ViewModel {
|
|||
}
|
||||
}
|
||||
@Published var showAdjacentItems: Bool
|
||||
@Published var shouldShowAutoPlayNextItem: Bool {
|
||||
willSet {
|
||||
Defaults[.shouldShowAutoPlayNextItem] = newValue
|
||||
}
|
||||
}
|
||||
@Published var autoPlayNextItem: Bool {
|
||||
willSet {
|
||||
Defaults[.autoPlayNextItem] = newValue
|
||||
}
|
||||
}
|
||||
@Published var previousItemVideoPlayerViewModel: VideoPlayerViewModel?
|
||||
@Published var nextItemVideoPlayerViewModel: VideoPlayerViewModel?
|
||||
|
||||
|
@ -105,7 +116,9 @@ final class VideoPlayerViewModel: ViewModel {
|
|||
sliderPercentage: Double,
|
||||
selectedAudioStreamIndex: Int,
|
||||
selectedSubtitleStreamIndex: Int,
|
||||
showAdjacentItems: Bool) {
|
||||
showAdjacentItems: Bool,
|
||||
shouldShowAutoPlayNextItem: Bool,
|
||||
autoPlayNextItem: Bool) {
|
||||
self.item = item
|
||||
self.title = title
|
||||
self.subtitle = subtitle
|
||||
|
@ -124,6 +137,8 @@ final class VideoPlayerViewModel: ViewModel {
|
|||
self.selectedAudioStreamIndex = selectedAudioStreamIndex
|
||||
self.selectedSubtitleStreamIndex = selectedSubtitleStreamIndex
|
||||
self.showAdjacentItems = showAdjacentItems
|
||||
self.shouldShowAutoPlayNextItem = shouldShowAutoPlayNextItem
|
||||
self.autoPlayNextItem = autoPlayNextItem
|
||||
|
||||
super.init()
|
||||
|
||||
|
|
Loading…
Reference in New Issue