// // KMBatchSettingView.swift // PDF Master // // Created by lizhe on 2023/1/16. // import Cocoa import KMComponentLibrary class KMBatchSettingView: BaseXibView { var currentView: KMBatchSettingItemView = KMBatchSettingItemView() lazy var itemViewArray: [KMBatchSettingItemView] = [] var filesData: [KMBatchProcessingTableViewModel]? { didSet { currentView.filesData = filesData! self.reloadData() } } var type: KMBatchCollectionViewType = .convertPDF { didSet { self.reloadData() } } var subType: Any? { didSet { self.reloadData() } } var isDisable: Bool = false { didSet { for item in self.itemViewArray { if item.type == type { item.isDisable = isDisable } } } } override func setup() { super.setup() self.wantsLayer = true // self.border(ComponentLibrary.shared.getComponentColorFromKey("colorBorder/divider"), 0.5, 0) self.type = .convertPDF } func reloadData() { if (self.type != self.currentView.type) { let view: KMBatchSettingItemView = self.fetchCurrentView(type: self.type, subType: self.subType as Any) self.currentView.removeFromSuperview() self.addSubview(view) view.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ view.topAnchor.constraint(equalTo: topAnchor), view.leftAnchor.constraint(equalTo: leftAnchor), view.rightAnchor.constraint(equalTo: rightAnchor), view.bottomAnchor.constraint(equalTo: bottomAnchor)]) view.updateConstraintsForSubtreeIfNeeded() self.currentView = view } else if (self.subType.debugDescription != self.currentView.subType.debugDescription) { self.currentView.subType = self.subType } } func fetchCurrentView(type: KMBatchCollectionViewType, subType: Any) -> KMBatchSettingItemView { var resultView: KMBatchSettingItemView = KMBatchSettingItemView() var isExist = false for item in self.itemViewArray { if item.type == type { isExist = true resultView = item } } if !isExist { switch type { case .convertPDF: resultView = KMBatchConvertPDFView.init() resultView.batchExport = { [unowned self] (view, data) in KMBatchManager.manager.batch(type: type, data: data) } break case .OCR: resultView = KMBatchOCRView.init() resultView.batchExport = { [unowned self] (view, data) in KMBatchManager.manager.batch(type: type, data: data) } break case .compress: resultView = KMBatchCompressView.init() resultView.batchExport = { [unowned self] (view, data) in KMBatchManager.manager.batch(type: type, data: data) } break case .security: resultView = KMBatchSecurityView.init() resultView.batchExport = { [unowned self] (view, data) in KMBatchManager.manager.batch(type: type, data: data) } break case .watermark: resultView = KMBatchWatermarkView.init() if let view = resultView as? KMBatchWatermarkView { view.editSubType = .template view.reloadInfoView() } resultView.batchExport = { [unowned self] (view, data) in KMBatchManager.manager.batch(type: type, data: data) } break case .background: resultView = KMBatchBackgroundView.init() if let view = resultView as? KMBatchBackgroundView { view.editSubType = .template view.reloadInfoView() } resultView.batchExport = { [unowned self] (view, data) in KMBatchManager.manager.batch(type: type, data: data) } break case .headerAndFooter: resultView = KMBatchHeaderAndFooterView.init() if let view = resultView as? KMBatchHeaderAndFooterView { view.editSubType = .template view.reloadInfoView() } resultView.batchExport = { [unowned self] (view, data) in KMBatchManager.manager.batch(type: type, data: data) } break case .batesNumber: resultView = KMBatchBatesNumberView.init() if let view = resultView as? KMBatchBatesNumberView { view.editSubType = .template view.reloadInfoView() } resultView.batchExport = { [unowned self] (view, data) in KMBatchManager.manager.batch(type: type, data: data) } break case .batchRemove: resultView = KMBatchRemoveView.init() resultView.batchExport = { [unowned self] (view, data) in KMBatchManager.manager.batch(type: type, data: data) } break case .imageToPDF: resultView = KMBatchImageToPDFView() resultView.batchExport = { [unowned self] (view, data) in KMBatchManager.manager.batch(type: type, data: data) } default: KMPrint("找不到") break } resultView.type = type resultView.subType = subType resultView.filesData = self.filesData ?? [] resultView.isDisable = self.isDisable resultView.reloadData() self.itemViewArray.append(resultView) } else { if resultView.filesData.count == 0 && self.filesData?.count != 0{ resultView.filesData = self.filesData ?? [] } } return resultView } }