marinofaggiana 5 years ago
parent
commit
df5366f2db

+ 24 - 20
iOSClient/Main/NCDetailViewController.swift

@@ -424,23 +424,7 @@ extension NCDetailViewController: MediaBrowserViewControllerDelegate, MediaBrows
             self.navigationController?.navigationBar.topItem?.title = self.metadata!.fileNameView
         }
         
-        // Original
-        if CCUtility.fileProviderStorageSize(metadata.ocId, fileNameView: metadata.fileNameView) > 0 {
-            var image: UIImage?
-                
-            let imagePath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView)!
-            let ext = CCUtility.getExtension(metadata.fileNameView)
-            if ext == "GIF" { image = UIImage.animatedImage(withAnimatedGIFURL: URL(fileURLWithPath: imagePath)) }
-            else { image = UIImage.init(contentsOfFile: imagePath) }
-                               
-            if let image = image {
-                completion(index, image, ZoomScale.default, nil)
-            } else {
-                completion(index, self.getImageOffOutline(), ZoomScale.default, nil)
-            }
-                
-        // Preview
-        } else if CCUtility.fileProviderStorageIconExists(metadata.ocId, fileNameView: metadata.fileNameView) {
+        if CCUtility.fileProviderStorageIconExists(metadata.ocId, fileNameView: metadata.fileNameView) {
                 
             let imagePath = CCUtility.getDirectoryProviderStorageIconOcId(metadata.ocId, fileNameView: metadata.fileNameView)!
             if let image = UIImage.init(contentsOfFile: imagePath) {
@@ -448,8 +432,7 @@ extension NCDetailViewController: MediaBrowserViewControllerDelegate, MediaBrows
             } else {
                 completion(index, self.getImageOffOutline(), ZoomScale.default, nil)
             }
-                
-        // NO Original/Preview
+    
         } else {
                 
             let fileNamePath = CCUtility.returnFileNamePath(fromFileName: metadata.fileName, serverUrl: metadata.serverUrl, activeUrl: appDelegate.activeUrl)!
@@ -471,7 +454,28 @@ extension NCDetailViewController: MediaBrowserViewControllerDelegate, MediaBrows
         }
     }
     
-    func mediaBrowser(_ mediaBrowser: MediaBrowserViewController, didChangeFocusTo index: Int) { }
+    func mediaBrowser(_ mediaBrowser: MediaBrowserViewController, didChangeFocusTo index: Int, view: MediaContentView) {
+        
+        if index >= metadatas.count { return }
+        let metadata = metadatas[index]
+        
+        DispatchQueue.global().async {
+            if CCUtility.fileProviderStorageSize(metadata.ocId, fileNameView: metadata.fileNameView) > 0 {
+                var image: UIImage?
+                           
+                let imagePath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView)!
+                let ext = CCUtility.getExtension(metadata.fileNameView)
+                if ext == "GIF" { image = UIImage.animatedImage(withAnimatedGIFURL: URL(fileURLWithPath: imagePath)) }
+                else { image = UIImage.init(contentsOfFile: imagePath) }
+                                          
+                if let image = image {
+                    DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(150)) {
+                        view.image = image
+                    }
+                }
+            }
+        }
+    }
     
     func mediaBrowserTap(_ mediaBrowser: MediaBrowserViewController) {
         guard let navigationController = self.navigationController else { return }

+ 4 - 4
iOSClient/Viewer/NCMediaBrowser/MediaBrowserViewController.swift

@@ -79,7 +79,7 @@ public protocol MediaBrowserViewControllerDelegate: class {
      - note:
         This method will not be called on first load, and will be called only on swiping left and right.
      */
-    func mediaBrowser(_ mediaBrowser: MediaBrowserViewController, didChangeFocusTo index: Int)
+    func mediaBrowser(_ mediaBrowser: MediaBrowserViewController, didChangeFocusTo index: Int, view: MediaContentView)
     
     func mediaBrowserTap(_ mediaBrowser: MediaBrowserViewController)
 
@@ -88,7 +88,7 @@ public protocol MediaBrowserViewControllerDelegate: class {
 
 extension MediaBrowserViewControllerDelegate {
 
-    public func mediaBrowser(_ mediaBrowser: MediaBrowserViewController, didChangeFocusTo index: Int) {}
+    public func mediaBrowser(_ mediaBrowser: MediaBrowserViewController, didChangeFocusTo index: Int, view: MediaContentView) {}
 }
 
 public class MediaBrowserViewController: UIViewController {
@@ -580,7 +580,7 @@ extension MediaBrowserViewController {
                 mediaContainerView.sendSubviewToBack(previousView)
             }
 
-            delegate?.mediaBrowser(self, didChangeFocusTo: index)
+            delegate?.mediaBrowser(self, didChangeFocusTo: index, view: nextView)
 
         } else if middleView.position > (1 + normalizedGap - normalizedCenter) {
 
@@ -601,7 +601,7 @@ extension MediaBrowserViewController {
                 mediaContainerView.bringSubviewToFront(nextView)
             }
 
-            delegate?.mediaBrowser(self, didChangeFocusTo: index)
+            delegate?.mediaBrowser(self, didChangeFocusTo: index, view: previousView)
         }
     }
 

+ 3 - 3
iOSClient/Viewer/NCMediaBrowser/MediaContentView.swift

@@ -54,7 +54,7 @@ public struct ZoomScale {
     }
 }
 
-internal class MediaContentView: UIScrollView {
+public class MediaContentView: UIScrollView {
 
     // MARK: - Exposed variables
     internal static var interItemSpacing: CGFloat = 0.0
@@ -260,13 +260,13 @@ extension MediaContentView {
 
 extension MediaContentView: UIScrollViewDelegate {
 
-    internal func viewForZooming(in scrollView: UIScrollView) -> UIView? {
+    public func viewForZooming(in scrollView: UIScrollView) -> UIView? {
 
         let shouldAllowZoom = (image != nil && position == 0.0)
         return shouldAllowZoom ? imageView : nil
     }
 
-    internal func scrollViewDidZoom(_ scrollView: UIScrollView) {
+    public func scrollViewDidZoom(_ scrollView: UIScrollView) {
 
         centerImageView()
     }