KMConvertImageSettingView.swift 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. //
  2. // KMConvertImageSettingView.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by tangchao on 2022/12/6.
  6. //
  7. import KMComponentLibrary
  8. class KMConvertImageSettingView: KMConvertSettingView {
  9. @IBOutlet weak var fileTypeTitleLabel: NSTextField!
  10. @IBOutlet weak var formatBox: NSBox!
  11. @IBOutlet weak var pageRangeBox: NSBox!
  12. @IBOutlet weak var dpiTitleLabel: NSTextField!
  13. @IBOutlet weak var dpiSelectBox: NSBox!
  14. var selectedFormatIndex = 0
  15. var selectedResolutionIndex = 3
  16. private lazy var formatSelect_: ComponentSelect = {
  17. let view = ComponentSelect()
  18. view.properties = ComponentSelectProperties(size: .s,
  19. state: .normal,
  20. isDisabled: false,
  21. isError: false,
  22. leftIcon: false,
  23. placeholder: nil,
  24. errorText: nil,
  25. creatable: false,
  26. text: NSLocalizedString("", comment: ""))
  27. view.delegate = self
  28. return view
  29. }()
  30. private lazy var dpiSelect_: ComponentSelect = {
  31. let view = ComponentSelect()
  32. view.properties = ComponentSelectProperties(size: .s,
  33. state: .normal,
  34. isDisabled: false,
  35. isError: false,
  36. leftIcon: false,
  37. placeholder: nil,
  38. errorText: nil,
  39. creatable: false,
  40. text: NSLocalizedString("", comment: ""))
  41. view.delegate = self
  42. return view
  43. }()
  44. override func initSubViews() {
  45. super.initSubViews()
  46. self.formatBox.contentView = self.formatSelect_
  47. var menuItemArr: [ComponentMenuitemProperty] = []
  48. for string in ["JPEG","JPG","PNG","GIF","TIFF","TGA","BMP","JPEG-2000"] {
  49. let itemProperty: ComponentMenuitemProperty = ComponentMenuitemProperty(multipleSelect: false,
  50. itemSelected: false,
  51. isDisabled: false,
  52. keyEquivalent: nil,
  53. text: string)
  54. menuItemArr.append(itemProperty)
  55. }
  56. formatSelect_.updateMenuItemsArr(menuItemArr)
  57. formatSelect_.selectItemAtIndex(0)
  58. formatSelect_.properties.creatable = false
  59. formatSelect_.properties.text = "JPEG"
  60. formatSelect_.reloadData()
  61. self.dpiSelectBox.contentView = self.dpiSelect_
  62. var menuItemArr2: [ComponentMenuitemProperty] = []
  63. for string in ["50 dpi", "72 dpi", "96 dpi", "150 dpi", "300 dpi", "600 dpi"] {
  64. let itemProperty: ComponentMenuitemProperty = ComponentMenuitemProperty(multipleSelect: false,
  65. itemSelected: false,
  66. isDisabled: false,
  67. keyEquivalent: nil,
  68. text: string)
  69. menuItemArr2.append(itemProperty)
  70. }
  71. dpiSelect_.updateMenuItemsArr(menuItemArr2)
  72. dpiSelect_.selectItemAtIndex(3)
  73. dpiSelect_.properties.creatable = false
  74. dpiSelect_.properties.text = "150 dpi"
  75. dpiSelect_.reloadData()
  76. self.tipView?.km_add_left_constraint(constant: 8)
  77. self.tipView?.km_add_top_constraint(equalTo: self.pageRangeBox, attribute: .bottom, constant: -5)
  78. self.tipView?.km_add_right_constraint()
  79. self.tipView?.km_add_height_constraint(constant: 16+20+16)
  80. }
  81. override func initDefaultVlaue() {
  82. self.formatBox.fillColor = .clear
  83. self.fileTypeTitleLabel.stringValue = NSLocalizedString("Format", comment: "")
  84. self.fileTypeTitleLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
  85. self.formatBox.fillColor = .clear
  86. }
  87. override func viewDidMoveToWindow() {
  88. super.viewDidMoveToWindow()
  89. if (self.pageRangeItemView == nil) {
  90. self.pageRangeItemView = KMConvertPageRangeSettingItemView.createFromNib()
  91. self.pageRangeBox.contentView = self.pageRangeItemView
  92. self.pageRangeItemView?.titleLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
  93. self.updateViewColor()
  94. }
  95. self.pageRangeItemView?.pageCount = self.pageCount
  96. self.pageRangeItemView?.isHidden = self.isBatch
  97. }
  98. override func getPageRangeString() -> String {
  99. if let view = self.pageRangeItemView {
  100. return view.pageRangeValue
  101. }
  102. return ""
  103. }
  104. override func updateViewColor() {
  105. super.updateViewColor()
  106. KMMainThreadExecute {
  107. self.fileTypeTitleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
  108. self.pageRangeItemView?.titleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
  109. }
  110. }
  111. override func reloadData() {
  112. formatSelect_.properties.isDisabled = self.isDisable
  113. dpiSelect_.properties.isDisabled = self.isDisable
  114. }
  115. func selectConvertType(convertType: KMPDFConvertType) {
  116. if convertType == .jpeg {
  117. self.selectedFormatIndex = 0
  118. } else if convertType == .jpg {
  119. self.selectedFormatIndex = 1
  120. } else if convertType == .png {
  121. self.selectedFormatIndex = 2
  122. } else if convertType == .gif {
  123. self.selectedFormatIndex = 3
  124. } else if convertType == .tiff {
  125. self.selectedFormatIndex = 4
  126. } else if convertType == .tga {
  127. self.selectedFormatIndex = 5
  128. } else if convertType == .bmp {
  129. self.selectedFormatIndex = 6
  130. } else if convertType == .jp2 {
  131. self.selectedFormatIndex = 7
  132. }
  133. formatSelect_.selectItemAtIndex(self.selectedFormatIndex)
  134. }
  135. }
  136. extension KMConvertImageSettingView: ComponentSelectDelegate {
  137. func componentSelectDidSelect(view: ComponentSelect?, menuItemProperty: ComponentMenuitemProperty?) {
  138. guard let index = view?.indexOfSelect(), index >= 0 else {
  139. return
  140. }
  141. if self.formatSelect_.isEqual(to: view) {
  142. self.selectedFormatIndex = index
  143. } else if self.dpiSelect_.isEqual(to: view) {
  144. self.selectedResolutionIndex = max(index, 0)
  145. }
  146. }
  147. }