Browse Source

Merge branch 'develop_PDFReaderPro_V4.7.0' of git.kdan.cc:Mac_PDF/PDF_Office into develop_PDFReaderPro_V4.7.0

niehaoyu 1 week ago
parent
commit
565dbb030f

+ 6 - 2
PDF Office/PDF Master/Class/Purchase/DMG/Verification/KMVerificationMessageViewController.m

@@ -324,10 +324,14 @@ NSPopoverDelegate>
         type == KMUserScenarioTypePro_type4) {
         if (type == KMUserScenarioTypeLite_type1) { //免费用户
 #if !VERSION_DMG
-            if(IAPProductsManager.defaultManager.fourDevicesAllAccessPackNew12months_lite.isTrialPeriod == YES)  { //是否有试用
+            if(KMMemberInfo.shared.isLogin == NO) {
                 self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(@"Upgrade", nil)];
             } else {
-                self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(@"Free Trial", nil)];
+                if(IAPProductsManager.defaultManager.fourDevicesAllAccessPackNew12months_lite.isTrialPeriod == YES)  { //是否有试用
+                    self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(@"Upgrade", nil)];
+                } else {
+                    self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(@"Free Trial", nil)];
+                }
             }
 #else
 #endif

+ 22 - 0
PDF Office/PDF Master/MemberCenter/Assets/MemberCenter.xcassets/Image/BuyNewArrowImage2Hover.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "arrow-right.pdf",
+      "idiom" : "universal"
+    },
+    {
+      "appearances" : [
+        {
+          "appearance" : "luminosity",
+          "value" : "dark"
+        }
+      ],
+      "filename" : "arrow-right 1.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 80 - 0
PDF Office/PDF Master/MemberCenter/Assets/MemberCenter.xcassets/Image/BuyNewArrowImage2Hover.imageset/arrow-right 1.pdf

@@ -0,0 +1,80 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 2.666504 3.203125 cm
+0.286275 0.509804 0.901961 scn
+5.528595 9.268605 m
+5.788945 9.528955 6.211055 9.528955 6.471404 9.268605 c
+10.471404 5.268605 l
+10.731753 5.008255 10.731753 4.586145 10.471404 4.325796 c
+6.471404 0.325796 l
+6.211055 0.065446 5.788945 0.065446 5.528595 0.325796 c
+5.268246 0.586145 5.268246 1.008255 5.528595 1.268604 c
+8.390524 4.130534 l
+0.666667 4.130534 l
+0.298477 4.130534 0.000000 4.429010 0.000000 4.797200 c
+0.000000 5.165390 0.298477 5.463867 0.666667 5.463867 c
+8.390524 5.463867 l
+5.528595 8.325796 l
+5.268246 8.586145 5.268246 9.008256 5.528595 9.268605 c
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  664
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000754 00000 n
+0000000776 00000 n
+0000000949 00000 n
+0000001023 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1082
+%%EOF

+ 80 - 0
PDF Office/PDF Master/MemberCenter/Assets/MemberCenter.xcassets/Image/BuyNewArrowImage2Hover.imageset/arrow-right.pdf

@@ -0,0 +1,80 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 2.666504 3.203125 cm
+0.286275 0.509804 0.901961 scn
+5.528595 9.268605 m
+5.788945 9.528955 6.211055 9.528955 6.471404 9.268605 c
+10.471404 5.268605 l
+10.731753 5.008255 10.731753 4.586145 10.471404 4.325796 c
+6.471404 0.325796 l
+6.211055 0.065446 5.788945 0.065446 5.528595 0.325796 c
+5.268246 0.586145 5.268246 1.008255 5.528595 1.268604 c
+8.390524 4.130534 l
+0.666667 4.130534 l
+0.298477 4.130534 0.000000 4.429010 0.000000 4.797200 c
+0.000000 5.165390 0.298477 5.463867 0.666667 5.463867 c
+8.390524 5.463867 l
+5.528595 8.325796 l
+5.268246 8.586145 5.268246 9.008256 5.528595 9.268605 c
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  664
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000754 00000 n
+0000000776 00000 n
+0000000949 00000 n
+0000001023 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1082
+%%EOF

+ 1 - 1
PDF Office/PDF Master/MemberCenter/Assets/en.lproj/MemberCenterLocalizable.strings

@@ -21,7 +21,7 @@
 "I have read and agreed to the %@ and %@. An account will be automatically created after signing in with an unregistered email address." = "I have read and agreed to the %@ and %@. An account will be automatically created after signing in with an unregistered email address.";
 "Terms of Service" = "Terms of Service";
 "Privacy Policy" = "Privacy Policy";
-"Please agree and check the above agreement first." = "Please agree and check the above agreement first.";
+"Please agree and check the agreement first." = "Please agree and check the agreement first.";
 "Forgot password?" = "Forgot password?";
 "Please enter password" = "Please enter password";
 "Email format error. Please enter the correct email." = "Email format error. Please enter the correct email.";

+ 1 - 1
PDF Office/PDF Master/MemberCenter/Assets/zh-Hans.lproj/MemberCenterLocalizable.strings

@@ -19,7 +19,7 @@
 "I have read and agreed to the %@ and %@. An account will be automatically created after signing in with an unregistered email address." = "我已阅读并同意%@和%@,未注册的邮箱登录后将自动创建账号。";
 "Terms of Service" = "用户协议";
 "Privacy Policy" = "隐私政策";
-"Please agree and check the above agreement first." = "请先同意并勾选上述协议。";
+"Please agree and check the agreement first." = "请先同意并勾选以下协议。";
 "Forgot password?" = "忘记密码?";
 "Please enter password" = "请输入密码";
 "Email format error. Please enter the correct email." = "邮箱格式错误,请输入正确邮箱。";

+ 1 - 1
PDF Office/PDF Master/MemberCenter/Assets/zh-Hant.lproj/MemberCenterLocalizable.strings

@@ -19,7 +19,7 @@
 "I have read and agreed to the %@ and %@. An account will be automatically created after signing in with an unregistered email address." = "我已閱讀並同意%@和%@,未註冊的電子郵件登入後將自動建立帳戶。";
 "Terms of Service" = "用戶協議";
 "Privacy Policy" = "隱私權政策";
-"Please agree and check the above agreement first." = "請先同意並勾選上述協議。";
+"Please agree and check the agreement first." = "請先同意並勾選以下協議。";
 "Forgot password?" = "忘記密碼?";
 "Please enter password" = "請輸入密碼";
 "Email format error. Please enter the correct email." = "郵箱格式錯誤,請輸入正確信箱。";

+ 1 - 1
PDF Office/PDF Master/MemberCenter/View/KMSignUpView.swift

@@ -105,7 +105,7 @@ class KMSignUpView: KMBaseXibView {
         verifficationTextField.placeholderString = NSLocalizedString("Please enter code", tableName: "MemberCenterLocalizable", comment: "")
         passwordTextField.placeholderString = NSLocalizedString("Please enter password", tableName: "MemberCenterLocalizable", comment: "")
         passwordTextField1.placeholderString = NSLocalizedString("Please enter password", tableName: "MemberCenterLocalizable", comment: "")
-        privacyCheckButton.toolTip = NSLocalizedString("Please agree and check the above agreement first.", tableName: "MemberCenterLocalizable", comment: "")
+        privacyCheckButton.toolTip = NSLocalizedString("Please agree and check the agreement first.", tableName: "MemberCenterLocalizable", comment: "")
         emailTextField.stringValue = viewModel.email
         verifficationTextField.stringValue = viewModel.verificationCode
         passwordTextField.stringValue = viewModel.password

+ 63 - 5
PDF Office/PDF Master/MemberCenter/ViewController/KMUserInfoViewController.swift

@@ -727,6 +727,13 @@ class KMUserInfoViewController: NSViewController {
                KMMemberInfo.shared.userScenarioType == .pro_type2 ||
                KMMemberInfo.shared.userScenarioType == .pro_type4 ||
                KMMemberInfo.shared.userScenarioType == .pro_type5 { //订阅或者买断
+                if mouseEntered {
+                    self.arrow1ImageView.image = NSImage(named: "BuyNewArrowImage2Hover")
+                    self.buyNow1Label.textColor = NSColor(hex: "4982E6")
+                } else {
+                    self.arrow1ImageView.image = NSImage(named: "BuyNewArrowImage2")
+                    self.buyNow1Label.textColor = NSColor(hex: "0E1114")
+                }
             } else {
                 if mouseEntered {
                     self.buyNow1ImageView.image = NSImage(named: "ButtonBackgroundImage2_Hov")
@@ -1136,12 +1143,63 @@ class KMUserInfoViewController: NSViewController {
         buyNow1Box.moveCallback =  { [weak self](mouseEntered: Bool, mouseBox: KMBox) -> Void in
             guard let self = self else { return }
             
-            if mouseEntered {
-                self.buyNow1ImageView.image = NSImage(named: "ButtonBackgroundImage2_Hov")
-            } else {
-                self.buyNow1ImageView.image = NSImage(named: "ButtonBackgroundImage2")
+            if KMMemberInfo.shared.userScenarioType == .dmg_type5 ||
+                KMMemberInfo.shared.userScenarioType == .dmg_type6 ||
+                KMMemberInfo.shared.userScenarioType == .dmg_type7 ||
+                KMMemberInfo.shared.userScenarioType == .dmg_type28 ||
+                KMMemberInfo.shared.userScenarioType == .dmg_type29 ||
+                KMMemberInfo.shared.userScenarioType == .dmg_type30 ||
+                KMMemberInfo.shared.userScenarioType == .dmg_type43 ||
+                KMMemberInfo.shared.userScenarioType == .dmg_type44 ||
+                KMMemberInfo.shared.userScenarioType == .dmg_type45 { // 买断
+                if mouseEntered {
+                    self.arrow1ImageView.image = NSImage(named: "BuyNewArrowImage2Hover")
+                    self.buyNow1Label.textColor = NSColor(hex: "4982E6")
+                } else {
+                    self.arrow1ImageView.image = NSImage(named: "BuyNewArrowImage2")
+                    self.buyNow1Label.textColor = NSColor(hex: "0E1114")
+                }
+            } else if KMMemberInfo.shared.userScenarioType == .dmg_type8 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type9 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type10 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type12 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type13 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type14 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type15 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type16 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type17 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type20 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type21 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type23 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type24 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type25 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type26 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type27 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type31 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type32 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type35 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type36 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type38 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type39 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type40 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type41 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type42 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type46 ||
+                        KMMemberInfo.shared.userScenarioType == .dmg_type47 { // 订阅
+                if mouseEntered {
+                    self.arrow1ImageView.image = NSImage(named: "BuyNewArrowImage2Hover")
+                    self.buyNow1Label.textColor = NSColor(hex: "4982E6")
+                } else {
+                    self.arrow1ImageView.image = NSImage(named: "BuyNewArrowImage2")
+                    self.buyNow1Label.textColor = NSColor(hex: "0E1114")
+                }
+            } else {   
+                if mouseEntered {
+                    self.buyNow1ImageView.image = NSImage(named: "ButtonBackgroundImage2_Hov")
+                } else {
+                    self.buyNow1ImageView.image = NSImage(named: "ButtonBackgroundImage2")
+                }
             }
-
         }
         buyNow1Box.downCallback = { [weak self](downEntered: Bool, mouseBox: KMBox, event) -> Void in
             guard let self = self else { return }

+ 37 - 24
PDF Office/PDF Master/MemberCenter/ViewModel/KMProductModel.swift

@@ -172,7 +172,7 @@ class KMProductModel: ObservableObject {
     func getDMGPrice(productCode: String) -> String {
         guard let productModels = dmgProductDatas?.listingProducts else { return "" }
         for model in productModels {
-            if model.code == "productCode" {
+            if model.code == productCode {
                 return model.price.stringValue
             }
         }
@@ -184,7 +184,7 @@ class KMProductModel: ObservableObject {
     func getDMGCNYPrice(productCode: String) -> String {
         guard let productModels = dmgProductDatas?.listingProducts else { return "" }
         for model in productModels {
-            if model.code == "productCode" {
+            if model.code == productCode {
                 return model.cnyPrice.stringValue
             }
         }
@@ -196,7 +196,7 @@ class KMProductModel: ObservableObject {
     func getDMGDisplayPrice(productCode: String) -> String {
         guard let productModels = dmgProductDatas?.listingProducts else { return "" }
         for model in productModels {
-            if model.code == "productCode" {
+            if model.code == productCode {
                 return model.displayPrice.stringValue
             }
         }
@@ -208,7 +208,7 @@ class KMProductModel: ObservableObject {
     func getDMGDisplayCNYPrice(productCode: String) -> String {
         guard let productModels = dmgProductDatas?.listingProducts else { return "" }
         for model in productModels {
-            if model.code == "productCode" {
+            if model.code == productCode {
                 return model.displayCnyPrice.stringValue
             }
         }
@@ -425,6 +425,28 @@ class KMProductModel: ObservableObject {
      对应商品价格
      */
     func getProductPrice(_ type: KMPurchasedProductType) -> String {
+#if VERSION_FREE
+#if VERSION_DMG
+    // DMG
+            if type == .pdfReaderProStandard_dmg {
+                return getDMGPrice(productCode: "standard-annual-subscription")
+            } else if type == .pdfReaderProAdvanced_dmg {
+                return getDMGPrice(productCode: "advanced-annual-subscription")
+            } else if type == .pdfReaderProPermanent_dmg {
+                return getDMGPrice(productCode: "advanced-permanent")
+            } else if type == .pdfReaderProAIAnnual_dmg {
+                return getDMGPrice(productCode: "ai-subscription-year-trail")
+            } else if type == .pdfReaderProAIMonthly_dmg {
+                return getDMGPrice(productCode: "ai-subscription-month")
+            } else if type == .pdfToOffice_dmg {
+                return getDMGPrice(productCode: "PDF to Office")
+            } else if type == .add2Device_dmg {
+                return getDMGPrice(productCode: "Add 2-Device · Advanced Annual")
+            } else if type == .add3Device_dmg {
+                return getDMGPrice(productCode: "Add 3-Device · Advanced Annual")
+            }
+#else
+    // AppStore 免费版本
         if type == .fourDevicesAllAccessPackNew6months_lite {
             if let product = IAPProductsManager.default().fourDevicesAllAccessPackNew6Months_lite, product.isOffers {
                 return product.offersPrice()
@@ -467,7 +489,11 @@ class KMProductModel: ObservableObject {
             } else {
                 return IAPProductsManager.default().advancedAdd2DevicesAllAccessPack12months_lite.price()
             }
-        } else if type == .aiAllAccessPack1month_pro {
+        }
+#endif
+#else
+    // AppStore 付费版
+        if type == .aiAllAccessPack1month_pro {
             if let product = IAPProductsManager.default().aiAllAccessPack1month_pro, product.isOffers {
                 return product.offersPrice()
             } else {
@@ -509,23 +535,8 @@ class KMProductModel: ObservableObject {
             } else {
                 return IAPProductsManager.default().advancedAdd2DevicesAllAccessPack12months_pro.price()
             }
-        } else if type == .pdfReaderProStandard_dmg {
-            return getDMGPrice(productCode: "PDF Reader Pro Standard - Annual Plan")
-        } else if type == .pdfReaderProAdvanced_dmg {
-            return getDMGPrice(productCode: "PDF Reader Pro Advanced - Annual Plan")
-        } else if type == .pdfReaderProPermanent_dmg {
-            return getDMGPrice(productCode: "PDF Reader Pro Permanent")
-        } else if type == .pdfReaderProAIAnnual_dmg {
-            return getDMGPrice(productCode: "PDF Reader Pro AI - Annual Plan")
-        } else if type == .pdfReaderProAIMonthly_dmg {
-            return getDMGPrice(productCode: "PDF Reader Pro AI - Monthly Plan")
-        } else if type == .pdfToOffice_dmg {
-            return getDMGPrice(productCode: "PDF to Office")
-        } else if type == .add2Device_dmg {
-            return getDMGPrice(productCode: "Add 2-Device · Advanced Annual")
-        } else if type == .add3Device_dmg {
-            return getDMGPrice(productCode: "Add 3-Device · Advanced Annual")
         }
+#endif
         return ""
     }
     
@@ -533,11 +544,11 @@ class KMProductModel: ObservableObject {
         if state == .dmg_Base {
             var code = ""
             if tag == 1 {
-                code = "PDF Reader Pro Standard - Annual Plan"
+                code = "standard-annual-subscription"
             } else if tag == 3 {
-                code = "PDF Reader Pro Permanent"
+                code = "advanced-permanent"
             } else {
-                code = "PDF Reader Pro Advanced - Annual Plan"
+                code = "advanced-annual-subscription"
             }
             #if VERSION_DMG
             let embeddedWC = KMPurchaseEmbeddedWindowController.currentCode(code)
@@ -770,6 +781,7 @@ class KMProductModel: ObservableObject {
      会员购买
      */
     private func membershipPurchase(_ type: KMPurchasedProductType) -> Void {
+#if !VERSION_DMG
         if type == .fourDevicesAllAccessPackNew6months_lite || type == .fourDevicesAllAccessPackNew12months_lite {
             if isPurchaseSwitch {
                 IAPProductsManager.default().makeSubProduct(IAPProductsManager.default().fourDevicesAllAccessPackNew12months_lite, discount: isCancelAutoRenew)
@@ -801,6 +813,7 @@ class KMProductModel: ObservableObject {
         } else if type == .advancedAdd2DevicesAllAccessPack12months_pro {
             IAPProductsManager.default().makeSubProduct(IAPProductsManager.default().advancedAdd2DevicesAllAccessPack12months_pro, discount: isCancelAutoRenew)
         }
+#endif
     }
 
     // MARK: Action Method

+ 1 - 1
PDF Office/PDF Master/MemberCenter/ViewModel/KMSignUpViewModel.swift

@@ -256,7 +256,7 @@ class KMSignUpViewModel: ObservableObject {
             DispatchQueue.main.async {
                 
                 let alert = NSAlert()
-                alert.messageText = NSLocalizedString("Please agree and check the above agreement first.", tableName: "MemberCenterLocalizable", comment: "")
+                alert.messageText = NSLocalizedString("Please agree and check the agreement first.", tableName: "MemberCenterLocalizable", comment: "")
                 alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
                 //            alert.beginSheetModal(for: NSApp.mainWindow!)
                 let result = alert.runModal()

+ 3 - 2
PDF Office/PDF Master/MemberCenter/ViewModel/KMUserInfoVCModel.swift

@@ -192,8 +192,9 @@ class KMUserInfoVCModel: ObservableObject {
                 }
             }
         } else {
-            if (KMMemberInfo.shared.vip_paymentModel == "1" && KMMemberInfo.shared.vip_status == 1) || (KMMemberInfo.shared.ai_status == 1 && KMMemberInfo.shared.ai_paymentModel == "1") {
-                // 订阅用户提示退订
+            if (KMMemberInfo.shared.vip_payType == 1) ||
+                (KMMemberInfo.shared.ai_payType == 1) {
+                // 在续订中用户提示退订
                 NotificationCenter.default.post(name: NSNotification.Name("CloseMenuNotification"), object: nil)
                 KMMemberPromptWC.shared.showWindow(nil)
                 KMMemberPromptWC.shared.tipType = .unsubscribe

+ 1 - 1
PDF Office/PDF Master/MemberCenter/WindowsController/KMMemberCenterWindowController.swift

@@ -150,7 +150,7 @@ class KMMemberCenterWindowController: NSWindowController {
         
         for i in 0 ..< deviceList_Result.count {
             let device = deviceList_Result[i]
-            let name = String(format: "%@(%@)",device.deviceName ?? "PDF Reader Pro User for ",device.device_model ?? " Device Name")
+            let name = String(format: "%@%@(%@)","PDF Reader Pro for ",device.device_model ?? "PDF Reader Pro User",device.deviceName ?? " Device Name")
             if i == 0 {
                 device1Label.stringValue = name
             } else if i == 1 {

File diff suppressed because it is too large
+ 12 - 3
PDF Office/PDF Master/MemberCenter/WindowsController/KMProductCompareWC.swift


+ 1 - 1
PDF Office/PDF Master/MemberCenter/WindowsController/KMProductCompareWC.xib

@@ -102,7 +102,7 @@
         <window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="documentWindow" titlebarAppearsTransparent="YES" id="7jy-UC-R98">
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" fullSizeContentView="YES"/>
             <rect key="contentRect" x="77" y="40" width="970" height="660"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1800" height="1125"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
             <view key="contentView" wantsLayer="YES" misplaced="YES" id="BHT-Ss-56B">
                 <rect key="frame" x="0.0" y="0.0" width="970" height="660"/>
                 <autoresizingMask key="autoresizingMask"/>