// // KMBatchRemoveView.swift // PDF Master // // Created by lizhe on 2023/1/16. // import Cocoa import KMComponentLibrary class KMBatchRemoveView: KMBatchSettingItemView { @IBOutlet weak var titleLabel: NSTextField! @IBOutlet weak var titleContentView: NSView! @IBOutlet weak var watermarkButton: ComponentCheckBox! @IBOutlet weak var backgroundButton: ComponentCheckBox! @IBOutlet weak var headerAndFooterButton: ComponentCheckBox! @IBOutlet weak var batesButton: ComponentCheckBox! @IBOutlet weak var removeButton: ComponentButton! override var subType: Any? { didSet { print("subType = \(subType)") let value = (subType as? Int) ?? 0 let options = KMBatchRemoveOptions.init(rawValue: value) self.data.options = options self.reloadData() } } var data = KMBatchRemoveViewModel() { didSet { self.reloadData() } } override func draw(_ dirtyRect: NSRect) { super.draw(dirtyRect) // Drawing code here. } override func setup() { super.setup() self.titleContentView.border(ComponentLibrary.shared.getComponentColorFromKey("colorBorder/divider"), 0.5, 0) watermarkButton.properties = ComponentCheckBoxProperty(size: .s, state: .normal, isDisabled: false, showhelp: false, text: KMLocalizedString("Watermark", comment: ""), checkboxType: .normal) watermarkButton.setTarget(self, action: #selector(watermarkButtonAction(_:))) backgroundButton.properties = ComponentCheckBoxProperty(size: .s, state: .normal, isDisabled: false, showhelp: false, text: KMLocalizedString("Background", comment: ""), checkboxType: .normal) backgroundButton.setTarget(self, action: #selector(watermarkButtonAction(_:))) headerAndFooterButton.properties = ComponentCheckBoxProperty(size: .s, state: .normal, isDisabled: false, showhelp: false, text: KMLocalizedString("Header & Footer", comment: ""), checkboxType: .normal) headerAndFooterButton.setTarget(self, action: #selector(watermarkButtonAction(_:))) batesButton.properties = ComponentCheckBoxProperty(size: .s, state: .normal, isDisabled: false, showhelp: false, text: KMLocalizedString("Bates", comment: ""), checkboxType: .normal) batesButton.setTarget(self, action: #selector(watermarkButtonAction(_:))) removeButton.properties = ComponentButtonProperty(type: .primary, size: .m, state: .normal, buttonText: KMLocalizedString("Apply"), keepPressState: false) removeButton.setTarget(self, action: #selector(removeButtonAction(_:))) removeButton.reloadData() } override func reloadData() { if (self.filesData.count != 0 && self.data.options != .none) { self.removeButton.properties.isDisabled = false } else { self.removeButton.properties.isDisabled = true } if self.data.options.contains(.watermark) { self.watermarkButton.properties.checkboxType = .selected } else { self.watermarkButton.properties.checkboxType = .normal } self.watermarkButton.reloadData() if self.data.options.contains(.background) { self.backgroundButton.properties.checkboxType = .selected } else { self.backgroundButton.properties.checkboxType = .normal } self.backgroundButton.reloadData() if self.data.options.contains(.headerAndFooter) { self.headerAndFooterButton.properties.checkboxType = .selected } else { self.headerAndFooterButton.properties.checkboxType = .normal } self.headerAndFooterButton.reloadData() if self.data.options.contains(.batesNumber) { self.batesButton.properties.checkboxType = .selected } else { self.batesButton.properties.checkboxType = .normal } self.batesButton.reloadData() } override func bacthProcessingNotification() { self.watermarkButton.properties.isDisabled = self.isDisable self.watermarkButton.reloadData() self.backgroundButton.properties.isDisabled = self.isDisable self.backgroundButton.reloadData() self.headerAndFooterButton.properties.isDisabled = self.isDisable self.headerAndFooterButton.reloadData() self.batesButton.properties.isDisabled = self.isDisable self.batesButton.reloadData() self.removeButton.properties.isDisabled = self.isDisable self.removeButton.reloadData() } } extension KMBatchRemoveView { @objc func watermarkButtonAction(_ sender: ComponentButton) { if sender == watermarkButton { if self.data.options.contains(.watermark) { self.data.options.remove(.watermark) } else { self.data.options.insert(.watermark) } } else if sender == backgroundButton { if self.data.options.contains(.background) { self.data.options.remove(.background) } else { self.data.options.insert(.background) } } else if sender == headerAndFooterButton { if self.data.options.contains(.headerAndFooter) { self.data.options.remove(.headerAndFooter) } else { self.data.options.insert(.headerAndFooter) } } else if sender == batesButton { if self.data.options.contains(.batesNumber) { self.data.options.remove(.batesNumber) } else { self.data.options.insert(.batesNumber) } } self.reloadData() } @objc func removeButtonAction(_ sender: NSButton) { guard self.data != nil else { return } if self.batchExport != nil { self.batchExport!(self, self.data) } } }