Jelajahi Sumber

综合 - 【KMDesignSelect】补充将展开代理,可以补充设置popover的不可点击项

wanjun 2 tahun lalu
induk
melakukan
97ac8e0e6a

+ 28 - 22
PDF Office/PDF Office/Class/Home/ViewController/KMHomePopViewController.swift

@@ -40,6 +40,7 @@ class KMHomePopViewController: NSViewController {
     var _state: KMDesignTokenState = .Norm
     var enabled: Bool = true // 是否可点击
     var canHover: Bool = true // 是否可悬浮
+    var disItems: [String] = []
 
     func initWithPopViewDataArr(_ popViewDataArr: [String]) -> Self {
 //        self.dataArr = popViewDataArr.reverseObjectEnumerator().allObjects as NSArray
@@ -52,12 +53,13 @@ class KMHomePopViewController: NSViewController {
             
         customBox.fillColor = NSColor(hex: "#FFFFFF")
 
-        self.updateUI()
+//        self.updateUI()
     }
     
     override func viewDidAppear() {
         super.viewDidAppear()
-        
+        self.updateUI()
+
     }
     
     // MARK: Private
@@ -151,6 +153,10 @@ class KMHomePopViewController: NSViewController {
 //    }
     
     func createPopViewCellLabelWithFrame(_ mas_top: Float, stringValue: String) {
+        var isDisabled = false
+        if disItems.contains(stringValue) {
+            isDisabled = true
+        }
         let box: KMBox = KMBox(frame: NSZeroRect)
         box.boxType = .custom
         box.borderWidth = 0.0
@@ -203,32 +209,32 @@ class KMHomePopViewController: NSViewController {
         boxLabel.attributedStringValue = NSAttributedString(string: stringValue, attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle])
         
         box.moveCallback =  {(mouseEntered: Bool, mouseBox: KMBox) -> Void in
-            if mouseEntered {
-//                if #available(macOS 10.14, *) {
-//                    box.fillColor = NSColor.controlAccentColor
-////                    boxLabel.textColor = NSColor.white
-//                } else {
-//                    box.fillColor = NSColor.init(red: 71/255.0, green: 126/255.0, blue: 222/255.0, alpha: 1.0)
-////                    boxLabel.textColor = NSColor.white
-//                }
-                box.fillColor = KMDesignToken.shared.fill(withToken: "dropdown.m.bg.hov")
-            } else {
-                box.fillColor = NSColor.clear
-//                boxLabel.textColor = NSColor.labelColor
+            if !isDisabled {
+                if mouseEntered {
+                    box.fillColor = KMDesignToken.shared.fill(withToken: "dropdown.m.bg.hov")
+                } else {
+                    box.fillColor = NSColor.clear
+                }
             }
         }
         box.downCallback = {(downEntered: Bool, mouseBox: KMBox) -> Void in
-            if downEntered {
-                mouseBox.fillColor = KMDesignToken.shared.fill(withToken: "dropdown.m.bg.sel")
-                boxLabel.textColor = KMDesignToken.shared.fill(withToken: "dropdown.m.mac-text.sel")
-                if let callback = self.downCallback {
-                    callback(true, stringValue)
+            if !isDisabled {
+                if downEntered {
+                    mouseBox.fillColor = KMDesignToken.shared.fill(withToken: "dropdown.m.bg.sel")
+                    boxLabel.textColor = KMDesignToken.shared.fill(withToken: "dropdown.m.mac-text.sel")
+                    if let callback = self.downCallback {
+                        callback(true, stringValue)
+                    }
+                } else {
+                    mouseBox.fillColor = KMDesignToken.shared.fill(withToken: "dropdown.m.bg.norm")
+                    boxLabel.textColor = KMDesignToken.shared.fill(withToken: "dropdown.m.mac-text.def")
                 }
-            } else {
-                mouseBox.fillColor = KMDesignToken.shared.fill(withToken: "dropdown.m.bg.norm")
-                boxLabel.textColor = KMDesignToken.shared.fill(withToken: "dropdown.m.mac-text.def")
             }
         }
+        if isDisabled {
+            box.fillColor = KMDesignToken.shared.fill(withToken: "dropdown.m.bg.dis")
+            boxLabel.textColor = KMDesignToken.shared.fill(withToken: "dropdown.m.mac-text.dis")
+        }
     }
     
     func cellContentAdaptiveWidth(_ content: String) -> Float {

+ 8 - 1
PDF Office/PDF Office/Class/Home/ViewController/customViewController/KMDesignSelect.swift

@@ -10,6 +10,7 @@ import Cocoa
 @objc protocol KMSelectPopButtonDelegate: NSObjectProtocol {
     @objc optional func km_controlTextDidEndEditing(_ obj: KMDesignSelect)
     @objc optional func km_controlTextDidChange(_ obj: KMDesignSelect)
+    @objc optional func km_SelectPopoverWillShow(_ obj: KMDesignSelect)
     func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect)
 }
 
@@ -145,7 +146,8 @@ class KMSelectCell: NSTextFieldCell {
     open weak var delete: KMSelectPopButtonDelegate?
     var _indexOfSelectedItem: Int = 0
     var _numberOfItems: Int = 0
-    
+    var disItems: [String] = []
+
     var createFilePopover: NSPopover = NSPopover.init()
     
     init(withType type: SelectType) {
@@ -395,6 +397,8 @@ class KMSelectCell: NSTextFieldCell {
     // MARK: Action
     
     func mainBoxAction(_ sender: Any) -> Void {
+        self.delete?.km_SelectPopoverWillShow?(self)
+
         let vc: KMHomePopViewController = KMHomePopViewController().initWithPopViewDataArr(items)
         createFilePopover.contentViewController = vc
         createFilePopover.animates = true
@@ -448,6 +452,9 @@ extension KMDesignSelect: NSPopoverDelegate {
         if (createFilePopover == popover) {
             self.state = .Focus
             self.canHover = false
+            
+            let vc = createFilePopover.contentViewController! as! KMHomePopViewController
+            vc.disItems = disItems
         }
     }
     

+ 4 - 0
PDF Office/PDF Office/Class/Merge/OCPart/KMPDFEditAppendWindow.m

@@ -740,6 +740,10 @@ static NSString * const KMTableColumnSizeID = @"size";
     
 }
 
+- (void)km_SelectPopoverWillShow:(KMDesignSelect *)obj {
+    
+}
+
 #pragma mark tabelView
 - (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
 {