소스 검색

【综合】AI相关功能移植

niehaoyu 1 년 전
부모
커밋
674cd58909

+ 20 - 3
PDF Office/PDF Master/Class/AIInfo/AITipIcon/AITipIconView.swift

@@ -14,6 +14,7 @@ import Cocoa
     @IBOutlet weak var hoverImage: NSImageView!
     
     var clickHandle: ((_ view: AITipIconView) -> Void)?
+    var rightClickHandle: ((_ view: AITipIconView) -> Void)?
     
     override func draw(_ dirtyRect: NSRect) {
         super.draw(dirtyRect)
@@ -35,11 +36,27 @@ import Cocoa
                 self.hoverImage.image = NSImage(named: "pop-btn")
             }
         }
-    }
-    
-    
+        
+        let menu = NSMenu.init()
+        
+        let string = NSLocalizedString("Hide AI robot icon", comment: "")
+        let menuItem = NSMenuItem.init(title: string, action: #selector(menuItemClick(_:)), keyEquivalent: "")
+        menuItem.tag = 1000
+        menu.addItem(menuItem)
+        
+        self.clickButton?.menu = menu
+        
+          
+            
+        }
     
     
+    @objc func menuItemClick(_ item: NSMenuItem) {
+        guard let callBack = self.rightClickHandle else {
+            return
+        }
+        callBack(self)
+    }
     
     //MARK: IBAction
     @IBAction func clickAction(_ sender: Any) {

+ 24 - 3
PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController.swift

@@ -208,12 +208,12 @@ import Cocoa
                 
                 if KMAdvertisementManager.manager.infoDict.allKeys.count > 0 {
                     if let adsInfo = KMAdvertisementManager.manager.infoDict["adsInfo"] {
-                        var infoDict: NSDictionary = KMAdvertisementManager.manager.infoDict["adsInfo"] as! NSDictionary
+                        let infoDict: NSDictionary = KMAdvertisementManager.manager.infoDict["adsInfo"] as! NSDictionary
                         let array: [[String: Any]] = infoDict["content"] as! [[String : Any]]
                         
-                        var arrM = NSMutableArray.init()
+                        let arrM = NSMutableArray.init()
                         for dict in array {
-                            var adsInfo = KMAdsInfo.init()
+                            let adsInfo = KMAdsInfo.init()
                             let mutableDictionary = NSMutableDictionary(dictionary: dict)
                             adsInfo.infoDict = mutableDictionary
                             arrM.add(adsInfo)
@@ -819,16 +819,33 @@ extension KMHomeViewController {
     
     //MARK: - AI
     func loadAIIconView() -> Void {
+        NotificationCenter.default.addObserver(self, selector: #selector(aiTipIconViewShowStateChangeNoti), name: NSNotification.Name(rawValue: "kAIIconShowStateChangeNotification"), object: nil)
+        
         self.aiTipView = AITipIconView.createFromNib()
         self.aiTipView.clickHandle = { [weak self] view in
             self?.showAITypeChooseView()
         }
+        self.aiTipView.rightClickHandle = { [weak self] view in
+            AIInfoManager.default().showAIIcon = false
+            NotificationCenter.default.post(name: NSNotification.Name(rawValue: "kAIIconShowStateChangeNotification"), object: nil)
+
+        }
         self.aiTipView.frame = CGRectMake(CGRectGetWidth(self.view.frame)-84, CGRectGetHeight(self.view.frame)-84, 72, 72)
         self.aiTipView.autoresizingMask = [.minXMargin, .minYMargin]
         self.view.addSubview(self.aiTipView)
 
+        self.updateAITipViewShowState()
     }
     
+    func updateAITipViewShowState() {
+        if AIInfoManager.default().showAIIcon {
+            self.aiTipView.isHidden = false
+        } else {
+            self.aiTipView.isHidden = true
+        }
+    }
+     
+    
     func showAITypeChooseView() -> Void {
         if AIInfoManager.default().aiInfo.infoDict.isEmpty == true {
 #if VERSION_DMG
@@ -954,4 +971,8 @@ extension KMHomeViewController {
         }
 #endif
     }
+    
+    @objc func aiTipIconViewShowStateChangeNoti() {
+        self.updateAITipViewShowState()
+    }
 }

+ 23 - 0
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController.swift

@@ -764,14 +764,33 @@ let LOCKED_KEY  = "locked"
     
     //MARK: - AI
     func loadAIIconView() -> Void {
+        NotificationCenter.default.addObserver(self, selector: #selector(aiTipIconViewShowStateChangeNoti), name: NSNotification.Name(rawValue: "kAIIconShowStateChangeNotification"), object: nil)
+        
         self.aiTipView = AITipIconView.createFromNib()
         self.aiTipView.clickHandle = { [weak self] view in
             self?.showAITypeChooseView()
         }
+        self.aiTipView.rightClickHandle = { [weak self] view in
+            AIInfoManager.default().showAIIcon = false
+            NotificationCenter.default.post(name: NSNotification.Name(rawValue: "kAIIconShowStateChangeNotification"), object: nil)
+        }
         self.aiTipView.frame = CGRectMake(CGRectGetWidth(self.view.frame)-84, CGRectGetHeight(self.view.frame)-84-64-50, 72, 72)
         self.aiTipView.autoresizingMask = [.minXMargin, .minYMargin]
         self.view.addSubview(self.aiTipView)
 
+        self.updateAITipViewShowState()
+    }
+    
+    func updateAITipViewShowState() {
+        if AIInfoManager.default().showAIIcon {
+            if self.isReadMode || KMTools.isFullScreen(self.view.window!) {
+                self.aiTipView.isHidden = true
+            } else {
+                self.aiTipView.isHidden = false
+            }
+        } else {
+            self.aiTipView.isHidden = true
+        }
     }
     
     func showAITypeChooseView() -> Void {
@@ -858,6 +877,10 @@ let LOCKED_KEY  = "locked"
         windowVC.refreshUI()
     }
     
+    @objc func aiTipIconViewShowStateChangeNoti() {
+        self.updateAITipViewShowState()
+    }
+    
     //MARK: - 引导
     func loadFunctionGuide() -> Void {