KMHeaderFooterPropertyController.swift 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. //
  2. // KMHeaderFooterPropertyController.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by tangchao on 2022/12/27.
  6. //
  7. import Cocoa
  8. typealias KMHeaderFooterPropertyTemplateDidSelected = (_ model: KMHeaderFooterObject,_ isSelected: Bool)->()
  9. typealias KMHeaderFooterPropertyTemplateMenuItemClick = (_ itemIndex: Int, _ model: KMHeaderFooterObject)->()
  10. /// 页眉页脚 属性控制器
  11. class KMHeaderFooterPropertyController: KMWatermarkAdjectivePropertyBaseController {
  12. var templateDidSelected: KMHeaderFooterPropertyTemplateDidSelected!
  13. var menuItemClick: KMHeaderFooterPropertyTemplateMenuItemClick!
  14. var controller = KMHeaderFooterListController()
  15. override func viewDidLoad() {
  16. super.viewDidLoad()
  17. self.showBack(show: false)
  18. self.titleLabel.stringValue = NSLocalizedString("HeaderAndFooter", comment: "")
  19. self.segementControl.isHidden = true
  20. self.segementControlHeightConst.constant = 0
  21. let item = NSTabViewItem(identifier: "tabID")
  22. item.label = "tab1";
  23. let controller = self.controller
  24. item.viewController = controller
  25. controller.emptyView.despLabel.stringValue = NSLocalizedString("Click the Add button in the upper right corner to create a new header & footer.", comment: "")
  26. controller.delegate = self
  27. self.tabView.addTabViewItem(item)
  28. childViewController.append(controller)
  29. reloadDatas()
  30. }
  31. func reloadDatas () {
  32. let controller: KMHeaderFooterListController = childViewController[0] as! KMHeaderFooterListController
  33. controller.initDatas(datas: KMHeaderFooterManager.defaultManager.headFooterObjects)
  34. }
  35. func deleteTemplateModel(_ templateModel: KMHeaderFooterObject) -> Bool {
  36. return KMHeaderFooterManager.defaultManager.removeHeaderFooter(templateModel)
  37. }
  38. func deleteTemplateModel(in controller: KMHeaderFooterListController, index: Int) {
  39. if (index >= controller.datas.count) {
  40. return
  41. }
  42. let templateModel: KMHeaderFooterObject = controller.datas[index] as! KMHeaderFooterObject
  43. if (deleteTemplateModel(templateModel)) { /// 删除成功,刷新数据
  44. reloadDatas()
  45. }
  46. }
  47. func deleteAllTemplateModel(in controller: KMHeaderFooterListController) {
  48. reloadDatas()
  49. }
  50. func findTemplateModel(in controller: KMHeaderFooterListController, index: Int) -> KMHeaderFooterObject? {
  51. if (index >= controller.datas.count) {
  52. return nil
  53. }
  54. return (controller.datas[index] as! KMHeaderFooterObject)
  55. }
  56. }
  57. extension KMHeaderFooterPropertyController: KMWatermarkAdjectiveListControllerDelegate {
  58. func controller(controller: KMWatermarkAdjectiveListController, shouldSelectAtRow: Int) -> Bool {
  59. return true
  60. }
  61. func controller(controller: KMWatermarkAdjectiveListController, didSelectAtRow: Int) {
  62. guard let callback = templateDidSelected else {
  63. return
  64. }
  65. let isSelected = controller.selectedTemplateID.isEmpty == false
  66. callback(findTemplateModel(in: controller as! KMHeaderFooterListController, index: didSelectAtRow)!, isSelected)
  67. }
  68. func controller(controller: KMWatermarkAdjectiveListController, didRemoveAtRow: Int) {
  69. deleteTemplateModel(in: controller as! KMHeaderFooterListController, index: didRemoveAtRow)
  70. }
  71. func controller(controller: KMWatermarkAdjectiveListController, didEditAtRow: Int) {
  72. guard let callback = menuItemClick else {
  73. return
  74. }
  75. callback(2, findTemplateModel(in: controller as! KMHeaderFooterListController, index: didEditAtRow)!)
  76. }
  77. func controller(controller: KMWatermarkAdjectiveListController, item: NSMenuItem, itemIndex: Int) {
  78. if (itemIndex == 1) { /// 删除
  79. deleteTemplateModel(in: controller as! KMHeaderFooterListController, index: item.tag)
  80. return
  81. }
  82. if (itemIndex == 2) { /// 删除全部
  83. let alert = NSAlert()
  84. alert.messageText = "确认删除全部模板吗?"
  85. alert.addButton(withTitle: "删除")
  86. alert.addButton(withTitle: "取消")
  87. let result = alert.runModal()
  88. if (result == .alertSecondButtonReturn) { /// 取消
  89. return
  90. }
  91. deleteAllTemplateModel(in: controller as! KMHeaderFooterListController)
  92. return
  93. }
  94. /// 编辑
  95. guard let callback = menuItemClick else {
  96. return
  97. }
  98. callback(2, findTemplateModel(in: controller as! KMHeaderFooterListController, index: item.tag)!)
  99. }
  100. }