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

Merge pull request #2468 from nextcloud/PDF_url

open a PDF via url
Marino Faggiana 1 жил өмнө
parent
commit
5bbfce8179

+ 4 - 4
Nextcloud.xcodeproj/project.pbxproj

@@ -3972,7 +3972,7 @@
 				CLANG_WARN_UNREACHABLE_CODE = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COPY_PHASE_STRIP = NO;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 0;
 				DEVELOPMENT_TEAM = NKUJUXUJ3B;
 				ENABLE_STRICT_OBJC_MSGSEND = YES;
 				ENABLE_TESTABILITY = YES;
@@ -3996,7 +3996,7 @@
 					"@executable_path/Frameworks",
 					"@executable_path/../../Frameworks",
 				);
-				MARKETING_VERSION = 4.8.3;
+				MARKETING_VERSION = 4.8.4;
 				ONLY_ACTIVE_ARCH = YES;
 				OTHER_LDFLAGS = "";
 				SDKROOT = iphoneos;
@@ -4035,7 +4035,7 @@
 				CLANG_WARN_UNREACHABLE_CODE = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COPY_PHASE_STRIP = NO;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 0;
 				DEVELOPMENT_TEAM = NKUJUXUJ3B;
 				ENABLE_STRICT_OBJC_MSGSEND = YES;
 				ENABLE_TESTABILITY = YES;
@@ -4057,7 +4057,7 @@
 					"@executable_path/Frameworks",
 					"@executable_path/../../Frameworks",
 				);
-				MARKETING_VERSION = 4.8.3;
+				MARKETING_VERSION = 4.8.4;
 				ONLY_ACTIVE_ARCH = YES;
 				OTHER_LDFLAGS = "";
 				SDKROOT = iphoneos;

+ 1 - 0
iOSClient/Viewer/NCViewer.swift

