KMLoginWindowController.swift 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. //
  2. // KMLoginWindowController.swift
  3. // PDF Office
  4. //
  5. // Created by lizhe on 2023/2/22.
  6. //
  7. import Cocoa
  8. class KMLoginWindowController: NSWindowController {
  9. @IBOutlet weak var loginView: KMLoginView!
  10. @IBOutlet weak var leftView: KMLoginLeftImageView!
  11. @IBOutlet weak var registerView: KMRegisterView!
  12. @IBOutlet weak var verificationCodeView: KMVerificationCodeView!
  13. @IBOutlet weak var loginInputPasswordView: KMLoginInputPasswordView!
  14. @IBOutlet weak var registerSuccessView: KMRegisterSuccessView!
  15. @IBOutlet weak var resetPasswordView: KMResetPasswordView!
  16. @IBOutlet weak var rightContentView: NSView!
  17. var inputType: DataNavigationViewButtonActionType?
  18. var model: KMRegisterModel = KMRegisterModel()
  19. var currentView: NSView?
  20. var logType: KMRegisterLogType = .login {
  21. didSet {
  22. self.reloadData()
  23. }
  24. }
  25. deinit {
  26. print("KMLoginWindowController 释放")
  27. }
  28. override func windowDidLoad() {
  29. super.windowDidLoad()
  30. // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
  31. self.setup()
  32. }
  33. //MARK: 打开文件
  34. static func show(window: NSWindow, _ type: DataNavigationViewButtonActionType = .Batch) -> KMLoginWindowController {
  35. let controller: KMLoginWindowController = KMLoginWindowController.init(windowNibName: "KMLoginWindowController")
  36. controller.inputType = type
  37. window.beginSheet(controller.window!)
  38. return controller
  39. }
  40. override func mouseDown(with event: NSEvent) {
  41. super.mouseDown(with: event)
  42. self.window?.makeFirstResponder(self)
  43. }
  44. func setup() {
  45. self.window?.contentView?.backgroundColor(NSColor(hex: "#FFFFFF"))
  46. self.leftView.cancelAction = { view in
  47. view.window!.close()
  48. }
  49. //loginView
  50. self.loginView.registerAction = { [unowned self] (view, data) in
  51. self.logType = .register
  52. }
  53. self.loginView.nextAction = { [unowned self] (view, data) in
  54. self.model.email = data.email
  55. self.logType = .loginInputPassword
  56. }
  57. //registerView
  58. self.registerView.loginAction = { [unowned self] (view, data) in
  59. self.logType = .login
  60. }
  61. self.registerView.nextAction = { [unowned self] (view, data) in
  62. self.logType = .verificationCode
  63. self.verificationCodeView.inputType = .register
  64. }
  65. self.registerSuccessView.doneAction = { view in
  66. view.window!.close()
  67. print("注册成功")
  68. }
  69. //verificationCodeView
  70. self.verificationCodeView.cancelAction = { view in
  71. self.logType = .register
  72. }
  73. self.verificationCodeView.doneAction = { view in
  74. self.logType = .registerSuccess
  75. }
  76. //loginInputPasswordView
  77. self.loginInputPasswordView.loginAction = { view in
  78. view.window!.close()
  79. }
  80. self.loginInputPasswordView.forgotPasswordAction = { view in
  81. self.logType = .resetPassword
  82. }
  83. self.loginInputPasswordView.changeEmailAction = { view in
  84. self.logType = .login
  85. }
  86. //resetPasswordView
  87. self.resetPasswordView.doneAction = { [unowned self] (view, data) in
  88. self.model.email = data.email
  89. self.logType = .login
  90. }
  91. self.reloadData()
  92. }
  93. func reloadData() {
  94. for view in self.rightContentView.subviews {
  95. view.isHidden = true
  96. }
  97. switch self.logType {
  98. case .login:
  99. self.loginView.isHidden = false
  100. self.loginView.model.email = self.model.email
  101. self.window?.makeFirstResponder(self.loginView.emailTextField)
  102. case .register:
  103. self.registerView.isHidden = false
  104. self.window?.makeFirstResponder(self.registerView.emailTextField)
  105. case .resetPassword:
  106. self.resetPasswordView.resetData()
  107. self.resetPasswordView.email = self.model.email
  108. self.resetPasswordView.isHidden = false
  109. case .verificationCode:
  110. self.verificationCodeView.isHidden = false
  111. self.window?.makeFirstResponder(self.verificationCodeView.code1TextField.textField)
  112. case .registerSuccess:
  113. self.registerSuccessView.isHidden = false
  114. case .loginInputPassword:
  115. self.loginInputPasswordView.email = self.model.email
  116. self.loginInputPasswordView.isHidden = false
  117. }
  118. }
  119. }