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

added BetterPreviewController

nayooti 5 жил өмнө
parent
commit
27bd8a6538

+ 46 - 0
deltachat-ios/Controller/PreviewController.swift

@@ -20,3 +20,49 @@ class PreviewController: QLPreviewControllerDataSource {
         return urls[index] as QLPreviewItem
     }
 }
+
+class BetterPreviewController: QLPreviewController {
+
+    var urls: [URL]
+
+    private lazy var doneButtonItem: UIBarButtonItem = {
+        let button = UIBarButtonItem(title: String.localized("done"), style: .done, target: self, action: #selector(doneButtonPressed(_:)))
+        return button
+    }()
+
+    init(currentIndex: Int, urls: [URL]) {
+        self.urls = urls
+        super.init(nibName: nil, bundle: nil)
+        dataSource = self
+        currentPreviewItemIndex = currentIndex
+    }
+
+    required init?(coder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        if navigationController != nil {
+            /* QLPreviewController comes with a done-button by default. But if is embedded in UINavigationContrller we set a done-button manually.
+            */
+            navigationItem.leftBarButtonItem = doneButtonItem
+        }
+    }
+
+    // MARK: - actions
+    @objc private func doneButtonPressed(_ sender: UIBarButtonItem) {
+        self.dismiss(animated: true, completion: nil)
+    }
+}
+
+extension BetterPreviewController: QLPreviewControllerDataSource {
+
+    func numberOfPreviewItems(in _: QLPreviewController) -> Int {
+        return urls.count
+    }
+
+    func previewController(_: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
+        return urls[index] as QLPreviewItem
+    }
+}