|
@@ -24,46 +24,50 @@
|
|
|
import UIKit
|
|
|
import QuickLook
|
|
|
|
|
|
-@objc class NCViewerQuickLook: NSObject, QLPreviewControllerDelegate, QLPreviewControllerDataSource {
|
|
|
-
|
|
|
+@objc class NCViewerQuickLook: QLPreviewController {
|
|
|
+
|
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
|
let previewController = QLPreviewController()
|
|
|
var previewItems: [PreviewItem] = []
|
|
|
+ var editingMode: Bool
|
|
|
+ enum saveModeType{
|
|
|
+ case overwrite
|
|
|
+ case copy
|
|
|
+ case discard
|
|
|
+ }
|
|
|
+ var saveMode: saveModeType = .discard
|
|
|
|
|
|
- @objc func quickLook(url: URL) {
|
|
|
-
|
|
|
+ required init?(coder: NSCoder) {
|
|
|
+ fatalError("init(coder:) has not been implemented")
|
|
|
+ }
|
|
|
+
|
|
|
+ init(with url: URL, editingMode: Bool) {
|
|
|
+ self.editingMode = editingMode
|
|
|
+ super.init(nibName: nil, bundle: nil)
|
|
|
+
|
|
|
+ self.dataSource = self
|
|
|
+ self.delegate = self
|
|
|
+ self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(dismissPreviewController))
|
|
|
+
|
|
|
URLSession.shared.dataTask(with: url) { data, response, error in
|
|
|
|
|
|
guard let _ = data, error == nil else {
|
|
|
self.presentAlertController(with: error?.localizedDescription ?? "Failed to look the file")
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- //let httpURLResponse = response as? HTTPURLResponse
|
|
|
- //let mimeType = httpURLResponse?.mimeType
|
|
|
|
|
|
var previewURL = url
|
|
|
previewURL.hasHiddenExtension = true
|
|
|
let previewItem = PreviewItem()
|
|
|
previewItem.previewItemURL = previewURL
|
|
|
self.previewItems.append(previewItem)
|
|
|
- DispatchQueue.main.async {
|
|
|
- UIApplication.shared.isNetworkActivityIndicatorVisible = false
|
|
|
- self.previewController.delegate = self
|
|
|
- self.previewController.dataSource = self
|
|
|
- self.previewController.currentPreviewItemIndex = 0
|
|
|
- self.appDelegate.window?.rootViewController?.present(self.previewController, animated: true)
|
|
|
- }
|
|
|
-
|
|
|
+ self.currentPreviewItemIndex = 0
|
|
|
+
|
|
|
}.resume()
|
|
|
-
|
|
|
- UIApplication.shared.isNetworkActivityIndicatorVisible = true
|
|
|
}
|
|
|
|
|
|
- func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem { previewItems[index] }
|
|
|
-
|
|
|
- func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
|
|
|
- previewItems.count
|
|
|
+ override func viewDidLoad() {
|
|
|
+ super.viewDidLoad()
|
|
|
}
|
|
|
|
|
|
func presentAlertController(with message: String) {
|
|
@@ -75,6 +79,57 @@ import QuickLook
|
|
|
self.appDelegate.window?.rootViewController?.present(alert, animated: true)
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @objc func dismissPreviewController() {
|
|
|
+
|
|
|
+ if editingMode {
|
|
|
+ let alertController = UIAlertController(title: NSLocalizedString("_save_", comment: ""), message: "", preferredStyle: .alert)
|
|
|
+
|
|
|
+ alertController.addAction(UIAlertAction(title: NSLocalizedString("_overwrite_original_", comment: ""), style: .default) { (action:UIAlertAction) in
|
|
|
+ self.saveMode = .overwrite
|
|
|
+ self.dismiss(animated: true)
|
|
|
+ })
|
|
|
+ alertController.addAction(UIAlertAction(title: NSLocalizedString("_save_as_copy_", comment: ""), style: .default) { (action:UIAlertAction) in
|
|
|
+ self.saveMode = .copy
|
|
|
+ self.dismiss(animated: true)
|
|
|
+ })
|
|
|
+ alertController.addAction(UIAlertAction(title: NSLocalizedString("Discard changes", comment: ""), style: .default) { (action:UIAlertAction) in
|
|
|
+ self.saveMode = .discard
|
|
|
+ self.dismiss(animated: true)
|
|
|
+ })
|
|
|
+
|
|
|
+ self.present(alertController, animated: true)
|
|
|
+ } else {
|
|
|
+ self.dismiss(animated: true)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+extension NCViewerQuickLook: QLPreviewControllerDataSource, QLPreviewControllerDelegate {
|
|
|
+
|
|
|
+ func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
|
|
|
+ previewItems.count
|
|
|
+ }
|
|
|
+
|
|
|
+ func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
|
|
|
+ previewItems[index]
|
|
|
+ }
|
|
|
+
|
|
|
+ func previewController(_ controller: QLPreviewController, didUpdateContentsOf previewItem: QLPreviewItem) {
|
|
|
+ }
|
|
|
+
|
|
|
+ @available(iOS 13.0, *)
|
|
|
+ func previewController(_ controller: QLPreviewController, editingModeFor previewItem: QLPreviewItem) -> QLPreviewItemEditingMode {
|
|
|
+ if editingMode {
|
|
|
+ return .createCopy
|
|
|
+ } else {
|
|
|
+ return .disabled
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ func previewController(_ controller: QLPreviewController, didSaveEditedCopyOf previewItem: QLPreviewItem, at modifiedContentsURL: URL) {
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
extension URL {
|