KMUserListItemCellView.swift 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. //
  2. // KMUserListItemCellView.swift
  3. // PDF Reader Pro Edition
  4. //
  5. // Created by tangchao on 2024/7/12.
  6. //
  7. import Cocoa
  8. class KMUserListItemCellView: NSTableCellView, NibLoadable {
  9. @IBOutlet weak var box: NSBox!
  10. @IBOutlet weak var button: KMCoverButton!
  11. @IBOutlet weak var fileNameLabel: NSTextField!
  12. @IBOutlet weak var fileSizeLabel: NSTextField!
  13. var itemClick: ((_ idx: Int)->Void)?
  14. private var area_: NSTrackingArea?
  15. deinit {
  16. Swift.debugPrint("KMUserListItemCellView deinit.")
  17. if let data = self.area_ {
  18. self.removeTrackingArea(data)
  19. }
  20. }
  21. override func awakeFromNib() {
  22. super.awakeFromNib()
  23. self.box.borderWidth = 0
  24. self.button.imagePosition = .imageOnly
  25. self.button.image = NSImage(named: "KMImageNameUserFbDeleteIcon")
  26. self.button.target = self
  27. self.button.action = #selector(_buttonClick)
  28. self.button.coverAction = { button, action in
  29. if action.rawValue == 0 {
  30. button.image = NSImage(named: "KMImageNameUserFbDeleteHoverIcon")
  31. } else if action.rawValue == 2 {
  32. button.image = NSImage(named: "KMImageNameUserFbDeleteIcon")
  33. }
  34. }
  35. }
  36. @objc private func _buttonClick() {
  37. self.itemClick?(1)
  38. }
  39. override func updateTrackingAreas() {
  40. super.updateTrackingAreas()
  41. if let _area = self.area_, _area.rect.isEmpty == false {
  42. if (_area.rect.equalTo(self.bounds)) {
  43. return
  44. }
  45. }
  46. if let data = self.area_ {
  47. self.removeTrackingArea(data)
  48. }
  49. self.area_ = NSTrackingArea(rect: self.bounds, options: [.mouseEnteredAndExited, .mouseMoved, .activeAlways], owner: self)
  50. self.addTrackingArea(self.area_!)
  51. }
  52. override func mouseEntered(with event: NSEvent) {
  53. self.box.fillColor = NSColor(white: 0, alpha: 0.05)
  54. }
  55. override func mouseExited(with event: NSEvent) {
  56. self.box.fillColor = .clear
  57. }
  58. }