Эх сурвалжийг харах

previewController takes single or multi enum

nayooti 4 жил өмнө
parent
commit
9bbee0121b

+ 2 - 2
deltachat-ios/Chat/ChatViewControllerNew.swift

@@ -805,8 +805,8 @@ class ChatViewControllerNew: UITableViewController {
         mediaPicker?.showPhotoVideoLibrary()
         mediaPicker?.showPhotoVideoLibrary()
     }
     }
 
 
-    private func showMediaGallery(currentIndex: Int, mediaUrls urls: [URL]) {
-        let betterPreviewController = PreviewController(currentIndex: currentIndex, urls: urls)
+    private func showMediaGallery(currentIndex: Int, msgIds: [Int]) {
+        let betterPreviewController = PreviewController(type: .multi(msgIds, currentIndex))
         let nav = UINavigationController(rootViewController: betterPreviewController)
         let nav = UINavigationController(rootViewController: betterPreviewController)
         nav.modalPresentationStyle = .fullScreen
         nav.modalPresentationStyle = .fullScreen
         navigationController?.present(nav, animated: true)
         navigationController?.present(nav, animated: true)

+ 2 - 2
deltachat-ios/Controller/ChatViewController.swift

@@ -749,8 +749,8 @@ class ChatViewController: MessagesViewController {
         mediaPicker?.showPhotoVideoLibrary()
         mediaPicker?.showPhotoVideoLibrary()
     }
     }
 
 
-    private func showMediaGallery(currentIndex: Int, mediaUrls urls: [URL]) {
-        let betterPreviewController = PreviewController(currentIndex: currentIndex, urls: urls)
+    private func showMediaGallery(currentIndex: Int, msgIds: [Int]) {
+        let betterPreviewController = PreviewController(type: .multi(msgIds, currentIndex))
         let nav = UINavigationController(rootViewController: betterPreviewController)
         let nav = UINavigationController(rootViewController: betterPreviewController)
         nav.modalPresentationStyle = .fullScreen
         nav.modalPresentationStyle = .fullScreen
         navigationController?.present(nav, animated: true)
         navigationController?.present(nav, animated: true)

+ 1 - 1
deltachat-ios/Controller/ContactDetailViewController.swift

@@ -395,7 +395,7 @@ class ContactDetailViewController: UITableViewController {
     private func showContactAvatarIfNeeded() {
     private func showContactAvatarIfNeeded() {
         let contact = viewModel.contact
         let contact = viewModel.contact
         if let url =  contact.profileImageURL {
         if let url =  contact.profileImageURL {
-            let previewController = PreviewController(currentIndex: 0, urls: [url])
+            let previewController = PreviewController(type: .single(url))
             previewController.customTitle = contact.displayName
             previewController.customTitle = contact.displayName
             present(previewController, animated: true, completion: nil)
             present(previewController, animated: true, completion: nil)
         }
         }

+ 1 - 5
deltachat-ios/Controller/DocumentGalleryController.swift

@@ -87,11 +87,7 @@ extension DocumentGalleryController {
         guard let index = fileMessageIds.index(of: msgId) else {
         guard let index = fileMessageIds.index(of: msgId) else {
             return
             return
         }
         }
-
-        let mediaUrls = fileMessageIds.compactMap {
-            return DcMsg(id: $0).fileURL
-        }
-        let previewController = PreviewController(currentIndex: index, urls: mediaUrls)
+        let previewController = PreviewController(type: .multi(fileMessageIds, index))
         present(previewController, animated: true, completion: nil)
         present(previewController, animated: true, completion: nil)
     }
     }
 }
 }

+ 1 - 5
deltachat-ios/Controller/GalleryViewController.swift

@@ -210,11 +210,7 @@ extension GalleryViewController {
         guard let index = mediaMessageIds.index(of: msgId) else {
         guard let index = mediaMessageIds.index(of: msgId) else {
             return
             return
         }
         }
-
-        let mediaUrls = mediaMessageIds.compactMap {
-            return DcMsg(id: $0).fileURL
-        }
-        let previewController = PreviewController(currentIndex: index, urls: mediaUrls)
+        let previewController = PreviewController(type: .multi(mediaMessageIds, index))
         present(previewController, animated: true, completion: nil)
         present(previewController, animated: true, completion: nil)
     }
     }
 }
 }

+ 1 - 1
deltachat-ios/Controller/GroupChatDetailViewController.swift

@@ -326,7 +326,7 @@ class GroupChatDetailViewController: UIViewController {
 
 
     private func showGroupAvatarIfNeeded() {
     private func showGroupAvatarIfNeeded() {
         if let url = chat.profileImageURL {
         if let url = chat.profileImageURL {
-            let previewController = PreviewController(currentIndex: 0, urls: [url])
+            let previewController = PreviewController(type: .single(url))
             previewController.customTitle = self.title
             previewController.customTitle = self.title
             present(previewController, animated: true, completion: nil)
             present(previewController, animated: true, completion: nil)
         }
         }

+ 24 - 5
deltachat-ios/Controller/PreviewController.swift

@@ -4,8 +4,17 @@ import DcCore
 
 
 class PreviewController: QLPreviewController {
 class PreviewController: QLPreviewController {
 
 
+    enum PreviewType {
+        case single(URL)
+        case multi([Int], Int) // msgIds, index
+    }
+
+    let previewType: PreviewType
+
+    /*
     var msgIds: [Int] = []
     var msgIds: [Int] = []
     var url: URL?
     var url: URL?
+    */
 
 
     var customTitle: String?
     var customTitle: String?
 
 
@@ -14,6 +23,12 @@ class PreviewController: QLPreviewController {
         return button
         return button
     }()
     }()
 
 
+    init(type: PreviewType) {
+        self.previewType = type
+        super.init(nibName: nil, bundle: nil)
+    }
+
+    /*
     convenience init(url: URL) {
     convenience init(url: URL) {
         self.init(currentIndex: 0, msgIds: [])
         self.init(currentIndex: 0, msgIds: [])
         self.url = url
         self.url = url
@@ -25,6 +40,7 @@ class PreviewController: QLPreviewController {
         dataSource = self
         dataSource = self
         currentPreviewItemIndex = currentIndex
         currentPreviewItemIndex = currentIndex
     }
     }
+    */
 
 
     required init?(coder: NSCoder) {
     required init?(coder: NSCoder) {
         fatalError("init(coder:) has not been implemented")
         fatalError("init(coder:) has not been implemented")
@@ -48,18 +64,21 @@ class PreviewController: QLPreviewController {
 extension PreviewController: QLPreviewControllerDataSource {
 extension PreviewController: QLPreviewControllerDataSource {
 
 
     func numberOfPreviewItems(in _: QLPreviewController) -> Int {
     func numberOfPreviewItems(in _: QLPreviewController) -> Int {
-        if url != nil {
+        switch previewType {
+        case .single:
             return 1
             return 1
+        case .multi(let msgIds, _):
+            return msgIds.count
         }
         }
-        return msgIds.count
     }
     }
 
 
     func previewController(_: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
     func previewController(_: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
-        if let url = self.url {
+        switch previewType {
+        case .single(let url):
             return PreviewItem(url: url, title: self.customTitle)
             return PreviewItem(url: url, title: self.customTitle)
-        } else {
+        case .multi(let msgIds, let index):
             let msg = DcMsg(id: msgIds[index])
             let msg = DcMsg(id: msgIds[index])
-            return PreviewItem(url: url ?? msg.fileURL, title: self.customTitle)
+            return PreviewItem(url: msg.fileURL, title: self.customTitle)
         }
         }
     }
     }
 }
 }