Browse Source

improvements

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana 1 year ago
parent
commit
56f3f9d282

+ 1 - 1
Brand/Database.swift

@@ -26,4 +26,4 @@ import Foundation
 // Database Realm
 //
 let databaseName                    = "nextcloud.realm"
-let databaseSchemaVersion: UInt64   = 295
+let databaseSchemaVersion: UInt64   = 296

+ 15 - 1
iOSClient/Data/NCManageDatabase+Video.swift

@@ -40,11 +40,13 @@ class tableVideoV3: Object {
     @Persisted var codecAudioLanguage: String?
     @Persisted var codecMaxCompatibility: Bool = false
     @Persisted var codecQuality: String?
+    @Persisted var currentAudioTrackIndex: Int?
+    @Persisted var currentVideoSubTitleIndex: Int?
 }
 
 extension NCManageDatabase {
 
-    func addVideo(metadata: tableMetadata, position: Float? = nil, width: Int? = nil, height: Int? = nil, length: Int? = nil) {
+    func addVideo(metadata: tableMetadata, position: Float? = nil, width: Int? = nil, height: Int? = nil, length: Int? = nil, currentAudioTrackIndex: Int? = nil, currentVideoSubTitleIndex: Int? = nil) {
 
         if metadata.livePhoto { return }
         let realm = try! Realm()
@@ -65,6 +67,12 @@ extension NCManageDatabase {
                     if let length = length {
                         result.length = length
                     }
+                    if let currentAudioTrackIndex = currentAudioTrackIndex {
+                        result.currentAudioTrackIndex = currentAudioTrackIndex
+                    }
+                    if let currentVideoSubTitleIndex = currentVideoSubTitleIndex {
+                        result.currentVideoSubTitleIndex = currentVideoSubTitleIndex
+                    }
 
                     realm.add(result, update: .all)
 
@@ -87,6 +95,12 @@ extension NCManageDatabase {
                     if let length = length {
                         result.length = length
                     }
+                    if let currentAudioTrackIndex = currentAudioTrackIndex {
+                        result.currentAudioTrackIndex = currentAudioTrackIndex
+                    }
+                    if let currentVideoSubTitleIndex = currentVideoSubTitleIndex {
+                        result.currentVideoSubTitleIndex = currentVideoSubTitleIndex
+                    }
                     
                     realm.add(result, update: .all)
                 }

+ 9 - 2
iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift

@@ -247,10 +247,17 @@ extension NCPlayer: VLCMediaPlayerDelegate {
             if pauseAfterPlay {
                 player.pause()
                 pauseAfterPlay = false
-                print(player.position)
-                self.viewerMediaPage?.updateCommandCenter(ncplayer: self, title: self.metadata.fileNameView)
+                self.viewerMediaPage?.updateCommandCenter(ncplayer: self, title: metadata.fileNameView)
             } else {
                 playerToolBar.playButtonPause()
+                // Set track audio/subtitle
+                let data = NCManageDatabase.shared.getVideo(metadata: metadata)
+                if let currentAudioTrackIndex = data?.currentAudioTrackIndex {
+                    player.currentAudioTrackIndex = Int32(currentAudioTrackIndex)
+                }
+                if let currentVideoSubTitleIndex = data?.currentVideoSubTitleIndex {
+                    player.currentVideoSubTitleIndex = Int32(currentVideoSubTitleIndex)
+                }
             }
             let size = player.videoSize
             if let mediaLength = player.media?.length.intValue {

+ 18 - 14
iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayerToolBar.swift

@@ -58,8 +58,6 @@ class NCPlayerToolBar: UIView {
     private var ncplayer: NCPlayer?
     private var metadata: tableMetadata?
     private let audioSession = AVAudioSession.sharedInstance()
-    private var subTitleIndex: Int32?
-    private var audioIndex: Int32?
     private var pointSize: CGFloat = 0
     private weak var viewerMediaPage: NCViewerMediaPage?
 
@@ -312,14 +310,17 @@ extension NCPlayerToolBar {
     func toggleMenuSubTitle(spuTracks: [Any], spuTrackIndexes: [Any]) {
 
         var actions = [NCMenuAction]()
+        var subTitleIndex: Int?
 
-        if self.subTitleIndex == nil, let idx = ncplayer?.player.currentVideoSubTitleIndex {
-            self.subTitleIndex = idx
+        if let data = NCManageDatabase.shared.getVideo(metadata: metadata), let idx = data.currentVideoSubTitleIndex {
+            subTitleIndex = idx
+        } else if let idx = ncplayer?.player.currentVideoSubTitleIndex {
+            subTitleIndex = Int(idx)
         }
 
         for index in 0...spuTracks.count - 1 {
 
-            guard let title = spuTracks[index] as? String, let idx = spuTrackIndexes[index] as? Int32 else { return }
+            guard let title = spuTracks[index] as? String, let idx = spuTrackIndexes[index] as? Int32, let metadata = self.metadata else { return }
 
             actions.append(
                 NCMenuAction(
@@ -327,11 +328,11 @@ extension NCPlayerToolBar {
                     icon: UIImage(),
                     onTitle: title,
                     onIcon: UIImage(),
-                    selected: (self.subTitleIndex ?? -9999) == idx,
-                    on: (self.subTitleIndex ?? -9999) == idx,
+                    selected: (subTitleIndex ?? -9999) == idx,
+                    on: (subTitleIndex ?? -9999) == idx,
                     action: { _ in
                         self.ncplayer?.player.currentVideoSubTitleIndex = idx
-                        self.subTitleIndex = idx
+                        NCManageDatabase.shared.addVideo(metadata: metadata, currentVideoSubTitleIndex: Int(idx))
                     }
                 )
             )
@@ -343,14 +344,17 @@ extension NCPlayerToolBar {
     func toggleMenuAudio(audioTracks: [Any], audioTrackIndexes: [Any]) {
 
         var actions = [NCMenuAction]()
+        var audioIndex: Int?
 
-        if self.audioIndex == nil, let idx = ncplayer?.player.currentAudioTrackIndex {
-            self.audioIndex = idx
+        if let data = NCManageDatabase.shared.getVideo(metadata: metadata), let idx = data.currentAudioTrackIndex {
+            audioIndex = idx
+        } else if let idx = ncplayer?.player.currentAudioTrackIndex {
+            audioIndex = Int(idx)
         }
 
         for index in 0...audioTracks.count - 1 {
 
-            guard let title = audioTracks[index] as? String, let idx = audioTrackIndexes[index] as? Int32 else { return }
+            guard let title = audioTracks[index] as? String, let idx = audioTrackIndexes[index] as? Int32, let metadata = self.metadata else { return }
 
             actions.append(
                 NCMenuAction(
@@ -358,11 +362,11 @@ extension NCPlayerToolBar {
                     icon: UIImage(),
                     onTitle: title,
                     onIcon: UIImage(),
-                    selected: (self.audioIndex ?? -9999) == idx,
-                    on: (self.audioIndex ?? -9999) == idx,
+                    selected: (audioIndex ?? -9999) == idx,
+                    on: (audioIndex ?? -9999) == idx,
                     action: { _ in
                         self.ncplayer?.player.currentAudioTrackIndex = idx
-                        self.audioIndex = idx
+                        NCManageDatabase.shared.addVideo(metadata: metadata, currentAudioTrackIndex: Int(idx))
                     }
                 )
             )