Browse Source

【页面编辑】工具栏选中后取消item选中状态

tangchao 1 năm trước cách đây
mục cha
commit
5063301b41

+ 41 - 3
PDF Office/PDF Master/Class/PDFTools/PageEdit/Controller/KMPDFEditViewController.swift

@@ -247,8 +247,8 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
         self.selectPages(indexs: IndexSet())
     }
     
-    override func refreshUI(indexpaths: Set<IndexPath> = []) {
-        super.refreshUI(indexpaths: indexpaths)
+    override func refreshUI(indexpaths: Set<IndexPath> = [], keepSelected: Bool = false) {
+        super.refreshUI(indexpaths: indexpaths, keepSelected: keepSelected)
         
         self.listView?.layoutDocumentView()
     }
@@ -261,6 +261,12 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
         super.cutAction()
     }
     
+    override func deleteAction() {
+        super.deleteAction()
+        
+        self.toolBar.unSelectItem(for: KMToolbarPageEditDeleteItemIdentifier)
+    }
+    
     override func deleteIndexPaths(indexpaths: Set<IndexPath>) {
         guard let pageCount = self.listView?.document.pageCount else {
             KMPrint("pageCount invalid.")
@@ -273,10 +279,15 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
         
         self.dealPdfDocumentDidEditCallback()
         
-        self.clearSelectPages()
         super.deleteIndexPaths(indexpaths: indexpaths)
     }
     
+//    override func leftRotateAction() {
+//        super.leftRotateAction()
+//        
+//        self.toolBar.unSelectItem(for: KMToolbarPageEditLeftRotateItemIdentifier)
+//    }
+    
     override func leftRotateIndexpaths(indexpaths: Set<IndexPath>) {
         if (!self.indexpathsIsValid(indexpaths: indexpaths) || !self.canRotate()) {
             return
@@ -285,6 +296,12 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
         self.dealPdfDocumentDidEditCallback()
     }
     
+//    override func rightRotateAction() {
+//        super.rightRotateAction()
+//        
+//        self.toolBar.unSelectItem(for: KMToolbarPageEditRightRotateItemIdentifier)
+//    }
+    
     override func rightRotateIndexpaths(indexpaths: Set<IndexPath>) {
         if (!self.indexpathsIsValid(indexpaths: indexpaths) || !self.canRotate()) {
             return
@@ -316,6 +333,22 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
         self.dealPdfDocumentDidEditCallback()
     }
     
+    override func extractAction() {
+        super.extractAction()
+        
+        DispatchQueue.main.async {
+            self.toolBar.unSelectItem(for: KMToolbarPageEditExtractItemIdentifier)
+        }
+    }
+    
+    override func replaceAction() {
+        super.replaceAction()
+        
+        DispatchQueue.main.async {
+            self.toolBar.unSelectItem(for: KMToolbarPageEditReplaceItemIdentifier)
+        }
+    }
+    
     override func getInsertIndex() -> Int {
         var index = 0
         if let pageCount = self.thumbnailView.document?.pageCount, pageCount > 0 {
@@ -333,6 +366,8 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
     
     override func splitAction() {
         Task { @MainActor in
+            self.toolBar.unSelectItem(for: KMToolbarPageEditSplitItemIdentifier)
+            
             if await (KMLightMemberManager.manager.canUseAdvanced() == false) {
                 let _ = KMComparativeTableViewController.show(window: self.view.window!)
                 return
@@ -343,6 +378,8 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
     
     override func reverseAction() {
         Task { @MainActor in
+            self.toolBar.unSelectItem(for: KMToolbarPageEditReverseItemIdentifier)
+            
             if await (KMLightMemberManager.manager.canUseAdvanced() == false) {
                 let _ = KMComparativeTableViewController.show(window: self.view.window!)
                 return
@@ -979,6 +1016,7 @@ extension KMPDFEditViewController {
 
 extension KMPDFEditViewController {
     override func deleteAfter(indexpaths: Set<IndexPath>) {
+        self.clearSelectPages()
         self.km_becomeFirstResponder()
     }
     override func copyAfter(indexpaths: Set<IndexPath>) {

+ 11 - 0
PDF Office/PDF Master/Class/PDFTools/PageEdit/View/KMPDFEditToolbar.swift

@@ -121,6 +121,17 @@ class KMPDFEditToolbar: NSView {
         self.pageRangeView?.editable = true
     }
     
+    public func getItem(for itemId: String) -> KMToolBoxItem? {
+        return self.toolBar.item(forItemIdentifier: itemId)
+    }
+    
+    public func selectItem(for itemId: String) {
+        self.getItem(for: itemId)?.isSelected = true
+    }
+    
+    public func unSelectItem(for itemId: String) {
+        self.getItem(for: itemId)?.isSelected = false
+    }
     
     // MARK: - Actions
     

+ 7 - 3
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Thumbnail/Base/KMPDFThumbViewBaseController.swift

@@ -390,8 +390,12 @@ class KMPDFThumbViewBaseController: KMBaseViewController {
     
     // MARK: - 刷新 UI
     
-    func refreshUI(indexpaths: Set<IndexPath> = []) {
+    func refreshUI(indexpaths: Set<IndexPath> = [], keepSelected: Bool = false) {
+        let selected_indexpaths = self.thumbnailView.selectionIndexPaths
         self.thumbnailView.reloadData(indexs: indexpaths)
+        if (keepSelected) {
+            self.thumbnailView.selectionIndexPaths = selected_indexpaths
+        }
     }
     
     func refreshUIForKeepSelecteds() {
@@ -673,7 +677,7 @@ class KMPDFThumbViewBaseController: KMBaseViewController {
         }
         
         self.kmUndoManager?.registerUndo(withTarget: self, selector: #selector(_undo_rightRotate), object: newIndexs)
-        self.refreshUIForKeepSelecteds()
+        self.refreshUI(indexpaths: self.indexsToIndexpaths(indexs: indexs), keepSelected: true)
     }
     
     @objc private func _undo_rightRotate(indexs: IndexSet) {
@@ -683,7 +687,7 @@ class KMPDFThumbViewBaseController: KMBaseViewController {
         }
         
         self.kmUndoManager?.registerUndo(withTarget: self, selector: #selector(_undo_leftRotate), object: newIndexs)
-        self.refreshUIForKeepSelecteds()
+        self.refreshUI(indexpaths: self.indexsToIndexpaths(indexs: indexs), keepSelected: true)
     }
     
     @objc private func _undo_replace(of targetIndexs: IndexSet, with pages: [CPDFPage], at index: Int) {

+ 2 - 0
PDF Office/PDF Master/Class/PDFWindowController/Toolbar/KMToolbar.h

@@ -87,6 +87,8 @@ extern NSString *KMToolbarDividerItemIdentifier;
 
 - (void)reloadData;
 
+- (KMToolBoxItem  * _Nullable)itemForItemIdentifier:(NSString * _Nonnull)itemIdentifier;
+
 @end
 
 @protocol KMNewToolbarDelegate <NSObject>

+ 9 - 0
PDF Office/PDF Master/Class/PDFWindowController/Toolbar/KMToolbar.m

@@ -1163,4 +1163,13 @@ NSString *KMToolbarDividerItemIdentifier = @"KMToolbarDividerItemIdentifier";
     [self resizeSubviewsWithOldSize:self.frame.size];
 }
 
+- (KMToolBoxItem *)itemForItemIdentifier:(NSString *)itemIdentifier {
+    for (KMToolBoxItem *item in self.items) {
+        if ([item.itemIdentifier isEqualToString:itemIdentifier]) {
+            return item;
+        }
+    }
+    return nil;
+}
+
 @end