123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- //
- // KMBatchConvertPDFView.swift
- // PDF Master
- //
- // Created by lizhe on 2023/1/16.
- //
- import Cocoa
- class KMBatchConvertPDFView: KMBatchSettingItemView {
- @IBOutlet weak var titleLabel: NSTextField!
- @IBOutlet weak var itemContentView: NSView!
- @IBOutlet weak var formatLabel: NSTextField!
-
- @IBOutlet weak var convertButton: NSButton!
- @IBOutlet weak var convertTitleLabel: NSTextField!
- @IBOutlet weak var convertIconImage: NSImageView!
- @IBOutlet weak var convertActionButton: NSButton!
-
- var itemViewArray: [KMBatchConvertPDFItemView] = []
- var currentView: KMBatchConvertPDFItemView = KMBatchConvertPDFItemView()
-
- var data: KMBatchConvertPDFViewModel = KMBatchConvertPDFViewModel()
- var presenter: KMBatchConvertPDFViewPresenter = KMBatchConvertPDFViewPresenter()
- override var subType: Any? {
- didSet {
- self.data.convertPDFType = (subType as? KMBatchConvertPDFType) ?? .word
- self.reloadData()
- }
- }
-
- override func draw(_ dirtyRect: NSRect) {
- super.draw(dirtyRect)
- // Drawing code here.
- }
-
- override func setup() {
- super.setup()
-
- self.presenter.initPresenter(view: self)
-
- self.titleLabel.textColor = NSColor.km_init(hex: "#252629")
- self.titleLabel.stringValue = NSLocalizedString("Settings", comment: "")
- self.titleLabel.font = NSFont.SFProTextRegularFont(16.0)
-
- self.formatLabel.textColor = NSColor.km_init(hex: "#616469")
- self.formatLabel.stringValue = NSLocalizedString("Format", comment: "")
- self.formatLabel.font = NSFont.SFProTextRegularFont(12.0)
-
- self.convertActionButton.wantsLayer = true
- self.convertActionButton.layer?.cornerRadius = 4
- self.convertActionButton.contentTintColor = NSColor.km_init(hex: "#FFFFFF")
- self.convertActionButton.stringValue = NSLocalizedString("Convert", comment: "")
- self.convertActionButton.font = NSFont.SFProTextRegularFont(14.0)
- self.convertActionButton.layer?.backgroundColor = NSColor.km_init(hex: "#BDDFFD").cgColor
-
- self.convertTitleLabel.textColor = NSColor.km_init(hex: "#252629")
- self.convertTitleLabel.stringValue = NSLocalizedString("Word", comment: "")
- self.convertTitleLabel.font = NSFont.SFProTextRegularFont(14.0)
- }
-
- 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()
- self.itemContentView.addSubview(view)
- self.currentView = view
- }
-
- if (self.filesData.count != 0) {
- self.convertActionButton.layer?.backgroundColor = NSColor.km_init(hex: "#1770F4").cgColor
- self.convertActionButton.isEnabled = true
- } else {
- self.convertActionButton.layer?.backgroundColor = NSColor.km_init(hex: "#BDDFFD").cgColor
- self.convertActionButton.isEnabled = false
- }
-
- self.currentView.data = self.data
- self.currentView.reloadData()
-
- self.convertTitleLabel.stringValue = self.data.convertPDFType.rawValue
- }
-
- 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 = KMBatchConverPDFPPTView.init(frame: self.itemContentView.bounds)
- break
- case .rtf:
- view = KMBatchConverPDFPPTView.init(frame: self.itemContentView.bounds)
- break
- default:
- KMPrint("找不到")
- break
- }
- view.type = type
- view.presenter = self.presenter
- view.data = self.data
- self.itemViewArray.append(view)
- }
-
- return view
- }
- }
- protocol KMBatchConvertPDFViewAction {}
- extension KMBatchConvertPDFView: KMBatchConvertPDFViewAction {
- @IBAction func convertPDFTypeAction(_ sender: NSButton) {
- let menu = NSMenu()
- menu.minimumWidth = sender.frame.size.width
- for string in KMBatchConvertPDFType.allValues() {
- menu.addItem(withTitle: NSLocalizedString(string, comment: ""), action: #selector(self.convertPDFTypeClick), target: self)
- }
- menu.popUp(positioning: menu.item(at: 0), at: CGPoint(x: 0, y: (sender ).fittingSize.height), in: sender )
- }
-
- @objc func convertPDFTypeClick(item: NSMenuItem) {
- self.presenter.convertPDFTypeAction(string: item.title)
- }
-
- @IBAction func convertAction(_ sender: Any) {
- if (self.export != nil) {
- self.export!(self, self.data)
- }
- }
- }
- extension KMBatchConvertPDFView: KMBatchConvertPDFViewPresenterDelegate {
- func showData(presenter: KMBatchConvertPDFViewPresenter, data: KMBatchConvertPDFViewModel) {
- self.data = data
- self.reloadData()
- self.currentView.reloadData()
- }
- }
|