From e68c039f6034b8fd09b3e6026cad8cc596d7a825 Mon Sep 17 00:00:00 2001 From: Milen Pivchev Date: Mon, 5 Jan 2026 17:26:55 +0100 Subject: [PATCH 1/2] Deinit now playing info Signed-off-by: Milen Pivchev --- iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift | 10 +++++----- .../NCViewerMedia/NCPlayer/NCPlayerToolBar.swift | 8 +++++--- iOSClient/Viewer/NCViewerMedia/NCViewerMediaPage.swift | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift b/iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift index 6f42f51b1f..9390ec0e35 100644 --- a/iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift +++ b/iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift @@ -6,6 +6,7 @@ import Foundation import NextcloudKit import UIKit import MobileVLCKit +import MediaPlayer class NCPlayer: NSObject, VLCMediaDelegate { internal var url: URL? @@ -212,13 +213,12 @@ extension NCPlayer: VLCMediaPlayerDelegate { switch player.state { case .stopped: - playerToolBar?.playButtonPlay() + playerToolBar?.showPlayButton() NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterPlayerStoppedPlaying) print("Player mode: STOPPED") case .opening: - playerToolBar?.playbackSliderEvent = .began print("Player mode: OPENING") case .buffering: print("Player mode: BUFFERING") @@ -229,7 +229,7 @@ extension NCPlayer: VLCMediaPlayerDelegate { self.restartAVPlayer(position: 0, pauseAfterPlay: !playRepeat) } } - playerToolBar?.playButtonPlay() + playerToolBar?.showPlayButton() print("Player mode: ENDED") case .error: print("Player mode: ERROR") @@ -244,7 +244,7 @@ extension NCPlayer: VLCMediaPlayerDelegate { pauseAfterPlay = false self.viewerMediaPage?.updateCommandCenter(ncplayer: self, title: metadata.fileNameView) } else { - playerToolBar.playButtonPause() + playerToolBar.showPauseButton() // Set track audio/subtitle let data = self.database.getVideo(metadata: metadata) if let currentAudioTrackIndex = data?.currentAudioTrackIndex { @@ -270,7 +270,7 @@ extension NCPlayer: VLCMediaPlayerDelegate { case .paused: NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterPlayerStoppedPlaying) - playerToolBar?.playButtonPlay() + playerToolBar?.showPlayButton() print("Player mode: PAUSED") default: break } diff --git a/iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayerToolBar.swift b/iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayerToolBar.swift index aded4ffbc8..ccb930df56 100644 --- a/iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayerToolBar.swift +++ b/iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayerToolBar.swift @@ -31,11 +31,13 @@ class NCPlayerToolBar: UIView { @IBOutlet weak var repeatButton: UIButton! enum sliderEventType { + case none case began case ended case moved } - var playbackSliderEvent: sliderEventType = .ended + + var playbackSliderEvent: sliderEventType = .none var isFullscreen: Bool = false var playRepeat: Bool = false @@ -196,13 +198,13 @@ class NCPlayerToolBar: UIView { }) } - func playButtonPause() { + func showPauseButton() { buttonImage = UIImage(systemName: "pause.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: pointSize))!.withTintColor(.white, renderingMode: .alwaysOriginal) playButton.setImage(buttonImage, for: .normal) MPNowPlayingInfoCenter.default().nowPlayingInfo?[MPNowPlayingInfoPropertyPlaybackRate] = 1 } - func playButtonPlay() { + func showPlayButton() { buttonImage = UIImage(systemName: "play.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: pointSize))!.withTintColor(.white, renderingMode: .alwaysOriginal) playButton.setImage(buttonImage, for: .normal) MPNowPlayingInfoCenter.default().nowPlayingInfo?[MPNowPlayingInfoPropertyPlaybackRate] = 0 diff --git a/iOSClient/Viewer/NCViewerMedia/NCViewerMediaPage.swift b/iOSClient/Viewer/NCViewerMedia/NCViewerMediaPage.swift index 85d3021d85..48bc45de63 100644 --- a/iOSClient/Viewer/NCViewerMedia/NCViewerMediaPage.swift +++ b/iOSClient/Viewer/NCViewerMedia/NCViewerMediaPage.swift @@ -356,7 +356,7 @@ class NCViewerMediaPage: UIViewController { func clearCommandCenter() { UIApplication.shared.endReceivingRemoteControlEvents() - MPNowPlayingInfoCenter.default().nowPlayingInfo = [:] + MPNowPlayingInfoCenter.default().nowPlayingInfo = nil MPRemoteCommandCenter.shared().playCommand.isEnabled = false MPRemoteCommandCenter.shared().pauseCommand.isEnabled = false From bf8aa48db29c966fa273aa207ffd5f089a0e5c0c Mon Sep 17 00:00:00 2001 From: Milen Pivchev Date: Mon, 5 Jan 2026 17:31:19 +0100 Subject: [PATCH 2/2] Refactor Signed-off-by: Milen Pivchev --- iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift b/iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift index 9390ec0e35..15e991f3fb 100644 --- a/iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift +++ b/iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift @@ -6,7 +6,6 @@ import Foundation import NextcloudKit import UIKit import MobileVLCKit -import MediaPlayer class NCPlayer: NSObject, VLCMediaDelegate { internal var url: URL?