Przeglądaj źródła

【会员系统】新增远程控制部分处理

niehaoyu 3 miesięcy temu
rodzic
commit
979baf8617
19 zmienionych plików z 306 dodań i 1454 usunięć
  1. 33 33
      PDF Office/PDF Master/Class/KMAdvertisement/Config/KMAdvertisementConfig.swift
  2. 48 113
      PDF Office/PDF Master/Class/KMAdvertisement/Manager/KMAdvertisementManager.swift
  3. 3 8
      PDF Office/PDF Master/Class/KMAdvertisement/Model/KMAdvertisementImage.swift
  4. 5 88
      PDF Office/PDF Master/Class/KMAdvertisement/Model/KMAdvertisementModel.swift
  5. 9 63
      PDF Office/PDF Master/Class/KMAdvertisement/Model/KMAdvertisementModelTransition.swift
  6. 2 1
      PDF Office/PDF Master/Class/KMAdvertisement/View/KMRecommondPopWindow/KMRecommondPopWindow.m
  7. 3 3
      PDF Office/PDF Master/Class/KMAdvertisement/View/Tableview/Cell/KMAdvertisementCollectionHeadView.xib
  8. 3 3
      PDF Office/PDF Master/Class/KMAdvertisement/View/Tableview/Cell/KMAdvertisementCollectionViewItem.xib
  9. 16 0
      PDF Office/PDF Master/Class/Purchase/DMG/Verification/KMVerificationMessageViewController.m
  10. 1 1
      PDF Office/PDF Master/Class/Purchase/DMG/Verification/VerificationManager/VerificationManager.h
  11. 13 0
      PDF Office/PDF Master/MemberCenter/ViewController/KMUserInfoViewController.swift
  12. 4 3
      PDF Office/PDF Master/MemberCenter/ViewController/KMUserInfoViewController.xib
  13. 3 3
      PDF Office/PDF Master/MemberCenter/WindowsController/KMCloseAccountWC.xib
  14. 3 3
      PDF Office/PDF Master/MemberCenter/WindowsController/KMCloseApplyWC.xib
  15. 3 3
      PDF Office/PDF Master/MemberCenter/WindowsController/KMCloseVerificationWC.xib
  16. 28 0
      PDF Office/PDF Master/MemberCenter/WindowsController/KMLoginWindowsController.swift
  17. 17 3
      PDF Office/PDF Master/MemberCenter/WindowsController/KMLoginWindowsController.xib
  18. 3 3
      PDF Office/PDF Master/MemberCenter/WindowsController/KMMemberPromptWC.xib
  19. 109 1123
      PDF Office/PDF Reader Pro.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

+ 33 - 33
PDF Office/PDF Master/Class/KMAdvertisement/Config/KMAdvertisementConfig.swift

@@ -6,9 +6,9 @@
 //
 
 #if os(OSX)
-    import AppKit
+import AppKit
 #elseif os(iOS)
-    import UIKit
+import UIKit
 #endif
 
 //APP类型
@@ -35,29 +35,29 @@
     case PDFReaderProIOSPro = 19
     
     func string() -> String {
-            switch self {
-            case .RecordIt: return "RecordIt"
-            case .RecordItPro: return "RecordItPro"
-            case .RecordItDMG: return "RecordItDMG"
-            case .FilmageScreen: return "FilmageScreen"
-            case .FilmageScreenPro: return "FilmageScreenPro"
-            case .FilmageScreenDMG: return "FilmageScreenDMG"
-            case .FilmageEditorMac: return "FilmageEditorMac"
-            case .FilmageEditorMacPro: return "FilmageEditorMacPro"
-            case .FilmageEditorMacDMG: return "FilmageEditorMacDMG"
-            case .FilmageConverterMac: return "FilmageConverterMac"
-            case .FilmageConverterMacPro: return "FilmageConverterMacPro"
-            case .FilmageConverterMacDMG: return "FilmageConverterMacDMG"
-            case .FilmagePlayerMac: return "FilmagePlayerMac"
-            case .FilmagePlayerMacPro: return "FilmagePlayerMacPro"
-            case .FilmagePlayerMacDMG: return "FilmagePlayerMacDMG"
-            case .PDFReaderProMac: return "PDFReaderProMac"
-            case .PDFReaderProMacPro: return "PDFReaderProMacPro"
-            case .PDFReaderProMacDMG: return "PDFReaderProMacDMG"
-            case .PDFReaderProIOS: return "PDFReaderProIOS"
-            case .PDFReaderProIOSPro: return "PDFReaderProIOSPro"
-            }
+        switch self {
+        case .RecordIt: return "RecordIt"
+        case .RecordItPro: return "RecordItPro"
+        case .RecordItDMG: return "RecordItDMG"
+        case .FilmageScreen: return "FilmageScreen"
+        case .FilmageScreenPro: return "FilmageScreenPro"
+        case .FilmageScreenDMG: return "FilmageScreenDMG"
+        case .FilmageEditorMac: return "FilmageEditorMac"
+        case .FilmageEditorMacPro: return "FilmageEditorMacPro"
+        case .FilmageEditorMacDMG: return "FilmageEditorMacDMG"
+        case .FilmageConverterMac: return "FilmageConverterMac"
+        case .FilmageConverterMacPro: return "FilmageConverterMacPro"
+        case .FilmageConverterMacDMG: return "FilmageConverterMacDMG"
+        case .FilmagePlayerMac: return "FilmagePlayerMac"
+        case .FilmagePlayerMacPro: return "FilmagePlayerMacPro"
+        case .FilmagePlayerMacDMG: return "FilmagePlayerMacDMG"
+        case .PDFReaderProMac: return "PDFReaderProMac"
+        case .PDFReaderProMacPro: return "PDFReaderProMacPro"
+        case .PDFReaderProMacDMG: return "PDFReaderProMacDMG"
+        case .PDFReaderProIOS: return "PDFReaderProIOS"
+        case .PDFReaderProIOSPro: return "PDFReaderProIOSPro"
         }
+    }
 }
 
 //显示样式
