KMUserInfoViewController.swift 68 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224
  1. //
  2. // KMUserInfoViewController.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by wanjun on 2024/10/30.
  6. //
  7. import Cocoa
  8. import Combine
  9. class KMGradationBox: NSBox {
  10. override func draw(_ dirtyRect: NSRect){
  11. super.draw(dirtyRect)
  12. guard let context = NSGraphicsContext.current?.cgContext else { return }
  13. // 定义渐变颜色
  14. let colors = [NSColor(hex: "EBDABD").cgColor, NSColor(hex: "E5CCA8").cgColor]
  15. let gradient = CGGradient(colorsSpace: nil, colors: colors as CFArray, locations: nil)
  16. // 定义渐变起始和结束点
  17. let startPoint = CGPoint(x: bounds.minX, y: bounds.minY)
  18. let endPoint = CGPoint(x: bounds.maxX, y: bounds.maxY)
  19. // 绘制圆角矩形路径
  20. let roundedPath = NSBezierPath(roundedRect: bounds, xRadius: 4, yRadius: 4) // 你的圆角半径
  21. roundedPath.addClip() // 添加路径为剪切区域
  22. context.clip() // 使路径生效
  23. // 绘制渐变
  24. context.drawLinearGradient(gradient!, start: startPoint, end: endPoint, options: [])
  25. context.restoreGState()
  26. }
  27. }
  28. @objcMembers
  29. class KMUserInfoViewController: NSViewController {
  30. @IBOutlet weak var userImageView: NSImageView!
  31. @IBOutlet weak var emailLabel: NSTextField!
  32. @IBOutlet weak var productLabel: NSTextField!
  33. @IBOutlet weak var spliLineImageView: NSImageView!
  34. @IBOutlet weak var endDateLabel: NSTextField!
  35. @IBOutlet weak var membershipLabel: NSTextField!
  36. @IBOutlet weak var lockedImageView: NSImageView!
  37. @IBOutlet weak var lockedLabel: NSTextField!
  38. @IBOutlet var lockedLabelWidthffset:NSLayoutConstraint!
  39. @IBOutlet var lockedBox:KMGradationBox!
  40. @IBOutlet weak var centerBackgroud: NSImageView!
  41. @IBOutlet weak var rightsBox: NSBox!
  42. @IBOutlet var rightsView: NSView!
  43. @IBOutlet weak var number1Label: NSTextField!
  44. @IBOutlet weak var number1ImageView: NSImageView!
  45. @IBOutlet weak var number2Label: NSTextField!
  46. @IBOutlet weak var iconBox: NSBox!
  47. @IBOutlet var iconView1: NSView!
  48. @IBOutlet weak var icon1ImageView: NSImageView!
  49. @IBOutlet weak var icon2ImageView: NSImageView!
  50. @IBOutlet weak var icon3ImageView: NSImageView!
  51. @IBOutlet weak var icon4ImageView: NSImageView!
  52. @IBOutlet var iconView2: NSView!
  53. @IBOutlet weak var icon5ImageView: NSImageView!
  54. @IBOutlet weak var icon6ImageView: NSImageView!
  55. @IBOutlet weak var icon7ImageView: NSImageView!
  56. @IBOutlet var iconView3: NSView!
  57. @IBOutlet weak var icon8ImageView: NSImageView!
  58. @IBOutlet weak var icon9ImageView: NSImageView!
  59. @IBOutlet var iconView4: NSView!
  60. @IBOutlet weak var icon10ImageView: NSImageView!
  61. @IBOutlet weak var number3Label: NSTextField!
  62. @IBOutlet weak var number4Label: NSTextField!
  63. @IBOutlet weak var number4_1Label: NSTextField!
  64. @IBOutlet weak var number5Label: NSTextField!
  65. @IBOutlet weak var buyBox: NSBox!
  66. @IBOutlet var buyView1: NSView!
  67. @IBOutlet weak var buyNow1Box: KMBox!
  68. @IBOutlet weak var buyNow1ImageView: NSImageView!
  69. @IBOutlet weak var buyNow1Label: NSTextField!
  70. @IBOutlet weak var arrow1ImageView: NSImageView!
  71. @IBOutlet weak var buyNow2Box: KMBox!
  72. @IBOutlet weak var buyNow2ImageView: NSImageView!
  73. @IBOutlet weak var buyNow2Label: NSTextField!
  74. @IBOutlet weak var arrow2ImageView: NSImageView!
  75. @IBOutlet var buyNow1BoxLeftConst: NSLayoutConstraint!
  76. @IBOutlet weak var accountCenterBox: KMBox!
  77. @IBOutlet weak var accountImageView: NSImageView!
  78. @IBOutlet weak var accountLabel: NSTextField!
  79. @IBOutlet weak var signOutBox: KMBox!
  80. @IBOutlet weak var signOutImageView: NSImageView!
  81. @IBOutlet weak var signOutLabel: NSTextField!
  82. @IBOutlet weak var closeAccountBox: KMBox!
  83. @IBOutlet weak var closeAccountImageView: NSImageView!
  84. @IBOutlet weak var closeAccountLabel: NSTextField!
  85. private var viewModel = KMUserInfoVCModel()
  86. private var cancellables = Set<AnyCancellable>()
  87. deinit {
  88. KMPrint("KMUserInfoViewController deinit.")
  89. }
  90. @objc class func refreshTokenUserInfo(callback: ((Bool)->Void)?) -> Void {
  91. if KMMemberCenterManager.manager.isConnectionAvailable() == false {
  92. let alert = NSAlert()
  93. alert.alertStyle = .critical
  94. alert.messageText = NSLocalizedString("Error Information", comment: "")
  95. alert.informativeText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
  96. alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
  97. alert.runModal()
  98. callback?(false)
  99. return
  100. }
  101. KMUserInfoVCModel().refreshUserInfo(networkAlert: false) { success, msg in
  102. callback?(success)
  103. if success {
  104. KMMemberInfo.shared.isLogin = true
  105. NotificationCenter.default.post(name: NSNotification.Name(rawValue: "MemberCenterLoginSuccess"), object: nil)
  106. } else {
  107. KMMemberInfo.shared.isLogin = false
  108. }
  109. }
  110. }
  111. override func viewDidLoad() {
  112. super.viewDidLoad()
  113. // Do view setup here.
  114. self.view.wantsLayer = true
  115. self.view.layer?.backgroundColor = .white
  116. #if VERSION_FREE
  117. #if VERSION_DMG
  118. // DMG
  119. languageLocalized_DMG()
  120. initializeUI_DMG()
  121. #else
  122. // AppStore 免费版本
  123. languageLocalized()
  124. initializeUI()
  125. #endif
  126. #else
  127. // AppStore 付费版
  128. languageLocalized()
  129. initializeUI()
  130. #endif
  131. NotificationCenter.default.addObserver(self, selector: #selector(changeEffectiveAppearance), name: NSNotification.Name(rawValue: "kEffectiveAppearance"), object: nil)
  132. }
  133. @objc func changeEffectiveAppearance() {
  134. let isDarkModel = KMAdvertisementConfig.isDarkModel()
  135. if isDarkModel {
  136. self.view.appearance = NSAppearance(named: .darkAqua)
  137. } else {
  138. self.view.appearance = NSAppearance(named: .aqua)
  139. }
  140. #if VERSION_FREE
  141. #if VERSION_DMG
  142. // DMG
  143. initializeUI_DMG()
  144. #else
  145. // AppStore 免费版本
  146. initializeUI()
  147. #endif
  148. #else
  149. // AppStore 付费版
  150. initializeUI()
  151. #endif
  152. }
  153. // MARK: Private Method
  154. private func languageLocalized() -> Void {
  155. emailLabel.stringValue = KMMemberInfo.shared.userEmail
  156. productLabel.stringValue = NSLocalizedString("Personal Account", tableName: "MemberCenterLocalizable", comment: "")
  157. endDateLabel.stringValue = String(format: "%@ %@", KMMemberInfo.shared.vip_endDate,NSLocalizedString("expires", tableName: "MemberCenterLocalizable", comment: ""))
  158. membershipLabel.stringValue = NSLocalizedString("Membership Benefits", tableName: "MemberCenterLocalizable", comment: "")
  159. buyNow1Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
  160. accountLabel.stringValue = NSLocalizedString("Account Center", tableName: "MemberCenterLocalizable", comment: "")
  161. signOutLabel.stringValue = NSLocalizedString("Sign out", tableName: "MemberCenterLocalizable", comment: "")
  162. if KMMemberInfo.shared.validFlag == "5" {
  163. closeAccountLabel.stringValue = NSLocalizedString("Undo Remove Account", tableName: "MemberCenterLocalizable", comment: "")
  164. } else {
  165. closeAccountLabel.stringValue = NSLocalizedString("Remove Account", tableName: "MemberCenterLocalizable", comment: "")
  166. }
  167. if KMMemberInfo.shared.vip_maxDeviceNum == 1 {
  168. number4Label.stringValue = NSLocalizedString("device", tableName: "MemberCenterLocalizable", comment: "")
  169. } else {
  170. number4Label.stringValue = NSLocalizedString("devices", tableName: "MemberCenterLocalizable", comment: "")
  171. }
  172. number4_1Label.stringValue = String(KMMemberInfo.shared.vip_maxDeviceNum)
  173. number5Label.stringValue = NSLocalizedString("Devices Access", tableName: "MemberCenterLocalizable", comment: "")
  174. let platforms = viewModel.getPlatformsImages()
  175. if platforms.count == 4 {
  176. number3Label.stringValue = NSLocalizedString("All-platform Available", tableName: "MemberCenterLocalizable", comment: "")
  177. } else {
  178. number3Label.stringValue = NSLocalizedString("Platform", tableName: "MemberCenterLocalizable", comment: "")
  179. }
  180. if KMMemberInfo.shared.userScenarioType == .lite_type1 {
  181. buyNow1Label.stringValue = NSLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
  182. var isTrialPeriod = false
  183. #if !VERSION_DMG
  184. if IAPProductsManager.default().fourDevicesAllAccessPackNew12months_lite.isTrialPeriod == true {
  185. isTrialPeriod = true
  186. }
  187. #else
  188. #endif
  189. if isTrialPeriod {
  190. buyNow2Label.stringValue = NSLocalizedString("7-Day Free Trial", tableName: "MemberCenterLocalizable", comment: "")
  191. } else {
  192. buyNow2Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
  193. }
  194. } else if KMMemberInfo.shared.userScenarioType == .lite_type9 {
  195. if(KMMemberInfo.shared.vip_status == 2) {
  196. buyNow1Label.stringValue = NSLocalizedString("Renew now", tableName: "MemberCenterLocalizable", comment: "")
  197. } else if (KMMemberInfo.shared.vip_status == 4) {
  198. buyNow1Label.stringValue = NSLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
  199. } else {
  200. buyNow1Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
  201. }
  202. } else if KMMemberInfo.shared.userScenarioType == .lite_type3 {
  203. buyNow1Label.stringValue = NSLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
  204. } else if KMMemberInfo.shared.userScenarioType == .lite_type11 {
  205. buyNow1Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
  206. } else if KMMemberInfo.shared.userScenarioType == .lite_type5 ||
  207. KMMemberInfo.shared.userScenarioType == .pro_type1 ||
  208. KMMemberInfo.shared.userScenarioType == .pro_type3 ||
  209. KMMemberInfo.shared.userScenarioType == .pro_type4 {
  210. buyNow1Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
  211. } else if KMMemberInfo.shared.userScenarioType == .lite_type7 ||
  212. KMMemberInfo.shared.userScenarioType == .lite_type8 ||
  213. KMMemberInfo.shared.userScenarioType == .lite_type13 {
  214. buyNow1Label.stringValue = NSLocalizedString("Renew now", tableName: "MemberCenterLocalizable", comment: "")
  215. }
  216. }
  217. private func refreshEquity() -> Void {
  218. if KMMemberInfo.shared.userScenarioType == .lite_type1 {
  219. lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
  220. lockedImageView.image = NSImage(named: "LockedImage")
  221. number1Label.stringValue = NSLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
  222. number2Label.stringValue = NSLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
  223. number1ImageView.isHidden = true
  224. number1Label.isHidden = false
  225. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage3")
  226. number1Label.textColor = NSColor(hex: "0E1114")
  227. membershipLabel.textColor = NSColor(hex: "42464D")
  228. } else if KMMemberInfo.shared.userScenarioType == .lite_type2 {
  229. lockedLabel.stringValue = NSLocalizedString("Annual Plan", tableName: "MemberCenterLocalizable", comment: "")
  230. lockedImageView.image = NSImage(named: "UpgradeImage2")
  231. number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
  232. number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
  233. number1ImageView.isHidden = false
  234. number1Label.isHidden = true
  235. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
  236. } else if KMMemberInfo.shared.userScenarioType == .lite_type3 {
  237. lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
  238. lockedImageView.image = NSImage(named: "LockedImage")
  239. number1Label.stringValue = NSLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
  240. number2Label.stringValue = NSLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
  241. number1ImageView.isHidden = true
  242. number1Label.isHidden = false
  243. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage3")
  244. number1Label.textColor = NSColor(hex: "0E1114")
  245. } else if KMMemberInfo.shared.userScenarioType == .lite_type4 {
  246. lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
  247. lockedImageView.image = NSImage(named: "UpgradeImage2")
  248. number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
  249. if KMMemberInfo.shared.vip_levels == "2" {
  250. number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
  251. } else {
  252. number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
  253. }
  254. number1ImageView.isHidden = false
  255. number1Label.isHidden = true
  256. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
  257. } else if KMMemberInfo.shared.userScenarioType == .lite_type5 {
  258. lockedLabel.stringValue = NSLocalizedString("Permanent", tableName: "MemberCenterLocalizable", comment: "")
  259. lockedImageView.image = NSImage(named: "UpgradeImage2")
  260. number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
  261. if KMMemberInfo.shared.vip_levels == "2" {
  262. number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
  263. } else {
  264. number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
  265. }
  266. number1ImageView.isHidden = false
  267. number1Label.isHidden = true
  268. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage4")
  269. } else if KMMemberInfo.shared.userScenarioType == .lite_type6 {
  270. lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
  271. lockedImageView.image = NSImage(named: "UpgradeImage2")
  272. number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
  273. if KMMemberInfo.shared.vip_levels == "2" {
  274. number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
  275. } else {
  276. number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
  277. }
  278. number1ImageView.isHidden = false
  279. number1Label.isHidden = true
  280. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
  281. } else if KMMemberInfo.shared.userScenarioType == .lite_type7 {
  282. lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
  283. lockedImageView.image = NSImage(named: "LockedImage")
  284. number1Label.stringValue = NSLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
  285. number2Label.stringValue = NSLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
  286. number1ImageView.isHidden = true
  287. number1Label.isHidden = false
  288. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage3")
  289. number1Label.textColor = NSColor(hex: "0E1114")
  290. } else if KMMemberInfo.shared.userScenarioType == .lite_type8 {
  291. lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
  292. lockedImageView.image = NSImage(named: "UpgradeImage2")
  293. number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
  294. if KMMemberInfo.shared.vip_levels == "2" {
  295. number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
  296. } else {
  297. number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
  298. }
  299. number1ImageView.isHidden = false
  300. number1Label.isHidden = true
  301. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
  302. } else if KMMemberInfo.shared.userScenarioType == .lite_type9 ||
  303. KMMemberInfo.shared.userScenarioType == .pro_type1 {
  304. if(KMMemberInfo.shared.vip_paymentModel == "2" && KMMemberInfo.shared.vip_levels != "1") { //永久
  305. lockedLabel.stringValue = NSLocalizedString("Permanent", tableName: "MemberCenterLocalizable", comment: "")
  306. lockedImageView.image = NSImage(named: "UpgradeImage2")
  307. number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
  308. if KMMemberInfo.shared.vip_levels == "2" {
  309. number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
  310. } else {
  311. number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
  312. }
  313. number1ImageView.isHidden = false
  314. number1Label.isHidden = true
  315. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage4")
  316. } else { //免费+订阅过期+试用过期
  317. lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
  318. lockedImageView.image = NSImage(named: "LockedImage")
  319. number1Label.stringValue = NSLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
  320. number2Label.stringValue = NSLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
  321. number1ImageView.isHidden = true
  322. number1Label.isHidden = false
  323. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage3")
  324. number1Label.textColor = NSColor(hex: "0E1114")
  325. }
  326. } else if KMMemberInfo.shared.userScenarioType == .lite_type10 {
  327. lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
  328. lockedImageView.image = NSImage(named: "UpgradeImage2")
  329. number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
  330. number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
  331. number1ImageView.isHidden = false
  332. number1Label.isHidden = true
  333. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
  334. } else if KMMemberInfo.shared.userScenarioType == .lite_type11 {
  335. lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
  336. lockedImageView.image = NSImage(named: "LockedImage")
  337. number1Label.stringValue = NSLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
  338. number2Label.stringValue = NSLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
  339. number1ImageView.isHidden = true
  340. number1Label.isHidden = false
  341. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage3")
  342. number1Label.textColor = NSColor(hex: "0E1114")
  343. } else if KMMemberInfo.shared.userScenarioType == .lite_type12 {
  344. lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
  345. lockedImageView.image = NSImage(named: "UpgradeImage2")
  346. number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
  347. if(KMMemberInfo.shared.vip_levels == "2") {
  348. number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
  349. } else if((KMMemberInfo.shared.vip_levels == "3")) {
  350. number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
  351. }
  352. number1ImageView.isHidden = false
  353. number1Label.isHidden = true
  354. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
  355. } else if KMMemberInfo.shared.userScenarioType == .lite_type13 {
  356. lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
  357. lockedImageView.image = NSImage(named: "UpgradeImage2")
  358. number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
  359. if KMMemberInfo.shared.vip_levels == "2" {
  360. number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
  361. } else {
  362. number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
  363. }
  364. number1ImageView.isHidden = false
  365. number1Label.isHidden = true
  366. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
  367. } else if KMMemberInfo.shared.userScenarioType == .pro_type2 {
  368. lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
  369. lockedImageView.image = NSImage(named: "UpgradeImage2")
  370. number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
  371. if KMMemberInfo.shared.vip_levels == "2" {
  372. number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
  373. } else {
  374. number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
  375. }
  376. number1ImageView.isHidden = false
  377. number1Label.isHidden = true
  378. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
  379. number1Label.textColor = NSColor(named: "FFFFFF")
  380. } else if KMMemberInfo.shared.userScenarioType == .pro_type3 {
  381. lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
  382. lockedImageView.image = NSImage(named: "LockedImage")
  383. number1Label.stringValue = NSLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
  384. number2Label.stringValue = NSLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
  385. number1ImageView.isHidden = true
  386. number1Label.isHidden = false
  387. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage3")
  388. number1Label.textColor = NSColor(hex: "0E1114")
  389. } else if KMMemberInfo.shared.userScenarioType == .pro_type4 {
  390. lockedLabel.stringValue = NSLocalizedString("Permanent", tableName: "MemberCenterLocalizable", comment: "")
  391. lockedImageView.image = NSImage(named: "UpgradeImage2")
  392. number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
  393. if KMMemberInfo.shared.vip_levels == "2" {
  394. number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
  395. } else {
  396. number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
  397. }
  398. number1ImageView.isHidden = false
  399. number1Label.isHidden = true
  400. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage4")
  401. } else if KMMemberInfo.shared.userScenarioType == .pro_type5 {
  402. lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
  403. lockedImageView.image = NSImage(named: "UpgradeImage2")
  404. number1Label.stringValue = NSLocalizedString("", tableName: "MemberCenterLocalizable", comment: "")
  405. if KMMemberInfo.shared.vip_levels == "2" {
  406. number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
  407. } else {
  408. number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
  409. }
  410. number1ImageView.isHidden = false
  411. number1Label.isHidden = true
  412. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
  413. } else {
  414. lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
  415. lockedImageView.image = NSImage(named: "LockedImage")
  416. number1Label.stringValue = NSLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
  417. number2Label.stringValue = NSLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
  418. number1ImageView.isHidden = true
  419. number1Label.isHidden = false
  420. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage3")
  421. number1Label.textColor = NSColor(hex: "0E1114")
  422. }
  423. }
  424. private func initializeUI() -> Void {
  425. refreshEquity()
  426. self.view.wantsLayer = true
  427. let isDarkModel = KMAdvertisementConfig.isDarkModel()
  428. if isDarkModel {
  429. self.view.layer?.backgroundColor = NSColor(hex: "0E1114").cgColor;
  430. } else {
  431. self.view.layer?.backgroundColor = NSColor(hex: "FFFFFF").cgColor;
  432. }
  433. userImageView.image = NSImage(named: "UserProfilePicture_Size")
  434. emailLabel.textColor = NSColor(named: "0E1114")
  435. emailLabel.font = NSFont.SFMediumFontWithSize(14)
  436. productLabel.textColor = NSColor(named: "42464D_1")
  437. productLabel.font = NSFont.SFProTextRegularFont(12)
  438. endDateLabel.textColor = NSColor(named: "42464D_1")
  439. endDateLabel.font = NSFont.SFProTextRegularFont(12)
  440. spliLineImageView.isHidden = true
  441. endDateLabel.isHidden = true
  442. if KMMemberInfo.shared.vip_levels != "1" &&
  443. KMMemberInfo.shared.vip_paymentModel == "1" &&
  444. (KMMemberInfo.shared.vip_status == 1 || KMMemberInfo.shared.vip_status == 3) {
  445. // 订阅中、试用中,显示到期日期
  446. if KMMemberInfo.shared.vip_endDate.count > 0 {
  447. spliLineImageView.isHidden = false
  448. endDateLabel.isHidden = false
  449. }
  450. } else if KMMemberInfo.shared.vip_status == 2 {
  451. // 订阅到期,显示到期日期
  452. if KMMemberInfo.shared.vip_endDate.count > 0 {
  453. spliLineImageView.isHidden = false
  454. endDateLabel.isHidden = false
  455. endDateLabel.textColor = NSColor(named: "FA1E5D")
  456. }
  457. }
  458. membershipLabel.font = NSFont.SFMediumFontWithSize(16)
  459. lockedLabel.font = NSFont.SFMediumFontWithSize(12)
  460. rightsBox.contentView = rightsView
  461. number1Label.font = NSFont.SFMediumFontWithSize(24)
  462. number1ImageView.image = NSImage(named: "UpgradeImage")
  463. number2Label.font = NSFont.SFProTextRegularFont(12)
  464. number3Label.font = NSFont.SFProTextRegularFont(12)
  465. number5Label.font = NSFont.SFProTextRegularFont(12)
  466. buyNow1ImageView.image = NSImage(named: "ButtonBackgroundImage2")
  467. buyNow2ImageView.image = NSImage(named: "ButtonBackgroundImage2")
  468. buyNow1Label.textColor = NSColor(named: "FFFFFF")
  469. buyNow1Label.font = NSFont.SFProTextRegularFont(14)
  470. buyNow2Label.textColor = NSColor(named: "FFFFFF")
  471. buyNow2Label.font = NSFont.SFProTextRegularFont(14)
  472. accountCenterBox.borderColor = NSColor(named: "3091FF") ?? .blue
  473. accountCenterBox.fillColor = .clear
  474. accountLabel.textColor = NSColor(named: "3091FF")
  475. accountLabel.font = NSFont.SFProTextRegularFont(14)
  476. accountImageView.image = NSImage(named: "AccountCenterImage")
  477. signOutLabel.textColor = NSColor(named: "3091FF")
  478. signOutLabel.font = NSFont.SFProTextRegularFont(14)
  479. signOutImageView.image = NSImage(named: "SignOutImage")
  480. closeAccountLabel.textColor = NSColor(named: "3091FF")
  481. closeAccountLabel.font = NSFont.SFProTextRegularFont(14)
  482. closeAccountImageView.image = NSImage(named: "CloseAccountImage")
  483. var isNoOldSubscribed = false
  484. var isTrialPeriod = false
  485. #if VERSION_FREE
  486. #if !VERSION_DMG
  487. isNoOldSubscribed = IAPProductsManager.default().allAccessPack6months_lite.isSubscribed == false && IAPProductsManager.default().allAccessPack12months_lite.isSubscribed == false
  488. if IAPProductsManager.default().fourDevicesAllAccessPackNew12months_lite.isTrialPeriod == true {
  489. isTrialPeriod = true
  490. }
  491. #endif
  492. #endif
  493. if KMMemberInfo.shared.userScenarioType == .lite_type1 { //未试用
  494. buyBox.contentView = buyView1
  495. buyNow1ImageView.isHidden = false
  496. buyNow2ImageView.isHidden = false
  497. arrow1ImageView.image = NSImage(named: "BuyNewArrowImage1")
  498. arrow2ImageView.image = NSImage(named: "BuyNewArrowImage1")
  499. buyNow1Label.textColor = NSColor(hex: "FFFFFF")
  500. buyNow2Label.textColor = NSColor(hex: "FFFFFF")
  501. if isTrialPeriod == true {
  502. buyNow2Box.isHidden = true
  503. buyNow1BoxLeftConst.constant = (CGRectGetWidth(view.bounds) - CGRectGetWidth(buyNow1Box.frame))/2
  504. }
  505. } else if KMMemberInfo.shared.userScenarioType == .pro_type3 {
  506. buyBox.contentView = buyView1
  507. buyNow1ImageView.isHidden = false
  508. arrow1ImageView.image = NSImage(named: "BuyNewArrowImage1")
  509. buyNow1Label.textColor = NSColor(hex: "FFFFFF")
  510. buyNow2Box.isHidden = true
  511. buyNow1BoxLeftConst.constant = (CGRectGetWidth(view.bounds) - CGRectGetWidth(buyNow1Box.frame))/2
  512. } else if KMMemberInfo.shared.userScenarioType == .lite_type9 ||
  513. KMMemberInfo.shared.userScenarioType == .pro_type1 {
  514. buyBox.contentView = buyView1
  515. buyNow2Box.isHidden = true
  516. buyNow1BoxLeftConst.constant = (CGRectGetWidth(view.bounds) - CGRectGetWidth(buyNow1Box.frame))/2
  517. if((KMMemberInfo.shared.vip_paymentModel == "2" && KMMemberInfo.shared.vip_levels != "1")) { //永久
  518. arrow1ImageView.image = NSImage(named: "BuyNewArrowImage2")
  519. buyNow1Label.textColor = NSColor(hex: "42464D")
  520. } else {
  521. buyNow1ImageView.isHidden = false
  522. arrow1ImageView.image = NSImage(named: "BuyNewArrowImage1")
  523. buyNow1Label.textColor = NSColor(hex: "FFFFFF")
  524. }
  525. } else if KMMemberInfo.shared.userScenarioType == .lite_type11 { //试用过期
  526. if(!isNoOldSubscribed) {
  527. buyBox.contentView = buyView1
  528. buyNow1ImageView.isHidden = false
  529. arrow1ImageView.image = NSImage(named: "BuyNewArrowImage1")
  530. buyNow1Label.textColor = NSColor(hex: "FFFFFF")
  531. buyNow2Box.isHidden = true
  532. buyNow1BoxLeftConst.constant = (CGRectGetWidth(view.bounds) - CGRectGetWidth(buyNow1Box.frame))/2
  533. }
  534. } else if KMMemberInfo.shared.userScenarioType == .lite_type2 ||
  535. KMMemberInfo.shared.userScenarioType == .lite_type4 ||
  536. KMMemberInfo.shared.userScenarioType == .lite_type6 ||
  537. KMMemberInfo.shared.userScenarioType == .lite_type8 ||
  538. KMMemberInfo.shared.userScenarioType == .lite_type10 ||
  539. KMMemberInfo.shared.userScenarioType == .lite_type12 ||
  540. KMMemberInfo.shared.userScenarioType == .lite_type13 ||
  541. KMMemberInfo.shared.userScenarioType == .pro_type2 ||
  542. KMMemberInfo.shared.userScenarioType == .pro_type5 { //有订阅+试用中
  543. } else if KMMemberInfo.shared.userScenarioType == .lite_type7 ||
  544. KMMemberInfo.shared.userScenarioType == .lite_type3 { //试用过期+会员到期
  545. buyBox.contentView = buyView1
  546. arrow1ImageView.image = NSImage(named: "BuyNewArrowImage1")
  547. buyNow1Label.textColor = NSColor(hex: "FFFFFF")
  548. buyNow2Box.isHidden = true
  549. buyNow1BoxLeftConst.constant = (CGRectGetWidth(view.bounds) - CGRectGetWidth(buyNow1Box.frame))/2
  550. } else {
  551. buyBox.contentView = buyView1
  552. buyNow2Box.isHidden = true
  553. buyNow1BoxLeftConst.constant = (CGRectGetWidth(view.bounds) - CGRectGetWidth(buyNow1Box.frame))/2
  554. arrow1ImageView.image = NSImage(named: "BuyNewArrowImage2")
  555. buyNow1Label.textColor = NSColor(hex: "42464D")
  556. }
  557. if KMMemberInfo.shared.userScenarioType == .lite_type2 ||
  558. KMMemberInfo.shared.userScenarioType == .lite_type4 ||
  559. KMMemberInfo.shared.userScenarioType == .lite_type5 ||
  560. KMMemberInfo.shared.userScenarioType == .lite_type6 ||
  561. KMMemberInfo.shared.userScenarioType == .lite_type8 ||
  562. KMMemberInfo.shared.userScenarioType == .lite_type10 ||
  563. KMMemberInfo.shared.userScenarioType == .lite_type12 ||
  564. KMMemberInfo.shared.userScenarioType == .lite_type13 ||
  565. KMMemberInfo.shared.userScenarioType == .pro_type2 ||
  566. KMMemberInfo.shared.userScenarioType == .pro_type4 ||
  567. KMMemberInfo.shared.userScenarioType == .pro_type5 { //订阅或者买断
  568. rightsBox.fillColor = NSColor(named: "FFFFFF_0.2") ?? .white
  569. membershipLabel.textColor = NSColor(hex: "FFFFFF")
  570. buyNow1ImageView.isHidden = true
  571. buyNow1Box.fillColor = NSColor(hex: "FFFFFF")
  572. number2Label.textColor = NSColor(hex: "FFFFFF")
  573. number3Label.textColor = NSColor(hex: "FFFFFF")
  574. number4Label.textColor = NSColor(hex: "FFFFFF")
  575. number4_1Label.textColor = NSColor(hex: "FFFFFF")
  576. number5Label.textColor = NSColor(hex: "FFFFFF")
  577. membershipLabel.textColor = NSColor(hex: "FFFFFF")
  578. buyNow2Box.isHidden = true
  579. buyNow1BoxLeftConst.constant = (CGRectGetWidth(view.bounds) - CGRectGetWidth(buyNow1Box.frame))/2
  580. } else if(KMMemberInfo.shared.userScenarioType == .lite_type9 ||
  581. KMMemberInfo.shared.userScenarioType == .pro_type1) {
  582. if(KMMemberInfo.shared.vip_paymentModel == "2" && KMMemberInfo.shared.vip_levels != "1") { //永久
  583. rightsBox.fillColor = NSColor(named: "FFFFFF_0.2") ?? .white
  584. membershipLabel.textColor = NSColor(hex: "FFFFFF")
  585. buyNow1ImageView.isHidden = true
  586. buyNow1Box.fillColor = NSColor(hex: "FFFFFF")
  587. number2Label.textColor = NSColor(hex: "FFFFFF")
  588. number3Label.textColor = NSColor(hex: "FFFFFF")
  589. number4Label.textColor = NSColor(hex: "FFFFFF")
  590. number4_1Label.textColor = NSColor(hex: "FFFFFF")
  591. number5Label.textColor = NSColor(hex: "FFFFFF")
  592. membershipLabel.textColor = NSColor(hex: "FFFFFF")
  593. } else {
  594. rightsBox.fillColor = NSColor(named: "FFFFFF_0.2") ?? .white
  595. membershipLabel.textColor = NSColor(hex: "42464D")
  596. buyNow1ImageView.isHidden = false
  597. buyNow1Box.fillColor = NSColor.clear
  598. number2Label.textColor = NSColor(hex:"42464D")
  599. number3Label.textColor = NSColor(hex:"42464D")
  600. number4Label.textColor = NSColor(hex: "42464D")
  601. number4_1Label.textColor = NSColor(hex: "42464D")
  602. number5Label.textColor = NSColor(hex: "42464D")
  603. membershipLabel.textColor = NSColor(hex: "42464D")
  604. }
  605. } else {
  606. rightsBox.fillColor = NSColor(named: "FFFFFF_0.2") ?? .white
  607. membershipLabel.textColor = NSColor(hex: "42464D")
  608. buyNow1ImageView.isHidden = false
  609. buyNow1Box.fillColor = NSColor.clear
  610. number2Label.textColor = NSColor(hex:"42464D")
  611. number3Label.textColor = NSColor(hex:"42464D")
  612. number4Label.textColor = NSColor(hex: "42464D")
  613. number4_1Label.textColor = NSColor(hex: "42464D")
  614. number5Label.textColor = NSColor(hex: "42464D")
  615. membershipLabel.textColor = NSColor(hex: "42464D")
  616. }
  617. lockedLabel.textColor = NSColor(hex: "42464D")
  618. let platforms = viewModel.getPlatformsImages()
  619. if platforms.count == 4 {
  620. iconBox.contentView = iconView1
  621. icon1ImageView.image = platforms[0]
  622. icon2ImageView.image = platforms[1]
  623. icon3ImageView.image = platforms[2]
  624. icon4ImageView.image = platforms[3]
  625. } else if platforms.count == 3 {
  626. iconBox.contentView = iconView2
  627. icon5ImageView.image = platforms[0]
  628. icon6ImageView.image = platforms[1]
  629. icon7ImageView.image = platforms[2]
  630. } else if platforms.count == 2 {
  631. iconBox.contentView = iconView3
  632. icon8ImageView.image = platforms[0]
  633. icon9ImageView.image = platforms[1]
  634. } else if platforms.count == 1 {
  635. iconBox.contentView = iconView4
  636. icon10ImageView.image = platforms[0]
  637. }
  638. buyNow1Box.moveCallback = { [weak self](mouseEntered: Bool, mouseBox: KMBox) -> Void in
  639. guard let self = self else { return }
  640. if KMMemberInfo.shared.userScenarioType == .lite_type2 ||
  641. KMMemberInfo.shared.userScenarioType == .lite_type4 ||
  642. KMMemberInfo.shared.userScenarioType == .lite_type5 ||
  643. KMMemberInfo.shared.userScenarioType == .lite_type6 ||
  644. KMMemberInfo.shared.userScenarioType == .lite_type8 ||
  645. KMMemberInfo.shared.userScenarioType == .lite_type10 ||
  646. KMMemberInfo.shared.userScenarioType == .lite_type12 ||
  647. KMMemberInfo.shared.userScenarioType == .lite_type13 ||
  648. KMMemberInfo.shared.userScenarioType == .pro_type2 ||
  649. KMMemberInfo.shared.userScenarioType == .pro_type4 ||
  650. KMMemberInfo.shared.userScenarioType == .pro_type5 { //订阅或者买断
  651. } else {
  652. if mouseEntered {
  653. self.buyNow1ImageView.image = NSImage(named: "ButtonBackgroundImage2_Hov")
  654. } else {
  655. self.buyNow1ImageView.image = NSImage(named: "ButtonBackgroundImage2")
  656. }
  657. }
  658. }
  659. buyNow1Box.downCallback = { [weak self](downEntered: Bool, mouseBox: KMBox, event) -> Void in
  660. guard let self = self else { return }
  661. if KMMemberInfo.shared.userScenarioType == .lite_type1 {
  662. // 免费版,免费账号跳转购买比较表
  663. self.viewModel.skipCompare(.lite_Base)
  664. } else {
  665. // 其它情况根据账号状态跳转不同比较表
  666. KMMemberInfo.shared.productCompareShow()
  667. }
  668. }
  669. buyNow2Box.moveCallback = { [weak self](mouseEntered: Bool, mouseBox: KMBox) -> Void in
  670. guard let self = self else { return }
  671. if mouseEntered {
  672. self.buyNow2ImageView.image = NSImage(named: "ButtonBackgroundImage2_Hov")
  673. } else {
  674. self.buyNow2ImageView.image = NSImage(named: "ButtonBackgroundImage2")
  675. }
  676. }
  677. buyNow2Box.downCallback = { [weak self](downEntered: Bool, mouseBox: KMBox, event) -> Void in
  678. guard let self = self else { return }
  679. if KMMemberInfo.shared.userScenarioType == .lite_type1 {
  680. // 免费版,免费账号跳转试用比较表
  681. self.viewModel.skipCompare(.trial)
  682. }
  683. }
  684. accountCenterBox.moveCallback = { [weak self](mouseEntered: Bool, mouseBox: KMBox) -> Void in
  685. guard let self = self else { return }
  686. if mouseEntered {
  687. self.accountCenterBox.fillColor = NSColor(named: "F5FAFF") ?? .white
  688. self.accountLabel.textColor = NSColor(named: "3091FF")
  689. self.accountImageView.image = NSImage(named: "AccountCenterImage_Hov")
  690. } else {
  691. self.accountCenterBox.fillColor = .clear
  692. self.accountLabel.textColor = NSColor(named: "3091FF")
  693. self.accountImageView.image = NSImage(named: "AccountCenterImage")
  694. }
  695. }
  696. accountCenterBox.downCallback = { [weak self](downEntered: Bool, mouseBox: KMBox, event) -> Void in
  697. guard let self = self else { return }
  698. self.viewModel.skipAccountCenter()
  699. }
  700. signOutBox.moveCallback = { [weak self](mouseEntered: Bool, mouseBox: KMBox) -> Void in
  701. guard let self = self else { return }
  702. if mouseEntered {
  703. self.signOutLabel.textColor = NSColor(named: "3091FF")
  704. self.signOutImageView.image = NSImage(named: "SignOutImage_Hov")
  705. } else {
  706. self.signOutLabel.textColor = NSColor(named: "3091FF")
  707. self.signOutImageView.image = NSImage(named: "SignOutImage")
  708. }
  709. }
  710. signOutBox.downCallback = { [weak self](downEntered: Bool, mouseBox: KMBox, event) -> Void in
  711. guard let self = self else { return }
  712. self.viewModel.signOutAction()
  713. }
  714. closeAccountBox.moveCallback = { [weak self](mouseEntered: Bool, mouseBox: KMBox) -> Void in
  715. guard let self = self else { return }
  716. if mouseEntered {
  717. self.closeAccountLabel.textColor = NSColor(named: "3091FF")
  718. self.closeAccountImageView.image = NSImage(named: "CloseAccountImage_hover")
  719. } else {
  720. self.closeAccountLabel.textColor = NSColor(named: "3091FF")
  721. self.closeAccountImageView.image = NSImage(named: "CloseAccountImage")
  722. }
  723. }
  724. closeAccountBox.downCallback = { [weak self](downEntered: Bool, mouseBox: KMBox, event) -> Void in
  725. guard let self = self else { return }
  726. self.viewModel.closeAccountAction()
  727. }
  728. if isTrialPeriod == false { //没有试用过,才能显示,不然就算远程支持,功能上也不支持远程控制
  729. //远程控制
  730. if let userViewInfoContent = KMAdvertisementManager.manager.info.userViewInfoContent {
  731. buyNow1BoxLeftConst.constant = 0
  732. buyNow2Box.isHidden = false
  733. if userViewInfoContent.content?.isEmpty == false {
  734. buyNow2Box.isHidden = true
  735. buyNow1BoxLeftConst.constant = (CGRectGetWidth(view.bounds) - CGRectGetWidth(buyNow1Box.frame))/2
  736. }
  737. }
  738. }
  739. }
  740. // MARK: Action Method
  741. private func languageLocalized_DMG() -> Void {
  742. emailLabel.stringValue = KMMemberInfo.shared.userEmail
  743. productLabel.stringValue = NSLocalizedString("Personal Account", tableName: "MemberCenterLocalizable", comment: "")
  744. endDateLabel.stringValue = String(format: "%@ %@", KMMemberInfo.shared.vip_endDate,NSLocalizedString("expires", tableName: "MemberCenterLocalizable", comment: ""))
  745. membershipLabel.stringValue = NSLocalizedString("Membership Benefits", tableName: "MemberCenterLocalizable", comment: "")
  746. buyNow1Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
  747. accountLabel.stringValue = NSLocalizedString("Account Center", tableName: "MemberCenterLocalizable", comment: "")
  748. signOutLabel.stringValue = NSLocalizedString("Sign out", tableName: "MemberCenterLocalizable", comment: "")
  749. if KMMemberInfo.shared.validFlag == "5" {
  750. closeAccountLabel.stringValue = NSLocalizedString("Undo Remove Account", tableName: "MemberCenterLocalizable", comment: "")
  751. } else {
  752. closeAccountLabel.stringValue = NSLocalizedString("Remove Account", tableName: "MemberCenterLocalizable", comment: "")
  753. }
  754. if KMMemberInfo.shared.vip_maxDeviceNum == 1 {
  755. number4Label.stringValue = NSLocalizedString("device", tableName: "MemberCenterLocalizable", comment: "")
  756. } else {
  757. number4Label.stringValue = NSLocalizedString("devices", tableName: "MemberCenterLocalizable", comment: "")
  758. }
  759. number4_1Label.stringValue = String(KMMemberInfo.shared.vip_maxDeviceNum)
  760. number5Label.stringValue = NSLocalizedString("Devices Access", tableName: "MemberCenterLocalizable", comment: "")
  761. let platforms = viewModel.getPlatformsImages()
  762. if platforms.count == 4 {
  763. number3Label.stringValue = NSLocalizedString("All-platform Available", tableName: "MemberCenterLocalizable", comment: "")
  764. } else {
  765. number3Label.stringValue = NSLocalizedString("Platform", tableName: "MemberCenterLocalizable", comment: "")
  766. }
  767. if KMMemberInfo.shared.userScenarioType == .dmg_type5 ||
  768. KMMemberInfo.shared.userScenarioType == .dmg_type6 ||
  769. KMMemberInfo.shared.userScenarioType == .dmg_type7 ||
  770. KMMemberInfo.shared.userScenarioType == .dmg_type28 ||
  771. KMMemberInfo.shared.userScenarioType == .dmg_type29 ||
  772. KMMemberInfo.shared.userScenarioType == .dmg_type30 ||
  773. KMMemberInfo.shared.userScenarioType == .dmg_type43 ||
  774. KMMemberInfo.shared.userScenarioType == .dmg_type44 ||
  775. KMMemberInfo.shared.userScenarioType == .dmg_type45 { // 买断
  776. lockedLabel.stringValue = NSLocalizedString("Permanent", tableName: "MemberCenterLocalizable", comment: "")
  777. number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
  778. buyNow1Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
  779. } else if KMMemberInfo.shared.userScenarioType == .dmg_type8 ||
  780. KMMemberInfo.shared.userScenarioType == .dmg_type9 ||
  781. KMMemberInfo.shared.userScenarioType == .dmg_type10 ||
  782. KMMemberInfo.shared.userScenarioType == .dmg_type12 ||
  783. KMMemberInfo.shared.userScenarioType == .dmg_type13 ||
  784. KMMemberInfo.shared.userScenarioType == .dmg_type14 ||
  785. KMMemberInfo.shared.userScenarioType == .dmg_type15 ||
  786. KMMemberInfo.shared.userScenarioType == .dmg_type16 ||
  787. KMMemberInfo.shared.userScenarioType == .dmg_type17 ||
  788. KMMemberInfo.shared.userScenarioType == .dmg_type20 ||
  789. KMMemberInfo.shared.userScenarioType == .dmg_type21 ||
  790. KMMemberInfo.shared.userScenarioType == .dmg_type23 ||
  791. KMMemberInfo.shared.userScenarioType == .dmg_type24 ||
  792. KMMemberInfo.shared.userScenarioType == .dmg_type25 ||
  793. KMMemberInfo.shared.userScenarioType == .dmg_type26 ||
  794. KMMemberInfo.shared.userScenarioType == .dmg_type27 ||
  795. KMMemberInfo.shared.userScenarioType == .dmg_type31 ||
  796. KMMemberInfo.shared.userScenarioType == .dmg_type32 ||
  797. KMMemberInfo.shared.userScenarioType == .dmg_type35 ||
  798. KMMemberInfo.shared.userScenarioType == .dmg_type36 ||
  799. KMMemberInfo.shared.userScenarioType == .dmg_type38 ||
  800. KMMemberInfo.shared.userScenarioType == .dmg_type39 ||
  801. KMMemberInfo.shared.userScenarioType == .dmg_type40 ||
  802. KMMemberInfo.shared.userScenarioType == .dmg_type41 ||
  803. KMMemberInfo.shared.userScenarioType == .dmg_type42 ||
  804. KMMemberInfo.shared.userScenarioType == .dmg_type46 ||
  805. KMMemberInfo.shared.userScenarioType == .dmg_type47 { // 订阅
  806. lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
  807. if KMMemberInfo.shared.userScenarioType == .dmg_type8 ||
  808. KMMemberInfo.shared.userScenarioType == .dmg_type9 ||
  809. KMMemberInfo.shared.userScenarioType == .dmg_type20 ||
  810. KMMemberInfo.shared.userScenarioType == .dmg_type21 ||
  811. KMMemberInfo.shared.userScenarioType == .dmg_type35 ||
  812. KMMemberInfo.shared.userScenarioType == .dmg_type36 {
  813. number2Label.stringValue = NSLocalizedString("Standard Version", tableName: "MemberCenterLocalizable", comment: "")
  814. } else {
  815. number2Label.stringValue = NSLocalizedString("Advanced Version", tableName: "MemberCenterLocalizable", comment: "")
  816. }
  817. } else { // 免费 & 到期
  818. if KMMemberInfo.shared.userScenarioType == .dmg_type4 ||
  819. KMMemberInfo.shared.userScenarioType == .dmg_type11 ||
  820. KMMemberInfo.shared.userScenarioType == .dmg_type18 ||
  821. KMMemberInfo.shared.userScenarioType == .dmg_type19 ||
  822. KMMemberInfo.shared.userScenarioType == .dmg_type22 ||
  823. KMMemberInfo.shared.userScenarioType == .dmg_type33 ||
  824. KMMemberInfo.shared.userScenarioType == .dmg_type34 ||
  825. KMMemberInfo.shared.userScenarioType == .dmg_type37 ||
  826. KMMemberInfo.shared.userScenarioType == .dmg_type48 {
  827. lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
  828. number1Label.stringValue = NSLocalizedString("150+", tableName: "MemberCenterLocalizable", comment: "")
  829. number2Label.stringValue = NSLocalizedString("Benefits of Functions", tableName: "MemberCenterLocalizable", comment: "")
  830. if KMMemberInfo.shared.userScenarioType == .dmg_type11 ||
  831. KMMemberInfo.shared.userScenarioType == .dmg_type18 ||
  832. KMMemberInfo.shared.userScenarioType == .dmg_type22 ||
  833. KMMemberInfo.shared.userScenarioType == .dmg_type33 ||
  834. KMMemberInfo.shared.userScenarioType == .dmg_type37 ||
  835. KMMemberInfo.shared.userScenarioType == .dmg_type48 { // 到期
  836. buyNow1Label.stringValue = NSLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
  837. } else { // 免费
  838. }
  839. if KMMemberInfo.shared.userScenarioType == .dmg_type4 ||
  840. KMMemberInfo.shared.userScenarioType == .dmg_type19 ||
  841. KMMemberInfo.shared.userScenarioType == .dmg_type34 {
  842. buyNow1Label.stringValue = NSLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
  843. buyNow2Label.stringValue = NSLocalizedString("7-Day Free Trial", tableName: "MemberCenterLocalizable", comment: "")
  844. } else if KMMemberInfo.shared.userScenarioType == .dmg_type11 ||
  845. KMMemberInfo.shared.userScenarioType == .dmg_type22 ||
  846. KMMemberInfo.shared.userScenarioType == .dmg_type37 {
  847. buyNow1Label.stringValue = NSLocalizedString("Buy Now", tableName: "MemberCenterLocalizable", comment: "")
  848. } else if KMMemberInfo.shared.userScenarioType == .dmg_type18 ||
  849. KMMemberInfo.shared.userScenarioType == .dmg_type33 ||
  850. KMMemberInfo.shared.userScenarioType == .dmg_type48 {
  851. buyNow1Label.stringValue = NSLocalizedString("Renew now", tableName: "MemberCenterLocalizable", comment: "")
  852. }
  853. }
  854. }
  855. }
  856. private func initializeUI_DMG() -> Void {
  857. self.view.wantsLayer = true
  858. let isDarkModel = KMAdvertisementConfig.isDarkModel()
  859. if isDarkModel {
  860. self.view.layer?.backgroundColor = NSColor(hex: "0E1114").cgColor;
  861. } else {
  862. self.view.layer?.backgroundColor = NSColor(hex: "FFFFFF").cgColor;
  863. }
  864. rightsBox.contentView = rightsView
  865. buyBox.contentView = buyView1
  866. userImageView.image = NSImage(named: "UserProfilePicture_Size")
  867. emailLabel.textColor = NSColor(named: "0E1114")
  868. emailLabel.font = NSFont.SFMediumFontWithSize(14)
  869. productLabel.textColor = NSColor(named: "42464D_1")
  870. productLabel.font = NSFont.SFProTextRegularFont(12)
  871. endDateLabel.textColor = NSColor(named: "42464D_1")
  872. endDateLabel.font = NSFont.SFProTextRegularFont(12)
  873. spliLineImageView.isHidden = true
  874. endDateLabel.isHidden = true
  875. number1Label.font = NSFont.SFMediumFontWithSize(24)
  876. number1Label.textColor = NSColor(hex: "0E1114")
  877. number2Label.font = NSFont.SFProTextRegularFont(12)
  878. number3Label.font = NSFont.SFProTextRegularFont(12)
  879. number5Label.font = NSFont.SFProTextRegularFont(12)
  880. membershipLabel.font = NSFont.SFMediumFontWithSize(16)
  881. lockedLabel.font = NSFont.SFMediumFontWithSize(12)
  882. lockedLabel.textColor = NSColor(hex: "42464D")
  883. accountCenterBox.borderColor = NSColor(named: "3091FF") ?? .blue
  884. accountCenterBox.fillColor = .clear
  885. accountLabel.textColor = NSColor(named: "3091FF")
  886. accountLabel.font = NSFont.SFProTextRegularFont(14)
  887. accountImageView.image = NSImage(named: "AccountCenterImage")
  888. signOutLabel.textColor = NSColor(named: "3091FF")
  889. signOutLabel.font = NSFont.SFProTextRegularFont(14)
  890. signOutImageView.image = NSImage(named: "SignOutImage")
  891. closeAccountLabel.textColor = NSColor(named: "3091FF")
  892. closeAccountLabel.font = NSFont.SFProTextRegularFont(14)
  893. closeAccountImageView.image = NSImage(named: "CloseAccountImage")
  894. buyNow1Label.font = NSFont.SFProTextRegularFont(14)
  895. buyNow2Label.font = NSFont.SFProTextRegularFont(14)
  896. let platforms = viewModel.getPlatformsImages()
  897. if platforms.count == 4 {
  898. iconBox.contentView = iconView1
  899. icon1ImageView.image = platforms[0]
  900. icon2ImageView.image = platforms[1]
  901. icon3ImageView.image = platforms[2]
  902. icon4ImageView.image = platforms[3]
  903. } else if platforms.count == 3 {
  904. iconBox.contentView = iconView2
  905. icon5ImageView.image = platforms[0]
  906. icon6ImageView.image = platforms[1]
  907. icon7ImageView.image = platforms[2]
  908. } else if platforms.count == 2 {
  909. iconBox.contentView = iconView3
  910. icon8ImageView.image = platforms[0]
  911. icon9ImageView.image = platforms[1]
  912. } else if platforms.count == 1 {
  913. iconBox.contentView = iconView4
  914. icon10ImageView.image = platforms[0]
  915. }
  916. buyNow1ImageView.image = NSImage(named: "ButtonBackgroundImage2")
  917. buyNow2ImageView.image = NSImage(named: "ButtonBackgroundImage2")
  918. if KMMemberInfo.shared.userScenarioType == .dmg_type5 ||
  919. KMMemberInfo.shared.userScenarioType == .dmg_type6 ||
  920. KMMemberInfo.shared.userScenarioType == .dmg_type7 ||
  921. KMMemberInfo.shared.userScenarioType == .dmg_type28 ||
  922. KMMemberInfo.shared.userScenarioType == .dmg_type29 ||
  923. KMMemberInfo.shared.userScenarioType == .dmg_type30 ||
  924. KMMemberInfo.shared.userScenarioType == .dmg_type43 ||
  925. KMMemberInfo.shared.userScenarioType == .dmg_type44 ||
  926. KMMemberInfo.shared.userScenarioType == .dmg_type45 { // 买断
  927. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage4")
  928. lockedImageView.image = NSImage(named: "UpgradeImage2")
  929. number1ImageView.isHidden = false
  930. number1ImageView.image = NSImage(named: "UpgradeImage")
  931. number1Label.isHidden = true
  932. number2Label.textColor = NSColor(hex: "FFFFFF")
  933. number3Label.textColor = NSColor(hex: "FFFFFF")
  934. number4Label.textColor = NSColor(hex: "FFFFFF")
  935. number4_1Label.textColor = NSColor(hex: "FFFFFF")
  936. number5Label.textColor = NSColor(hex: "FFFFFF")
  937. membershipLabel.textColor = NSColor(hex: "FFFFFF")
  938. rightsBox.fillColor = NSColor(named: "FFFFFF_0.2") ?? .white
  939. buyNow1Box.fillColor = NSColor(hex: "FFFFFF")
  940. buyNow1ImageView.isHidden = true
  941. buyNow2Box.isHidden = true
  942. buyNow1BoxLeftConst.constant = (CGRectGetWidth(view.bounds) - CGRectGetWidth(buyNow1Box.frame))/2
  943. arrow1ImageView.image = NSImage(named: "BuyNewArrowImage2")
  944. buyNow1Label.textColor = NSColor(hex: "42464D")
  945. } else if KMMemberInfo.shared.userScenarioType == .dmg_type8 ||
  946. KMMemberInfo.shared.userScenarioType == .dmg_type9 ||
  947. KMMemberInfo.shared.userScenarioType == .dmg_type10 ||
  948. KMMemberInfo.shared.userScenarioType == .dmg_type12 ||
  949. KMMemberInfo.shared.userScenarioType == .dmg_type13 ||
  950. KMMemberInfo.shared.userScenarioType == .dmg_type14 ||
  951. KMMemberInfo.shared.userScenarioType == .dmg_type15 ||
  952. KMMemberInfo.shared.userScenarioType == .dmg_type16 ||
  953. KMMemberInfo.shared.userScenarioType == .dmg_type17 ||
  954. KMMemberInfo.shared.userScenarioType == .dmg_type20 ||
  955. KMMemberInfo.shared.userScenarioType == .dmg_type21 ||
  956. KMMemberInfo.shared.userScenarioType == .dmg_type23 ||
  957. KMMemberInfo.shared.userScenarioType == .dmg_type24 ||
  958. KMMemberInfo.shared.userScenarioType == .dmg_type25 ||
  959. KMMemberInfo.shared.userScenarioType == .dmg_type26 ||
  960. KMMemberInfo.shared.userScenarioType == .dmg_type27 ||
  961. KMMemberInfo.shared.userScenarioType == .dmg_type31 ||
  962. KMMemberInfo.shared.userScenarioType == .dmg_type32 ||
  963. KMMemberInfo.shared.userScenarioType == .dmg_type35 ||
  964. KMMemberInfo.shared.userScenarioType == .dmg_type36 ||
  965. KMMemberInfo.shared.userScenarioType == .dmg_type38 ||
  966. KMMemberInfo.shared.userScenarioType == .dmg_type39 ||
  967. KMMemberInfo.shared.userScenarioType == .dmg_type40 ||
  968. KMMemberInfo.shared.userScenarioType == .dmg_type41 ||
  969. KMMemberInfo.shared.userScenarioType == .dmg_type42 ||
  970. KMMemberInfo.shared.userScenarioType == .dmg_type46 ||
  971. KMMemberInfo.shared.userScenarioType == .dmg_type47 { // 订阅
  972. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
  973. lockedImageView.image = NSImage(named: "UpgradeImage2")
  974. number1ImageView.isHidden = false
  975. number1ImageView.image = NSImage(named: "UpgradeImage")
  976. number1Label.isHidden = true
  977. number2Label.textColor = NSColor(hex: "FFFFFF")
  978. number3Label.textColor = NSColor(hex: "FFFFFF")
  979. number4Label.textColor = NSColor(hex: "FFFFFF")
  980. number4_1Label.textColor = NSColor(hex: "FFFFFF")
  981. number5Label.textColor = NSColor(hex: "FFFFFF")
  982. membershipLabel.textColor = NSColor(hex: "FFFFFF")
  983. if KMMemberInfo.shared.vip_endDate.count > 0 {
  984. spliLineImageView.isHidden = false
  985. endDateLabel.isHidden = false
  986. }
  987. rightsBox.fillColor = NSColor(named: "FFFFFF_0.2") ?? .white
  988. buyNow1Box.fillColor = NSColor(hex: "FFFFFF")
  989. buyNow1ImageView.isHidden = true
  990. buyNow1Box.isHidden = true
  991. buyNow2Box.isHidden = true
  992. } else { // 免费 & 到期
  993. if KMMemberInfo.shared.userScenarioType == .dmg_type4 ||
  994. KMMemberInfo.shared.userScenarioType == .dmg_type11 ||
  995. KMMemberInfo.shared.userScenarioType == .dmg_type18 ||
  996. KMMemberInfo.shared.userScenarioType == .dmg_type19 ||
  997. KMMemberInfo.shared.userScenarioType == .dmg_type22 ||
  998. KMMemberInfo.shared.userScenarioType == .dmg_type33 ||
  999. KMMemberInfo.shared.userScenarioType == .dmg_type34 ||
  1000. KMMemberInfo.shared.userScenarioType == .dmg_type37 ||
  1001. KMMemberInfo.shared.userScenarioType == .dmg_type48 {
  1002. centerBackgroud.image = NSImage(named: "ButtonBackgroundImage3")
  1003. lockedImageView.image = NSImage(named: "LockedImage")
  1004. number1ImageView.isHidden = true
  1005. number1Label.isHidden = false
  1006. number2Label.textColor = NSColor(hex:"42464D")
  1007. number3Label.textColor = NSColor(hex:"42464D")
  1008. number4Label.textColor = NSColor(hex: "42464D")
  1009. number4_1Label.textColor = NSColor(hex: "42464D")
  1010. number5Label.textColor = NSColor(hex: "42464D")
  1011. membershipLabel.textColor = NSColor(hex: "42464D")
  1012. rightsBox.fillColor = NSColor(named: "7094F6_0.1") ?? .white
  1013. buyNow1Box.fillColor = NSColor.clear
  1014. buyNow2Box.fillColor = NSColor.clear
  1015. buyNow1ImageView.isHidden = false
  1016. buyNow2ImageView.isHidden = false
  1017. arrow1ImageView.image = NSImage(named: "BuyNewArrowImage1")
  1018. arrow2ImageView.image = NSImage(named: "BuyNewArrowImage1")
  1019. buyNow1Label.textColor = NSColor(named: "FFFFFF")
  1020. buyNow1Label.textColor = NSColor(hex: "FFFFFF")
  1021. buyNow2Label.textColor = NSColor(hex: "FFFFFF")
  1022. if KMMemberInfo.shared.userScenarioType == .dmg_type11 ||
  1023. KMMemberInfo.shared.userScenarioType == .dmg_type18 ||
  1024. KMMemberInfo.shared.userScenarioType == .dmg_type22 ||
  1025. KMMemberInfo.shared.userScenarioType == .dmg_type33 ||
  1026. KMMemberInfo.shared.userScenarioType == .dmg_type37 ||
  1027. KMMemberInfo.shared.userScenarioType == .dmg_type48 { // 到期
  1028. if KMMemberInfo.shared.vip_endDate.count > 0 &&
  1029. KMMemberInfo.shared.vip_status == 2 {
  1030. spliLineImageView.isHidden = false
  1031. endDateLabel.isHidden = false
  1032. endDateLabel.textColor = NSColor(named: "FA1E5D")
  1033. }
  1034. spliLineImageView.isHidden = false
  1035. endDateLabel.isHidden = false
  1036. buyNow2Box.isHidden = true
  1037. buyNow1BoxLeftConst.constant = (CGRectGetWidth(view.bounds) - CGRectGetWidth(buyNow1Box.frame))/2
  1038. } else { // 免费
  1039. }
  1040. }
  1041. }
  1042. buyNow1Box.moveCallback = { [weak self](mouseEntered: Bool, mouseBox: KMBox) -> Void in
  1043. guard let self = self else { return }
  1044. if mouseEntered {
  1045. self.buyNow1ImageView.image = NSImage(named: "ButtonBackgroundImage2_Hov")
  1046. } else {
  1047. self.buyNow1ImageView.image = NSImage(named: "ButtonBackgroundImage2")
  1048. }
  1049. }
  1050. buyNow1Box.downCallback = { [weak self](downEntered: Bool, mouseBox: KMBox, event) -> Void in
  1051. guard let self = self else { return }
  1052. if KMMemberInfo.shared.userScenarioType == .lite_type1 {
  1053. // 免费版,免费账号跳转购买比较表
  1054. self.viewModel.skipCompare(.lite_Base)
  1055. } else {
  1056. // 其它情况根据账号状态跳转不同比较表
  1057. KMMemberInfo.shared.productCompareShow()
  1058. }
  1059. }
  1060. buyNow2Box.moveCallback = { [weak self](mouseEntered: Bool, mouseBox: KMBox) -> Void in
  1061. guard let self = self else { return }
  1062. if mouseEntered {
  1063. self.buyNow2ImageView.image = NSImage(named: "ButtonBackgroundImage2_Hov")
  1064. } else {
  1065. self.buyNow2ImageView.image = NSImage(named: "ButtonBackgroundImage2")
  1066. }
  1067. }
  1068. buyNow2Box.downCallback = { [weak self](downEntered: Bool, mouseBox: KMBox, event) -> Void in
  1069. guard let self = self else { return }
  1070. if KMMemberInfo.shared.userScenarioType == .lite_type1 {
  1071. self.viewModel.skipCompare(.trial)
  1072. } else if KMMemberInfo.shared.userScenarioType == .dmg_type4 ||
  1073. KMMemberInfo.shared.userScenarioType == .dmg_type19 ||
  1074. KMMemberInfo.shared.userScenarioType == .dmg_type34 {
  1075. self.viewModel.skipCompare(.trial)
  1076. }
  1077. }
  1078. accountCenterBox.moveCallback = { [weak self](mouseEntered: Bool, mouseBox: KMBox) -> Void in
  1079. guard let self = self else { return }
  1080. if mouseEntered {
  1081. self.accountCenterBox.fillColor = NSColor(named: "F5FAFF") ?? .white
  1082. self.accountLabel.textColor = NSColor(named: "3091FF")
  1083. self.accountImageView.image = NSImage(named: "AccountCenterImage_Hov")
  1084. } else {
  1085. self.accountCenterBox.fillColor = .clear
  1086. self.accountLabel.textColor = NSColor(named: "3091FF")
  1087. self.accountImageView.image = NSImage(named: "AccountCenterImage")
  1088. }
  1089. }
  1090. accountCenterBox.downCallback = { [weak self](downEntered: Bool, mouseBox: KMBox, event) -> Void in
  1091. guard let self = self else { return }
  1092. self.viewModel.skipAccountCenter()
  1093. }
  1094. signOutBox.moveCallback = { [weak self](mouseEntered: Bool, mouseBox: KMBox) -> Void in
  1095. guard let self = self else { return }
  1096. if mouseEntered {
  1097. self.signOutLabel.textColor = NSColor(named: "3091FF")
  1098. self.signOutImageView.image = NSImage(named: "SignOutImage_Hov")
  1099. } else {
  1100. self.signOutLabel.textColor = NSColor(named: "3091FF")
  1101. self.signOutImageView.image = NSImage(named: "SignOutImage")
  1102. }
  1103. }
  1104. signOutBox.downCallback = { [weak self](downEntered: Bool, mouseBox: KMBox, event) -> Void in
  1105. guard let self = self else { return }
  1106. self.viewModel.signOutAction()
  1107. }
  1108. closeAccountBox.moveCallback = { [weak self](mouseEntered: Bool, mouseBox: KMBox) -> Void in
  1109. guard let self = self else { return }
  1110. if mouseEntered {
  1111. self.closeAccountLabel.textColor = NSColor(named: "3091FF")
  1112. self.closeAccountImageView.image = NSImage(named: "CloseAccountImage_hover")
  1113. } else {
  1114. self.closeAccountLabel.textColor = NSColor(named: "3091FF")
  1115. self.closeAccountImageView.image = NSImage(named: "CloseAccountImage")
  1116. }
  1117. }
  1118. closeAccountBox.downCallback = { [weak self](downEntered: Bool, mouseBox: KMBox, event) -> Void in
  1119. guard let self = self else { return }
  1120. self.viewModel.closeAccountAction()
  1121. }
  1122. //远程控制
  1123. if let userViewInfoContent = KMAdvertisementManager.manager.info.userViewInfoContent {
  1124. buyNow1BoxLeftConst.constant = 0
  1125. buyNow2Box.isHidden = false
  1126. if userViewInfoContent.content?.isEmpty == false {
  1127. buyNow2Box.isHidden = true
  1128. buyNow1BoxLeftConst.constant = (CGRectGetWidth(view.bounds) - CGRectGetWidth(buyNow1Box.frame))/2
  1129. }
  1130. }
  1131. }
  1132. }