Pārlūkot izejas kodu

【主页快捷工具-加密】勾选后,需要激活输入框;输入框缺少悬浮、激活状态(已修复)

tangchao 1 gadu atpakaļ
vecāks
revīzija
4e1a7693ac

+ 50 - 7
PDF Office/PDF Master/Class/PDFTools/Secure/View/KMSecureEncryptPasswordCellView.swift

@@ -13,7 +13,10 @@ class KMSecureEncryptPasswordCellView: NSTableCellView {
     private var passwordView: KMSecureTextFiled = KMSecureTextFiled()
     private var openOrClosePasswordButton: NSButton?
     
+    private var hover = KMCoverButton()
+    
     var kmEnabled = false
+    private var isFocus = false
     
     var itemClick: KMItemClickBlock<KMSecureEncryptPasswordCellView>?
     var valueChange: KMValueDidChangeBlock?
@@ -42,14 +45,31 @@ class KMSecureEncryptPasswordCellView: NSTableCellView {
         self.addSubview(self.checkBox)
         self.addSubview(self.passwordView)
         
+        self.hover.isBordered = false
+        self.hover.title = ""
+        self.hover.wantsLayer = true
+        self.hover.layer?.backgroundColor = .clear
+        self.addSubview(self.hover, positioned: .below, relativeTo: self.passwordView)
+        self.hover.coverAction = { [unowned self] _, action in
+            if (!self.passwordViewCanHover()) {
+                return
+            }
+            if (action == .enter) {
+                self.refreshPasswordView(state: .Hov)
+            } else if (action == .exit) {
+                self.refreshPasswordView(state: .Norm)
+            }
+        }
+        
         self.checkBox.target = self
         self.checkBox.action = #selector(checkBoxAction)
         
         self.passwordView.backgroundView.wantsLayer = true
         self.passwordView.backgroundView.layer?.borderWidth = 1
-        self.passwordView.backgroundView.layer?.borderColor = NSColor(hex: "#DFE1E5").cgColor
         self.passwordView.backgroundView.layer?.cornerRadius = 4
         self.passwordView.kmEnabled = false
+        self.isFocus = false
+        self.refreshPasswordView(state: .Norm)
         
         let rightView = NSView()
         rightView.frame = NSMakeRect(0, 0, 32, 32);
@@ -67,6 +87,9 @@ class KMSecureEncryptPasswordCellView: NSTableCellView {
         self.openOrClosePasswordButton = openPasswordButton
         
         self.passwordView.valueDidChange = { [unowned self] string in
+            self.isFocus = true
+            self.refreshPasswordView(state: .Focus)
+            
             guard let callback = self.valueChange else {
                 return
             }
@@ -75,9 +98,13 @@ class KMSecureEncryptPasswordCellView: NSTableCellView {
             callback(string, nil)
         }
         self.passwordView.becomeFirstResponderHandler = { [unowned self] result in
+            self.isFocus = true
+            self.refreshPasswordView(state: .Focus)
             self.updatePasswordViewRightViewState()
         }
         self.passwordView.didEndEditHandler = { [unowned self] _ in
+            self.isFocus = false
+            self.refreshPasswordView(state: .Norm)
             self.updatePasswordViewRightViewState()
         }
     }
@@ -90,6 +117,8 @@ class KMSecureEncryptPasswordCellView: NSTableCellView {
         
         let passwordY: CGFloat = self.checkBox.frame.maxY + 8
         self.passwordView.frame = NSMakeRect(8, passwordY, width-8-8, 32)
+        
+        self.hover.frame = self.passwordView.frame
     }
 
     @objc func checkBoxAction(sender: NSButton) {
@@ -98,17 +127,11 @@ class KMSecureEncryptPasswordCellView: NSTableCellView {
             self.kmEnabled = true
             self.openOrClosePasswordButton?.isEnabled = true
             
-            self.passwordView.backgroundView.wantsLayer = true
-            self.passwordView.backgroundView.layer?.borderColor = NSColor(hex: "#DFE1E5").cgColor
-            
             let _ = self.passwordView.becomeFirstResponder()
         } else {
             self.passwordView.kmEnabled = false
             self.kmEnabled = false
             self.openOrClosePasswordButton?.isEnabled = false
-            
-            self.passwordView.backgroundView.wantsLayer = true
-            self.passwordView.backgroundView.layer?.borderColor = NSColor(hex: "#DFE1E5").cgColor
         }
         
         self.updatePasswordViewRightViewState()
@@ -136,4 +159,24 @@ class KMSecureEncryptPasswordCellView: NSTableCellView {
             self.passwordView.rightView?.isHidden = false
         }
     }
+    
+    private func passwordViewCanHover() -> Bool {
+        if (!self.passwordView.kmEnabled) {
+            return false
+        }
+        if (self.isFocus) {
+            return false
+        }
+        return true
+    }
+    
+    private func refreshPasswordView(state: KMDesignTokenState) {
+        if (state == .Focus) {
+            self.passwordView.backgroundView.layer?.borderColor = NSColor(hex: "#1770F4").cgColor
+        } else if (state == .Norm) {
+            self.passwordView.backgroundView.layer?.borderColor = NSColor(hex: "#DFE1E5").cgColor
+        } else if (state == .Hov) {
+            self.passwordView.backgroundView.layer?.borderColor = NSColor(hex: "#68ACF8").cgColor
+        }
+    }
 }

+ 1 - 0
PDF Office/PDF Master/PDF_Master DMG-Bridging-Header.h

@@ -79,3 +79,4 @@
 #import "KMTools_OC.h"
 //广告
 #import "KMRecommondManager.h"
+#import "KMCoverButton.h"

+ 1 - 0
PDF Office/PDF Master/PDF_Master Pro-Bridging-Header.h

@@ -56,3 +56,4 @@
 #import "KMTools_OC.h"
 //广告
 #import "KMRecommondManager.h"
+#import "KMCoverButton.h"

+ 1 - 0
PDF Office/PDF Master/PDF_Master-Bridging-Header.h

@@ -80,3 +80,4 @@
 #import "KMTools_OC.h"
 //广告
 #import "KMRecommondManager.h"
+#import "KMCoverButton.h"