Browse Source

【页面编辑】整理提取代码

tangchao 1 year ago
parent
commit
2a43b2d052

+ 1 - 0
PDF Office/PDF Master/Class/Common/KMCommonDefine.swift

@@ -28,6 +28,7 @@ typealias KMCommonClickBlock = (_ index: Int, _ params: Any...)->()
 typealias KMCommonBlock = (_ params: Any...)->()
 
 typealias KMValueDidChangeBlock = (_ value: Any?, _ change: [NSKeyValueChangeKey : Any]?)->()
+typealias KMResultBlock = (_ result: KMResult?, _ params: Any...)->Void
 
 // MARK: - 其他
 

+ 8 - 0
PDF Office/PDF Master/Class/Common/KMCommonEnum.swift

@@ -70,3 +70,11 @@ import Foundation
     case ascending  // 升序
     case descending // 降序
 }
+
+@objc enum KMResult: Int {
+    case cancel = 0     // 关闭
+    case ok             // 确认
+    
+    case success        // 成功
+    case failure        // 失败
+}

+ 76 - 52
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Thumbnail/Base/KMPDFThumbViewBaseController.swift

@@ -320,7 +320,27 @@ class KMPDFThumbViewBaseController: KMBaseViewController {
                 let _ = KMComparativeTableViewController.show(window: self.view.window!)
                 return
             }
-            self._extractPages(indexpaths: indexpaths)
+//            if await (KMLightMemberManager.manager.canPayFunction() == false) {
+//                let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!) { isSubscribeSuccess, isWaterMarkExport, isClose in
+//                    if (isClose) {
+//                        return
+//                    }
+//                    self._extractPages(indexpaths: indexpaths)
+//                }
+//                return
+//            }
+//            self._extractPages(indexpaths: indexpaths)
+            self.showExtractWindow_success(indexpaths: indexpaths) { [unowned self] oneDocumentPerPage, extractAfterDelete in
+                self._extractPages(indexpaths: indexpaths, oneDocumentPerPage: oneDocumentPerPage) { [unowned self] result, params in
+                    if (result == .failure) {
+                        return
+                    }
+                    
+                    if (extractAfterDelete) {
+                        self.deleteIndexPaths(indexpaths: indexpaths)
+                    }
+                }
+            }
         }
     }
     
@@ -389,6 +409,58 @@ class KMPDFThumbViewBaseController: KMBaseViewController {
         
     }
     
+    // MARK: - Show Windows
+    
+    public func showExtractWindow(indexpaths: Set<IndexPath>, callback:@escaping KMResultBlock) {
+        let windowC = KMPageEditExtractWindowController(nil)
+        if let data = self.thumbnailView.document?.pageCount, data == indexpaths.count {
+            windowC.canDeleteAll = false
+        } else {
+            windowC.canDeleteAll = true
+        }
+        self.km_beginSheet(windowC: windowC)
+        
+        windowC.itemClick = { [weak self] index, _ in
+            if (index == 1) { /// 取消
+                self?.km_endSheet()
+                callback(.cancel)
+                return
+            }
+            guard let _windowC = self?.currentWindowC as? KMPageEditExtractWindowController  else {
+                self?.km_endSheet()
+                callback(nil)
+                return
+            }
+            
+            /// 提取设置项
+            let settingView = _windowC.settingView as! KMPageEditExtractSettingView
+            let oneDocumentPerPage = settingView.independentPerPageValue
+            let extractAfterDelete = settingView.extractAfterDeletePageValue
+            
+            self?.km_endSheet()
+            callback(.ok, oneDocumentPerPage, extractAfterDelete)
+        }
+    }
+    
+    public func showExtractWindow_success(indexpaths: Set<IndexPath>, callback:@escaping (_ oneDocumentPerPage: Bool, _ extractAfterDelete: Bool)->Void) {
+        self.showExtractWindow(indexpaths: indexpaths) { result, params in
+            guard let data = result, data == .ok else { // 点击取消或出错
+                return
+            }
+            
+            var oneDocumentPerPage = false
+            if let data = params.first as? Bool {
+                oneDocumentPerPage = data
+            }
+            var extractAfterDelete = false
+            if let data = params.last as? Bool {
+                extractAfterDelete = data
+            }
+            
+            callback(oneDocumentPerPage, extractAfterDelete)
+        }
+    }
+    
     // MARK: - 刷新 UI
     
     func refreshUI(indexpaths: Set<IndexPath> = [], keepSelected: Bool = false) {
@@ -482,57 +554,9 @@ class KMPDFThumbViewBaseController: KMBaseViewController {
         }
     }
     
-    private func _extractPages(indexpaths: Set<IndexPath>) {
-        let windowC = KMPageEditExtractWindowController(nil)
-        if let data = self.thumbnailView.document?.pageCount, data == self.thumbnailView.selectionIndexPaths.count {
-            windowC.canDeleteAll = false
-        } else {
-            windowC.canDeleteAll = true
-        }
-        
-        self.km_beginSheet(windowC: windowC)
-        
-        windowC.itemClick = { [weak self] index, value in
-            if (index == 1) { /// 取消
-                self?.km_endSheet()
-                return
-            }
-            guard let _windowC = self?.currentWindowC as? KMPageEditExtractWindowController  else {
-                self?.km_endSheet()
-                return
-            }
-            
-            /// 提取设置项
-            let settingView = _windowC.settingView as! KMPageEditExtractSettingView
-            let oneDocumentPerPage = settingView.independentPerPageValue
-            let extractAfterDelete = settingView.extractAfterDeletePageValue
-            
-            self?.km_endSheet()
-            
-            var indexs: IndexSet = []
-            var extractPages: Array<CPDFPage> = []
-            for indexpath in indexpaths {
-                let page = self?.thumbnailView.document!.page(at: UInt(indexpath.item))
-                if (page != nil) {
-                    extractPages.append(page!)
-                }
-                indexs.insert(indexpath.item)
-            }
-            
-            KMPageEditTools.extract((self?.thumbnailView.document)!, indexs, !oneDocumentPerPage, (self?.view.window)!) { result, urls, error in
-                if (result == false) {
-                    return
-                }
-                
-                if (extractAfterDelete) {
-                    var indexpaths = Set<IndexPath>()
-                    for page in extractPages {
-                        let indexPage: Int = Int((self?.thumbnailView.document!.index(for: page))!)
-                        indexpaths.insert(IndexPath(item: indexPage, section: 0))
-                    }
-                    self?.deleteIndexPaths(indexpaths: indexpaths)
-                }
-            }
+    private func _extractPages(indexpaths: Set<IndexPath>, oneDocumentPerPage: Bool, callback: @escaping KMResultBlock) {
+        KMPageEditTools.extract((self.thumbnailView.document)!, self.indexpathsToIndexs(indexpaths: indexpaths), !oneDocumentPerPage, self.view.window!) { result, urls, error in
+            callback(result ? .success : .failure, urls as Any, error)
         }
     }