KMBatchConvertPDFView.swift 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. //
  2. // KMBatchConvertPDFView.swift
  3. // PDF Master
  4. //
  5. // Created by lizhe on 2023/1/16.
  6. //
  7. import Cocoa
  8. import KMComponentLibrary
  9. class KMBatchConvertPDFView: KMBatchSettingItemView {
  10. @IBOutlet weak var titleLabel: NSTextField!
  11. @IBOutlet weak var titleContentView: NSView!
  12. @IBOutlet weak var formatLabel: NSTextField!
  13. @IBOutlet weak var itemContentView: NSView!
  14. @IBOutlet weak var formatSelectButton: ComponentSelect!
  15. @IBOutlet weak var convertButton: ComponentButton!
  16. @IBOutlet weak var convertBackgroundView: NSView!
  17. var itemViewArray: [KMBatchConvertPDFItemView] = []
  18. var currentView: KMBatchConvertPDFItemView = KMBatchConvertPDFItemView()
  19. var data: KMBatchConvertPDFViewModel = KMBatchConvertPDFViewModel()
  20. var presenter: KMBatchConvertPDFViewPresenter = KMBatchConvertPDFViewPresenter()
  21. override var subType: Any? {
  22. didSet {
  23. var convertType: KMBatchConvertPDFType = .word
  24. let value = (subType as? Int)
  25. switch value {
  26. case 0:
  27. convertType = .word
  28. case 2:
  29. convertType = .excel
  30. case 3:
  31. convertType = .ppt
  32. case 4:
  33. convertType = .rtf
  34. case 5:
  35. convertType = .csv
  36. case 6:
  37. convertType = .html
  38. case 7:
  39. convertType = .text
  40. default:
  41. convertType = .word
  42. }
  43. self.data.convertPDFType = convertType
  44. self.reloadData()
  45. }
  46. }
  47. override func draw(_ dirtyRect: NSRect) {
  48. super.draw(dirtyRect)
  49. // Drawing code here.
  50. }
  51. override func setup() {
  52. super.setup()
  53. self.presenter.initPresenter(view: self)
  54. self.titleContentView.border(ComponentLibrary.shared.getComponentColorFromKey("colorBorder/divider"), 0.5, 0)
  55. self.convertBackgroundView.border(ComponentLibrary.shared.getComponentColorFromKey("colorBorder/divider"), 0.5, 0)
  56. self.titleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
  57. self.titleLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-m-bold")
  58. self.formatLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
  59. self.formatLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
  60. var menuItemArr: [ComponentMenuitemProperty] = []
  61. let languages: [String] = KMBatchConvertPDFType.allValues()
  62. for language in languages {
  63. let itemProperty: ComponentMenuitemProperty = ComponentMenuitemProperty(multipleSelect: false,
  64. itemSelected: false,
  65. isDisabled: false,
  66. keyEquivalent: nil,
  67. text: language, identifier: "1")
  68. menuItemArr.append(itemProperty)
  69. }
  70. formatSelectButton.updateMenuItemsArr(menuItemArr)
  71. formatSelectButton.delegate = self
  72. formatSelectButton.properties = ComponentSelectProperties(size: .s,
  73. state: .normal,
  74. isDisabled: false,
  75. isError: false,
  76. leftIcon: false,
  77. placeholder: nil,
  78. errorText: nil,
  79. creatable: false,
  80. text: NSLocalizedString("", comment: ""))
  81. formatSelectButton.selectItemAtIndex(0)
  82. self.convertButton.properties = ComponentButtonProperty(type: .primary,
  83. size: .m,
  84. state: .normal,
  85. buttonText: KMLocalizedString("Apply"),
  86. keepPressState: false)
  87. self.convertButton.setTarget(self, action: #selector(convertAction(_:)))
  88. self.convertButton.reloadData()
  89. }
  90. override func updateUILanguage() {
  91. self.titleLabel.stringValue = KMLocalizedString("Convert")
  92. self.formatLabel.stringValue = KMLocalizedString("Format")
  93. }
  94. override func reloadData() {
  95. if self.data.convertPDFType != self.currentView.type ||
  96. self.itemViewArray.count == 0 {
  97. let view = self.fetchCurrentView(type: self.data.convertPDFType)
  98. self.currentView.removeFromSuperview()
  99. view.autoresizingMask = [.width, .height]
  100. self.itemContentView.addSubview(view)
  101. self.currentView = view
  102. }
  103. if (self.filesData.count != 0) {
  104. self.convertButton.properties.isDisabled = false
  105. } else {
  106. self.convertButton.properties.isDisabled = true
  107. }
  108. self.convertButton.reloadData()
  109. //选择选项
  110. self.formatSelectButton.selectItemAtIndex(KMBatchConvertPDFType.allValues().firstIndex(of: self.data.convertPDFType.rawValue) ?? 0)
  111. self.currentView.data = self.data
  112. self.currentView.reloadData()
  113. self.formatSelectButton.properties.isDisabled = self.isDisable
  114. self.formatSelectButton.reloadData()
  115. }
  116. func fetchCurrentView(type: KMBatchConvertPDFType) -> KMBatchConvertPDFItemView {
  117. var view: KMBatchConvertPDFItemView = KMBatchConvertPDFItemView.init()
  118. var isExist = false
  119. for item in self.itemViewArray {
  120. if item.type == type {
  121. isExist = true
  122. view = item
  123. }
  124. }
  125. if !isExist {
  126. switch type {
  127. case .word:
  128. view = KMBatchConverPDFWordView.init(frame: self.itemContentView.bounds)
  129. break
  130. case .excel:
  131. view = KMBatchConverPDFExcelView.init(frame: self.itemContentView.bounds)
  132. break
  133. case .ppt:
  134. view = KMBatchConverPDFPPTView.init(frame: self.itemContentView.bounds)
  135. break
  136. case .image:
  137. view = KMBatchConverPDFImageView.init(frame: self.itemContentView.bounds)
  138. break
  139. case .csv:
  140. view = KMBatchConverPDFCSVView.init(frame: self.itemContentView.bounds)
  141. break
  142. case .html:
  143. view = KMBatchHtmlView.init(frame: self.itemContentView.bounds)
  144. break
  145. case .rtf:
  146. view = KMBatchConverPDFPPTView.init(frame: self.itemContentView.bounds)
  147. break
  148. case .json:
  149. view = KMBatchJsonView.init(frame: self.itemContentView.bounds)
  150. break
  151. case .text:
  152. view = KMBatchConverPDFPPTView.init(frame: self.itemContentView.bounds)
  153. break
  154. default:
  155. KMPrint("找不到")
  156. break
  157. }
  158. view.type = type
  159. view.presenter = self.presenter
  160. view.data = self.data
  161. self.itemViewArray.append(view)
  162. }
  163. view.isDisable = self.isDisable
  164. view.settingView?.isBatch = true
  165. return view
  166. }
  167. override func bacthProcessingNotification() {
  168. self.currentView.isDisable = self.isDisable
  169. self.convertButton.properties.isDisabled = self.isDisable
  170. self.convertButton.reloadData()
  171. }
  172. }
  173. protocol KMBatchConvertPDFViewAction {}
  174. extension KMBatchConvertPDFView: KMBatchConvertPDFViewAction {
  175. @objc func convertAction(_ sender: Any) {
  176. if (self.batchExport != nil) {
  177. self.batchExport!(self, self.data)
  178. }
  179. }
  180. }
  181. extension KMBatchConvertPDFView: KMBatchConvertPDFViewPresenterDelegate {
  182. func showData(presenter: KMBatchConvertPDFViewPresenter, data: KMBatchConvertPDFViewModel) {
  183. self.data = data
  184. self.reloadData()
  185. self.currentView.reloadData()
  186. }
  187. }
  188. extension KMBatchConvertPDFView: ComponentSelectDelegate {
  189. func componentSelectDidSelect(view: ComponentSelect?, menuItemProperty: ComponentMenuitemProperty?) {
  190. if (view == formatSelectButton) {
  191. self.presenter.convertPDFTypeAction(string: menuItemProperty!.text)
  192. }
  193. }
  194. }