KMConvertSettingView.swift 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. //
  2. // KMConvertSettingView.swift
  3. // PDF Master
  4. //
  5. // Created by tangchao on 2023/5/9.
  6. //
  7. let kKMConvertLanugageSelectedIndex: String = "KMConvertLanugageSelectedIndex"
  8. typealias KMConvertSettingViewPageRangeDidChangeCallback = (_ pageRange: KMPageRange) -> Void
  9. typealias KMConvertSettingViewPageRangeDidInputFinishCallback = (_ pageRangeString: String) -> ()
  10. // 转档 设置视图 基类
  11. class KMConvertSettingView: KMConvertBaseView {
  12. private var _currentLanguage: String?
  13. var currentLanguage: String? {
  14. get {
  15. return self._currentLanguage
  16. }
  17. set {
  18. self._currentLanguage = newValue
  19. if let indexString = UserDefaults.standard.string(forKey: kKMConvertLanugageSelectedIndex), let index = Int(indexString) {
  20. self.ocrLanuguageIndex = index
  21. return
  22. }
  23. if let result = newValue?.hasPrefix("zh-Hans"), result {
  24. ocrLanuguageIndex = 0
  25. } else if let result = newValue?.hasPrefix("en"), result {
  26. ocrLanuguageIndex = 2
  27. } else if let result = newValue?.hasPrefix("zh-Hant"), result {
  28. ocrLanuguageIndex = 1
  29. } else if let result = newValue?.hasPrefix("fr"), result {
  30. ocrLanuguageIndex = 3
  31. } else if let result = newValue?.hasPrefix("de"), result {
  32. ocrLanuguageIndex = 4
  33. } else if let result = newValue?.hasPrefix("ht"), result { /// 海地克里奥尔语 Haitian
  34. ocrLanuguageIndex = 5
  35. } else if let result = newValue?.hasPrefix("ja"), result {
  36. ocrLanuguageIndex = 6
  37. } else if let result = newValue?.hasPrefix("ko"), result {
  38. ocrLanuguageIndex = 7
  39. } else if let result = newValue?.hasPrefix("la"), result { /// 拉丁语 Latin
  40. ocrLanuguageIndex = 8
  41. } else {
  42. ocrLanuguageIndex = 2
  43. }
  44. }
  45. }
  46. var ocrLanuguageIndex: Int = 3
  47. var pageRangeSelectedIndex: Int = 0
  48. var pageRangeDidChange: KMConvertSettingViewPageRangeDidChangeCallback?
  49. var pageRangeDidInputFinishCallback: KMConvertSettingViewPageRangeDidInputFinishCallback?
  50. var lanugageDidSelected: KMValueDidChangeBlock?
  51. private var _ocrItemView: KMConvertOCRSettingItemView?
  52. var ocrItemView: KMConvertOCRSettingItemView? {
  53. get {
  54. return self._ocrItemView
  55. }
  56. set {
  57. if (self._ocrItemView != newValue) {
  58. self._ocrItemView = newValue
  59. newValue?.lanugageDidSelected = { [unowned self] value, change in
  60. guard let callback = self.lanugageDidSelected else {
  61. return
  62. }
  63. callback(value, change)
  64. }
  65. }
  66. }
  67. }
  68. private var _pageRangeItemView: KMConvertPageRangeSettingItemView?
  69. var pageRangeItemView: KMConvertPageRangeSettingItemView? {
  70. get {
  71. return self._pageRangeItemView
  72. }
  73. set {
  74. if (self._pageRangeItemView != newValue) {
  75. self._pageRangeItemView = newValue
  76. newValue?.isTextDidEndCallback = true
  77. newValue?.itemClick = { [unowned self] index, _ in
  78. self.pageRangeSelectedIndex = index
  79. guard let callback = self.pageRangeDidChange else {
  80. return
  81. }
  82. callback(KMPageRange(rawValue: index)!)
  83. }
  84. newValue?.textDidEndEditingCallback = { [unowned self] textString in
  85. let pageRange = KMPageRange(rawValue: self.pageRangeSelectedIndex)
  86. if (pageRange != .custom) {
  87. return
  88. }
  89. guard let callback = self.pageRangeDidInputFinishCallback else {
  90. return
  91. }
  92. callback(textString)
  93. }
  94. }
  95. }
  96. }
  97. var pageCount = 0 {
  98. didSet {
  99. self.pageRangeItemView?.pageCount = self.pageCount
  100. }
  101. }
  102. var ocrEnabled: Bool {
  103. get {
  104. guard let state = self.ocrItemView?.checkVC?.state else {
  105. return false
  106. }
  107. return state == .Checked
  108. }
  109. }
  110. func getPageRangeString() -> String {
  111. if let view = self.pageRangeItemView {
  112. return view.pageRangeValue
  113. }
  114. return ""
  115. }
  116. }