KMPropertiesViewPopController.swift 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. //
  2. // KMPropertiesViewPopController.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by lizhe on 2023/10/12.
  6. //
  7. import Cocoa
  8. @objcMembers class KMPropertiesViewPopController: NSViewController {
  9. @IBOutlet var titleLabel: NSTextField!
  10. @IBOutlet var titlesubLabel: NSTextField!
  11. @IBOutlet var closeBtn: NSButton!
  12. var popOver: NSPopover?
  13. var block: (() -> Void)?
  14. // class func defaultManager() -> KMPropertiesViewPopController {
  15. // let singleton = KMPropertiesViewPopController()
  16. // return singleton
  17. // }
  18. static let defaultManager = KMPropertiesViewPopController()
  19. class func showChangeColorDetails() -> Bool {
  20. let isOpenConvertDetails = UserDefaults.standard.bool(forKey: "KMPropertiesHaveChangeColorDetails")
  21. if !isOpenConvertDetails {
  22. return true
  23. }
  24. return false
  25. }
  26. func showChangeColorDetailsView(_ view: NSView) {
  27. let popViewController = KMPropertiesViewPopController()
  28. popViewController.block = { [weak self] in
  29. self?.popOver?.close()
  30. }
  31. self.popOver = NSPopover()
  32. self.popOver?.contentViewController = popViewController
  33. self.popOver?.animates = false
  34. self.popOver?.behavior = .transient
  35. // self.popOver?.appearance = .minimal
  36. self.popOver?.contentSize = popViewController.view.frame.size
  37. DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
  38. if view.superview?.window == nil {
  39. return
  40. }
  41. UserDefaults.standard.set(true, forKey: "KMPropertiesHaveChangeColorDetails")
  42. UserDefaults.standard.synchronize()
  43. self.popOver?.show(relativeTo: view.bounds, of: view, preferredEdge: .maxY)
  44. }
  45. }
  46. override func viewDidLoad() {
  47. super.viewDidLoad()
  48. view.wantsLayer = true
  49. view.layer?.backgroundColor = NSColor.gray.cgColor
  50. titleLabel.stringValue = NSLocalizedString("Customize colors", comment: "")
  51. titlesubLabel.stringValue = NSLocalizedString("Right click a color and select \"Change Color...\".", comment: "")
  52. closeBtn.title = NSLocalizedString("Close", comment: "")
  53. closeBtn.wantsLayer = true
  54. closeBtn.layer?.cornerRadius = 1.0
  55. closeBtn.layer?.backgroundColor = NSColor.gray.cgColor
  56. closeBtn.contentTintColor = NSColor.white
  57. }
  58. @IBAction func buttonItemClick_Close(_ sender: Any) {
  59. block?()
  60. block = nil
  61. }
  62. }