KMConvertSettingView.swift 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. //
  2. // KMConvertSettingView.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by tangchao on 2023/5/9.
  6. //
  7. import KMComponentLibrary
  8. let kKMConvertLanugageSelectedIndex: String = "KMConvertLanugageSelectedIndex"
  9. typealias KMConvertSettingViewPageRangeDidChangeCallback = (_ pageRange: KMPageRange) -> Void
  10. typealias KMConvertSettingViewPageRangeDidInputFinishCallback = (_ pageRangeString: String) -> ()
  11. typealias KMConvertWordSettingViewNeedOCRAction = (_ needOCR: Bool) -> Void
  12. // 转档 设置视图 基类
  13. class KMConvertSettingView: KMConvertBaseView {
  14. private var _currentLanguage: String?
  15. var type: KMBatchConvertPDFType = .word
  16. var isBatch = false
  17. //OCR
  18. var needOCRAction: KMConvertWordSettingViewNeedOCRAction?
  19. var currentLanguage: String? {
  20. get {
  21. return self._currentLanguage
  22. }
  23. set {
  24. self._currentLanguage = newValue
  25. if let indexString = UserDefaults.standard.string(forKey: kKMConvertLanugageSelectedIndex), let index = Int(indexString) {
  26. self.ocrLanuguageIndex = index
  27. return
  28. }
  29. }
  30. }
  31. var ocrLanuguageIndex: Int = 2 {
  32. didSet {
  33. self.ocrItemView?.languageIndex = self.ocrLanuguageIndex
  34. }
  35. }
  36. var pageRangeSelectedIndex: Int = 0
  37. var pageRangeDidChange: KMConvertSettingViewPageRangeDidChangeCallback?
  38. var pageRangeDidInputFinishCallback: KMConvertSettingViewPageRangeDidInputFinishCallback?
  39. var lanugageDidSelected: KMValueDidChangeBlock?
  40. private var _ocrItemView: KMConvertOCRSettingItemView?
  41. var ocrItemView: KMConvertOCRSettingItemView? {
  42. get {
  43. return self._ocrItemView
  44. }
  45. set {
  46. if (self._ocrItemView != newValue) {
  47. self._ocrItemView = newValue
  48. newValue?.lanugageDidSelected = { [weak self] value, change in
  49. guard let callback = self?.lanugageDidSelected else {
  50. return
  51. }
  52. callback(value, change)
  53. }
  54. newValue?.needOCRAction = { [weak self] needOCR in
  55. guard let callback = self?.needOCRAction else {
  56. return
  57. }
  58. callback(needOCR)
  59. }
  60. }
  61. }
  62. }
  63. private var _pageRangeItemView: KMConvertPageRangeSettingItemView?
  64. var pageRangeItemView: KMConvertPageRangeSettingItemView? {
  65. get {
  66. return self._pageRangeItemView
  67. }
  68. set {
  69. if (self._pageRangeItemView != newValue) {
  70. self._pageRangeItemView = newValue
  71. newValue?.isTextDidEndCallback = true
  72. newValue?.itemClick = { [weak self] index, _ in
  73. self?.pageRangeSelectedIndex = index
  74. guard let callback = self?.pageRangeDidChange else {
  75. return
  76. }
  77. var value: KMPageRange = .all
  78. if index == 1 {
  79. value = .current
  80. } else if index == 2 {
  81. value = .odd
  82. } else if index == 3 {
  83. value = .even
  84. } else if index == 4 {
  85. value = .custom
  86. }
  87. callback(value)
  88. }
  89. newValue?.textDidEndEditingCallback = { [unowned self] textString in
  90. let pageRange = KMPageRange(rawValue: self.pageRangeSelectedIndex)
  91. if (pageRange != .custom) {
  92. return
  93. }
  94. guard let callback = self.pageRangeDidInputFinishCallback else {
  95. return
  96. }
  97. callback(textString)
  98. }
  99. }
  100. }
  101. }
  102. var tipView: KMConvertSettingLimitTipView?
  103. override func initSubViews() {
  104. super.initSubViews()
  105. }
  106. override func layout() {
  107. super.layout()
  108. }
  109. var pageCount = 0 {
  110. didSet {
  111. self.pageRangeItemView?.pageCount = self.pageCount
  112. }
  113. }
  114. var ocrEnabled: Bool {
  115. get {
  116. guard let state = self.ocrItemView?.checkView.properties.checkboxType else {
  117. return false
  118. }
  119. return state == .selected
  120. }
  121. }
  122. func getPageRangeString() -> String {
  123. if let view = self.pageRangeItemView {
  124. return view.pageRangeValue
  125. }
  126. return ""
  127. }
  128. override func updateViewColor() {
  129. super.updateViewColor()
  130. KMMainThreadExecute {
  131. self.ocrItemView?.titleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
  132. self.pageRangeItemView?.titleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
  133. }
  134. }
  135. }