KMBatchConvertPDFView.swift 8.0 KB

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