浏览代码

Improve image preview downloading

Signed-off-by: Philippe Weidmann <philippe.weidmann@infomaniak.com>
Philippe Weidmann 4 年之前
父节点
当前提交
825e4eea08
共有 2 个文件被更改,包括 19 次插入1 次删除
  1. 10 1
      iOSClient/Media/NCMedia.swift
  2. 9 0
      iOSClient/Networking/NCOperationQueue.swift

+ 10 - 1
iOSClient/Media/NCMedia.swift

@@ -428,13 +428,22 @@ extension NCMedia: UICollectionViewDataSource {
         
         return metadatas.count
     }
+
+    func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
+        let metadata = metadatas[indexPath.row]
+        NCOperationQueue.shared.downloadThumbnail(metadata: metadata, activeUrl: self.appDelegate.activeUrl, view: self.collectionView as Any, indexPath: indexPath)
+    }
     
+    func collectionView(_ collectionView: UICollectionView, didEndDisplaying cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
+        let metadata = metadatas[indexPath.row]
+        NCOperationQueue.shared.cancelDownloadThumbnail(metadata: metadata)
+    }
+
     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
         
         let metadata = metadatas[indexPath.row]
         
         let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "gridCell", for: indexPath) as! NCGridMediaCell
-        NCOperationQueue.shared.downloadThumbnail(metadata: metadata, activeUrl: self.appDelegate.activeUrl, view: self.collectionView as Any, indexPath: indexPath)
 
         if FileManager().fileExists(atPath: CCUtility.getDirectoryProviderStorageIconOcId(metadata.ocId, fileNameView: metadata.fileNameView)) {
             cell.imageItem.backgroundColor = nil

+ 9 - 0
iOSClient/Networking/NCOperationQueue.swift

@@ -73,6 +73,15 @@ import NCCommunication
             downloadThumbnailQueue.addOperation(NCOperationDownloadThumbnail.init(metadata: metadata, activeUrl: activeUrl, view: view, indexPath: indexPath))
         }
     }
+    
+    func cancelDownloadThumbnail(metadata: tableMetadata) {
+        for operation in  downloadThumbnailQueue.operations {
+            if (operation as! NCOperationDownloadThumbnail).metadata.ocId == metadata.ocId {
+                (operation as! NCOperationDownloadThumbnail).cancel()
+            }
+        }
+    }
+    
     @objc func downloadThumbnailCancelAll() {
         downloadThumbnailQueue.cancelAll()
     }