123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- //
- // KMBatchConvertPDFView.swift
- // PDF Master
- //
- // Created by lizhe on 2023/1/16.
- //
- import Cocoa
- import KMComponentLibrary
- class KMBatchConvertPDFView: KMBatchSettingItemView {
- @IBOutlet weak var titleLabel: NSTextField!
- @IBOutlet weak var titleContentView: NSView!
- @IBOutlet weak var formatLabel: NSTextField!
- @IBOutlet weak var itemContentView: NSView!
-
- @IBOutlet weak var formatSelectButton: ComponentSelect!
- @IBOutlet weak var convertButton: ComponentButton!
- @IBOutlet weak var convertBackgroundView: NSView!
-
- var itemViewArray: [KMBatchConvertPDFItemView] = []
- var currentView: KMBatchConvertPDFItemView = KMBatchConvertPDFItemView()
-
- var data: KMBatchConvertPDFViewModel = KMBatchConvertPDFViewModel()
- var presenter: KMBatchConvertPDFViewPresenter = KMBatchConvertPDFViewPresenter()
- override var subType: Any? {
- didSet {
- var convertType: KMBatchConvertPDFType = .word
- let value = (subType as? Int)
- switch value {
- case 0:
- convertType = .word
- case 1:
- convertType = .excel
- case 2:
- convertType = .ppt
- case 3:
- convertType = .rtf
- case 4:
- convertType = .csv
- case 5:
- convertType = .html
- case 6:
- convertType = .text
- case 7:
- convertType = .jpeg
- case 8:
- convertType = .jpg
- case 9:
- convertType = .png
- case 10:
- convertType = .gif
- case 11:
- convertType = .tiff
- case 12:
- convertType = .tga
- case 13:
- convertType = .bmp
- case 14:
- convertType = .jpeg2000
- case 15:
- convertType = .json
- default:
- convertType = .word
- }
-
- self.data.convertPDFType = convertType
- self.reloadData()
- }
- }
-
- override func draw(_ dirtyRect: NSRect) {
- super.draw(dirtyRect)
- // Drawing code here.
- }
-
- override func setup() {
- super.setup()
-
- self.presenter.initPresenter(view: self)
-
- self.titleContentView.border(ComponentLibrary.shared.getComponentColorFromKey("colorBorder/divider"), 0.5, 0)
-
- self.convertBackgroundView.border(ComponentLibrary.shared.getComponentColorFromKey("colorBorder/divider"), 0.5, 0)
-
- self.titleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
- self.titleLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-m-bold")
-
- self.formatLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
- self.formatLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
-
-
- var menuItemArr: [ComponentMenuitemProperty] = []
- let languages: [String] = KMBatchConvertPDFType.allValues()
-
- for language in languages {
- let itemProperty: ComponentMenuitemProperty = ComponentMenuitemProperty(multipleSelect: false,
- itemSelected: false,
- isDisabled: false,
- keyEquivalent: nil,
- text: language, identifier: "1")
- menuItemArr.append(itemProperty)
- }
-
- formatSelectButton.updateMenuItemsArr(menuItemArr)
-
- formatSelectButton.delegate = self
-
- formatSelectButton.properties = ComponentSelectProperties(size: .s,
- state: .normal,
- isDisabled: false,
- isError: false,
- leftIcon: false,
- placeholder: nil,
- errorText: nil,
- creatable: false,
- text: NSLocalizedString("", comment: ""))
- formatSelectButton.selectItemAtIndex(0)
-
- self.convertButton.properties = ComponentButtonProperty(type: .primary,
- size: .m,
- state: .normal,
- buttonText: KMLocalizedString("Apply"),
- keepPressState: false)
- self.convertButton.setTarget(self, action: #selector(convertAction(_:)))
- self.convertButton.reloadData()
- }
-
- override func updateUILanguage() {
- self.titleLabel.stringValue = KMLocalizedString("Convert")
- self.formatLabel.stringValue = KMLocalizedString("Format")
- }
-
- override func reloadData() {
- if self.data.convertPDFType != self.currentView.type ||
- self.itemViewArray.count == 0 {
- let view = self.fetchCurrentView(type: self.data.convertPDFType)
- self.currentView.removeFromSuperview()
- view.autoresizingMask = [.width, .height]
- self.itemContentView.addSubview(view)
- self.currentView = view
- }
-
- if (self.filesData.count != 0) {
- self.convertButton.properties.isDisabled = false
- } else {
- self.convertButton.properties.isDisabled = true
- }
- self.convertButton.reloadData()
-
- //选择选项 如果没找到 则是图片
- self.formatSelectButton.selectItemAtIndex(KMBatchConvertPDFType.allValues().firstIndex(of: self.data.convertPDFType.rawValue) ?? 7)
-
- self.currentView.data = self.data
- self.currentView.reloadData()
-
- self.formatSelectButton.properties.isDisabled = self.isDisable
- self.formatSelectButton.reloadData()
- }
-
- func fetchCurrentView(type: KMBatchConvertPDFType) -> KMBatchConvertPDFItemView {
- var view: KMBatchConvertPDFItemView = KMBatchConvertPDFItemView.init()
-
- var isExist = false
- for item in self.itemViewArray {
- if item.type == type {
- isExist = true
- view = item
- }
- }
-
- if !isExist {
- switch type {
- case .word:
- view = KMBatchConverPDFWordView.init(frame: self.itemContentView.bounds)
- break
- case .excel:
- view = KMBatchConverPDFExcelView.init(frame: self.itemContentView.bounds)
- break
- case .ppt:
- view = KMBatchConverPDFPPTView.init(frame: self.itemContentView.bounds)
- break
- case .image:
- view = KMBatchConverPDFImageView.init(frame: self.itemContentView.bounds)
- break
- case .csv:
- view = KMBatchConverPDFCSVView.init(frame: self.itemContentView.bounds)
- break
- case .html:
- view = KMBatchHtmlView.init(frame: self.itemContentView.bounds)
- break
- case .rtf:
- view = KMBatchConverPDFPPTView.init(frame: self.itemContentView.bounds)
- break
- case .json:
- view = KMBatchJsonView.init(frame: self.itemContentView.bounds)
- break
- case .text:
- view = KMBatchConverPDFPPTView.init(frame: self.itemContentView.bounds)
- break
- default:
- KMPrint("找不到")
- break
- }
- view.presenter = self.presenter
- view.data = self.data
- self.itemViewArray.append(view)
- }
- view.isDisable = self.isDisable
- view.settingView?.isBatch = true
- view.type = type
- return view
- }
-
- override func bacthProcessingNotification() {
- self.currentView.isDisable = self.isDisable
- self.convertButton.properties.isDisabled = self.isDisable
- self.convertButton.reloadData()
- }
- }
- protocol KMBatchConvertPDFViewAction {}
- extension KMBatchConvertPDFView: KMBatchConvertPDFViewAction {
- @objc func convertAction(_ sender: Any) {
- if (self.batchExport != nil) {
- self.batchExport!(self, self.data)
- }
- }
- }
- extension KMBatchConvertPDFView: KMBatchConvertPDFViewPresenterDelegate {
- func showData(presenter: KMBatchConvertPDFViewPresenter, data: KMBatchConvertPDFViewModel) {
- self.data = data
- self.reloadData()
- self.currentView.reloadData()
- }
- }
- extension KMBatchConvertPDFView: ComponentSelectDelegate {
- func componentSelectDidSelect(view: ComponentSelect?, menuItemProperty: ComponentMenuitemProperty?) {
- if (view == formatSelectButton) {
- self.presenter.convertPDFTypeAction(string: menuItemProperty!.text)
- }
- }
- }
|