Browse Source

【综合】注释回复筛选逻辑调整

tangchao 5 months ago
parent
commit
ac6ca7969c

+ 40 - 6
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Annotation/Controller/KMNoteOutlineFilterViewController.swift

@@ -14,9 +14,9 @@ extension KMNoteOutlineFilterViewController {
     static let filterSelectStateKey = "KMNoteOutlineFilterSelectArray_State"
 }
 
-//class KMNoteOutlineFilterViewController_window: NSWindow {
-//
-//}
+class KMNoteOutlineFilterViewController_window: NSWindow {
+
+}
 
 typealias NoteFilterVC = KMNoteOutlineFilterViewController
 class KMNoteOutlineFilterViewController: NSViewController {
@@ -158,6 +158,16 @@ class KMNoteOutlineFilterViewController: NSViewController {
 //            make?.top.equalTo()(self.stateLabel.mas_bottom)?.offset()(8)
 //            make?.right.equalTo()(-16)
 //            make?.height.equalTo()(self.stateH_)
+//        }
+        self.stateView.mas_remakeConstraints { make in
+            make?.leading.equalTo()(16)
+            make?.top.equalTo()(self.stateLabel.mas_bottom)?.offset()(8)
+            make?.right.equalTo()(-16)
+            make?.height.equalTo()(self.stateH_)
+        }
+        
+//        self.stateScrollView.mas_remakeConstraints { make in
+//            make?.edges.equalTo()(0)
 //        }
     }
     
@@ -382,13 +392,13 @@ class KMNoteOutlineFilterViewController: NSViewController {
             make?.height.equalTo()(self.stateH_)
         }
         
-        self.stateScrollView.mas_remakeConstraints { make in
+//        self.stateScrollView.mas_remakeConstraints { make in
 //            make?.leading.equalTo()(16)
 //            make?.top.equalTo()(self.stateLabel.mas_bottom)?.offset()(8)
 //            make?.right.equalTo()(-16)
 //            make?.height.equalTo()(self.stateH_)
-            make?.edges.equalTo()(0)
-        }
+//            make?.edges.equalTo()(0)
+//        }
 //        self.scrollView.autoresizingMask = [.width, .height]
         
 //        self.scrollView.documentView = self.collectionView
@@ -417,6 +427,7 @@ class KMNoteOutlineFilterViewController: NSViewController {
         self.scrollView.scrollerStyle = .legacy
         self.scrollView.autohidesScrollers = true
 //        self.scrollView.alphaValue = 0
+        self.stateCollectionView.allowsMultipleSelection = true
         
         self.authorCollectionView.register(KMNoteFilterCollevtionViewItem.self, forItemWithIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMNoteFilterCollevtionViewItem"))
         self.colorCollectionView.register(KMNoteColorCollectionViewItem.self, forItemWithIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMNoteColorCollectionViewItem"))
@@ -447,6 +458,29 @@ class KMNoteOutlineFilterViewController: NSViewController {
     }
     
     @IBAction func applyButtonAction(_ sender: NSButton) {
+        var hasMark = false
+        var hasReview = false
+        for data in (self.selectStateArray as? [NSNumber]) ?? []  {
+            let state = data.intValue
+            if state == CPDFAnnotationState.marked.rawValue || state == CPDFAnnotationState.unMarked.rawValue {
+                hasMark = true
+            }
+            if state == CPDFAnnotationState.none.rawValue || state == CPDFAnnotationState.accepted.rawValue || state == CPDFAnnotationState.rejected.rawValue || state == CPDFAnnotationState.canceled.rawValue || state == CPDFAnnotationState.completed.rawValue {
+                hasReview = true
+            }
+        }
+        if hasMark == false {
+            self.selectStateArray?.add(NSNumber(value: CPDFAnnotationState.marked.rawValue))
+            self.selectStateArray?.add(NSNumber(value: CPDFAnnotationState.unMarked.rawValue))
+        }
+        if hasReview == false {
+            self.selectStateArray?.add(NSNumber(value: CPDFAnnotationState.none.rawValue))
+            self.selectStateArray?.add(NSNumber(value: CPDFAnnotationState.accepted.rawValue))
+            self.selectStateArray?.add(NSNumber(value: CPDFAnnotationState.rejected.rawValue))
+            self.selectStateArray?.add(NSNumber(value: CPDFAnnotationState.canceled.rawValue))
+            self.selectStateArray?.add(NSNumber(value: CPDFAnnotationState.completed.rawValue))
+        }
+        
         let data1 = NSKeyedArchiver.archivedData(withRootObject: NSArray(array: self.selectTypeArray!))
         let data2 = NSKeyedArchiver.archivedData(withRootObject: NSArray(array: self.selectColorArray!))
         let data3 = NSKeyedArchiver.archivedData(withRootObject: NSArray(array: self.selectAuthorArray!))

+ 0 - 1
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Annotation/Controller/KMNoteOutlineFilterViewController.xib

@@ -273,7 +273,6 @@
                                             <constraint firstItem="fsf-R2-8j4" firstAttribute="top" secondItem="2FA-Ce-Bjg" secondAttribute="top" id="PrX-Aw-KPL"/>
                                             <constraint firstAttribute="bottom" secondItem="fsf-R2-8j4" secondAttribute="bottom" id="Wke-Da-9yk"/>
                                             <constraint firstItem="fsf-R2-8j4" firstAttribute="leading" secondItem="2FA-Ce-Bjg" secondAttribute="leading" id="jiw-pt-W3e"/>
-                                            <constraint firstAttribute="height" constant="40" id="s9l-jv-sgt"/>
                                             <constraint firstAttribute="trailing" secondItem="fsf-R2-8j4" secondAttribute="trailing" id="uY1-lc-gjK"/>
                                         </constraints>
                                     </customView>

+ 5 - 1
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController+Note.swift

@@ -695,6 +695,10 @@ extension KMLeftSideViewController {
         item.view = filterViewController.view
 
         menu.popUp(positioning: nil, at: NSMakePoint(-130, 30), in: button)
+//        let win = KMNoteOutlineFilterViewController_window(contentRect: .zero, styleMask: .borderless, backing: .buffered, defer: false)
+//        win.center()
+//        win.contentViewController = filterViewController
+//        win.orderFront(nil)
     }
     
     func fetchNote(for index: Int) -> CPDFAnnotation? {
@@ -957,7 +961,7 @@ extension KMLeftSideViewController {
                         for anno in filterAnnos {
                             let markState = self.noteReplyHanddler.fetchAnnoState(anno) ?? .unMarked
                             let reviewState = self.noteReplyHanddler.fetchReviewState(anno) ?? .none
-                            if stateArr.contains(NSNumber(value: markState.rawValue)) == false && stateArr.contains(NSNumber(value: reviewState.rawValue)) {
+                            if stateArr.contains(NSNumber(value: markState.rawValue)) == false || stateArr.contains(NSNumber(value: reviewState.rawValue)) == false {
                                 filterAnnos.removeObject(anno)
                             }
                         }

+ 16 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Tools/KMNoteReplyHanddler.swift

@@ -285,10 +285,18 @@ class KMNoteReplyHanddler: NSObject {
     func markAnnotation(_ anno: CPDFAnnotation?) {
         guard let replyA = self.fetchMarkAnnotation(anno) else {
             anno?.createReplyStateAnnotation(.marked)
+            
+            if let data = self.viewC?.view.window {
+                KMTools.setDocumentEditedState(window: data)
+            }
             return
         }
         if replyA.getAnnotState() == .unMarked {
             replyA.setAnnotState(.marked)
+            
+            if let data = self.viewC?.view.window {
+                KMTools.setDocumentEditedState(window: data)
+            }
         }
     }
     
@@ -298,6 +306,10 @@ class KMNoteReplyHanddler: NSObject {
         }
         if replyA.getAnnotState() == .marked {
             replyA.setAnnotState(.unMarked)
+            
+            if let data = self.viewC?.view.window {
+                KMTools.setDocumentEditedState(window: data)
+            }
         }
     }
     
@@ -308,6 +320,10 @@ class KMNoteReplyHanddler: NSObject {
         }
         
         theAnno.setAnnotState(state)
+        
+        if let data = self.viewC?.view.window {
+            KMTools.setDocumentEditedState(window: data)
+        }
     }
     
     func createReplyAnnotation(_ anno: CPDFAnnotation?, content: String?, userName: String?) -> CPDFAnnotation? {