123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- //
- // KMSubscribeWaterMarkWindowController.swift
- // PDF Master
- //
- // Created by lizhe on 2023/6/12.
- //
- import Cocoa
- var subscribeWaterMarkController: KMSubscribeWaterMarkWindowController?
- var subscribeWaterMarkMainWindow: NSWindow?
- typealias KMSubscribeWaterMarkWindowControllerCloseAction = (_ controller: KMSubscribeWaterMarkWindowController) -> Void
- typealias KMSubscribeWaterMarkWindowControllerWatermarkExportAction = (_ controller: KMSubscribeWaterMarkWindowController) -> Void
- typealias KMSubscribeWaterMarkWindowControllerSubscribeAction = (_ controller: KMSubscribeWaterMarkWindowController) -> Void
- typealias KMSubscribeWaterMarkWindowControllerRestoreAction = (_ controller: KMSubscribeWaterMarkWindowController) -> Void
- class KMSubscribeWaterMarkWindowController: NSWindowController {
- @IBOutlet weak var waterMarkView: KMSubscribeWaterMarkView!
- @IBOutlet weak var waterViewHeightConstrain: NSLayoutConstraint!
-
- var closeAction: KMSubscribeWaterMarkWindowControllerCloseAction?
- var subscribeAction: KMSubscribeWaterMarkWindowControllerSubscribeAction?
- var watermarkExportAction: KMSubscribeWaterMarkWindowControllerWatermarkExportAction?
- var restoreAction: KMSubscribeWaterMarkWindowControllerRestoreAction?
-
- deinit {
- print("KMSubscribeWaterMarkWindowController 释放")
- }
-
- override func windowDidLoad() {
- super.windowDidLoad()
- self.setup()
- self.reloadData()
- // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
- }
-
- //MARK: 打开文件
- static func show(window: NSWindow, completion: @escaping (_ isSubscribeSuccess: Bool, _ isWaterMarkExport: Bool, _ isClose: Bool) -> Void) -> KMSubscribeWaterMarkWindowController {
- let subscribeWaterMarkWindowController: KMSubscribeWaterMarkWindowController = KMSubscribeWaterMarkWindowController.init(windowNibName: "KMSubscribeWaterMarkWindowController")
- window.beginSheet(subscribeWaterMarkWindowController.window!)
- subscribeWaterMarkWindowController.window?.center()
-
- subscribeWaterMarkWindowController.closeAction = { controller in
- print("关闭")
- completion(false, false, true)
- subscribeWaterMarkMainWindow?.endSheet(controller.window!)
- controller.window?.close()
-
- subscribeWaterMarkController = nil
- subscribeWaterMarkMainWindow = nil
- }
-
- subscribeWaterMarkWindowController.watermarkExportAction = { controller in
- print("关闭")
- completion(false, true, false)
- subscribeWaterMarkMainWindow?.endSheet(controller.window!)
- controller.window?.close()
- subscribeWaterMarkController = nil
- subscribeWaterMarkMainWindow = nil
- }
-
- subscribeWaterMarkWindowController.subscribeAction = { controller in
- print("购买")
- controller.waterMarkView.beginLoading(backgroundColor: NSColor.black.withAlphaComponent(0.2))
- KMPurchaseManager.manager.purchaseProduct(productIdentifier: PRODUCT_1) { isSuccess, error in
- if isSuccess {
- print("购买成功")
- subscribeWaterMarkMainWindow?.endSheet(controller.window!)
- controller.window?.close()
- subscribeWaterMarkController = nil
- subscribeWaterMarkMainWindow = nil
-
- DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.1) {
- if NSApp.mainWindow != nil {
- let controller = KMSubscribeSuccessWindowController.show(window: NSApp.mainWindow!)
- controller.closeAction = { controller in
- controller.closeWindow()
- completion(true, false, false)
- }
- }
- }
- } else {
- print("购买失败")
- controller.purchasefailed()
- completion(false, false, false)
- }
-
- controller.waterMarkView.endLoading()
- }
- }
-
- subscribeWaterMarkWindowController.restoreAction = { controller in
- print("restore")
- controller.waterMarkView.beginLoading(backgroundColor: NSColor.black.withAlphaComponent(0.2))
- KMPurchaseManager.manager.restorePurchases { isSuccess in
- if isSuccess {
- print("restore成功")
- subscribeWaterMarkMainWindow?.endSheet(controller.window!)
- controller.window?.close()
- subscribeWaterMarkController = nil
- subscribeWaterMarkMainWindow = nil
-
- if NSApp.mainWindow != nil {
- let controller = KMSubscribeSuccessWindowController.show(window: NSApp.mainWindow!)
- controller.closeAction = { controller in
- controller.closeWindow()
- completion(true, false, false)
- }
- }
- } else {
- print("restore失败")
- controller.purchasefailed()
- completion(false, false, false)
- }
- controller.waterMarkView.endLoading()
- }
- }
-
- subscribeWaterMarkController = subscribeWaterMarkWindowController
- subscribeWaterMarkMainWindow = window
- return subscribeWaterMarkWindowController
- }
-
- func setup() {
- self.window?.contentView?.backgroundColor(NSColor(hex: "#FFFFFF"))
- self.waterMarkView.closeAction = { [weak self] view in
- guard let callBack = self?.closeAction else { return }
-
- callBack((self!))
- }
-
- self.waterMarkView.waterMarkExportAction = { [weak self] view in
- guard let callBack = self?.watermarkExportAction else { return }
-
- callBack((self!))
- }
-
- self.waterMarkView.subscribeAction = { [weak self] view in
- guard let callBack = self?.subscribeAction else { return }
-
- callBack((self!))
- }
-
- self.waterMarkView.restoreAction = { [weak self] view in
- guard let callBack = self?.restoreAction else { return }
-
- callBack((self!))
- }
- }
-
- func closeWindow() {
- if subscribeWaterMarkMainWindow != nil {
- subscribeWaterMarkMainWindow?.endSheet((subscribeWaterMarkController?.window)!)
- }
-
- if subscribeWaterMarkController != nil {
- subscribeWaterMarkController?.window?.close()
- }
- subscribeWaterMarkController = nil
- subscribeWaterMarkMainWindow = nil
- }
-
- func reloadData() {
- #if VERSION_FREE
- self.waterViewHeightConstrain.constant = 511
- #endif
-
- #if VERSION_DMG
- self.waterViewHeightConstrain.constant = 511 - 80
- #endif
- }
-
- static func isSampleController() -> KMSubscribeWaterMarkWindowController {
- for window in NSApp.windows {
- let controller = window.windowController
- if controller is KMSubscribeWaterMarkWindowController {
- return controller as! KMSubscribeWaterMarkWindowController
- }
- }
- return KMSubscribeWaterMarkWindowController()
- }
-
- func purchasefailed() {
- DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.1, execute: {
- let alert = NSAlert()
- alert.messageText = NSLocalizedString("购买失败", comment: "")
- alert.informativeText = NSLocalizedString("", comment: "")
- // alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
- alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
- var window = NSApp.mainWindow
- if NSApp.mainWindow?.sheets.first != nil {
- window = NSApp.mainWindow?.sheets.first
- }
- if window != nil {
- alert.beginSheetModal(for: window!) { result in
- if (result == .alertFirstButtonReturn) {
- } else if result == .alertSecondButtonReturn {
- return
- }
- }
- }
- })
- }
- }
|