KMCompressContentView.swift 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. //
  2. // KMCompressContentView.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by lizhe on 2024/11/18.
  6. //
  7. import Cocoa
  8. import KMComponentLibrary
  9. typealias KMBatchOperateCompressViewSelectTypeBlcok = (_ view: KMCompressContentView, _ model: KMCompressSettingModel) -> Void
  10. class KMCompressContentView: BaseXibView {
  11. @IBOutlet weak var standardButton: ComponentRadio!
  12. @IBOutlet weak var mobileButton: ComponentRadio!
  13. @IBOutlet weak var customButton: ComponentRadio!
  14. @IBOutlet weak var tipButton: ComponentToolTipsHelp!
  15. @IBOutlet weak var settingButton: ComponentButton!
  16. var compressSettingViewController: KMCompressSettingViewController?
  17. var popOver: NSPopover!
  18. var selectTypeAction: KMBatchOperateCompressViewSelectTypeBlcok?
  19. var model: KMCompressSettingModel = KMCompressSettingModel(modelsType: .standard) {
  20. didSet {
  21. self.reloadData()
  22. }
  23. }
  24. override func draw(_ dirtyRect: NSRect) {
  25. super.draw(dirtyRect)
  26. // Drawing code here.
  27. }
  28. override func setup() {
  29. updateUI()
  30. updateUILanguage()
  31. reloadData()
  32. }
  33. override func updateUILanguage() {
  34. standardButton.properties.text = KMLocalizedString("Standard (Recommend)", comment: "")
  35. mobileButton.properties.text = KMLocalizedString("Mobile", comment: "")
  36. customButton.properties.text = KMLocalizedString("Custom", comment: "")
  37. tipButton.toolTip = KMLocalizedString("This mode is specifically tuned for mobile devices to improve compression quality and ensure clear viewing on mobile devices.", comment: "")
  38. }
  39. override func updateUIThemeColor() {
  40. }
  41. func updateUI() {
  42. standardButton.properties = ComponentCheckBoxProperty(size: .s, text: KMLocalizedString("Standard (Recommend)", comment: ""), checkboxType: .normal)
  43. standardButton.setTarget(self, action: #selector(standardButtonAction(_:)))
  44. mobileButton.properties = ComponentCheckBoxProperty(size: .s, text: KMLocalizedString("Mobile", comment: ""), checkboxType: .normal)
  45. mobileButton.setTarget(self, action: #selector(mobileButtonAction(_:)))
  46. customButton.properties = ComponentCheckBoxProperty(size: .s, text: KMLocalizedString("Custom", comment: ""), checkboxType: .normal)
  47. customButton.setTarget(self, action: #selector(customButtonAction(_:)))
  48. // self.tipButton.mouseMoveCallback = {[unowned self] mouseEntered in
  49. // if mouseEntered {
  50. // let tipString = KMLocalizedString("This mode is specifically tuned for mobile devices to improve compression quality and ensure clear viewing on mobile devices.", comment: "")
  51. //
  52. // let popViewController = KMToolbarItemPopViewController.init()
  53. // if self.popOver == nil {
  54. // self.popOver = NSPopover.init()
  55. // }
  56. // self.popOver.contentViewController = popViewController
  57. // self.popOver.animates = false
  58. // self.popOver.behavior = .semitransient
  59. // self.popOver.contentSize = (popViewController.view.frame.size)
  60. // self.popOver.setBackgroundColor(NSColor(hex: "#000000").withAlphaComponent(0.9))
  61. // popViewController.updateWithHelpTip(helpTip: tipString)
  62. // self.popOver.show(relativeTo: self.tipButton.frame, of: self.tipButton.superview!, preferredEdge: .maxY)
  63. // } else {
  64. // self.popOver.close()
  65. // }
  66. // }
  67. }
  68. func reloadData() {
  69. self.updateType(type: model.modelsType)
  70. }
  71. func updateType(type: KMCompressModelsType) {
  72. // self.standardButton.state = .off
  73. // self.mobileButton.state = .off
  74. // self.customButton.state = .off
  75. //
  76. // switch type {
  77. // case .standard:
  78. // self.standardButton.state = .on
  79. // case .custom:
  80. // self.customButton.state = .on
  81. // case .mobile:
  82. // self.mobileButton.state = .on
  83. // }
  84. }
  85. }
  86. extension KMCompressContentView {
  87. @IBAction func standardButtonAction(_ sender: Any) {
  88. self.updateType(type: .standard)
  89. self.model = KMCompressSettingModel(modelsType: .standard)
  90. guard let callBack = selectTypeAction else { return }
  91. callBack(self, model)
  92. }
  93. @IBAction func mobileButtonAction(_ sender: Any) {
  94. self.updateType(type: .mobile)
  95. self.model = KMCompressSettingModel(modelsType: .mobile)
  96. guard let callBack = selectTypeAction else { return }
  97. callBack(self, model)
  98. }
  99. @IBAction func customButtonAction(_ sender: Any) {
  100. self.updateType(type: .custom)
  101. self.model = KMCompressSettingModel(modelsType: .custom)
  102. guard let callBack = selectTypeAction else { return }
  103. callBack(self, model)
  104. }
  105. @IBAction func settingButtonAction(_ sender: Any) {
  106. compressSettingViewController = KMCompressSettingViewController(nibName: "KMCompressSettingViewController", bundle: nil)
  107. let window = NSWindow(contentViewController: compressSettingViewController!)
  108. window.minSize = CGSizeMake(624, 513)
  109. window.maxSize = CGSizeMake(624, 513)
  110. window.styleMask.remove(.resizable)
  111. let currentWindow = NSWindow.currentWindow()
  112. currentWindow.beginSheet(window)
  113. compressSettingViewController?.model = self.model
  114. compressSettingViewController?.cancelAction = { resultControler in
  115. currentWindow.endSheet(window)
  116. }
  117. compressSettingViewController?.doneAction = { resultControler in
  118. currentWindow.endSheet(window)
  119. }
  120. }
  121. }