// // KMPurchaseFirstTrialWindowController.swift // PDF Reader Pro Edition // // Created by zenghong on 11/22/23. // import Cocoa @objc class KMPurchaseFirstTrialWindowController: NSWindowController,NSTextFieldDelegate,NSTextViewDelegate { @IBOutlet weak var contentImageView: NSImageView! @IBOutlet weak var titleField: NSTextField! @IBOutlet weak var rView: NSView! @IBOutlet weak var trialTitleField: NSTextField! @IBOutlet weak var trialMessageField: NSTextField! @IBOutlet weak var trialFeaturesField: NSTextField! @IBOutlet weak var imageView1: NSImageView! @IBOutlet weak var imageView2: NSImageView! @IBOutlet weak var imageView3: NSImageView! @IBOutlet weak var imageView4: NSImageView! @IBOutlet weak var imageView5: NSImageView! @IBOutlet weak var imageView6: NSImageView! @IBOutlet weak var imageView7: NSImageView! @IBOutlet weak var features1Field: NSTextField! @IBOutlet weak var features2Field: NSTextField! @IBOutlet weak var features3Field: NSTextField! @IBOutlet weak var features4Field: NSTextField! @IBOutlet weak var features5Field: NSTextField! @IBOutlet weak var features6Field: NSTextField! @IBOutlet weak var nameTextFieldView: NSView! @IBOutlet weak var nameTextField: NSTextField! @IBOutlet weak var nameInvalidLabel: NSTextField! @IBOutlet weak var emailTextFieldView: NSView! @IBOutlet weak var emailTextField: NSTextField! @IBOutlet weak var emailInvalidLabel: NSTextField! @IBOutlet var bottomTextView: NSTextView! //CustomTextView! @IBOutlet weak var btnBox: NSBox! @IBOutlet weak var activateTrialNowBtn: KMButton! @IBOutlet weak var buyNowBox: NSBox! @IBOutlet weak var buyNowBtn: HyperLinkButton! @IBOutlet weak var enterLicenseBox: NSBox! @IBOutlet weak var enterLicenseBtn: HyperLinkButton! @objc var buttonActionBlock: ((_ firstTrialWinVC: KMPurchaseFirstTrialWindowController, _ btn: KMButton, _ email : String, _ name : String)->Void)? //MARK: 打开文件 @objc static func currentFirstTrialWC() -> KMPurchaseFirstTrialWindowController { if let controller: KMPurchaseFirstTrialWindowController = KMPurchaseFirstTrialWindowController.fetchSampleController() { return controller } else { let purchaseLimitWC: KMPurchaseFirstTrialWindowController = KMPurchaseFirstTrialWindowController.init(windowNibName: "KMPurchaseFirstTrialWindowController") return purchaseLimitWC } } static func fetchSampleController() -> KMPurchaseFirstTrialWindowController? { for window in NSApp.windows { let controller = window.windowController if controller is KMPurchaseFirstTrialWindowController { return controller as? KMPurchaseFirstTrialWindowController } } return nil } deinit { DistributedNotificationCenter.default.removeObserver(self) NotificationCenter.default.removeObserver(self) } override func windowDidLoad() { super.windowDidLoad() DistributedNotificationCenter.default.addObserver(self, selector: #selector(themeChanged(_:)), name: NSNotification.Name(rawValue:"AppleInterfaceThemeChangedNotification"), object: nil) NotificationCenter.default.addObserver(self, selector: #selector(windowDidBecomeVisible(_:)), name: NSWindow.didBecomeKeyNotification, object: nil) self.activateTrialNowBtn.tag = 10001 self.buyNowBtn.tag = 10002 self.enterLicenseBtn.tag = 10003 // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. self.emailTextField.delegate = self self.nameTextField.delegate = self self.nameTextFieldView.wantsLayer = true self.nameTextFieldView.layer?.masksToBounds = true self.nameTextFieldView.layer?.cornerRadius = 4.0 self.emailTextFieldView.wantsLayer = true self.emailTextFieldView.layer?.masksToBounds = true self.emailTextFieldView.layer?.cornerRadius = 4.0 self.bottomTextView.delegate = self; self.titleField.wantsLayer = true self.titleField.alphaValue = 0.8 self.imageView2.wantsLayer = true self.imageView2.alphaValue = 0.8 self.imageView3.wantsLayer = true self.imageView3.alphaValue = 0.8 self.imageView4.wantsLayer = true self.imageView4.alphaValue = 0.8 self.imageView5.wantsLayer = true self.imageView5.alphaValue = 0.8 self.imageView6.wantsLayer = true self.imageView6.alphaValue = 0.8 self.imageView7.wantsLayer = true self.imageView7.alphaValue = 0.8 self.features1Field.wantsLayer = true self.features1Field.alphaValue = 0.8 self.features2Field.wantsLayer = true self.features2Field.alphaValue = 0.8 self.features2Field.wantsLayer = true self.features2Field.alphaValue = 0.8 self.features2Field.wantsLayer = true self.features2Field.alphaValue = 0.8 self.features2Field.wantsLayer = true self.features2Field.alphaValue = 0.8 self.features2Field.wantsLayer = true self.features2Field.alphaValue = 0.8 self.reloadData() } @objc func reloadData () { self.titleField.stringValue = NSLocalizedString("Unlock All Advanced Features", comment: "") let customFont = NSFont(name: "Ubuntu Bold", size: 16) self.titleField.font = customFont self.trialTitleField.stringValue = "👋🏻 " + NSLocalizedString("7-day Free Trial", comment: "") self.trialTitleField.font = NSFont(name: "Ubuntu-Bold", size: 26) self.trialMessageField.stringValue = NSLocalizedString("PDF Reader Pro offers a 7-day free trial of the full functions.", comment: "") self.trialMessageField.font = NSFont(name: "SFProText-Regular", size: 14) self.trialFeaturesField.stringValue = NSLocalizedString("Enter your email to get free trial:", comment: "") self.trialFeaturesField.font = NSFont(name: "SFProText-Semibold", size: 16) self.features1Field.stringValue = NSLocalizedString("Edit PDF", comment: "") self.features2Field.stringValue = NSLocalizedString("Organize pages", comment: "") self.features3Field.stringValue = NSLocalizedString("Convert PDFs ", comment: "") self.features4Field.stringValue = NSLocalizedString("Digital signature", comment: "") self.features5Field.stringValue = NSLocalizedString("Create & fill form", comment: "") self.features6Field.stringValue = NSLocalizedString("OCR", comment: "") self.features1Field.font = NSFont(name: "SFProText-Regular", size: 13) self.features2Field.font = NSFont(name: "SFProText-Regular", size: 13) self.features3Field.font = NSFont(name: "SFProText-Regular", size: 13) self.features4Field.font = NSFont(name: "SFProText-Regular", size: 13) self.features5Field.font = NSFont(name: "SFProText-Regular", size: 13) self.features6Field.font = NSFont(name: "SFProText-Regular", size: 13) self.nameTextField.placeholderString = NSLocalizedString("User name", comment: "") self.emailTextField.placeholderString = NSLocalizedString("Email", comment: "") self.nameTextField.font = NSFont(name: "SFProText-Regular", size: 14) self.emailTextField.font = NSFont(name: "SFProText-Regular", size: 14) self.nameTextField.becomeFirstResponder() self.nameInvalidLabel.stringValue = NSLocalizedString("Please enter valid username", comment: "") self.emailInvalidLabel.stringValue = NSLocalizedString("Please enter valid email", comment: "") self.nameInvalidLabel.isHidden = true self.emailInvalidLabel.isHidden = true self.activateTrialNowBtn.title = NSLocalizedString("Apply", comment: "") self.activateTrialNowBtn.font = NSFont(name: "Ubuntu-Medium", size: 16) self.buyNowBtn.font = NSFont(name: "SFProText-semibold", size: 14) self.enterLicenseBtn.font = NSFont(name: "SFProText-semibold", size: 14) self.rView.wantsLayer = true self.rView.layer?.cornerRadius = 8 self.rView.layer?.masksToBounds = true self.btnBox.wantsLayer = true self.btnBox.layer?.cornerRadius = 24 self.updateViewColor() } //MARK: Noti @objc func themeChanged(_ notification: NSNotification) { DispatchQueue.main.async { self.reloadData() } } @objc func windowDidBecomeVisible(_ obj: Notification) { self.reloadData() } @objc func updateViewColor () { // self.trialMessageField.textColor = KMAppearance.kmColor_Layout_H0() // self.trialFeaturesField.textColor = KMAppearance.kmColor_Layout_H0() // self.features1Field.textColor = NSColor(red: 14.0/255.0, green: 17.0/255.0, blue: 20.0/255.0, alpha: 1) self.features2Field.textColor = NSColor(red: 14.0/255.0, green: 17.0/255.0, blue: 20.0/255.0, alpha: 1) self.features3Field.textColor = NSColor(red: 14.0/255.0, green: 17.0/255.0, blue: 20.0/255.0, alpha: 1) self.features4Field.textColor = NSColor(red: 14.0/255.0, green: 17.0/255.0, blue: 20.0/255.0, alpha: 1) self.features5Field.textColor = NSColor(red: 14.0/255.0, green: 17.0/255.0, blue: 20.0/255.0, alpha: 1) self.features6Field.textColor = NSColor(red: 14.0/255.0, green: 17.0/255.0, blue: 20.0/255.0, alpha: 1) self.nameTextFieldView.layer?.borderWidth = 1.0 if (KMAppearance.isDarkMode)(){ // self.nameTextFieldView.layer?.borderColor = KMAppearance.kmColor_Layout_W30().cgColor // } else { // self.nameTextFieldView.layer?.borderColor = NSColor(red: 0.0/255.0, green: 85.0/255.0, blue: 251.0/255.0, alpha: 1).cgColor } self.emailTextFieldView.layer?.borderWidth = 1.0 if (KMAppearance.isDarkMode)(){ // self.emailTextFieldView.layer?.borderColor = KMAppearance.kmColor_Layout_W30().cgColor // } else { // self.emailTextFieldView.layer?.borderColor = NSColor(red: 0.0/255.0, green: 85.0/255.0, blue: 251.0/255.0, alpha: 1).cgColor } if (KMAppearance.isDarkMode)() { // self.nameTextField.textColor = KMAppearance.kmColor_Layout_W0() // self.emailTextField.textColor = KMAppearance.kmColor_Layout_W0() // self.rView.layer?.backgroundColor = NSColor(red: 24.0/255.0, green: 22.0/255.0, blue: 31.0/255.0, alpha: 0.9).cgColor self.activateTrialNowBtn.title = NSLocalizedString("Free Trial", comment: "") self.btnBox.fillColor = NSColor(red: 181.0/255.0, green: 177.0/255.0, blue: 239.0/255.0, alpha: 1) self.btnBox.layer?.backgroundColor = NSColor(red: 181.0/255.0, green: 177.0/255.0, blue: 239.0/255.0, alpha: 1).cgColor self.activateTrialNowBtn.layer?.backgroundColor = NSColor(red: 181.0/255.0, green: 177.0/255.0, blue: 239.0/255.0, alpha: 1).cgColor self.activateTrialNowBtn.setTitleColor(NSColor(red: 7.0/255.0, green: 1.0/255.0, blue: 34.0/255.0, alpha: 1)) // self.activateTrialNowBtn.mouseMoveCallback = { (mouseEntered) in // if mouseEntered { // self.activateTrialNowBtn.layer?.backgroundColor = NSColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 1).cgColor // self.btnBox.fillColor = NSColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 1) // self.btnBox.layer?.backgroundColor = NSColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 1).cgColor // } else { // self.btnBox.fillColor = NSColor(red: 181.0/255.0, green: 177.0/255.0, blue: 239.0/255.0, alpha: 1) // self.btnBox.layer?.backgroundColor = NSColor(red: 181.0/255.0, green: 177.0/255.0, blue: 239.0/255.0, alpha: 1).cgColor // self.activateTrialNowBtn.layer?.backgroundColor = NSColor(red: 181.0/255.0, green: 177.0/255.0, blue: 239.0/255.0, alpha: 1).cgColor // } // } // self.activateTrialNowBtn.setBaseLineOffset(2) self.titleField.textColor = NSColor(red: 0.0/255.0, green: 33.0/255.0, blue: 67.0/255.0, alpha: 1) self.trialTitleField.textColor = NSColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 1) self.buyNowBtn.title = NSLocalizedString("Buy Now", comment: "") self.buyNowBtn.setTitleColor(NSColor(red: 181.0/255.0, green: 177.0/255.0, blue: 239.0/255.0, alpha: 1)) // self.buyNowBtn.mouseMoveCallback = { (mouseEntered) in // if mouseEntered { // self.buyNowBtn.setTitleColor(NSColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 1)) // } else { // self.buyNowBtn.setTitleColor(NSColor(red: 181.0/255.0, green: 177.0/255.0, blue: 239.0/255.0, alpha: 1)) // } // } self.enterLicenseBtn.title = NSLocalizedString("Enter License", comment: "") self.enterLicenseBtn.setTitleColor(NSColor(red: 181.0/255.0, green: 177.0/255.0, blue: 239.0/255.0, alpha: 1)) // self.enterLicenseBtn.mouseMoveCallback = { (mouseEntered) in // if mouseEntered { // self.enterLicenseBtn.setTitleColor(NSColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 1)) // } else { // self.enterLicenseBtn.setTitleColor(NSColor(red: 181.0/255.0, green: 177.0/255.0, blue: 239.0/255.0, alpha: 1)) // } // } self.nameTextFieldView.layer?.backgroundColor = NSColor(red: 57.0/255.0, green: 58.0/255.0, blue: 70.0/255.0, alpha: 1).cgColor self.emailTextFieldView.layer?.backgroundColor = NSColor(red: 57.0/255.0, green: 58.0/255.0, blue: 70.0/255.0, alpha: 1).cgColor let stringValue : String = NSLocalizedString("By applying for free trial, you confirm that you agree this Privacy Policy.", comment: "") let attributedString: NSMutableAttributedString = NSMutableAttributedString(string: NSLocalizedString("By applying for free trial, you confirm that you agree this Privacy Policy.", comment: "")) let privacyPolicy : String = NSLocalizedString("Privacy Policy.", comment: "") let allRange = (stringValue as NSString).range(of: stringValue) // attributedString.addAttributes([NSAttributedString.Key.foregroundColor : KMAppearance.kmColor_Layout_W70()], range: allRange) attributedString.addAttributes([NSAttributedString.Key.font :NSFont(name: "SFProText-Regular", size: 12.0) as Any], range: allRange) let urlString : String = "https://www.pdfreaderpro.com/privacy-policy" let encodedURLString : String = urlString.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)! let linkRange = (stringValue as NSString).range(of: privacyPolicy) attributedString.addAttribute(.link, value: NSURL(string: encodedURLString)!, range: linkRange) attributedString.addAttribute(.underlineStyle, value: NSUnderlineStyle.single.rawValue, range: linkRange) self.bottomTextView.linkTextAttributes = [ // NSAttributedString.Key.foregroundColor: KMAppearance.kmColor_Interactive_A0(), NSAttributedString.Key.underlineStyle: NSUnderlineStyle.single.rawValue ] self.bottomTextView.textStorage?.setAttributedString(attributedString) self.bottomTextView.isEditable = false // TextView不可编辑 self.bottomTextView.isSelectable = true // TextView可选择 self.bottomTextView.sizeToFit() } else { // self.nameTextField.textColor = KMAppearance.kmColor_Layout_H0() // self.emailTextField.textColor = KMAppearance.kmColor_Layout_H0() self.rView.layer?.backgroundColor = NSColor(red: 248.0/255.0, green: 249.0/255.0, blue: 255.0/255.0, alpha: 1).cgColor self.btnBox.fillColor = NSColor(red: 39.0/255.0, green: 60.0/255.0, blue: 98.0/255.0, alpha: 1) self.btnBox.layer?.backgroundColor = NSColor(red: 39.0/255.0, green: 60.0/255.0, blue: 98.0/255.0, alpha: 1).cgColor self.activateTrialNowBtn.layer?.backgroundColor = NSColor(red: 39.0/255.0, green: 60.0/255.0, blue: 98.0/255.0, alpha: 1).cgColor self.activateTrialNowBtn.setTitleColor(NSColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 1)) // self.activateTrialNowBtn.mouseMoveCallback = { (mouseEntered) in // if mouseEntered { // self.activateTrialNowBtn.layer?.backgroundColor = NSColor(red: 0.0/255.0, green: 207.0/255.0, blue: 133.0/255.0, alpha: 1).cgColor // self.btnBox.fillColor = NSColor(red: 0.0/255.0, green: 207.0/255.0, blue: 133.0/255.0, alpha: 1) // self.btnBox.layer?.backgroundColor = NSColor(red: 0.0/255.0, green: 207.0/255.0, blue: 133.0/255.0, alpha: 1).cgColor // } else { // self.activateTrialNowBtn.layer?.backgroundColor = NSColor(red: 39.0/255.0, green: 60.0/255.0, blue: 98.0/255.0, alpha: 1).cgColor // self.btnBox.fillColor = NSColor(red: 39.0/255.0, green: 60.0/255.0, blue: 98.0/255.0, alpha: 1) // self.btnBox.layer?.backgroundColor = NSColor(red: 39.0/255.0, green: 60.0/255.0, blue: 98.0/255.0, alpha: 1).cgColor // } // } self.titleField.textColor = NSColor(red: 0.0/255.0, green: 33.0/255.0, blue: 67.0/255.0, alpha: 1) self.trialTitleField.textColor = NSColor(red: 0.0/255.0, green: 33.0/255.0, blue: 67.0/255.0, alpha: 1) self.buyNowBtn.title = NSLocalizedString("Buy Now", comment: "") self.buyNowBtn.setTitleColor(NSColor(red: 39.0/255.0, green: 60.0/255.0, blue: 98.0/255.0, alpha: 1)) // self.buyNowBtn.mouseMoveCallback = { (mouseEntered) in // if mouseEntered { // self.buyNowBtn.setTitleColor(NSColor(red: 8.0/255.0, green: 124.0/255.0, blue: 255.0/255.0, alpha: 1)) // } else { // self.buyNowBtn.setTitleColor(NSColor(red: 39.0/255.0, green: 60.0/255.0, blue: 98.0/255.0, alpha: 1)) // } // } self.enterLicenseBtn.title = NSLocalizedString("Enter License", comment: "") self.enterLicenseBtn.setTitleColor(NSColor(red: 39.0/255.0, green: 60.0/255.0, blue: 98.0/255.0, alpha: 1)) // self.enterLicenseBtn.mouseMoveCallback = { (mouseEntered) in // if mouseEntered { // self.enterLicenseBtn.setTitleColor(NSColor(red: 8.0/255.0, green: 124.0/255.0, blue: 255.0/255.0, alpha: 1)) // } else { // self.enterLicenseBtn.setTitleColor(NSColor(red: 39.0/255.0, green: 60.0/255.0, blue: 98.0/255.0, alpha: 1)) // } // } self.nameTextFieldView.layer?.backgroundColor = NSColor(red: 235.0/255.0, green: 236.0/255.0, blue: 250.0/255.0, alpha: 1).cgColor self.emailTextFieldView.layer?.backgroundColor = NSColor(red: 235.0/255.0, green: 236.0/255.0, blue: 250.0/255.0, alpha: 1).cgColor let stringValue : String = NSLocalizedString("By applying for free trial, you confirm that you agree this Privacy Policy.", comment: "") let attributedString: NSMutableAttributedString = NSMutableAttributedString(string: NSLocalizedString("By applying for free trial, you confirm that you agree this Privacy Policy.", comment: "")) let privacyPolicy : String = NSLocalizedString("Privacy Policy.", comment: "") let urlString : String = "https://www.pdfreaderpro.com/privacy-policy" let encodedURLString : String = urlString.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)! let linkRange = (stringValue as NSString).range(of: privacyPolicy) attributedString.addAttribute(NSAttributedString.Key.link, value: NSURL(string: encodedURLString)!, range: linkRange) attributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: NSUnderlineStyle.single.rawValue, range: linkRange) let allRange = (stringValue as NSString).range(of: stringValue) // attributedString.addAttributes([NSAttributedString.Key.foregroundColor : KMAppearance.kmColor_Layout_H1()], range: allRange) attributedString.addAttributes([NSAttributedString.Key.font :NSFont(name: "SFProText-Regular", size: 12.0) as Any], range: allRange) // 设置悬停时链接文本颜色 // let hoverColor = NSColor.blue // attributedString.addAttribute(NSAttributedString.Key(rawValue: "NSMouseInRectAttribute"), value: hoverColor, range: linkRange) // 设置TextView的富文本属性 self.bottomTextView.linkTextAttributes = [ // NSAttributedString.Key.foregroundColor: KMAppearance.kmColor_Interactive_A0(), NSAttributedString.Key.underlineStyle: NSUnderlineStyle.single.rawValue ] self.bottomTextView.textStorage?.setAttributedString(attributedString) self.bottomTextView.isEditable = false // TextView不可编辑 self.bottomTextView.isSelectable = true // TextView可选择 self.bottomTextView.sizeToFit() } self.buyNowBtn.sizeToFit() self.enterLicenseBtn.sizeToFit() } func validateEmail(_ strEmail: String) -> Bool { let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}" let emailTest: NSPredicate = NSPredicate(format: "SELF MATCHES %@", emailRegex) return emailTest.evaluate(with: strEmail) } //MARK: Btn Action @IBAction func activateTrialNowAction(_ sender: KMButton) { guard let callBack = self.buttonActionBlock else { return } var isValidate: Bool = true if self.validateEmail(self.emailTextField.stringValue) == true { self.emailInvalidLabel.isHidden = true isValidate = true && isValidate } else { self.emailInvalidLabel.isHidden = false isValidate = false && isValidate } if self.nameTextField.stringValue.isEmpty == false { self.nameInvalidLabel.isHidden = true isValidate = true && isValidate } else { self.nameInvalidLabel.isHidden = false isValidate = false && isValidate } if isValidate == false { return } callBack(self,sender,self.emailTextField.stringValue,self.nameTextField.stringValue) // FMTrackEventManager.default().trackOnceEvent("PUW", withProperties: ["PUW_Btn":"Btn_PUW_ActivateTrialNow"]) } @IBAction func buyNowAction(_ sender: HyperLinkButton) { guard let callBack = self.buttonActionBlock else { return } callBack(self,sender,self.emailTextField.stringValue,self.nameTextField.stringValue) // FMTrackEventManager.default().trackOnceEvent("PUW", withProperties: ["PUW_Btn":"Btn_PUW_BuyNow"]) } @IBAction func enterLicenseAction(_ sender: HyperLinkButton) { guard let callBack = self.buttonActionBlock else { return } callBack(self,sender,self.emailTextField.stringValue,self.nameTextField.stringValue) // FMTrackEventManager.default().trackOnceEvent("PUW", withProperties: ["PUW_Btn":"Btn_PUW_Enter_The_License"]) } //MARK: NSTextFieldDelegate func controlTextDidChange(_ obj: Notification) { // if obj.object == nil { // return // } // let textField = obj.object as! NSTextField // if self.emailTextField.isEqual(textField) { // self.emailInvalidLabel.isHidden = true // // self.nameTextFieldView.layer?.borderWidth = 0.0 // if (KMAppearance.isDarkMode)(){ // self.nameTextFieldView.layer?.borderColor = KMAppearance.kmColor_Layout_W30().cgColor // } else { // self.nameTextFieldView.layer?.borderColor = NSColor(red: 0.0/255.0, green: 85.0/255.0, blue: 251.0/255.0, alpha: 1).cgColor // } // // self.emailTextFieldView.layer?.borderWidth = 1.0 // if (KMAppearance.isDarkMode)(){ // self.emailTextFieldView.layer?.borderColor = KMAppearance.kmColor_Layout_W30().cgColor // } else { // self.emailTextFieldView.layer?.borderColor = NSColor(red: 0.0/255.0, green: 85.0/255.0, blue: 251.0/255.0, alpha: 1).cgColor // } // // } // // if self.nameTextField.isEqual(textField) { // self.nameInvalidLabel.isHidden = true // // self.nameTextFieldView.layer?.borderWidth = 1.0 // if (KMAppearance.isDarkMode)(){ // self.nameTextFieldView.layer?.borderColor = KMAppearance.kmColor_Layout_W30().cgColor // } else { // self.nameTextFieldView.layer?.borderColor = NSColor(red: 0.0/255.0, green: 85.0/255.0, blue: 251.0/255.0, alpha: 1).cgColor // } // // self.emailTextFieldView.layer?.borderWidth = 0.0 // if (KMAppearance.isDarkMode)(){ // self.emailTextFieldView.layer?.borderColor = KMAppearance.kmColor_Layout_W30().cgColor // } else { // self.emailTextFieldView.layer?.borderColor = NSColor(red: 0.0/255.0, green: 85.0/255.0, blue: 251.0/255.0, alpha: 1).cgColor // } // } } func controlTextDidEndEditing(_ obj: Notification) { // let fied: NSTextField = obj.object as! NSTextField; // if fied.isEqual(self.emailTextField) { // if self.validateEmail(self.emailTextField.stringValue) == true { // self.emailInvalidLabel.isHidden = true // } else { // self.emailInvalidLabel.isHidden = false; // } // self.nameTextFieldView.layer?.borderWidth = 1.0 // if (KMAppearance.isDarkMode)(){ // self.nameTextFieldView.layer?.borderColor = KMAppearance.kmColor_Layout_W30().cgColor // } else { // self.nameTextFieldView.layer?.borderColor = NSColor(red: 0.0/255.0, green: 85.0/255.0, blue: 251.0/255.0, alpha: 1).cgColor // } // // self.emailTextFieldView.layer?.borderWidth = 0.0 // if (KMAppearance.isDarkMode)(){ // self.emailTextFieldView.layer?.borderColor = KMAppearance.kmColor_Layout_W30().cgColor // } else { // self.emailTextFieldView.layer?.borderColor = NSColor(red: 0.0/255.0, green: 85.0/255.0, blue: 251.0/255.0, alpha: 1).cgColor // } // } // if fied.isEqual(self.nameTextField) { // if self.nameTextField.stringValue.isEmpty == false { // self.nameInvalidLabel.isHidden = true // } else { // self.nameInvalidLabel.isHidden = false; // } // self.nameTextFieldView.layer?.borderWidth = 0.0 // if (KMAppearance.isDarkMode)(){ // self.nameTextFieldView.layer?.borderColor = KMAppearance.kmColor_Layout_W30().cgColor // } else { // self.nameTextFieldView.layer?.borderColor = NSColor(red: 0.0/255.0, green: 85.0/255.0, blue: 251.0/255.0, alpha: 1).cgColor // } // // self.emailTextFieldView.layer?.borderWidth = 1.0 // if (KMAppearance.isDarkMode)(){ // self.emailTextFieldView.layer?.borderColor = KMAppearance.kmColor_Layout_W30().cgColor // } else { // self.emailTextFieldView.layer?.borderColor = NSColor(red: 0.0/255.0, green: 85.0/255.0, blue: 251.0/255.0, alpha: 1).cgColor // } // } } func textView(_ textView: NSTextView, clickedOnLink link: Any, at charIndex: Int) -> Bool { guard let url = link as? URL else { return false } NSWorkspace.shared.open(url) return true } }