KMBatchConvertPDFView.swift 9.3 KB

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