KMAIRewritingVC.swift 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. //
  2. // KMAIRewritingVC.swift
  3. // PDF Master
  4. //
  5. // Created by wanjun on 2023/5/22.
  6. //
  7. import Cocoa
  8. @objc enum KMAIRewritingState : Int {
  9. case AIRewriting = 0
  10. case AIErrorCorrection
  11. }
  12. //class KMAIRewritingVC: NSViewController {
  13. //}
  14. class KMAIRewritingVC: NSViewController {
  15. @IBOutlet weak var aiRewritingLabel: NSTextField!
  16. @IBOutlet weak var aiRewritingSubLabel: NSTextField!
  17. @IBOutlet weak var rewritingBox: KMBox!
  18. @IBOutlet weak var rewritingLabel: NSTextField!
  19. @IBOutlet weak var rewritingButton: NSButton!
  20. @IBOutlet weak var rewritingTextBox: NSBox!
  21. @IBOutlet weak var rewritingTextField: NSTextField!
  22. @IBOutlet weak var wordsLabel: NSTextField!
  23. @IBOutlet weak var resultLabel: NSTextField!
  24. @IBOutlet weak var copyBox: KMBox!
  25. @IBOutlet weak var copyLabel: NSTextField!
  26. @IBOutlet weak var copyButton: NSButton!
  27. @IBOutlet weak var resultTextBox: NSBox!
  28. @IBOutlet weak var resultTextView: NSTextView!
  29. @IBOutlet weak var emptyImageView: NSImageView!
  30. @IBOutlet weak var errorView: NSView!
  31. @IBOutlet weak var errorImageView: NSImageView!
  32. @IBOutlet weak var errorLabel: NSTextField!
  33. @IBOutlet weak var progressView: NSProgressIndicator!
  34. var state: KMAIRewritingState = .AIRewriting
  35. var isExceed: Bool = false
  36. var canRewriting: Bool = false
  37. var canCopy: Bool = false
  38. override func viewDidLoad() {
  39. super.viewDidLoad()
  40. // Do view setup here.
  41. self.initLocalization()
  42. self.initializeUI()
  43. }
  44. // MARK: initialize
  45. func initializeUI() -> Void {
  46. self.progressView.isHidden = true
  47. self.aiRewritingLabel.textColor = NSColor(hex: "#252629")
  48. self.aiRewritingLabel.font = NSFont.SFProTextSemibold(20.0)
  49. self.aiRewritingSubLabel.textColor = NSColor(hex: "#94989C")
  50. self.aiRewritingSubLabel.font = NSFont.SFProTextRegular(14.0)
  51. self.rewritingBox.fillColor = NSColor(hex: "#BDDFFD")
  52. self.rewritingBox.cornerRadius = 4.0
  53. self.rewritingLabel.textColor = NSColor(hex: "#F7F8FA")
  54. self.rewritingLabel.font = NSFont.SFProTextRegular(14.0)
  55. self.rewritingTextBox.borderColor = NSColor(hex: "#1770F4")
  56. self.wordsLabel.textColor = NSColor(hex: "#94989C")
  57. self.wordsLabel.font = NSFont.SFProTextRegular(14.0)
  58. self.resultLabel.textColor = NSColor(hex: "#252629")
  59. self.resultLabel.font = NSFont.SFProTextSemibold(20.0)
  60. self.copyBox.borderColor = NSColor(hex: "#DFE1E5")
  61. self.copyBox.fillColor = NSColor(hex: "#EDEEF0")
  62. self.copyBox.cornerRadius = 4.0
  63. self.copyBox.borderWidth = 1.0
  64. self.copyLabel.textColor = NSColor(hex: "#B1B3B8")
  65. self.copyLabel.font = NSFont.SFProTextRegular(14.0)
  66. self.resultTextBox.borderColor = NSColor(hex: "#DFE1E5")
  67. self.errorView.isHidden = true
  68. self.errorImageView.image = NSImage(named: "icon_error")
  69. self.errorLabel.textColor = NSColor(hex: "#F3465B")
  70. self.errorLabel.font = NSFont.SFProTextRegular(12.0)
  71. }
  72. func initLocalization() -> Void {
  73. switch self.state {
  74. case .AIRewriting:
  75. self.aiRewritingLabel.stringValue = NSLocalizedString("AI Rewriting", comment: "")
  76. self.aiRewritingSubLabel.stringValue = NSLocalizedString("Limited to 150 characters per session, 5 times per month", comment: "")
  77. self.rewritingLabel.stringValue = NSLocalizedString("Rewriting", comment: "")
  78. self.resultLabel.stringValue = NSLocalizedString("Result", comment: "")
  79. self.copyLabel.stringValue = NSLocalizedString("Copy", comment: "")
  80. self.rewritingTextField.placeholderString = NSLocalizedString("Please enter text content here...", comment: "")
  81. self.wordsLabel.stringValue = NSLocalizedString("0/150", comment: "")
  82. break
  83. case .AIErrorCorrection:
  84. self.aiRewritingLabel.stringValue = NSLocalizedString("AI Error Correction", comment: "")
  85. self.aiRewritingSubLabel.stringValue = NSLocalizedString("Limited to 150 characters per session, 5 times per month", comment: "")
  86. self.rewritingLabel.stringValue = NSLocalizedString("Rewriting", comment: "")
  87. self.resultLabel.stringValue = NSLocalizedString("Result", comment: "")
  88. self.copyLabel.stringValue = NSLocalizedString("Copy", comment: "")
  89. self.rewritingTextField.placeholderString = NSLocalizedString("Please enter text content here...", comment: "")
  90. self.wordsLabel.stringValue = NSLocalizedString("0/150", comment: "")
  91. break
  92. default:
  93. break
  94. }
  95. }
  96. // MARK: Action
  97. @IBAction func aiRewritingAction(_ sender: NSButton) {
  98. if self.canRewriting {
  99. self.errorView.isHidden = true
  100. self.progressView.isHidden = false
  101. let infoDictionary = Bundle .main.infoDictionary!
  102. let majorVersion = infoDictionary["CFBundleShortVersionString"]
  103. KMRequestServerManager.manager.aiRewriting(content: self.rewritingTextField.stringValue, version: "1.0.1", state: self.state) { [unowned self] success, result in
  104. self.progressView.isHidden = true
  105. let result: NSDictionary = result!.result
  106. if success {
  107. self.copyBox.fillColor = NSColor(hex: "#FFFFFF")
  108. self.copyBox.borderColor = NSColor(hex: "#DFE1E5")
  109. self.copyLabel.textColor = NSColor(hex: "#252629")
  110. self.canCopy = true
  111. self.resultTextView.string = ""
  112. self.resultTextView.string = result["content"] as? String ?? ""
  113. } else {
  114. self.copyBox.borderColor = NSColor(hex: "#DFE1E5")
  115. self.copyBox.fillColor = NSColor(hex: "#EDEEF0")
  116. self.canCopy = false
  117. self.resultTextView.string = ""
  118. self.errorView.isHidden = false
  119. self.errorLabel.stringValue = "error"
  120. }
  121. }
  122. }
  123. }
  124. @IBAction func copyAction(_ sender: NSButton) {
  125. if self.canCopy {
  126. let pasteboard = NSPasteboard.general
  127. pasteboard.clearContents()
  128. pasteboard.setString(self.resultTextView.string, forType: .string)
  129. }
  130. }
  131. }
  132. extension KMAIRewritingVC: NSTextFieldDelegate {
  133. func controlTextDidEndEditing(_ obj: Notification) {
  134. let object = obj.object as! NSTextField
  135. }
  136. func controlTextDidChange(_ obj: Notification) {
  137. let object = obj.object as! NSTextField
  138. self.wordsLabel.stringValue = String(format: "%d/150", object.stringValue.count)
  139. if object.stringValue.count > 0 {
  140. self.rewritingBox.fillColor = NSColor(hex: "#1770F4")
  141. self.rewritingLabel.textColor = NSColor(hex: "#FFFFFF")
  142. self.canRewriting = true
  143. } else {
  144. self.rewritingBox.fillColor = NSColor(hex: "#BDDFFD")
  145. self.rewritingLabel.textColor = NSColor(hex: "#F7F8FA")
  146. self.canRewriting = false
  147. }
  148. if object.stringValue.count >= 150 {
  149. self.wordsLabel.textColor = NSColor(hex: "#F3465B")
  150. self.isExceed = true
  151. } else {
  152. self.wordsLabel.textColor = NSColor(hex: "#94989C")
  153. self.isExceed = false
  154. }
  155. }
  156. }