123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- //
- // KMLoginWindowsController.swift
- // PDF Reader Pro
- //
- // Created by wanjun on 2024/10/22.
- //
- import Cocoa
- import Combine
- typealias LoginResultComplete = (_ success: Bool) -> Void
- @objcMembers
- class KMLoginWindowsController: NSWindowController {
-
- @IBOutlet weak var leftBox: NSBox!
- @IBOutlet weak var leftImageView: NSImageView!
-
- @IBOutlet weak var rightBox: NSBox!
-
- var memberInfo: KMMemberInfo = KMMemberInfo.shared
-
- var signUpView: KMSignUpView?
-
- var loginResult: LoginResultComplete!
-
- private var viewModel = KMSignUpViewModel()
- private var cancellables = Set<AnyCancellable>()
- static let shared: KMLoginWindowsController = {
- let windowC = KMLoginWindowsController(windowNibName: "KMLoginWindowsController")
- return windowC
- }()
- override func windowDidLoad() {
- super.windowDidLoad()
- // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
- // window?.styleMask.insert([.titled, .closable, .miniaturizable, .fullSizeContentView])
- // window?.titleVisibility = .visible
-
- initializeUI()
-
- NotificationCenter.default.addObserver(self, selector: #selector(loginSuccessNotification), name: NSNotification.Name(rawValue: "MemberCenterLoginSuccess"), object: nil)
-
- NotificationCenter.default.addObserver(self, selector: #selector(logoutSuccessNotification), name: NSNotification.Name(rawValue: "MemberCenterLogoutSuccess"), object: nil)
- }
-
-
- // MARK: Private Action
-
- private func initializeUI() -> Void {
- if memberInfo.isLogin {
- window?.close()
- } else {
- leftImageView.image = NSImage(named: "WelcomePDFReaderPro1")
-
- guard let parentView = self.window?.contentView else { return }
- signUpView = KMSignUpView(model: viewModel, superView: parentView)
- if(signUpView != nil) {
- signUpView?.frame = rightBox.frame
- rightBox.contentView = signUpView!
- }
- //远程控制
- if let loginContent = KMAdvertisementManager.manager.info.loginViewContent {
- if loginContent.content?.isEmpty == false {
- let content = loginContent.content?.first
- let url = URL(string: KMAdvertisementModelTransition.transitionImagePath(image: content?.image, highlight: false))
- let _ = KMAdvertisementImage.imageWithURL(url: url) { [weak self] image in
- guard let self = self else { return }
- self.leftImageView.image = image
- }
- }
- }
-
- let signUpView = KMSignUpView()
- signUpView.frame = rightBox.frame
- rightBox.contentView = signUpView
- rightBox.fillColor = NSColor(named: "membercentercolor") ?? NSColor.white
- }
- }
-
- @IBAction func leftButtonAction(_ sender: NSButton) {
- //远程控制
- if let loginContent = KMAdvertisementManager.manager.info.loginViewContent {
- if loginContent.content?.isEmpty == false {
- let content = loginContent.content?.first
- let string = KMAdvertisementModelTransition.transitionLanguage(langeuage: content?.linkURL)
- if string.count != 0 {
- NSWorkspace.shared.open(URL.init(string: string)!)
- }
- }
- }
- }
-
- // 刷新左侧视图
- private func refreshSplitView() -> Void {
- if viewModel.screenType == .signUp {
-
- }
- }
-
- // MARK: public Action
-
- @objc func loginSuccessNotification() -> Void {
- if let result = loginResult {
- result(true)
- }
- window?.close()
- }
-
- @objc func logoutSuccessNotification() -> Void {
- signUpView?.resetTextFileData()
- }
-
- func openWindow(_ complete: @escaping LoginResultComplete) -> Void {
- KMLoginWindowsController.shared.showWindow(nil)
- loginResult = complete
- }
-
- // MARK: Bind Method
-
- func bindViewModel() -> Void {
- viewModel.$screenType
- .receive(on: RunLoop.main)
- .sink { [weak self] newValue in
- self?.refreshSplitView()
- }
- .store(in: &cancellables)
-
- }
- }
|