KMBatchConvertPDFView.swift 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. //
  2. // KMBatchConvertPDFView.swift
  3. // PDF Master
  4. //
  5. // Created by lizhe on 2023/1/16.
  6. //
  7. import Cocoa
  8. class KMBatchConvertPDFView: KMBatchSettingItemView {
  9. @IBOutlet weak var titleLabel: NSTextField!
  10. @IBOutlet weak var itemContentView: NSView!
  11. @IBOutlet weak var formatLabel: NSTextField!
  12. @IBOutlet weak var convertButton: NSButton!
  13. @IBOutlet weak var convertTitleLabel: NSTextField!
  14. @IBOutlet weak var convertIconImage: NSImageView!
  15. @IBOutlet weak var convertActionButton: NSButton!
  16. var itemViewArray: [KMBatchConvertPDFItemView] = []
  17. var currentView: KMBatchConvertPDFItemView = KMBatchConvertPDFItemView()
  18. var data: KMBatchConvertPDFViewModel = KMBatchConvertPDFViewModel()
  19. var presenter: KMBatchConvertPDFViewPresenter = KMBatchConvertPDFViewPresenter()
  20. override var subType: Any? {
  21. didSet {
  22. self.data.convertPDFType = (subType as? KMBatchConvertPDFType) ?? .word
  23. self.reloadData()
  24. }
  25. }
  26. override func draw(_ dirtyRect: NSRect) {
  27. super.draw(dirtyRect)
  28. // Drawing code here.
  29. }
  30. override func setup() {
  31. super.setup()
  32. self.presenter.initPresenter(view: self)
  33. self.titleLabel.textColor = NSColor.km_init(hex: "#252629")
  34. self.titleLabel.stringValue = NSLocalizedString("Settings", comment: "")
  35. self.titleLabel.font = NSFont.SFProTextRegularFont(16.0)
  36. self.formatLabel.textColor = NSColor.km_init(hex: "#616469")
  37. self.formatLabel.stringValue = NSLocalizedString("Format", comment: "")
  38. self.formatLabel.font = NSFont.SFProTextRegularFont(12.0)
  39. self.convertActionButton.wantsLayer = true
  40. self.convertActionButton.layer?.cornerRadius = 4
  41. self.convertActionButton.contentTintColor = NSColor.km_init(hex: "#FFFFFF")
  42. self.convertActionButton.stringValue = NSLocalizedString("Convert", comment: "")
  43. self.convertActionButton.font = NSFont.SFProTextRegularFont(14.0)
  44. self.convertActionButton.layer?.backgroundColor = NSColor.km_init(hex: "#BDDFFD").cgColor
  45. self.convertTitleLabel.textColor = NSColor.km_init(hex: "#252629")
  46. self.convertTitleLabel.stringValue = NSLocalizedString("Word", comment: "")
  47. self.convertTitleLabel.font = NSFont.SFProTextRegularFont(14.0)
  48. }
  49. override func reloadData() {
  50. if self.data.convertPDFType != self.currentView.type ||
  51. self.itemViewArray.count == 0 {
  52. let view = self.fetchCurrentView(type: self.data.convertPDFType)
  53. self.currentView.removeFromSuperview()
  54. self.itemContentView.addSubview(view)
  55. self.currentView = view
  56. }
  57. if (self.filesData.count != 0) {
  58. self.convertActionButton.layer?.backgroundColor = NSColor.km_init(hex: "#1770F4").cgColor
  59. self.convertActionButton.isEnabled = true
  60. } else {
  61. self.convertActionButton.layer?.backgroundColor = NSColor.km_init(hex: "#BDDFFD").cgColor
  62. self.convertActionButton.isEnabled = false
  63. }
  64. self.currentView.data = self.data
  65. self.currentView.reloadData()
  66. self.convertTitleLabel.stringValue = self.data.convertPDFType.rawValue
  67. }
  68. func fetchCurrentView(type: KMBatchConvertPDFType) -> KMBatchConvertPDFItemView {
  69. var view: KMBatchConvertPDFItemView = KMBatchConvertPDFItemView.init()
  70. var isExist = false
  71. for item in self.itemViewArray {
  72. if item.type == type {
  73. isExist = true
  74. view = item
  75. }
  76. }
  77. if !isExist {
  78. switch type {
  79. case .word:
  80. view = KMBatchConverPDFWordView.init(frame: self.itemContentView.bounds)
  81. break
  82. case .excel:
  83. view = KMBatchConverPDFExcelView.init(frame: self.itemContentView.bounds)
  84. break
  85. case .ppt:
  86. view = KMBatchConverPDFPPTView.init(frame: self.itemContentView.bounds)
  87. break
  88. case .image:
  89. view = KMBatchConverPDFImageView.init(frame: self.itemContentView.bounds)
  90. break
  91. case .csv:
  92. view = KMBatchConverPDFCSVView.init(frame: self.itemContentView.bounds)
  93. break
  94. case .html:
  95. view = KMBatchConverPDFPPTView.init(frame: self.itemContentView.bounds)
  96. break
  97. case .rtf:
  98. view = KMBatchConverPDFPPTView.init(frame: self.itemContentView.bounds)
  99. break
  100. default:
  101. KMPrint("找不到")
  102. break
  103. }
  104. view.type = type
  105. view.presenter = self.presenter
  106. view.data = self.data
  107. self.itemViewArray.append(view)
  108. }
  109. return view
  110. }
  111. }
  112. protocol KMBatchConvertPDFViewAction {}
  113. extension KMBatchConvertPDFView: KMBatchConvertPDFViewAction {
  114. @IBAction func convertPDFTypeAction(_ sender: NSButton) {
  115. let menu = NSMenu()
  116. menu.minimumWidth = sender.frame.size.width
  117. for string in KMBatchConvertPDFType.allValues() {
  118. menu.addItem(withTitle: NSLocalizedString(string, comment: ""), action: #selector(self.convertPDFTypeClick), target: self)
  119. }
  120. menu.popUp(positioning: menu.item(at: 0), at: CGPoint(x: 0, y: (sender ).fittingSize.height), in: sender )
  121. }
  122. @objc func convertPDFTypeClick(item: NSMenuItem) {
  123. self.presenter.convertPDFTypeAction(string: item.title)
  124. }
  125. @IBAction func convertAction(_ sender: Any) {
  126. if (self.export != nil) {
  127. self.export!(self, self.data)
  128. }
  129. }
  130. }
  131. extension KMBatchConvertPDFView: KMBatchConvertPDFViewPresenterDelegate {
  132. func showData(presenter: KMBatchConvertPDFViewPresenter, data: KMBatchConvertPDFViewModel) {
  133. self.data = data
  134. self.reloadData()
  135. self.currentView.reloadData()
  136. }
  137. }