// // KMUserListItemCellView.swift // PDF Reader Pro Edition // // Created by tangchao on 2024/7/12. // import Cocoa class KMUserListItemCellView: NSTableCellView, NibLoadable { @IBOutlet weak var box: NSBox! @IBOutlet weak var button: KMCoverButton! @IBOutlet weak var fileNameLabel: NSTextField! @IBOutlet weak var fileSizeLabel: NSTextField! var itemClick: ((_ idx: Int)->Void)? private var area_: NSTrackingArea? deinit { Swift.debugPrint("KMUserListItemCellView deinit.") if let data = self.area_ { self.removeTrackingArea(data) } } override func awakeFromNib() { super.awakeFromNib() self.box.borderWidth = 0 self.button.imagePosition = .imageOnly self.button.image = NSImage(named: "KMImageNameUserFbDeleteIcon") self.button.target = self self.button.action = #selector(_buttonClick) self.button.coverAction = { button, action in if action.rawValue == 0 { button.image = NSImage(named: "KMImageNameUserFbDeleteHoverIcon") } else if action.rawValue == 2 { button.image = NSImage(named: "KMImageNameUserFbDeleteIcon") } } } @objc private func _buttonClick() { self.itemClick?(1) } override func updateTrackingAreas() { super.updateTrackingAreas() if let _area = self.area_, _area.rect.isEmpty == false { if (_area.rect.equalTo(self.bounds)) { return } } if let data = self.area_ { self.removeTrackingArea(data) } self.area_ = NSTrackingArea(rect: self.bounds, options: [.mouseEnteredAndExited, .mouseMoved, .activeAlways], owner: self) self.addTrackingArea(self.area_!) } override func mouseEntered(with event: NSEvent) { self.box.fillColor = NSColor(white: 0, alpha: 0.05) } override func mouseExited(with event: NSEvent) { self.box.fillColor = .clear } }