mirror of
https://github.com/yattee/yattee.git
synced 2025-08-06 10:44:06 +00:00
Details panels in controls
This commit is contained in:
@@ -96,23 +96,19 @@ final class NavigationModel: ObservableObject {
|
||||
player.hide()
|
||||
navigation.presentingChannel = false
|
||||
|
||||
let recent = RecentItem(from: channel)
|
||||
#if os(macOS)
|
||||
Windows.main.open()
|
||||
#else
|
||||
player.hide()
|
||||
#endif
|
||||
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
|
||||
recents.add(recent)
|
||||
let recent = RecentItem(from: channel)
|
||||
recents.add(RecentItem(from: channel))
|
||||
|
||||
if navigationStyle == .sidebar {
|
||||
navigation.sidebarSectionChanged.toggle()
|
||||
navigation.tabSelection = .recentlyOpened(recent.tag)
|
||||
} else {
|
||||
withAnimation {
|
||||
navigation.presentingChannel = true
|
||||
}
|
||||
if navigationStyle == .sidebar {
|
||||
navigation.sidebarSectionChanged.toggle()
|
||||
navigation.tabSelection = .recentlyOpened(recent.tag)
|
||||
} else {
|
||||
withAnimation {
|
||||
navigation.presentingChannel = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -8,6 +8,7 @@ final class PlayerControlsModel: ObservableObject {
|
||||
@Published var isPlaying = true
|
||||
@Published var presentingControls = false { didSet { handlePresentationChange() } }
|
||||
@Published var presentingControlsOverlay = false { didSet { handleOverlayPresentationChange() } }
|
||||
@Published var presentingDetailsOverlay = false
|
||||
@Published var timer: Timer?
|
||||
|
||||
#if os(tvOS)
|
||||
@@ -21,6 +22,7 @@ final class PlayerControlsModel: ObservableObject {
|
||||
isPlaying: Bool = true,
|
||||
presentingControls: Bool = false,
|
||||
presentingControlsOverlay: Bool = false,
|
||||
presentingDetailsOverlay: Bool = false,
|
||||
timer: Timer? = nil,
|
||||
player: PlayerModel? = nil
|
||||
) {
|
||||
@@ -28,20 +30,22 @@ final class PlayerControlsModel: ObservableObject {
|
||||
self.isPlaying = isPlaying
|
||||
self.presentingControls = presentingControls
|
||||
self.presentingControlsOverlay = presentingControlsOverlay
|
||||
self.presentingDetailsOverlay = presentingDetailsOverlay
|
||||
self.timer = timer
|
||||
self.player = player
|
||||
}
|
||||
|
||||
func handlePresentationChange() {
|
||||
if presentingControls {
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
self?.player?.backend.startControlsUpdates()
|
||||
self?.resetTimer()
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
guard let self = self else { return }
|
||||
if self.presentingControls {
|
||||
self.player?.backend.startControlsUpdates()
|
||||
self.resetTimer()
|
||||
} else {
|
||||
self.player?.backend.stopControlsUpdates()
|
||||
self.timer?.invalidate()
|
||||
self.timer = nil
|
||||
}
|
||||
} else {
|
||||
player?.backend.stopControlsUpdates()
|
||||
timer?.invalidate()
|
||||
timer = nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,6 +58,15 @@ final class PlayerControlsModel: ObservableObject {
|
||||
}
|
||||
}
|
||||
|
||||
var presentingOverlays: Bool {
|
||||
presentingDetailsOverlay || presentingControlsOverlay
|
||||
}
|
||||
|
||||
func hideOverlays() {
|
||||
presentingDetailsOverlay = false
|
||||
presentingControlsOverlay = false
|
||||
}
|
||||
|
||||
func show() {
|
||||
guard !(player?.currentItem.isNil ?? true) else {
|
||||
return
|
||||
|
@@ -98,7 +98,13 @@ final class PlayerModel: ObservableObject {
|
||||
var context: NSManagedObjectContext = PersistenceController.shared.container.viewContext
|
||||
var backgroundContext = PersistenceController.shared.container.newBackgroundContext()
|
||||
|
||||
@Published var playingFullScreen = false
|
||||
#if os(tvOS)
|
||||
static let fullScreenIsDefault = true
|
||||
#else
|
||||
static let fullScreenIsDefault = false
|
||||
#endif
|
||||
@Published var playingFullScreen = PlayerModel.fullScreenIsDefault
|
||||
|
||||
@Published var playingInPictureInPicture = false
|
||||
var pipController: AVPictureInPictureController?
|
||||
var pipDelegate = PiPDelegate()
|
||||
|
Reference in New Issue
Block a user