@@ -114,15 +114,15 @@
     public var language: KMAdvertisementLanguageType = .unknow
     
     func activityBaseURL() -> String {
-        #if DEBUG
-        if kTestMode == 1{
+//#if DEBUG
+        if kTestMode == 1 {
             return "http://test-store.kdan.cn:3019"
         } else {
             return "https://store.filmagepro.com:3018"
         }
-        #else
-        return "https://store.filmagepro.com:3018"
-        #endif
+//#else
+//        return "https://store.filmagepro.com:3018"
+//#endif
     }
     
     public func initParameters(appName: KMAdvertisementAppNameType, subscribeType:KMAdvertisementSubscribeType, platform: KMAdvertisementPlatformType) {
@@ -154,22 +154,22 @@ extension KMAdvertisementConfig {
         if #available(macOS 10.14, *) {
             let dict = UserDefaults.standard.persistentDomain(forName: UserDefaults.globalDomain) ?? nil
             guard let dicts: Dictionary = dict else {
-//                print("不是字典类型")
+                //                print("不是字典类型")
                 return false
             }
             
             guard let style = dicts["AppleInterfaceStyle"] as? String else {
-//                print("style is not string")
+                //                print("style is not string")
                 return false
             }
             
             let isDarkMode : Bool = style.compare("Dark").rawValue == 0
             
             if isDarkMode {
-//                print("暗黑模式\(style)")
+                //                print("暗黑模式\(style)")
                 return true
             } else {
-//                print("正常模式\(style)")
+                //                print("正常模式\(style)")
                 return false
             }
         } else {

+ 48 - 113
PDF Office/PDF Master/Class/KMAdvertisement/Manager/KMAdvertisementManager.swift

@@ -15,7 +15,7 @@
     
     /**
      @abstract 测试模式,默认为false
-      */
+     */
     @objc public var debug: Bool = false
     
     /**
@@ -24,7 +24,7 @@
      @param subscribeType 订阅状态,可单独在configuration设置
      @param platform 平台
      @return
-      */
+     */
     @objc public func initConfig(appName: KMAdvertisementAppNameType,
                                  subscribeType:KMAdvertisementSubscribeType,
                                  platform: KMAdvertisementPlatformType) {
@@ -32,18 +32,18 @@
     }
     
     private class InternalImplementation {
-            fileprivate var privateProperty: String = "Hidden"
-            fileprivate func internalMethod() {
-                // 实现细节
-            }
-        }
-        
-        private let internalImplementation = InternalImplementation()
-        
-        public func publicMethod() {
-            // 使用内部实现
-            internalImplementation.internalMethod()
+        fileprivate var privateProperty: String = "Hidden"
+        fileprivate func internalMethod() {
+            // 实现细节
         }
+    }
+    
+    private let internalImplementation = InternalImplementation()
+    
+    public func publicMethod() {
+        // 使用内部实现
+        internalImplementation.internalMethod()
+    }
 }
 
 extension KMAdvertisementManager {
@@ -52,7 +52,7 @@ extension KMAdvertisementManager {
      @abstract 获取数据
      @param data 传入参数 类型为KMAdvertisementModel
      @return
-      */
+     */
     @objc public func fetchData(completion: @escaping (_ data: KMAdvertisementInfo?, _ error:Error?) -> Void) -> Void {
         self.fetchDataWithResponseObject { data, responseObject, error in
             if completion != nil {
@@ -74,21 +74,21 @@ extension KMAdvertisementManager {
                                     "app_version": version]
         
         //先拿缓存数据 再请求新数据
-        let cacheData = KMAdvertisementCache.default.readData()
-        if cacheData.count != 0 {
-            for model in cacheData {
-                let jsonString: String = (model["detail"] as? String) ?? ""
-                let jsonData: Data = jsonString.data(using: .utf8)!
-                let dict = try?JSONSerialization.jsonObject(with: jsonData)
-                infoDict = dict as! NSDictionary
-            }
-            self.parseData(data: cacheData, isNeedLocalComparison: true) { result in
-                if result.count != 0 {
-                    info = result.first!
-                    completion(result.first, nil, nil)
-                }
-            }
-        }
+//        let cacheData = KMAdvertisementCache.default.readData()
+//        if cacheData.count != 0 {
+//            for model in cacheData {
+//                let jsonString: String = (model["detail"] as? String) ?? ""
+//                let jsonData: Data = jsonString.data(using: .utf8)!
+//                let dict = try?JSONSerialization.jsonObject(with: jsonData)
+//                infoDict = dict as! NSDictionary
+//            }
+//            self.parseData(data: cacheData, isNeedLocalComparison: true) { result in
+//                if result.count != 0 {
+//                    info = result.first!
+//                    completion(result.first, nil, nil)
+//                }
+//            }
+//        }
         
         unowned let weakSelf = self
         KMAdvertisementRequestServer.requestServer.request(urlString: urlString, method: "GET", params: params) { [self] task, responseObject, error in
@@ -201,29 +201,6 @@ extension KMAdvertisementManager {
         return result
     }
     
-    //    func allowLoadContentData(data: KMAdvertisementModel) -> Bool {
-    //        var result = false
-    //
-    //        let time: NSInteger = NSInteger(KMAdvertisementTimeStampConversion.getCurrentTimeInterval())!
-    //        let startTime: NSInteger = NSInteger(data.startTime!)!
-    //        let endTime: NSInteger = NSInteger(data.endTime!)!
-    //        let platform = configuration.platform
-    //        let subscribeType = configuration.subscribeType
-    //        let version = data.version ?? "1.0"
-    //        let localVersion = self.getLocalVersion()
-    //        let hidden = data.hidden ?? false
-    //
-    //        if (time >= startTime &&
-    //            time <= endTime &&
-    //            platform == data.platform &&
-    //            self.compareVersion(nowVersion:localVersion, newVersion: version) &&
-    //            (subscribeType == data.subscribeType || data.subscribeType == .all) &&
-    //            !hidden) {
-    //            result = true
-    //        }
-    //        return result
-    //    }
-    
     //过滤item是否显示
     func allowLoadItemData(_ data: KMAdvertisementInfo) -> KMAdvertisementInfo {
         let advertisement = data.advertisement
@@ -241,6 +218,21 @@ extension KMAdvertisementManager {
         recommondContent?.recommondContentPDFPro = recommondContentPDFPro
         data.recommondContent = recommondContent
         
+        let topRightInfoContent = data.topRightInfoContent
+        if let content = topRightInfoContent?.content {
+            topRightInfoContent?.content = self.canShow(data: content)
+        }
+        
+        let loginViewContent = data.loginViewContent
+        if let content = loginViewContent?.content {
+            loginViewContent?.content = self.canShow(data: content)
+        }
+        
+        let userViewInfoContent = data.userViewInfoContent
+        if let content = userViewInfoContent?.content {
+            userViewInfoContent?.content = self.canShow(data: content)
+        }
+        
         return data;
     }
     
@@ -262,7 +254,7 @@ extension KMAdvertisementManager {
                         canAdd = false
                     }
                 }
-            
+                
                 if canAdd {
                     dataArray.append(item)
                 }
@@ -272,61 +264,6 @@ extension KMAdvertisementManager {
         return dataArray
     }
     
-//    + (BOOL)checkAdvertisementValid:(KMRecommondInfo *)info {
-//    #if DEBUG
-//        [[NSUserDefaults standardUserDefaults] removeObjectForKey:info.versionKey];
-//    #endif
-//        if ([[NSUserDefaults standardUserDefaults] objectForKey:info.versionKey]) {
-//            return NO;
-//        }
-//        if (!info.show) {
-//            return NO;
-//        }
-//        if (info.showType == KMRecommondShowType_Lite) {
-//            if ([[IAPProductsManager defaultManager] isAvailableAllFunction]) {
-//                return NO;
-//            }
-//        } else if (info.showType == KMRecommondShowType_Pro) {
-//            if (![[IAPProductsManager defaultManager] isAvailableAllFunction]) {
-//                return NO;
-//            }
-//        }
-//        return YES;
-//    }
-    
-//    func allowLoadItemData(_ data: KMAdvertisementModel) -> KMAdvertisementModel {
-//        //获取缓存数据
-//        if (UserDefaults.standard.object(forKey: "KMAdvertisementShowScroll_iOS") == nil) {
-//            UserDefaults.standard.set([], forKey: "KMAdvertisementShowScroll_iOS")
-//        }
-//        let cacheArray: [String] = UserDefaults.standard.object(forKey: "KMAdvertisementShowScroll_iOS") as! [String]
-//        
-//        let model = data
-//        var sections: [KMAdvertisementModelSection] = []
-//        for section in data.content! {
-//            var items: [KMAdvertisementModelItem] = []
-//            for item in section.content! {
-//                let timeString = KMAdvertisementTimeStampConversion.getCurrentTimeInterval()
-//                let time: NSInteger = NSInteger(timeString)!
-//                let startTime: NSInteger = NSInteger(item.startTime ?? timeString)!
-//                let endTime: NSInteger = NSInteger(item.endTime ?? timeString)!
-//                let hidden = item.hidden ?? false
-//
-////                print(hidden ? "隐藏" : "显示")
-//                if (!hidden &&
-//                    time >= startTime &&
-//                    time <= endTime &&
-//                    !cacheArray.contains(item.productID ?? "")) {
-//                    items.append(item)
-//                }
-//            }
-//            section.content = items
-//            sections.append(section)
-//        }
-//        model.content = sections
-//        return model
-//    }
-    
     //获取本地版本号
     func getLocalVersion() -> String {
         var localVersion = ""
@@ -362,9 +299,9 @@ extension KMAdvertisementManager {
 
 extension KMAdvertisementManager {
     static func checkAdvertisementValid(_ info: KMAdvertisementItemInfo) -> Bool {
-        #if DEBUG
+#if DEBUG
         UserDefaults.standard.removeObject(forKey: info.version ?? "")
-        #endif
+#endif
         
         if UserDefaults.standard.object(forKey: info.version ?? "") != nil {
             return false
@@ -377,14 +314,12 @@ extension KMAdvertisementManager {
         let currentTime = Int(NSDate.init().timeIntervalSince1970 * 1000)
         if currentTime > Int(info.startTime ?? "0") ?? currentTime &&
             currentTime < Int(info.endTime ?? "0") ?? currentTime {
-           
+            
         } else {
             return false
         }
         
-        
         if info.subscriptionType == "1" {
-//            if IAPProductsManager.default().isAvailableAllFunction() {
             if IAPProductsManager.default().isAvailableAllFunction() == true {
                 return false
             }

+ 3 - 8
PDF Office/PDF Master/Class/KMAdvertisement/Model/KMAdvertisementImage.swift

@@ -54,11 +54,9 @@ class KMAdvertisementImageCache: NSObject {
                 try?FileManager.default.createDirectory(atPath: path as String, withIntermediateDirectories: true, attributes: nil)
             }
             
-            #if os(iOS)
+#if os(iOS)
             
-//            [UIImagePNGRepresentation(image) writeToFile:path + name
-//                                              atomically:YES]
-            #elseif os(OSX)
+#elseif os(OSX)
             let cgimage = image.cgImage(forProposedRect: nil, context: nil, hints: nil)
             if cgimage != nil {
                 let rep = NSBitmapImageRep.init(cgImage: cgimage!)
@@ -67,7 +65,7 @@ class KMAdvertisementImageCache: NSObject {
                 try?image.tiffRepresentation?.write(to: URL(fileURLWithPath: filePath))
             }
             print(path)
-            #endif
+#endif
         }
     }
     
@@ -83,9 +81,6 @@ class KMAdvertisementImageCache: NSObject {
         
         if (contentsOfPath!.contains(name)) {
             string = (kImageCacheFilePath as String) + "/" + name
-//            print("图片存在" + string)
-        } else {
-//            print("图片不存在" + (kImageCacheFilePath as String) + "/" + name)
         }
         return string
     }

+ 5 - 88
PDF Office/PDF Master/Class/KMAdvertisement/Model/KMAdvertisementModel.swift

@@ -14,6 +14,11 @@
     public var discountContent: KMAdvertisementItem?
     public var popWindowContent: KMAdvertisementItem?
     public var StoreUserRecovery: KMAdvertisementItem?
+    
+    public var topRightInfoContent: KMAdvertisementItem?  //顶部右上角信息
+    public var loginViewContent: KMAdvertisementItem?  //登录界面信息
+    public var userViewInfoContent: KMAdvertisementItem?   //会员信息界面信息
+    
 }
 
 @objcMembers public class KMAdvertisementContent: NSObject, Codable {
@@ -80,91 +85,3 @@ public class Language: NSObject, Codable {
     var zh_TW: String?
     var zh_CN: String?
 }
-
-//@objcMembers public class KMAdvertisementModel: NSObject, Codable {
-//    public var appName: KMAdvertisementAppNameType = .FilmageEditorMac //产品名
-//    public var platform: KMAdvertisementPlatformType = .Mac //平台
-//    public var showType: KMAdvertisementShowType = .view //显示类型
-//    public let startTime: String? //开始时间 时间戳
-//    public let endTime: String? //结束时间 时间戳
-//    public let version: String? //小于等于此版本生效
-//    public let hidden: Bool? //是否显示
-//    let subscribeType: KMAdvertisementSubscribeType? //是否订阅
-//    public var content: [KMAdvertisementModelSection]?
-//}
-//
-//@objcMembers public class KMAdvertisementModelSection: NSObject, Codable {
-//    public let sectionTitle: KMAdvertisementModelItem.Text?
-//    public var content: [KMAdvertisementModelItem]?
-//}
-//
-//@objcMembers public class KMAdvertisementModelItem: NSObject, Codable {
-//    public var productID: String?
-//    public let startTime: String? //开始时间 时间戳
-//    public let endTime: String? //结束时间 时间戳
-//    public var hidden: Bool?
-//    
-//    public var index: Int?
-//    public let title: Text?
-//    public let imageURL: Image?
-//    public let ipadImageURL: Image?
-//    public let linkURL: Language?
-//    public let tips: Language?
-//    public let button: Text?
-//    public var actionType: KMAdvertisementActionType = .URL
-//    
-//    public struct Text: Codable {
-//        public let font: Font?
-//        public let color: Color?
-//        public let background: Background?
-//        public let language: Language?
-//    }
-//    
-//    public struct Font: Codable {
-//        public let name: String?
-//        public let size: Int?
-//    }
-//    
-//    public struct Color: Codable {
-//        let height: ColorState?
-//        let normal: ColorState?
-//        
-//        struct ColorState: Codable {
-//            public let dark: ColorInfo?
-//            public let universal: ColorInfo?
-//            
-//            struct ColorInfo: Codable {
-//                public var hex: String?
-//                public var alpha: Float?
-//            }
-//        }
-//    }
-//
-//    public struct Background: Codable {
-//        let color: Color?
-//        let layer: Layer?
-//        
-//        struct Layer: Codable {
-//            public let cornerRadius: CGFloat?
-//            public let borderWidth: CGFloat?
-//            public let borderColor: Color?
-//        }
-//    }
-//    
-//    public struct Image: Codable {
-//        public let height: ImageInfo?
-//        public let normal: ImageInfo?
-//        public let background: Background?
-//    }
-//    
-//    public struct ImageInfo: Codable {
-//        public let dark: Language?
-//        public let universal: Language?
-//    }
-//    
-//    public class Language: NSObject, Codable {
-//        public let en: String?
-//        public let zh_TW: String?
-//        public let zh_CN: String?
-//    }
-//}

+ 9 - 63
PDF Office/PDF Master/Class/KMAdvertisement/Model/KMAdvertisementModelTransition.swift

@@ -7,33 +7,6 @@
 import AppKit
 @objcMembers open class KMAdvertisementModelTransition: NSObject {
     //MARK: 模型转换
-    //颜色模型转换
-//    public static func transitionColor(color: KMAdvertisementModelItem.Color?, highlight:Bool) -> NSColor {
-//        var result = NSColor.clear
-//        guard let tempColor = color else { return result }
-//        
-//        if highlight {
-//            let darkHex = tempColor.height?.dark?.hex
-//            let darkAlpha = tempColor.height?.dark?.alpha
-//            let universalHex = tempColor.height?.universal?.hex
-//            let universalAlpha = tempColor.height?.universal?.alpha
-//            let light = NSColor.init(hex: universalHex ?? "").withAlphaComponent(CGFloat(universalAlpha ?? 1))
-//            let dark = NSColor.init(hex: darkHex ?? universalHex ?? "").withAlphaComponent(CGFloat(darkAlpha ?? universalAlpha ?? 1))
-//            
-//            result = KMAdvertisementConfig.adapterDark(light: light , dark: dark) as! NSColor
-//        } else {
-//            let darkHex = tempColor.normal?.dark?.hex
-//            let darkAlpha = tempColor.normal?.dark?.alpha
-//            let universalHex = tempColor.normal?.universal?.hex
-//            let universalAlpha = tempColor.normal?.universal?.alpha
-//            
-//            let light = NSColor.init(hex: universalHex ?? "").withAlphaComponent(CGFloat(universalAlpha ?? 1))
-//            let dark = NSColor.init(hex: darkHex ?? universalHex ?? "").withAlphaComponent(CGFloat(darkAlpha ?? universalAlpha ?? 1))
-//            result = KMAdvertisementConfig.adapterDark(light: light, dark: dark) as! NSColor
-//        }
-//        
-//        return result
-//    }
     
     //图片转换
     public static func transitionImagePath(image: KMAdvertisementItemInfo.Image?, highlight:Bool) -> String {
@@ -80,8 +53,6 @@ import AppKit
         let chooseLanguage = allLanguages.first
         return chooseLanguage ?? "en"
 #elseif os(OSX)
-//        let locale = NSLocale.current.languageCode
-        //        let chooseLanguage = Locale.preferredLanguages[0]
         let allLanguages: [String] = UserDefaults.standard.object(forKey: "AppleLanguages") as! [String]
         let chooseLanguage: String = allLanguages.first ?? "en"
         return chooseLanguage
@@ -116,39 +87,14 @@ extension NSColor {
         } else {
             self.init(hex: 0)  // <--- black
         }
-        // or using ternaries as requested
-        // let hexString = hex.starts(with: "#") ? String(hex.dropFirst()) : hex
-        // let ui64 = UInt64(hexString, radix: 16)
-        // self.init(hex: ui64 != nil ? Int(ui64!) : 0)
     }
-        
-        convenience init(hex: Int) {
-            let components = (
-                R: CGFloat((hex >> 16) & 0xff) / 255,
-                G: CGFloat((hex >> 08) & 0xff) / 255,
-                B: CGFloat((hex >> 00) & 0xff) / 255
-            )
-            self.init(red: components.R, green: components.G, blue: components.B, alpha: 1)
-        }
-
-//     func toHex(alpha: Bool = false) -> String? {
-//        guard let components = cgColor.components, components.count >= 3 else {
-//            return nil
-//        }
-//        
-//        let r = Float(components[0])
-//        let g = Float(components[1])
-//        let b = Float(components[2])
-//        var a = Float(1.0)
-//        
-//        if components.count >= 4 {
-//            a = Float(components[3])
-//        }
-//        
-//        if alpha {
-//            return String(format: "%02lX%02lX%02lX%02lX", lroundf(r * 255), lroundf(g * 255), lroundf(b * 255), lroundf(a * 255))
-//        } else {
-//            return String(format: "%02lX%02lX%02lX", lroundf(r * 255), lroundf(g * 255), lroundf(b * 255))
-//        }
-//    }
+    
+    convenience init(hex: Int) {
+        let components = (
+            R: CGFloat((hex >> 16) & 0xff) / 255,
+            G: CGFloat((hex >> 08) & 0xff) / 255,
+            B: CGFloat((hex >> 00) & 0xff) / 255
+        )
+        self.init(red: components.R, green: components.G, blue: components.B, alpha: 1)
+    }
 }

+ 2 - 1
PDF Office/PDF Master/Class/KMAdvertisement/View/KMRecommondPopWindow/KMRecommondPopWindow.m

@@ -114,8 +114,9 @@ NSWindowDelegate>
 #pragma mark - Noti
 - (void)recommondInfoUpdateNoti:(NSNotification *)noti {
     if ([noti.object[@"unique"] isEqualToString:_info.version]) {
+        __weak typeof(self) weakSelf = self;
         dispatch_async(dispatch_get_main_queue(), ^{
-            self.infoImg.image = _info.iconImage;
+            weakSelf.infoImg.image = weakSelf.info.iconImage;
         });
     }
 }

+ 3 - 3
PDF Office/PDF Master/Class/KMAdvertisement/View/Tableview/Cell/KMAdvertisementCollectionHeadView.xib

@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22155" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
         <customObject id="-2" userLabel="File's Owner"/>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
-        <customView id="c22-O7-iKe" customClass="KMAdvertisementCollectionHeadView" customModule="PDF_Master" customModuleProvider="target">
+        <customView id="c22-O7-iKe" customClass="KMAdvertisementCollectionHeadView" customModule="PDF_Reader_Pro" customModuleProvider="target">
             <rect key="frame" x="0.0" y="0.0" width="480" height="30"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>

+ 3 - 3
PDF Office/PDF Master/Class/KMAdvertisement/View/Tableview/Cell/KMAdvertisementCollectionViewItem.xib

@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22155" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMAdvertisementCollectionViewItem" customModule="PDF_Master" customModuleProvider="target">
+        <customObject id="-2" userLabel="File's Owner" customClass="KMAdvertisementCollectionViewItem" customModule="PDF_Reader_Pro" customModuleProvider="target">
             <connections>
                 <outlet property="contentView" destination="LdM-b2-48C" id="hxf-ZH-gmW"/>
                 <outlet property="iconImageView" destination="EPJ-sc-6wa" id="qq0-MW-YTG"/>

+ 16 - 0
PDF Office/PDF Master/Class/Purchase/DMG/Verification/KMVerificationMessageViewController.m

@@ -439,6 +439,14 @@ NSPopoverDelegate>
         [KMMemberInfo shared].userScenarioType == KMUserScenarioTypePro_type4) {
         if ([KMMemberInfo shared].userScenarioType == KMUserScenarioTypeLite_type1) {
             self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(@"Free Trial", nil)];
+            
+            if (KMAdvertisementManager.manager.info.topRightInfoContent != nil) {
+                if (KMAdvertisementManager.manager.info.topRightInfoContent.content.firstObject != nil) {
+                    KMAdvertisementItemInfo *info = KMAdvertisementManager.manager.info.topRightInfoContent.content.firstObject;
+                    NSString *name = [KMAdvertisementModelTransition transitionLanguageWithLangeuage:info.name];
+                    self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(name, nil)];
+                }
+            }
         } else if ([KMMemberInfo shared].userScenarioType == KMUserScenarioTypeLite_type3 ||
                    [KMMemberInfo shared].userScenarioType == KMUserScenarioTypeLite_type11) {
             self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(@"开通会员", nil)];
@@ -448,6 +456,14 @@ NSPopoverDelegate>
                    [KMMemberInfo shared].userScenarioType == KMUserScenarioTypePro_type3 ||
                    [KMMemberInfo shared].userScenarioType == KMUserScenarioTypePro_type4) {
             self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(@"Upgrade", nil)];
+
+            if (KMAdvertisementManager.manager.info.topRightInfoContent != nil) {
+                if (KMAdvertisementManager.manager.info.topRightInfoContent.content.firstObject != nil) {
+                    KMAdvertisementItemInfo *info = KMAdvertisementManager.manager.info.topRightInfoContent.content.firstObject;
+                    NSString *name = [KMAdvertisementModelTransition transitionLanguageWithLangeuage:info.name];
+                    self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(name, nil)];
+                }
+            }
         } else if ([KMMemberInfo shared].userScenarioType == KMUserScenarioTypeLite_type7
 //                   [KMMemberInfo shared].userScenarioType == KMUserScenarioTypeLite_type8 ||
                    /*[KMMemberInfo shared].userScenarioType == KMUserScenarioTypeLite_type13*/) {

+ 1 - 1
PDF Office/PDF Master/Class/Purchase/DMG/Verification/VerificationManager/VerificationManager.h

@@ -12,7 +12,7 @@
 //#import "ASIFormDataRequest.h"
 //#import "JSONKit.h"
 
-#define kTestMode   0
+#define kTestMode   1
 
 #if kTestMode
 

+ 13 - 0
PDF Office/PDF Master/MemberCenter/ViewController/KMUserInfoViewController.swift

@@ -59,6 +59,8 @@ class KMUserInfoViewController: NSViewController {
     @IBOutlet weak var buyNow2ImageView: NSImageView!
     @IBOutlet weak var buyNow2Label: NSTextField!
     @IBOutlet weak var arrow2ImageView: NSImageView!
+    @IBOutlet var buyNow1BoxLeftConst: NSLayoutConstraint!
+    
     
     @IBOutlet var buyView2: NSView!
     @IBOutlet weak var buyNow3Box: KMBox!
@@ -680,6 +682,17 @@ class KMUserInfoViewController: NSViewController {
             guard let self = self else { return }
             self.viewModel.closeAccountAction()
         }
+        
+        buyNow1BoxLeftConst.constant = 0
+        buyNow2Box.isHidden = false
+        
+        //远程控制
+        if let userViewInfoContent = KMAdvertisementManager.manager.info.userViewInfoContent {
+            if userViewInfoContent.content?.isEmpty == false {
+                buyNow2Box.isHidden = true
+                buyNow1BoxLeftConst.constant = (CGRectGetWidth(view.bounds) - CGRectGetWidth(buyNow1Box.frame))/2
+            }
+        }
     }
     
     // MARK: Bind Method

+ 4 - 3
PDF Office/PDF Master/MemberCenter/ViewController/KMUserInfoViewController.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23504" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23504"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -16,6 +16,7 @@
                 <outlet property="arrow3ImageView" destination="kWk-i6-sxc" id="cUM-Ch-dKW"/>
                 <outlet property="buyBox" destination="JDC-Jw-Qew" id="Ugw-0S-CLC"/>
                 <outlet property="buyNow1Box" destination="ASn-b5-7AK" id="XJ9-tS-uDL"/>
+                <outlet property="buyNow1BoxLeftConst" destination="eOH-5L-pjI" id="j9u-UP-zb2"/>
                 <outlet property="buyNow1ImageView" destination="9G5-Lj-IYo" id="ISS-ZD-t8N"/>
                 <outlet property="buyNow1Label" destination="6va-5C-3xj" id="fYI-ae-2WR"/>
                 <outlet property="buyNow2Box" destination="DYW-qh-I2i" id="RYI-9z-uIw"/>
@@ -468,9 +469,9 @@
                                 </subviews>
                                 <constraints>
                                     <constraint firstAttribute="bottom" secondItem="9G5-Lj-IYo" secondAttribute="bottom" id="8Mm-5i-lOz"/>
+                                    <constraint firstAttribute="trailing" secondItem="YXg-Wy-AlP" secondAttribute="trailing" constant="12" id="Aib-gQ-1xh"/>
                                     <constraint firstItem="9G5-Lj-IYo" firstAttribute="leading" secondItem="ZXo-Sc-FgD" secondAttribute="leading" id="L3C-LC-xnI"/>
                                     <constraint firstItem="YXg-Wy-AlP" firstAttribute="leading" secondItem="6va-5C-3xj" secondAttribute="trailing" constant="4" id="VZX-OJ-RE0"/>
-                                    <constraint firstAttribute="trailing" secondItem="YXg-Wy-AlP" secondAttribute="trailing" constant="12" id="VwF-cm-Te1"/>
                                     <constraint firstAttribute="trailing" secondItem="9G5-Lj-IYo" secondAttribute="trailing" id="pam-t4-6SU"/>
                                     <constraint firstItem="9G5-Lj-IYo" firstAttribute="top" secondItem="ZXo-Sc-FgD" secondAttribute="top" id="tVk-92-JSG"/>
                                     <constraint firstItem="6va-5C-3xj" firstAttribute="leading" secondItem="ZXo-Sc-FgD" secondAttribute="leading" constant="12" id="uK8-ZZ-xl2"/>

+ 3 - 3
PDF Office/PDF Master/MemberCenter/WindowsController/KMCloseAccountWC.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23504" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23504"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -27,7 +27,7 @@
         <window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
             <rect key="contentRect" x="196" y="240" width="480" height="270"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1512" height="944"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1055"/>
             <view key="contentView" id="se5-gp-TjO">
                 <rect key="frame" x="0.0" y="0.0" width="358" height="274"/>
                 <autoresizingMask key="autoresizingMask"/>

+ 3 - 3
PDF Office/PDF Master/MemberCenter/WindowsController/KMCloseApplyWC.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23504" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23504"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -19,7 +19,7 @@
         <window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
             <rect key="contentRect" x="196" y="240" width="358" height="312"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1512" height="944"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1055"/>
             <value key="minSize" type="size" width="358" height="312"/>
             <value key="maxSize" type="size" width="358" height="312"/>
             <view key="contentView" id="se5-gp-TjO">

+ 3 - 3
PDF Office/PDF Master/MemberCenter/WindowsController/KMCloseVerificationWC.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23504" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23504"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -26,7 +26,7 @@
         <window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
             <rect key="contentRect" x="196" y="240" width="358" height="312"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1512" height="944"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1055"/>
             <value key="minSize" type="size" width="358" height="312"/>
             <value key="maxSize" type="size" width="358" height="312"/>
             <view key="contentView" id="se5-gp-TjO">

+ 28 - 0
PDF Office/PDF Master/MemberCenter/WindowsController/KMLoginWindowsController.swift

@@ -57,10 +57,38 @@ class KMLoginWindowsController: NSWindowController {
                 signUpView?.frame = rightBox.frame
                 rightBox.contentView = signUpView!
             }
+            //远程控制
+            if let loginContent = KMAdvertisementManager.manager.info.loginViewContent {
+                if loginContent.content?.isEmpty == false {
+                    let content = loginContent.content?.first
+                    let url = URL(string: KMAdvertisementModelTransition.transitionImagePath(image: content?.image, highlight: false))
+                    let _ = KMAdvertisementImage.imageWithURL(url: url) { [weak self] image in
+                        guard let self = self else { return }
+                        self.leftImageView.image = image
+                    }
+                }
+            }
+            
+            let signUpView = KMSignUpView()
+            signUpView.frame = rightBox.frame
+            rightBox.contentView = signUpView
             rightBox.fillColor = NSColor(named: "membercentercolor") ?? NSColor.white
         }
     }
     
+    @IBAction func leftButtonAction(_ sender: NSButton) {
+        //远程控制
+        if let loginContent = KMAdvertisementManager.manager.info.loginViewContent {
+            if loginContent.content?.isEmpty == false {
+                let content = loginContent.content?.first
+                let string = KMAdvertisementModelTransition.transitionLanguage(langeuage: content?.linkURL)
+                if string.count != 0  {
+                    NSWorkspace.shared.open(URL.init(string: string)!)
+                }
+            }
+        }
+    }
+    
     // MARK: public Action
     
     @objc func loginSuccessNotification() -> Void {

+ 17 - 3
PDF Office/PDF Master/MemberCenter/WindowsController/KMLoginWindowsController.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23504" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23504"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -19,7 +19,7 @@
         <window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" titlebarAppearsTransparent="YES" id="F0z-JX-Cv5">
             <windowStyleMask key="styleMask" titled="YES" closable="YES" fullSizeContentView="YES"/>
             <rect key="contentRect" x="196" y="240" width="661" height="443"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1512" height="944"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1055"/>
             <value key="minSize" type="size" width="661" height="443"/>
             <value key="maxSize" type="size" width="661" height="443"/>
             <view key="contentView" id="se5-gp-TjO">
@@ -36,11 +36,25 @@
                                     <rect key="frame" x="0.0" y="0.0" width="300" height="443"/>
                                     <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="IaG-H6-8fu"/>
                                 </imageView>
+                                <button translatesAutoresizingMaskIntoConstraints="NO" id="4Ss-Uv-N07">
+                                    <rect key="frame" x="0.0" y="0.0" width="300" height="443"/>
+                                    <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="1ve-Ab-F2H">
+                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                        <font key="font" metaFont="system"/>
+                                    </buttonCell>
+                                    <connections>
+                                        <action selector="leftButtonAction:" target="-2" id="6yF-ZP-iej"/>
+                                    </connections>
+                                </button>
                             </subviews>
                             <constraints>
                                 <constraint firstItem="Vcr-VH-8V2" firstAttribute="leading" secondItem="jLg-6t-1HG" secondAttribute="leading" id="QPr-HO-uyA"/>
                                 <constraint firstItem="Vcr-VH-8V2" firstAttribute="top" secondItem="jLg-6t-1HG" secondAttribute="top" id="S67-HU-1I1"/>
+                                <constraint firstAttribute="bottom" secondItem="4Ss-Uv-N07" secondAttribute="bottom" id="Zdu-5W-vKf"/>
+                                <constraint firstAttribute="trailing" secondItem="4Ss-Uv-N07" secondAttribute="trailing" id="cWU-Lq-uvz"/>
                                 <constraint firstAttribute="bottom" secondItem="Vcr-VH-8V2" secondAttribute="bottom" id="eQ1-1d-18e"/>
+                                <constraint firstItem="4Ss-Uv-N07" firstAttribute="leading" secondItem="jLg-6t-1HG" secondAttribute="leading" id="g1b-UH-cAb"/>
+                                <constraint firstItem="4Ss-Uv-N07" firstAttribute="top" secondItem="jLg-6t-1HG" secondAttribute="top" id="igE-ot-4iC"/>
                                 <constraint firstAttribute="trailing" secondItem="Vcr-VH-8V2" secondAttribute="trailing" id="mwZ-UH-tEE"/>
                             </constraints>
                         </view>

+ 3 - 3
PDF Office/PDF Master/MemberCenter/WindowsController/KMMemberPromptWC.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23504" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23504"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -20,7 +20,7 @@
         <window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
             <rect key="contentRect" x="196" y="240" width="332" height="153"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1512" height="944"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1055"/>
             <value key="minSize" type="size" width="332" height="153"/>
             <value key="maxSize" type="size" width="332" height="153"/>
             <view key="contentView" id="se5-gp-TjO">

Plik diff jest za duży
+ 109 - 1123
PDF Office/PDF Reader Pro.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist