marinofaggiana 3 жил өмнө
parent
commit
b73ed27197

+ 10 - 2
iOSClient/Main/NCFunctionCenter.swift

@@ -56,8 +56,16 @@ import Queuer
                         let fileNamePath = NSTemporaryDirectory() + metadata.fileNameView
                         CCUtility.copyFile(atPath: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView), toPath: fileNamePath)
 
-                        viewerQuickLook = NCViewerQuickLook.init()
-                        viewerQuickLook?.quickLook(url: URL(fileURLWithPath: fileNamePath))
+                        var editingMode = false
+                        if #available(iOS 13.0, *) {
+                            editingMode = true
+                        }
+                        
+                        let viewerQuickLook = NCViewerQuickLook(with: URL(fileURLWithPath: fileNamePath), editingMode: editingMode)
+                        let navigationController = UINavigationController(rootViewController: viewerQuickLook)
+                        navigationController.modalPresentationStyle = .overFullScreen
+                        
+                        self.appDelegate.window?.rootViewController?.present(navigationController, animated: true)
                         
                     case NCGlobal.shared.selectorLoadFileView:
                         

+ 15 - 0
iOSClient/Menu/NCViewer+Menu.swift

@@ -274,6 +274,21 @@ extension NCViewer {
             )
         }
         
+        //
+        // MARKUP
+        //
+        if (metadata.typeFile == NCGlobal.shared.metadataTypeFileDocument && metadata.contentType == "application/pdf") || metadata.typeFile == NCGlobal.shared.metadataTypeFileImage || metadata.typeFile == NCGlobal.shared.metadataTypeFileVideo {
+            actions.append(
+                NCMenuAction(
+                    title: NSLocalizedString("_markup_", comment: ""),
+                    icon: NCUtility.shared.loadImage(named: "pencil.tip.crop.circle"),
+                    action: { menuAction in
+                        NCFunctionCenter.shared.openDownload(metadata: metadata, selector: NCGlobal.shared.selectorLoadFileQuickLook)
+                    }
+                )
+            )
+        }
+        
         //
         // DELETE
         //

+ 2 - 2
iOSClient/Settings/CCAdvanced.m

@@ -174,8 +174,8 @@
                     
             [self deselectFormRow:sender];
             
-            NCViewerQuickLook *viewerQuickLook = [NCViewerQuickLook new];
-            [viewerQuickLook quickLookWithUrl:[NSURL fileURLWithPath:NCCommunicationCommon.shared.filenamePathLog]];
+            //NCViewerQuickLook *viewerQuickLook = [NCViewerQuickLook new];
+            //[viewerQuickLook quickLookWithUrl:[NSURL fileURLWithPath:NCCommunicationCommon.shared.filenamePathLog]];
         };
         [section addFormRow:row];
         

+ 3 - 0
iOSClient/Supporting Files/en.lproj/Localizable.strings

@@ -798,6 +798,9 @@
 "Cancel"                    = "Cancel";
 "_certificate_details_"     = "Certificate details";
 "_save_as_scan_"            = "Save as scan";
+"_markup_"                  = "Markup";
+"_overwrite_original_"      = "Overwrite original";
+"_save_as_copy_"            = "Save as copy";
 
 // ----------------------------------------------------------------------------------------------------------------------------------
 // IM

+ 2 - 2
iOSClient/Viewer/NCViewer.swift

@@ -194,8 +194,8 @@ class NCViewer: NSObject {
 
         CCUtility.copyFile(atPath: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView), toPath: fileNamePath)
 
-        viewerQuickLook = NCViewerQuickLook.init()
-        viewerQuickLook?.quickLook(url: URL(fileURLWithPath: fileNamePath))
+        //viewerQuickLook = NCViewerQuickLook.init()
+        //viewerQuickLook?.quickLook(url: URL(fileURLWithPath: fileNamePath))
     }
 }
 

+ 76 - 21
iOSClient/Viewer/NCViewerQuickLook/NCViewerQuickLook.swift

@@ -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 {