@@ -100,6 +100,7 @@ class NCViewer: NSObject {
                     let viewController: NCViewerPDF = UIStoryboard(name: "NCViewerPDF", bundle: nil).instantiateInitialViewController() as! NCViewerPDF
 
                     viewController.metadata = metadata
+                    viewController.titleView = metadata.fileNameView
                     viewController.imageIcon = imageIcon
 
                     navigationController.pushViewController(viewController, animated: true)

+ 58 - 3
iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift

@@ -31,6 +31,7 @@ class NCPlayer: NSObject {
     internal let appDelegate = UIApplication.shared.delegate as! AppDelegate
     internal var url: URL?
     internal var player = VLCMediaPlayer()
+    internal var dialogProvider: VLCDialogProvider?
     internal var metadata: tableMetadata
     internal var singleTapGestureRecognizer: UITapGestureRecognizer?
     internal var activityIndicator: UIActivityIndicatorView
@@ -90,6 +91,9 @@ class NCPlayer: NSObject {
         player.media = VLCMedia(url: url)
         player.delegate = self
 
+        dialogProvider = VLCDialogProvider(library: VLCLibrary.shared(), customUI: true)
+        dialogProvider?.customRenderer = self
+
         // player?.media?.addOption("--network-caching=500")
         player.media?.addOption(":http-user-agent=\(userAgent)")
 
@@ -260,9 +264,6 @@ extension NCPlayer: VLCMediaPlayerDelegate {
             print("Played mode: ENDED")
             break
         case .error:
-            let error = NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: "_error_something_wrong_")
-            NCContentPresenter.shared.showError(error: error, priority: .max)
-            playerToolBar?.removeFromSuperview()
             print("Played mode: ERROR")
             break
         case .playing:
@@ -340,3 +341,57 @@ extension NCPlayer: VLCMediaThumbnailerDelegate {
 
     func mediaThumbnailer(_ mediaThumbnailer: VLCMediaThumbnailer, didFinishThumbnail thumbnail: CGImage) { }
 }
+
+extension NCPlayer: VLCCustomDialogRendererProtocol {
+
+    func showError(withTitle error: String, message: String) {
+
+        let alert = UIAlertController(title: error, message: message, preferredStyle: .alert)
+
+        alert.addAction(UIAlertAction(title: NSLocalizedString("_ok_", comment: ""), style: .default, handler: { _ in
+            self.playerToolBar?.removeFromSuperview()
+            self.viewerMediaPage?.viewUnload()
+        }))
+
+        self.viewerMediaPage?.present(alert, animated: true)
+    }
+
+    func showLogin(withTitle title: String, message: String, defaultUsername username: String?, askingForStorage: Bool, withReference reference: NSValue) {
+        // UIAlertController other states...
+    }
+
+    func showQuestion(withTitle title: String, message: String, type questionType: VLCDialogQuestionType, cancel cancelString: String?, action1String: String?, action2String: String?, withReference reference: NSValue) {
+
+        let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
+
+        if let action1String = action1String {
+            alert.addAction(UIAlertAction(title: action1String, style: .default, handler: { _ in
+                self.dialogProvider?.postAction(1, forDialogReference: reference)
+            }))
+        }
+        if let action2String = action2String {
+            alert.addAction(UIAlertAction(title: action2String, style: .default, handler: { _ in
+                self.dialogProvider?.postAction(2, forDialogReference: reference)
+            }))
+        }
+        if let cancelString = cancelString {
+            alert.addAction(UIAlertAction(title: cancelString, style: .cancel, handler: { _ in
+                self.dialogProvider?.postAction(3, forDialogReference: reference)
+            }))
+        }
+
+        self.viewerMediaPage?.present(alert, animated: true)
+    }
+
+    func showProgress(withTitle title: String, message: String, isIndeterminate: Bool, position: Float, cancel cancelString: String?, withReference reference: NSValue) {
+        // UIAlertController other states...
+    }
+
+    func updateProgress(withReference reference: NSValue, message: String?, position: Float) {
+        // UIAlertController other states...
+    }
+
+    func cancelDialog(withReference reference: NSValue) {
+        // UIAlertController other states...
+    }
+}

+ 35 - 14
iOSClient/Viewer/NCViewerPDF/NCViewerPDF.swift

@@ -30,7 +30,9 @@ class NCViewerPDF: UIViewController, NCViewerPDFSearchDelegate {
 
     @IBOutlet weak var pdfContainer: UIView!
 
-    var metadata = tableMetadata()
+    var metadata: tableMetadata?
+    var url: URL?
+    var titleView: String?
     var imageIcon: UIImage?
 
     private var filePath = ""
@@ -65,14 +67,18 @@ class NCViewerPDF: UIViewController, NCViewerPDFSearchDelegate {
 
     override func viewDidLoad() {
 
-        filePath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView)!
-        pdfDocument = PDFDocument(url: URL(fileURLWithPath: filePath))
+        if let url = self.url {
+            pdfDocument = PDFDocument(url: url)
+        } else if let metadata = self.metadata {
+            filePath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView)!
+            pdfDocument = PDFDocument(url: URL(fileURLWithPath: filePath))
+            navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "more")!.image(color: .label, size: 25), style: .plain, target: self, action: #selector(self.openMenuMore))
+        }
         defaultBackgroundColor = pdfView.backgroundColor
         view.backgroundColor = defaultBackgroundColor
 
         navigationController?.navigationBar.prefersLargeTitles = false
-        navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "more")!.image(color: .label, size: 25), style: .plain, target: self, action: #selector(self.openMenuMore))
-        navigationItem.title = metadata.fileNameView
+        navigationItem.title = titleView
 
         // TIP
 
@@ -123,6 +129,11 @@ class NCViewerPDF: UIViewController, NCViewerPDFSearchDelegate {
             pdfView.bottomAnchor.constraint(equalTo: pdfContainer.bottomAnchor)
         ])
 
+        // MODAL
+        if self.navigationController?.presentingViewController != nil {
+            self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: NSLocalizedString("_close_", comment: ""), style: .plain, target: self, action: #selector(viewDismiss))
+        }
+
         // NOTIFIFICATION
 
         NotificationCenter.default.addObserver(self, selector: #selector(favoriteFile(_:)), name: NSNotification.Name(rawValue: NCGlobal.shared.notificationCenterFavoriteFile), object: nil)
@@ -281,6 +292,10 @@ class NCViewerPDF: UIViewController, NCViewerPDFSearchDelegate {
         navigationController?.popViewController(animated: true)
     }
 
+    @objc func viewDismiss() {
+        self.dismiss(animated: true)
+    }
+
     // MARK: - Tip
 
     func showTip() {
@@ -298,9 +313,9 @@ class NCViewerPDF: UIViewController, NCViewerPDFSearchDelegate {
 
         guard let userInfo = notification.userInfo as NSDictionary?,
               let serverUrl = userInfo["serverUrl"] as? String,
-              serverUrl == self.metadata.serverUrl,
+              serverUrl == self.metadata?.serverUrl,
               let fileName = userInfo["fileName"] as? String,
-              fileName == self.metadata.fileName
+              fileName == self.metadata?.fileName
         else { return }
 
         NCActivityIndicator.shared.start()
@@ -310,9 +325,9 @@ class NCViewerPDF: UIViewController, NCViewerPDFSearchDelegate {
 
         guard let userInfo = notification.userInfo as NSDictionary?,
               let serverUrl = userInfo["serverUrl"] as? String,
-              serverUrl == self.metadata.serverUrl,
+              serverUrl == self.metadata?.serverUrl,
               let fileName = userInfo["fileName"] as? String,
-              fileName == self.metadata.fileName,
+              fileName == self.metadata?.fileName,
               let error = userInfo["error"] as? NKError
         else {
             return
@@ -331,7 +346,7 @@ class NCViewerPDF: UIViewController, NCViewerPDFSearchDelegate {
 
         guard let userInfo = notification.userInfo as NSDictionary?,
               let ocId = userInfo["ocId"] as? String,
-              ocId == self.metadata.ocId,
+              ocId == self.metadata?.ocId,
               let metadata = NCManageDatabase.shared.getMetadataFromOcId(ocId)
         else { return }
 
@@ -342,7 +357,7 @@ class NCViewerPDF: UIViewController, NCViewerPDFSearchDelegate {
 
         guard let userInfo = notification.userInfo as NSDictionary?,
               let ocId = userInfo["ocId"] as? String,
-              ocId == self.metadata.ocId,
+              ocId == self.metadata?.ocId,
               let ocIdNew = userInfo["ocIdNew"] as? String,
               let metadataNew = NCManageDatabase.shared.getMetadataFromOcId(ocIdNew)
         else { return }
@@ -357,7 +372,9 @@ class NCViewerPDF: UIViewController, NCViewerPDFSearchDelegate {
               let error = userInfo["error"] as? NKError
         else { return }
 
-        if error == .success, let ocId = ocId.first, metadata.ocId == ocId {
+        if error == .success,
+           let ocId = ocId.first,
+           metadata?.ocId == ocId {
             viewUnload()
         }
     }
@@ -366,7 +383,7 @@ class NCViewerPDF: UIViewController, NCViewerPDFSearchDelegate {
 
         guard let userInfo = notification.userInfo as NSDictionary?,
               let ocId = userInfo["ocId"] as? String,
-              ocId == self.metadata.ocId,
+              ocId == self.metadata?.ocId,
               let metadata = NCManageDatabase.shared.getMetadataFromOcId(ocId)
         else { return }
 
@@ -410,7 +427,11 @@ class NCViewerPDF: UIViewController, NCViewerPDFSearchDelegate {
 
     @objc func openMenuMore() {
 
-        if imageIcon == nil { imageIcon = UIImage(named: "file_pdf") }
+        guard let metadata = self.metadata else { return }
+        if imageIcon == nil {
+            imageIcon = UIImage(named: "file_pdf")
+        }
+
         NCViewer.shared.toggleMenu(viewController: self, metadata: metadata, webView: false, imageIcon: imageIcon)
     }