Prechádzať zdrojové kódy

【分包下载】无网络状态弹窗添加

lizhe 1 rok pred
rodič
commit
d48a3aa4c9

+ 42 - 0
PDF Office/PDF Master/Class/KMResourceDownload/KMResourceDownloadManager.swift

@@ -23,6 +23,7 @@ enum KMResourceDownloadState {
     case unzipFailed
     case moveFailed
     case success
+    case retry
 }
 
 class KMResourceDownloadManager: NSObject {
@@ -31,12 +32,53 @@ class KMResourceDownloadManager: NSObject {
     var downloadTask: URLSessionDownloadTask?
     var progressBlock: ((Double) -> Void)?
     var downloadResultBlock: ((Bool, KMResourceDownloadState) -> Void)?
+    var reachabilityAlert: NSAlert?
     
     
     func downloadFramework(progress: @escaping (Double) -> Void, result: @escaping (Bool, KMResourceDownloadState) -> Void) {
         self.progressBlock = progress
         self.downloadResultBlock = result
         
+        KMRequestServer.requestServer.reachabilityStatusChange { [weak self] status in
+            if status == .notReachable {
+                KMPrint("无网络")
+                self?.downloadTask?.cancel()
+                self?.downloadTask = nil
+                self?.downloadResultBlock?(false, .none)
+                DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.2, execute: { [unowned self] in
+                    if self?.reachabilityAlert == nil {
+                        self?.reachabilityAlert = NSAlert()
+                        self?.reachabilityAlert?.messageText = NSLocalizedString("Network Disconnected", comment: "")
+                        self?.reachabilityAlert?.informativeText = NSLocalizedString("Please connect to the internet and try downloading again.", comment: "")
+                        self?.reachabilityAlert?.addButton(withTitle: NSLocalizedString("Cancel", comment: ""))
+                        self?.reachabilityAlert?.addButton(withTitle: NSLocalizedString("Retry", comment: ""))
+                        var window = NSWindow.currentWindow()
+                        if window != nil {
+                            self?.reachabilityAlert?.beginSheetModal(for: window) { result in
+                                if (result == .alertFirstButtonReturn) {
+                                    self?.reachabilityAlert = nil
+
+                                    self?.cancelDownload()
+                                } else if result == .alertSecondButtonReturn {
+                                    self?.reachabilityAlert = nil
+                                    self?.downloadResultBlock?(false, .retry)
+                                    self?.cancelDownload()
+                                    return
+                                }
+                                self?.reachabilityAlert = nil
+                            }
+                        } else {
+                            self?.reachabilityAlert = nil
+                        }
+                    } else {
+                        self?.reachabilityAlert = nil
+                    }
+                })
+            } else {
+                KMPrint("有网络")
+            }
+        }
+        
         if self.downloadTask == nil {
             self.downloadXML { [unowned self] content in
                 let urlString = self.dealXML(content: content)

+ 37 - 22
PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertOCRSettingItemView.swift

@@ -4,6 +4,8 @@
 //
 //  Created by tangchao on 2022/12/6.
 //
+
+
 class KMConvertOCRSettingItemView: KMConvertBaseView {
     @IBOutlet weak var titleLabel: NSTextField!
     @IBOutlet weak var checkBox: NSBox!
@@ -32,6 +34,7 @@ class KMConvertOCRSettingItemView: KMConvertBaseView {
     }
     
     var lanugageDidSelected: KMValueDidChangeBlock?
+    var reachabilityAlert: NSAlert?
     
     override func awakeFromNib() {
         super.awakeFromNib()
@@ -93,28 +96,7 @@ class KMConvertOCRSettingItemView: KMConvertBaseView {
             alert.addButton(withTitle: NSLocalizedString("No", comment: ""))
             alert.beginSheetModal(for: self.window!) { [unowned self] result in
                 if (result == .alertFirstButtonReturn) { /// 取消
-                    DispatchQueue.main.async {
-                        self.showProgressWindow()
-                        self.progressController?.maxValue = Double(100)
-                    }
-                    KMResourceDownloadManager.manager.downloadFramework(progress: { progress in
-                        self.progressController?.doubleValue = Double(progress*100)
-                    }, result: { result, downloadState  in
-                        if result {
-                            if let state = self._checkVC?.state {
-                                self._checkVC?.state = state == .Checked ? .Norm : .Checked
-                            }
-                            
-                            self._checkAction()
-                            
-                            if let state = self._checkVC?.state {
-                                self._checkVC?.state = state == .Checked ? .Norm : .Checked
-                            }
-                            
-                            self._checkAction()
-                        }
-                        self.hiddenProgressWindow()
-                    })
+                    self.downLoad()
                 } else if result == .alertSecondButtonReturn {
                     return
                 }
@@ -129,6 +111,39 @@ class KMConvertOCRSettingItemView: KMConvertBaseView {
 #endif
     }
     
+#if VERSION_DMG
+    func downLoad() {
+        DispatchQueue.main.async {
+            self.showProgressWindow()
+            self.progressController?.maxValue = Double(100)
+        }
+        KMResourceDownloadManager.manager.downloadFramework(progress: { progress in
+            self.progressController?.doubleValue = Double(progress*100)
+        }, result: { result, downloadState  in
+            if result {
+                if let state = self._checkVC?.state {
+                    self._checkVC?.state = state == .Checked ? .Norm : .Checked
+                }
+                
+                self._checkAction()
+                
+                if let state = self._checkVC?.state {
+                    self._checkVC?.state = state == .Checked ? .Norm : .Checked
+                }
+                
+                self._checkAction()
+                self.hiddenProgressWindow()
+            } else if downloadState == .retry {
+                DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.2, execute: { [unowned self] in
+                    self.downLoad()
+                })
+            } else {
+                self.hiddenProgressWindow()
+            }
+        })
+    }
+#endif
+    
     public func checkAction() {
         self._checkAction()
     }