KMPDFViewPanelSetViewController.swift 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. //
  2. // KMPDFViewPanelSetViewController.swift
  3. // PDF Office
  4. //
  5. // Created by lxy on 2023/1/17.
  6. //
  7. import Cocoa
  8. class KMPDFViewPanelSetViewController: NSViewController {
  9. @IBOutlet weak var contentView: NSView!
  10. @IBOutlet weak var shouModelTitleLabel: NSTextField!
  11. @IBOutlet weak var mainTitleLabel: NSTextField!
  12. @IBOutlet weak var slideLabel: NSTextField!
  13. @IBOutlet weak var bookLabel: NSTextField!
  14. @IBOutlet weak var doublePageLabel: NSTextField!
  15. @IBOutlet weak var singlePageLabel: NSTextField!
  16. @IBOutlet weak var readLabel: NSTextField!
  17. @IBOutlet weak var fullScreenLabel: NSTextField!
  18. @IBOutlet weak var rightRotationButton: NSButton!
  19. @IBOutlet weak var leftRotationButton: NSButton!
  20. @IBOutlet weak var rotationLabel: NSTextField!
  21. @IBOutlet weak var continuousRollingButton: NSButton!
  22. @IBOutlet weak var pageBreakButton: NSButton!
  23. @IBOutlet weak var pptImageView: NSImageView!
  24. @IBOutlet weak var fullSceenImageView: NSImageView!
  25. @IBOutlet weak var readImageView: NSImageView!
  26. @IBOutlet weak var bookImageView: NSImageView!
  27. @IBOutlet weak var singlePageImageView: NSImageView!
  28. @IBOutlet weak var twoPageImageView: NSImageView!
  29. var mainVC: KMMainViewController?
  30. var listView : CPDFListView?
  31. override func viewDidLoad() {
  32. super.viewDidLoad()
  33. self.contentView!.backgroundColor(NSColor(hex: "FFFFFF"))
  34. self.shouModelTitleLabel.stringValue = NSLocalizedString("Display Model", comment: "")
  35. self.mainTitleLabel.stringValue = NSLocalizedString("View", comment: "")
  36. self.slideLabel.stringValue = NSLocalizedString("Read Mode", comment: "")
  37. self.bookLabel.stringValue = NSLocalizedString("Book Mode", comment: "")
  38. self.doublePageLabel.stringValue = NSLocalizedString("Two Page", comment: "")
  39. self.singlePageLabel.stringValue = NSLocalizedString("Single Page", comment: "")
  40. self.readLabel.stringValue = NSLocalizedString("PPT", comment: "")
  41. self.rotationLabel.stringValue = NSLocalizedString("Rotate", comment: "")
  42. self.fullScreenLabel.stringValue = NSLocalizedString("Full Screen", comment: "")
  43. self.continuousRollingButton.title = NSLocalizedString("Continuous Scroll", comment: "")
  44. self.pageBreakButton.title = NSLocalizedString("Page Breaks", comment: "")
  45. self.rotationLabel.textColor = NSColor(hex: "#616469")
  46. self.shouModelTitleLabel.textColor = NSColor(hex: "#616469")
  47. self.singlePageLabel.textColor = NSColor(hex: "#616469")
  48. self.doublePageLabel.textColor = NSColor(hex: "#616469")
  49. self.bookLabel.textColor = NSColor(hex: "#616469")
  50. self.readLabel.textColor = NSColor(hex: "#616469")
  51. self.fullScreenLabel.textColor = NSColor(hex: "#616469")
  52. self.slideLabel.textColor = NSColor(hex: "#616469")
  53. self.leftRotationButton.wantsLayer = true
  54. self.rightRotationButton.wantsLayer = true
  55. self.leftRotationButton.layer?.borderWidth = 1
  56. self.rightRotationButton.layer?.borderWidth = 1
  57. self.leftRotationButton.layer?.cornerRadius = 4
  58. self.rightRotationButton.layer?.cornerRadius = 4
  59. self.leftRotationButton.layer?.borderColor = NSColor(hex: "#DFE1E5").cgColor
  60. self.rightRotationButton.layer?.borderColor = NSColor(hex: "#DFE1E5").cgColor
  61. self.leftRotationButton.layer?.backgroundColor = NSColor.white.cgColor
  62. self.rightRotationButton.layer?.backgroundColor = NSColor.white.cgColor
  63. self.reloadListViewModel()
  64. NotificationCenter.default.addObserver(self, selector: #selector(displayModeChangedNotification), name: NSNotification.Name.CPDFViewDisplayModeChanged, object:nil)
  65. }
  66. func reloadListViewModel() {
  67. if(self.listView?.displayTwoUp == true) {
  68. if self.listView?.displaysAsBook == true {
  69. self.updateDispalyMode(currentImgae: bookImageView)
  70. } else {
  71. self.updateDispalyMode(currentImgae: twoPageImageView)
  72. }
  73. } else {
  74. self.updateDispalyMode(currentImgae: singlePageImageView)
  75. }
  76. if(self.listView?.displayDirection == .vertical) {
  77. self.continuousRollingButton.state = .on
  78. } else {
  79. self.continuousRollingButton.state = .off
  80. }
  81. if self.listView?.displaysPageBreaks == true {
  82. self.pageBreakButton.state = .on
  83. } else {
  84. self.pageBreakButton.state = .off
  85. }
  86. }
  87. @IBAction func setPDFViewShow_Click(_ sender: NSButton) {
  88. var continous : Bool = false
  89. if self.continuousRollingButton.state == .on {
  90. continous = true
  91. }
  92. switch sender.tag {
  93. case 0:
  94. if continous {
  95. KMPreferenceManager.shared.viewPageDisplayType = 1
  96. } else {
  97. KMPreferenceManager.shared.viewPageDisplayType = 0
  98. }
  99. case 1:
  100. if continous {
  101. KMPreferenceManager.shared.viewPageDisplayType = 3
  102. }else {
  103. KMPreferenceManager.shared.viewPageDisplayType = 2
  104. }
  105. self.updateDispalyMode(currentImgae: twoPageImageView)
  106. case 2:
  107. if continous {
  108. KMPreferenceManager.shared.viewPageDisplayType = 5
  109. } else {
  110. KMPreferenceManager.shared.viewPageDisplayType = 4
  111. }
  112. case 3:
  113. break
  114. case 4:
  115. self.view.window?.toggleFullScreen(nil)
  116. break
  117. case 5:
  118. break
  119. default:
  120. break
  121. }
  122. self.listView?.layoutDocumentView()
  123. }
  124. private func updateDispalyMode(currentImgae:NSImageView) {
  125. let images : [NSImageView] = [singlePageImageView,twoPageImageView,bookImageView,readImageView,fullSceenImageView,pptImageView]
  126. let imageNor : [String] = ["KMImageNamePDFViewSignleNor","KMImageNamePDFViewTwoNor","KMImageNamePDFViewBookNor","KMImageNamePDFViewReadNor","KMImageNamePDFViewFullScreenNor","KMImageNamePDFViewTTSNor"]
  127. let imageSel : [String] = ["KMImageNamePDFViewSignleSel","KMImageNamePDFViewTwoSel","KMImageNamePDFViewBookSel","KMImageNamePDFViewReadSel","KMImageNamePDFViewFullScreenSel","KMImageNamePDFViewTTSSel"]
  128. for index in 0 ..< images.count - 1 {
  129. let image = images[index]
  130. image.wantsLayer = true
  131. image.layer?.borderWidth = 1.0
  132. image.layer?.cornerRadius = 4.0
  133. if currentImgae == image {
  134. image.layer?.backgroundColor = NSColor(hex: "#CED0D4",alpha:0.6).cgColor
  135. image.layer?.borderColor = NSColor(hex: "#CED0D4").cgColor
  136. image.image = NSImage(named: imageSel[index])
  137. } else {
  138. image.layer?.backgroundColor = NSColor.clear.cgColor
  139. image.layer?.borderColor = NSColor.clear.cgColor
  140. image.image = NSImage(named: imageNor[index])
  141. }
  142. }
  143. }
  144. @IBAction func singlePageAction(_ sender: Any) {
  145. mainVC?.singlePageScreen(isSinglePage: true, doublePagesScreen: false)
  146. }
  147. @IBAction func verticalSplitAction(_ sender: Any) {
  148. mainVC?.singlePageScreen(isSinglePage: false, doublePagesScreen: false)
  149. }
  150. @IBAction func horizontalSplitAction(_ sender: Any) {
  151. mainVC!.singlePageScreen(isSinglePage: false, doublePagesScreen: true)
  152. }
  153. @IBAction func setSplitModel_Click(_ sender: Any) {
  154. }
  155. @IBAction func continuousRollingButton_Click(_ sender: Any) {
  156. var continous : Bool = false
  157. if self.continuousRollingButton.state == .on {
  158. continous = true
  159. }
  160. if self.listView?.displayMode() == .singlePage {
  161. if continous {
  162. self.listView?.setDisplay(.singlePageContinuous)
  163. }
  164. } else if self.listView?.displayMode() == .singlePageContinuous {
  165. if continous == false {
  166. self.listView?.setDisplay(.singlePage)
  167. }
  168. } else if self.listView?.displayMode() == .twoUp {
  169. if continous {
  170. self.listView?.setDisplay(.twoUpContinuous)
  171. }
  172. } else if self.listView?.displayMode() == .twoUpContinuous {
  173. if continous == false {
  174. self.listView?.setDisplay(.twoUp)
  175. }
  176. }
  177. self.listView?.layoutDocumentView()
  178. }
  179. @IBAction func pageBreakButton_Click(_ sender: Any) {
  180. if self.pageBreakButton.state == .on {
  181. self.listView?.displaysPageBreaks = true
  182. } else {
  183. self.listView?.displaysPageBreaks = false
  184. }
  185. self.listView?.layoutDocumentView()
  186. }
  187. @IBAction func rotationButton_Click(_ sender: Any) {
  188. let page : CPDFPage = self.listView?.currentPage() ?? CPDFPage()
  189. if page.rotation == 0 {
  190. page.rotation = 90
  191. } else if page.rotation == 90 {
  192. page.rotation = 180
  193. } else if page.rotation == 180 {
  194. page.rotation = 270
  195. } else if page.rotation == 270 {
  196. page.rotation = 0
  197. }
  198. self.listView?.layoutDocumentView()
  199. }
  200. @IBAction func rotationButtonRight_Click(_ sender: Any) {
  201. let page : CPDFPage = self.listView?.currentPage() ?? CPDFPage()
  202. if page.rotation == 0 {
  203. page.rotation = 270
  204. } else if page.rotation == 90 {
  205. page.rotation = 0
  206. } else if page.rotation == 180 {
  207. page.rotation = 90
  208. } else if page.rotation == 270 {
  209. page.rotation = 180
  210. }
  211. self.listView?.layoutDocumentView()
  212. }
  213. @objc func displayModeChangedNotification(_ notification: Notification) -> Void {
  214. if notification.object is CPDFListView {
  215. let pdfview = notification.object as! CPDFListView
  216. if(pdfview.document == self.listView?.document) {
  217. self.reloadListViewModel()
  218. }
  219. }
  220. }
  221. }