// // KMHeaderFooterPropertyController.swift // PDF Reader Pro // // Created by tangchao on 2022/12/27. // import Cocoa typealias KMHeaderFooterPropertyTemplateDidSelected = (_ model: KMHeaderFooterObject,_ isSelected: Bool)->() typealias KMHeaderFooterPropertyTemplateMenuItemClick = (_ itemIndex: Int, _ model: KMHeaderFooterObject)->() /// 页眉页脚 属性控制器 class KMHeaderFooterPropertyController: KMWatermarkAdjectivePropertyBaseController { var templateDidSelected: KMHeaderFooterPropertyTemplateDidSelected! var menuItemClick: KMHeaderFooterPropertyTemplateMenuItemClick! var controller = KMHeaderFooterListController() override func viewDidLoad() { super.viewDidLoad() self.showBack(show: false) self.titleLabel.stringValue = NSLocalizedString("HeaderAndFooter", comment: "") self.segementControl.isHidden = true self.segementControlHeightConst.constant = 0 let item = NSTabViewItem(identifier: "tabID") item.label = "tab1"; let controller = self.controller item.viewController = controller controller.emptyView.despLabel.stringValue = NSLocalizedString("Click the Add button in the upper right corner to create a new header & footer.", comment: "") controller.delegate = self self.tabView.addTabViewItem(item) childViewController.append(controller) reloadDatas() } func reloadDatas () { let controller: KMHeaderFooterListController = childViewController[0] as! KMHeaderFooterListController controller.initDatas(datas: KMHeaderFooterManager.defaultManager.headFooterObjects) } func deleteTemplateModel(_ templateModel: KMHeaderFooterObject) -> Bool { return KMHeaderFooterManager.defaultManager.removeHeaderFooter(templateModel) } func deleteTemplateModel(in controller: KMHeaderFooterListController, index: Int) { if (index >= controller.datas.count) { return } let templateModel: KMHeaderFooterObject = controller.datas[index] as! KMHeaderFooterObject if (deleteTemplateModel(templateModel)) { /// 删除成功,刷新数据 reloadDatas() } } func deleteAllTemplateModel(in controller: KMHeaderFooterListController) { KMHeaderFooterManager.defaultManager.removeAllHeaderFooter() reloadDatas() } func findTemplateModel(in controller: KMHeaderFooterListController, index: Int) -> KMHeaderFooterObject? { if (index >= controller.datas.count) { return nil } return (controller.datas[index] as! KMHeaderFooterObject) } } extension KMHeaderFooterPropertyController: KMWatermarkAdjectiveListControllerDelegate { func controller(controller: KMWatermarkAdjectiveListController, shouldSelectAtRow: Int) -> Bool { return true } func controller(controller: KMWatermarkAdjectiveListController, didSelectAtRow: Int) { guard let callback = templateDidSelected else { return } let isSelected = controller.selectedTemplateID.isEmpty == false callback(findTemplateModel(in: controller as! KMHeaderFooterListController, index: didSelectAtRow)!, isSelected) } func controller(controller: KMWatermarkAdjectiveListController, didRemoveAtRow: Int) { deleteTemplateModel(in: controller as! KMHeaderFooterListController, index: didRemoveAtRow) } func controller(controller: KMWatermarkAdjectiveListController, didEditAtRow: Int) { guard let callback = menuItemClick else { return } callback(2, findTemplateModel(in: controller as! KMHeaderFooterListController, index: didEditAtRow)!) } func controller(controller: KMWatermarkAdjectiveListController, item: NSMenuItem, itemIndex: Int) { if (itemIndex == 1) { /// 删除 deleteTemplateModel(in: controller as! KMHeaderFooterListController, index: item.tag) return } if (itemIndex == 2) { /// 删除全部 let alert = NSAlert() alert.messageText = "确认删除全部模板吗?" alert.addButton(withTitle: "删除") alert.addButton(withTitle: "取消") let result = alert.runModal() if (result == .alertSecondButtonReturn) { /// 取消 return } deleteAllTemplateModel(in: controller as! KMHeaderFooterListController) return } /// 编辑 guard let callback = menuItemClick else { return } callback(2, findTemplateModel(in: controller as! KMHeaderFooterListController, index: item.tag)!) } }