Browse Source

【2025】Home界面处理

niehaoyu 5 months ago
parent
commit
dd41837bf2

+ 4 - 4
PDF Office/KMComponentLibrary/KMComponentLibrary.xcodeproj/project.pbxproj

@@ -685,8 +685,8 @@
 		BB5A9BF72CB64D4700F64C1F /* ComponentTextarea */ = {
 			isa = PBXGroup;
 			children = (
-				BB5A9BF82CB64D4700F64C1F /* ComponentTextarea.swift */,
 				BB5A9BF92CB64D4700F64C1F /* ComponentTextareaProperty.swift */,
+				BB5A9BF82CB64D4700F64C1F /* ComponentTextarea.swift */,
 				BB5A9BFA2CB64D4700F64C1F /* ComponentTextarea.xib */,
 			);
 			path = ComponentTextarea;
@@ -818,12 +818,12 @@
 			isa = PBXGroup;
 			children = (
 				BB5A9C2C2CB64D4700F64C1F /* ComponentCSelectorProperty.swift */,
+				BB5A9C3B2CB64D4700F64C1F /* ComponentCSelector.swift */,
+				BB5A9C3A2CB64D4700F64C1F /* ComponentCSelector.xib */,
+				BB5A9C3C2CB64D4700F64C1F /* ComponentCSelectorGroup.swift */,
 				BB5A9C2D2CB64D4700F64C1F /* ComponentCSelectorGroup.xib */,
 				BB5A9C2E2CB64D4700F64C1F /* Position */,
 				BB5A9C322CB64D4700F64C1F /* Color */,
-				BB5A9C3A2CB64D4700F64C1F /* ComponentCSelector.xib */,
-				BB5A9C3B2CB64D4700F64C1F /* ComponentCSelector.swift */,
-				BB5A9C3C2CB64D4700F64C1F /* ComponentCSelectorGroup.swift */,
 			);
 			path = Controller;
 			sourceTree = "<group>";

+ 11 - 2
PDF Office/KMComponentLibrary/KMComponentLibrary/ComponentLibrary.swift

@@ -220,6 +220,15 @@ extension ComponentLibrary: JSONParserDelegate {
 // MARK: - Public Method
 extension ComponentLibrary {
     
+    public func getComponentColorFromKey(_ key: String) -> NSColor {
+        if let value = self.getComponentValueFromKey(key) {
+            let currentValue = value as! [String : Any]
+            return self.getColor(rgbaDict: currentValue)
+        } else {
+            return NSColor.clear
+        }
+    }
+    
     //通过Dict获取颜色值
     public func getColor(rgbaDict: [String : Any]) -> NSColor {
         if let r = rgbaDict["r"], let g = rgbaDict["g"], let b = rgbaDict["b"], let a = rgbaDict["a"]  {
@@ -245,7 +254,7 @@ extension ComponentLibrary {
         return nil
     }
     
-    public func getFontFromKey(_ key: String) -> NSFont? {
+    public func getFontFromKey(_ key: String) -> NSFont {
         if let value = ComponentLibrary.shared.getComponentValueFromKey(key) {
             let currentValue = value as! [String : Any]
             
@@ -259,7 +268,7 @@ extension ComponentLibrary {
                 }
             }
         }
-        return nil
+        return NSFont.systemFont(ofSize: 12)
     }
     
     //MARK: -CompField相关属性

+ 14 - 9
PDF Office/KMComponentLibrary/KMComponentLibrary/View/Controller/ComponentCSelector.swift

@@ -59,9 +59,7 @@ public class ComponentCSelector: ComponentBaseXibView {
             
             ComponentLibrary.shared.configCSelectorComponent(properties: _properties)
             
-            self.setupUI()
-            
-            self.refreshUI()
+            self.reloadData()
         }
     }
     
@@ -97,6 +95,7 @@ public class ComponentCSelector: ComponentBaseXibView {
             
         }
         
+        self.iconImage.image = properties.iconImage
         
     }
     
@@ -136,6 +135,13 @@ public class ComponentCSelector: ComponentBaseXibView {
         self.action = action!
     }
     
+    public func reloadData() {
+        
+        self.setupUI()
+        
+        self.refreshUI()
+    }
+    
     //MARK: - MouseEvent
     public override func mouseEntered(with event: NSEvent) {
         super.mouseEntered(with: event)
@@ -163,11 +169,6 @@ public class ComponentCSelector: ComponentBaseXibView {
     
     public override func mouseDown(with event: NSEvent) {
         super.mouseDown(with: event)
-    
-    }
-    
-    public override func mouseUp(with event: NSEvent) {
-        super.mouseUp(with: event)
         
         if self.properties.state == .pressed {
             self.properties.state = .normal
@@ -176,7 +177,11 @@ public class ComponentCSelector: ComponentBaseXibView {
         }
         
         self.refreshUI()
-        
+    }
+    
+    public override func mouseUp(with event: NSEvent) {
+        super.mouseUp(with: event)
+         
         if let target = target, let action = action {
             _ = target.perform(action, with: self)
         }

+ 4 - 1
PDF Office/KMComponentLibrary/KMComponentLibrary/View/Controller/ComponentCSelectorProperty.swift

@@ -13,16 +13,19 @@ import Cocoa
     public var size: ComponentSize = .m //Size
     public var state: ComponentState = .normal    //状态
     public var text: String?                      //文字信息
+    public var iconImage: NSImage?
     
     public var propertyInfo = CSelectorPropertyInfo()
     
     public init(size: ComponentSize = .m,
                 state: ComponentState = .normal,
-                text: String? = nil) {
+                text: String? = nil,
+                iconImage: NSImage? = nil) {
 
         self.size = size
         self.state = state
         self.text = text
+        self.iconImage = iconImage
         
     }
 }

+ 4 - 5
PDF Office/KMComponentLibrary/KMComponentLibrary/View/Navigation/ComponentNavBarItem.swift

@@ -141,15 +141,14 @@ public class ComponentNavBarItem: ComponentBaseXibView {
     
     public override func mouseDown(with event: NSEvent) {
         super.mouseDown(with: event)
-         
-    }
-    
-    public override func mouseUp(with event: NSEvent) {
-        super.mouseUp(with: event)
         
         self.properties.state = .pressed
         
         self.refreshUI()
+    }
+    
+    public override func mouseUp(with event: NSEvent) {
+        super.mouseUp(with: event)
         
         if let target = target, let action = action {
             _ = target.perform(action, with: self)

+ 68 - 68
PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController.swift

@@ -214,74 +214,74 @@ import Cocoa
     }
     
     func initNetworkingData() {
-        KMAdvertisementManager.manager.fetchDataWithResponseObject { [weak self] data, responseObject, error in
-            KMPrint("获取广告数据成功")
-            if data != nil {
-                let content = data!.recommondContent
-                let item = content?.recommondContentPDFPro
-                var infos: [KMAdvertisementItemInfo] = []
-                for info in item?.content ?? [] {
-                    if info.version == "recommondPDF-PDFtoOfficePack" {
-                        if IAPProductsManager.default().isAvailableAdvancedPDFToOffice() == false {
-                            infos.append(info)
-                        }
-                    } else {
-                        infos.append(info)
-                    }
-                }
-                item?.content = infos
-                self?.advertisementTableView.inputData = content
-                self?.advertisementTableView.didSelect = { view, item in
-                    let string = KMAdvertisementModelTransition.transitionLanguage(langeuage: item.linkURL)
-                    if string.count != 0  {
-                        NSWorkspace.shared.open(URL.init(string: string)!)
-                    }
-                }
-                
-                self?.advertisementShowView.inputData = data!.advertisement
-                self?.advertisementShowView.didSelect = { view, item in
-                    let string = KMAdvertisementModelTransition.transitionLanguage(langeuage: item.linkURL)
-                    if string.count != 0  {
-                        NSWorkspace.shared.open(URL.init(string: string)!)
-                    }
-                    
-                    guard let firebaseInfo = item.firebase else {
-                        return
-                    }
-                    KMAdvertisementModelTransition.sendFireBaseEvent(firebase: firebaseInfo)
-
-                }
-                
-                if KMAdvertisementManager.manager.infoDict.allKeys.count > 0 {
-                    if let adsInfo = KMAdvertisementManager.manager.infoDict["adsInfo"] {
-                        let infoDict: NSDictionary = KMAdvertisementManager.manager.infoDict["adsInfo"] as! NSDictionary
-                        let array: [[String: Any]] = infoDict["content"] as! [[String : Any]]
-                        
-                        let arrM = NSMutableArray.init()
-                        for dict in array {
-                            let adsInfo = KMAdsInfo.init()
-                            let mutableDictionary = NSMutableDictionary(dictionary: dict)
-                            adsInfo.infoDict = mutableDictionary
-                            arrM.add(adsInfo)
-                        }
-                        KMAdsInfoManager.shareInstance.adsInfoArrM = arrM
-                    }
-                    
-                    if let couponInfo = KMAdvertisementManager.manager.infoDict["couponContent"] {
-                        let infoDict: NSDictionary = KMAdvertisementManager.manager.infoDict["couponContent"] as! NSDictionary
-                        let array: [[String: Any]] = infoDict["content"] as! [[String : Any]]
-                        if array.isEmpty == false {
-                            let dict = array[0]
-                            let adsInfo = KMCouponInfo.init()
-                            let mutableDictionary = NSMutableDictionary(dictionary: dict)
-                            adsInfo.infoDict = mutableDictionary
-                            KMAdsInfoManager.shareInstance.couponInfo = adsInfo
-                        }
-                    }
-                    self?.checkTrialEndCouponInfo()
-                }
-            }
-        }
+//        KMAdvertisementManager.manager.fetchDataWithResponseObject { [weak self] data, responseObject, error in
+//            KMPrint("获取广告数据成功")
+//            if data != nil {
+//                let content = data!.recommondContent
+//                let item = content?.recommondContentPDFPro
+//                var infos: [KMAdvertisementItemInfo] = []
+//                for info in item?.content ?? [] {
+//                    if info.version == "recommondPDF-PDFtoOfficePack" {
+//                        if IAPProductsManager.default().isAvailableAdvancedPDFToOffice() == false {
+//                            infos.append(info)
+//                        }
+//                    } else {
+//                        infos.append(info)
+//                    }
+//                }
+//                item?.content = infos
+//                self?.advertisementTableView.inputData = content
+//                self?.advertisementTableView.didSelect = { view, item in
+//                    let string = KMAdvertisementModelTransition.transitionLanguage(langeuage: item.linkURL)
+//                    if string.count != 0  {
+//                        NSWorkspace.shared.open(URL.init(string: string)!)
+//                    }
+//                }
+//                
+//                self?.advertisementShowView.inputData = data!.advertisement
+//                self?.advertisementShowView.didSelect = { view, item in
+//                    let string = KMAdvertisementModelTransition.transitionLanguage(langeuage: item.linkURL)
+//                    if string.count != 0  {
+//                        NSWorkspace.shared.open(URL.init(string: string)!)
+//                    }
+//                    
+//                    guard let firebaseInfo = item.firebase else {
+//                        return
+//                    }
+//                    KMAdvertisementModelTransition.sendFireBaseEvent(firebase: firebaseInfo)
+//
+//                }
+//                
+//                if KMAdvertisementManager.manager.infoDict.allKeys.count > 0 {
+//                    if let adsInfo = KMAdvertisementManager.manager.infoDict["adsInfo"] {
+//                        let infoDict: NSDictionary = KMAdvertisementManager.manager.infoDict["adsInfo"] as! NSDictionary
+//                        let array: [[String: Any]] = infoDict["content"] as! [[String : Any]]
+//                        
+//                        let arrM = NSMutableArray.init()
+//                        for dict in array {
+//                            let adsInfo = KMAdsInfo.init()
+//                            let mutableDictionary = NSMutableDictionary(dictionary: dict)
+//                            adsInfo.infoDict = mutableDictionary
+//                            arrM.add(adsInfo)
+//                        }
+//                        KMAdsInfoManager.shareInstance.adsInfoArrM = arrM
+//                    }
+//                    
+//                    if let couponInfo = KMAdvertisementManager.manager.infoDict["couponContent"] {
+//                        let infoDict: NSDictionary = KMAdvertisementManager.manager.infoDict["couponContent"] as! NSDictionary
+//                        let array: [[String: Any]] = infoDict["content"] as! [[String : Any]]
+//                        if array.isEmpty == false {
+//                            let dict = array[0]
+//                            let adsInfo = KMCouponInfo.init()
+//                            let mutableDictionary = NSMutableDictionary(dictionary: dict)
+//                            adsInfo.infoDict = mutableDictionary
+//                            KMAdsInfoManager.shareInstance.couponInfo = adsInfo
+//                        }
+//                    }
+//                    self?.checkTrialEndCouponInfo()
+//                }
+//            }
+//        }
     }
     
     func setup() {

+ 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"/>

+ 56 - 0
PDF Office/PDF Master/KMClass/KMHomeViewController/KMNHomeViewController.swift

@@ -11,13 +11,69 @@ class KMNHomeViewController: NSViewController {
 
     @IBOutlet var homeOpenView: KMHomeOpenView!
     
+    @IBOutlet var homeRecommondView: KMHomeRecommondView!
+    
     override func viewDidLoad() {
         super.viewDidLoad()
         // Do view setup here.
         
         homeOpenView.delegate = self
+        
+        self.initAdvertisementData()
     }
     
+    func initAdvertisementData() {
+        KMAdvertisementManager.manager.fetchDataWithResponseObject { [weak self] data, responseObject, error in
+            KMPrint("获取广告数据成功")
+            if data != nil {
+                let content = data!.recommondContent
+                
+                let item = content?.recommondContentPDFPro
+                var infos: [KMAdvertisementItemInfo] = []
+                for info in item?.content ?? [] {
+                    if info.version == "recommondPDF-PDFtoOfficePack" {
+                        if IAPProductsManager.default().isAvailableAdvancedPDFToOffice() == false {
+                            infos.append(info)
+                        }
+                    } else {
+                        infos.append(info)
+                    }
+                }
+                item?.content = infos
+                
+                if KMAdvertisementManager.manager.infoDict.allKeys.count > 0 {
+                    if let adsInfo = KMAdvertisementManager.manager.infoDict["adsInfo"] {
+                        let infoDict: NSDictionary = KMAdvertisementManager.manager.infoDict["adsInfo"] as! NSDictionary
+                        let array: [[String: Any]] = infoDict["content"] as! [[String : Any]]
+                        
+                        let arrM = NSMutableArray.init()
+                        for dict in array {
+                            let adsInfo = KMAdsInfo.init()
+                            let mutableDictionary = NSMutableDictionary(dictionary: dict)
+                            adsInfo.infoDict = mutableDictionary
+                            arrM.add(adsInfo)
+                        }
+                        KMAdsInfoManager.shareInstance.adsInfoArrM = arrM
+                    }
+                    
+                    if let couponInfo = KMAdvertisementManager.manager.infoDict["couponContent"] {
+                        let infoDict: NSDictionary = KMAdvertisementManager.manager.infoDict["couponContent"] as! NSDictionary
+                        let array: [[String: Any]] = infoDict["content"] as! [[String : Any]]
+                        if array.isEmpty == false {
+                            let dict = array[0]
+                            let adsInfo = KMCouponInfo.init()
+                            let mutableDictionary = NSMutableDictionary(dictionary: dict)
+                            adsInfo.infoDict = mutableDictionary
+                            KMAdsInfoManager.shareInstance.couponInfo = adsInfo
+                        }
+                    }
+                }
+                
+                self?.homeRecommondView.reloadData()
+                
+            }
+        }
+    }
 }
 
 

+ 16 - 6
PDF Office/PDF Master/KMClass/KMHomeViewController/KMNHomeViewController.xib

@@ -9,37 +9,47 @@
         <customObject id="-2" userLabel="File's Owner" customClass="KMNHomeViewController" customModule="PDF_Reader_Pro" customModuleProvider="target">
             <connections>
                 <outlet property="homeOpenView" destination="Bxr-Ds-C57" id="DCS-RO-SoJ"/>
+                <outlet property="homeRecommondView" destination="SUk-pI-GKI" id="QLA-2x-bdU"/>
                 <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
             </connections>
         </customObject>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="Hz6-mo-xeY">
-            <rect key="frame" x="0.0" y="0.0" width="584" height="408"/>
+            <rect key="frame" x="0.0" y="0.0" width="569" height="469"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="6Nj-0K-OdC">
-                    <rect key="frame" x="0.0" y="0.0" width="584" height="408"/>
+                    <rect key="frame" x="0.0" y="0.0" width="569" height="469"/>
                     <subviews>
                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="elb-1V-cgI">
-                            <rect key="frame" x="0.0" y="0.0" width="240" height="408"/>
+                            <rect key="frame" x="0.0" y="0.0" width="240" height="469"/>
                             <subviews>
                                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="Bxr-Ds-C57" customClass="KMHomeOpenView" customModule="PDF_Reader_Pro" customModuleProvider="target">
-                                    <rect key="frame" x="16" y="284" width="208" height="92"/>
+                                    <rect key="frame" x="16" y="345" width="208" height="92"/>
                                     <constraints>
                                         <constraint firstAttribute="width" constant="208" id="90S-rZ-U5v"/>
                                         <constraint firstAttribute="height" constant="92" id="OcP-RR-aOy"/>
                                     </constraints>
                                 </customView>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="SUk-pI-GKI" customClass="KMHomeRecommondView" customModule="PDF_Reader_Pro" customModuleProvider="target">
+                                    <rect key="frame" x="16" y="16" width="208" height="305"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="208" id="OgS-Bf-gLn"/>
+                                    </constraints>
+                                </customView>
                             </subviews>
                             <constraints>
                                 <constraint firstItem="Bxr-Ds-C57" firstAttribute="centerX" secondItem="elb-1V-cgI" secondAttribute="centerX" id="5oo-uK-JgL"/>
                                 <constraint firstAttribute="width" constant="240" id="GIp-bc-gJQ"/>
                                 <constraint firstItem="Bxr-Ds-C57" firstAttribute="top" secondItem="elb-1V-cgI" secondAttribute="top" constant="32" id="GfU-54-afy"/>
+                                <constraint firstItem="SUk-pI-GKI" firstAttribute="centerX" secondItem="elb-1V-cgI" secondAttribute="centerX" id="aB5-Av-Nyq"/>
+                                <constraint firstAttribute="bottom" secondItem="SUk-pI-GKI" secondAttribute="bottom" constant="16" id="p9Q-6E-3Bf"/>
+                                <constraint firstItem="SUk-pI-GKI" firstAttribute="top" secondItem="Bxr-Ds-C57" secondAttribute="bottom" constant="24" id="yLo-oH-mlQ"/>
                             </constraints>
                         </customView>
                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="MCf-YB-R6z">
-                            <rect key="frame" x="240" y="0.0" width="344" height="408"/>
+                            <rect key="frame" x="240" y="0.0" width="329" height="469"/>
                         </customView>
                     </subviews>
                     <constraints>
@@ -59,7 +69,7 @@
                 <constraint firstAttribute="trailing" secondItem="6Nj-0K-OdC" secondAttribute="trailing" id="kBN-Zi-5O3"/>
                 <constraint firstItem="6Nj-0K-OdC" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="ydm-B1-D0A"/>
             </constraints>
-            <point key="canvasLocation" x="228" y="-88"/>
+            <point key="canvasLocation" x="220.5" y="75.5"/>
         </customView>
     </objects>
 </document>

+ 5 - 5
PDF Office/PDF Master/KMClass/KMHomeViewController/KMURLCreatePDFWindowController/KMURLCreatePDFWindowController.xib

@@ -46,7 +46,7 @@
                                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="WaW-eX-JhH">
                                     <rect key="frame" x="0.0" y="276" width="480" height="44"/>
                                     <subviews>
-                                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="QI6-z0-9LA">
+                                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="QI6-z0-9LA">
                                             <rect key="frame" x="22" y="14" width="130" height="16"/>
                                             <textFieldCell key="cell" lineBreakMode="clipping" title="New From Web Page" id="Q9r-qs-Y9x">
                                                 <font key="font" usesAppearanceFont="YES"/>
@@ -131,7 +131,7 @@
                                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="eEC-Mp-Gnv">
                                             <rect key="frame" x="0.0" y="76" width="432" height="40"/>
                                             <subviews>
-                                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="RF7-tv-Jrz">
+                                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="RF7-tv-Jrz">
                                                     <rect key="frame" x="-2" y="12" width="121" height="16"/>
                                                     <textFieldCell key="cell" lineBreakMode="clipping" title="Page Configuration" id="5HY-iP-7gs">
                                                         <font key="font" usesAppearanceFont="YES"/>
@@ -149,7 +149,7 @@
                                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="QGX-Yf-dfs">
                                             <rect key="frame" x="0.0" y="44" width="432" height="32"/>
                                             <subviews>
-                                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="xeU-19-U4j">
+                                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="xeU-19-U4j">
                                                     <rect key="frame" x="-2" y="8" width="68" height="16"/>
                                                     <textFieldCell key="cell" lineBreakMode="clipping" title="Page Size:" id="GQB-uA-kk5">
                                                         <font key="font" usesAppearanceFont="YES"/>
@@ -176,7 +176,7 @@
                                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="Yh7-64-KZy">
                                             <rect key="frame" x="0.0" y="4" width="432" height="32"/>
                                             <subviews>
-                                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dgM-nz-nYy">
+                                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dgM-nz-nYy">
                                                     <rect key="frame" x="-2" y="8" width="57" height="16"/>
                                                     <textFieldCell key="cell" lineBreakMode="clipping" title="Spacing:" id="mNQ-DX-g06">
                                                         <font key="font" usesAppearanceFont="YES"/>
@@ -191,7 +191,7 @@
                                                         <constraint firstAttribute="width" constant="96" id="sIv-Jl-ran"/>
                                                     </constraints>
                                                 </customView>
-                                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="G5B-GM-rTI">
+                                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="G5B-GM-rTI">
                                                     <rect key="frame" x="147" y="8" width="27" height="16"/>
                                                     <textFieldCell key="cell" lineBreakMode="clipping" title="mm" id="CUV-oB-e8A">
                                                         <font key="font" usesAppearanceFont="YES"/>

+ 122 - 0
PDF Office/PDF Master/KMClass/KMHomeViewController/Views/KMHomeRecommondView/KMHomeRecommondView.swift

@@ -0,0 +1,122 @@
+//
+//  KMHomeRecommondView.swift
+//  PDF Reader Pro
+//
+//  Created by Niehaoyu on 2024/10/10.
+//
+
+import Cocoa
+import KMComponentLibrary
+
+class KMHomeRecommondView: BaseXibView {
+    
+    @IBOutlet var dividerView: ComponentDivider!
+    
+    @IBOutlet var productsBGView: NSView!
+    @IBOutlet var productsLabel: NSTextField!
+    
+    @IBOutlet var othersBGView: NSView!
+    @IBOutlet var othersLabel: NSTextField!
+    @IBOutlet var othersTopConst: NSLayoutConstraint!
+    
+    
+    //MARK: - func
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    //MARK: - Setter
+    open var inputData: KMAdvertisementContent? {
+        didSet {
+            self.reloadData()
+        }
+    }
+    
+    
+    func reloadData() {
+        
+        if let subviews = productsBGView?.subviews {
+            for view in subviews {
+                if view is ComponentCSelector {
+                    view.removeFromSuperview()
+                }
+            }
+        }
+        
+        if let subviews = othersBGView?.subviews {
+            for view in subviews {
+                if view is ComponentNavBarItem {
+                    view.removeFromSuperview()
+                }
+            }
+        }
+        
+        let products = KMAdvertisementManager.manager.info.recommondContent?.recommondContentPDFPro
+        
+        if let productContents = products?.content {
+            productsBGView.isHidden = false
+            othersTopConst.constant = 100
+            
+            var viewXValue: CGFloat = 0
+            for item: KMAdvertisementItemInfo in productContents {
+                var view = ComponentCSelector()
+                view.frame = CGRectMake(viewXValue, 0, 43, 24)
+                productsBGView.addSubview(view)
+                viewXValue += 55
+                view.properties = ComponentCSelectorProperty(size: .s, state: .normal, text: nil, iconImage: NSImage(named: "file_icon"))
+                view.setTarget(self, action: #selector(productsItemClick(_:)))
+            }
+            
+        } else {
+            productsBGView.isHidden = true
+            othersTopConst.constant = 24
+        }
+         
+        let others = KMAdvertisementManager.manager.info.recommondContent?.recommondContentOther
+        if let productContents = others?.content {
+            othersBGView.isHidden = false
+            var viewYValue: CGFloat = CGRectGetHeight(othersBGView.frame) - 28 - 36
+            for item: KMAdvertisementItemInfo in productContents {
+                var view = ComponentNavBarItem()
+                view.frame = CGRectMake(0, viewYValue, CGRectGetWidth(othersBGView.frame), 36)
+                view.autoresizingMask = [.width, .minYMargin]
+                othersBGView.addSubview(view)
+                view.properties = ComponentNavbarItemProperty(state: .normal,
+                                                              text: KMAdvertisementModelTransition.transitionLanguage(langeuage: item.name),
+                                                              iconImage: NSImage(named: "file_icon"))
+                view.setTarget(self, action: #selector(othersItemClick(_:)))
+                viewYValue -= 44
+            }
+        } else {
+            othersBGView.isHidden = true
+        }
+        
+        
+        
+    }
+    
+    //MARK: - func
+    @objc func productsItemClick(_ sender: NSView) {
+        if let subviews = productsBGView?.subviews {
+            for view in subviews {
+                if view is ComponentCSelector {
+                    (view as! ComponentCSelector).properties.state = .normal
+                    (view as! ComponentCSelector).reloadData()
+                }
+            }
+        }
+    }
+    
+    @objc func othersItemClick(_ sender: NSView) {
+        if let subviews = othersBGView?.subviews {
+            for view in subviews {
+                if view is ComponentNavBarItem {
+                    (view as! ComponentNavBarItem).properties.state = .normal
+                    (view as! ComponentNavBarItem).reloadData()
+                }
+            }
+        }
+    }
+}

+ 112 - 0
PDF Office/PDF Master/KMClass/KMHomeViewController/Views/KMHomeRecommondView/KMHomeRecommondView.xib

@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMHomeRecommondView" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <connections>
+                <outlet property="dividerView" destination="YRy-uF-FZ7" id="GMI-95-6WB"/>
+                <outlet property="othersBGView" destination="IJL-5u-vFu" id="mgG-fx-ICN"/>
+                <outlet property="othersLabel" destination="opO-9D-1D8" id="tlD-dq-C7a"/>
+                <outlet property="othersTopConst" destination="7ly-PW-XcJ" id="h3e-Kq-u0q"/>
+                <outlet property="productsBGView" destination="jii-yu-0K4" id="H8W-8a-sVU"/>
+                <outlet property="productsLabel" destination="X7P-Yu-skW" id="XGD-9I-zWI"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="208" height="545"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="ngZ-pW-eBP">
+                    <rect key="frame" x="0.0" y="0.0" width="208" height="545"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="YRy-uF-FZ7" customClass="ComponentDivider" customModule="KMComponentLibrary">
+                            <rect key="frame" x="0.0" y="544" width="208" height="1"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="1" id="AT0-fO-xPC"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="jii-yu-0K4">
+                            <rect key="frame" x="0.0" y="469" width="208" height="52"/>
+                            <subviews>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="X7P-Yu-skW">
+                                    <rect key="frame" x="-2" y="36" width="37" height="16"/>
+                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="Pdf-xO-dQX">
+                                        <font key="font" usesAppearanceFont="YES"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                            </subviews>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="52" id="7g6-ZJ-MH7"/>
+                                <constraint firstItem="X7P-Yu-skW" firstAttribute="top" secondItem="jii-yu-0K4" secondAttribute="top" id="eD3-3t-PNQ"/>
+                                <constraint firstItem="X7P-Yu-skW" firstAttribute="leading" secondItem="jii-yu-0K4" secondAttribute="leading" id="v7P-R9-i4U"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="IJL-5u-vFu">
+                            <rect key="frame" x="0.0" y="137" width="208" height="308"/>
+                            <subviews>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="opO-9D-1D8">
+                                    <rect key="frame" x="-2" y="292" width="37" height="16"/>
+                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="NSG-LV-Nv3">
+                                        <font key="font" usesAppearanceFont="YES"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="opO-9D-1D8" firstAttribute="leading" secondItem="IJL-5u-vFu" secondAttribute="leading" id="Xcm-jC-z5n"/>
+                                <constraint firstItem="opO-9D-1D8" firstAttribute="top" secondItem="IJL-5u-vFu" secondAttribute="top" id="apa-Iv-wRA"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="ESC-nr-GbN">
+                            <rect key="frame" x="0.0" y="0.0" width="208" height="117"/>
+                            <subviews>
+                                <button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GtZ-J5-weo">
+                                    <rect key="frame" x="140" y="90" width="75" height="32"/>
+                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+                                    <buttonCell key="cell" type="push" title="Button" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="xJ8-sU-9Ro">
+                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                        <font key="font" metaFont="system"/>
+                                    </buttonCell>
+                                </button>
+                            </subviews>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="208" id="kfG-1F-rqI"/>
+                                <constraint firstAttribute="height" constant="117" id="pwC-8G-4Yk"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="jii-yu-0K4" firstAttribute="leading" secondItem="ngZ-pW-eBP" secondAttribute="leading" id="1Rv-Ju-IfH"/>
+                        <constraint firstItem="IJL-5u-vFu" firstAttribute="leading" secondItem="ngZ-pW-eBP" secondAttribute="leading" id="4gE-wa-urG"/>
+                        <constraint firstItem="IJL-5u-vFu" firstAttribute="top" secondItem="ngZ-pW-eBP" secondAttribute="top" constant="100" id="7ly-PW-XcJ"/>
+                        <constraint firstItem="jii-yu-0K4" firstAttribute="top" secondItem="ngZ-pW-eBP" secondAttribute="top" constant="24" id="J5S-dZ-zhg"/>
+                        <constraint firstItem="ESC-nr-GbN" firstAttribute="centerX" secondItem="ngZ-pW-eBP" secondAttribute="centerX" id="KOm-sc-Hn7"/>
+                        <constraint firstAttribute="bottom" secondItem="ESC-nr-GbN" secondAttribute="bottom" id="T52-qI-ACA"/>
+                        <constraint firstAttribute="trailing" secondItem="YRy-uF-FZ7" secondAttribute="trailing" id="ZMf-fd-1d3"/>
+                        <constraint firstAttribute="trailing" secondItem="jii-yu-0K4" secondAttribute="trailing" id="cFh-c9-BDO"/>
+                        <constraint firstItem="YRy-uF-FZ7" firstAttribute="top" secondItem="ngZ-pW-eBP" secondAttribute="top" id="eSo-61-AwG"/>
+                        <constraint firstAttribute="trailing" secondItem="IJL-5u-vFu" secondAttribute="trailing" id="eb4-Zb-kNu"/>
+                        <constraint firstItem="YRy-uF-FZ7" firstAttribute="leading" secondItem="ngZ-pW-eBP" secondAttribute="leading" id="gN9-8n-3jP"/>
+                        <constraint firstItem="ESC-nr-GbN" firstAttribute="top" secondItem="IJL-5u-vFu" secondAttribute="bottom" constant="20" id="qNn-V8-KoY"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="ngZ-pW-eBP" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="IbU-bn-nFr"/>
+                <constraint firstAttribute="bottom" secondItem="ngZ-pW-eBP" secondAttribute="bottom" id="Ojk-xE-iIJ"/>
+                <constraint firstAttribute="trailing" secondItem="ngZ-pW-eBP" secondAttribute="trailing" id="qGg-Fw-9LF"/>
+                <constraint firstItem="ngZ-pW-eBP" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="yJP-4m-7yQ"/>
+            </constraints>
+            <point key="canvasLocation" x="-73" y="266.5"/>
+        </customView>
+    </objects>
+</document>

+ 10 - 22
PDF Office/PDF Master/KMClass/Settings/SettingsDisplayView.swift

@@ -83,31 +83,19 @@ class SettingsDisplayView: BaseXibView {
     }
     
     func setTitleUI () {
-         
-        var titleLabelColor: NSColor = NSColor.labelColor
-        if let value = ComponentLibrary.shared.getComponentValueFromKey("colorText/2") {
-            let currentValue = value as! [String : Any]
-            titleLabelColor = ComponentLibrary.shared.getColor(rgbaDict: currentValue)
-        }
         
-        var subtitleLabelColor: NSColor = NSColor.labelColor
-        if let value = ComponentLibrary.shared.getComponentValueFromKey("comp-field/colorText-filled-nor") {
-            let currentValue = value as! [String : Any]
-            subtitleLabelColor = ComponentLibrary.shared.getColor(rgbaDict: currentValue)
-        }
-        
-        var titleLabelFont: NSFont = NSFont.systemFont(ofSize: 14)
-        if let value = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium") {
-            titleLabelFont = value
-        }
-        
-        var subtitleLabelFont: NSFont = NSFont.systemFont(ofSize: 14)
-        if let value = ComponentLibrary.shared.getFontFromKey("mac/body-s-regular") {
-            subtitleLabelFont = value
-        }
+        //获取颜色
+        var titleLabelColor: NSColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
+         
+        var subtitleLabelColor: NSColor = ComponentLibrary.shared.getComponentColorFromKey("comp-field/colorText-filled-nor")
+          
+        //获取字体
+        var titleLabelFont: NSFont = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
         
+        var subtitleLabelFont: NSFont = ComponentLibrary.shared.getFontFromKey("mac/body-s-regular")
+ 
         //Layout and Zoom
-        layoutZoomLabel.stringValue = KMLocalizedString("Default Layout and Zoom", comment: "")
+        layoutZoomLabel.stringValue = KMLocalizedString("Default Layout and Zoom")
         layoutZoomLabel.textColor = titleLabelColor
         layoutZoomLabel.font = titleLabelFont
         

+ 2 - 5
PDF Office/PDF Master/KMClass/Settings/SettingsGeneralView.swift

@@ -84,11 +84,8 @@ class SettingsGeneralView: BaseXibView {
             let currentValue = value as! [String : Any]
              titleLabelColor = ComponentLibrary.shared.getColor(rgbaDict: currentValue)
         }
-        var titleLabelFont: NSFont = NSFont.systemFont(ofSize: 14)
-        if let value = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium") {
-            titleLabelFont = value
-        }
-        
+        var titleLabelFont: NSFont = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
+ 
         
         //Appearance
         self.appearanceLabel.stringValue = KMLocalizedString("Appearance", comment: "")

+ 16 - 0
PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

@@ -3052,6 +3052,12 @@
 		BB1969E02B2856A900922736 /* KMSnapshotPDFView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1969DF2B2856A900922736 /* KMSnapshotPDFView.swift */; };
 		BB1969E12B2856A900922736 /* KMSnapshotPDFView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1969DF2B2856A900922736 /* KMSnapshotPDFView.swift */; };
 		BB1969E22B2856A900922736 /* KMSnapshotPDFView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1969DF2B2856A900922736 /* KMSnapshotPDFView.swift */; };
+		BB19A7312CB79D6E008204DC /* KMHomeRecommondView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB19A7302CB79D6E008204DC /* KMHomeRecommondView.swift */; };
+		BB19A7322CB79D6E008204DC /* KMHomeRecommondView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB19A7302CB79D6E008204DC /* KMHomeRecommondView.swift */; };
+		BB19A7332CB79D6E008204DC /* KMHomeRecommondView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB19A7302CB79D6E008204DC /* KMHomeRecommondView.swift */; };
+		BB19A7362CB79D77008204DC /* KMHomeRecommondView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB19A7352CB79D77008204DC /* KMHomeRecommondView.xib */; };
+		BB19A7372CB79D77008204DC /* KMHomeRecommondView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB19A7352CB79D77008204DC /* KMHomeRecommondView.xib */; };
+		BB19A7382CB79D77008204DC /* KMHomeRecommondView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB19A7352CB79D77008204DC /* KMHomeRecommondView.xib */; };
 		BB1A34A8295EA30100B80B3E /* NSBitmapImageRep_SKExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = BB1A34A7295EA30100B80B3E /* NSBitmapImageRep_SKExtensions.m */; };
 		BB1A34A9295EA30100B80B3E /* NSBitmapImageRep_SKExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = BB1A34A7295EA30100B80B3E /* NSBitmapImageRep_SKExtensions.m */; };
 		BB1A34AA295EA30100B80B3E /* NSBitmapImageRep_SKExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = BB1A34A7295EA30100B80B3E /* NSBitmapImageRep_SKExtensions.m */; };
@@ -6694,6 +6700,8 @@
 		BB1969D62B2842AD00922736 /* KMSnapshotWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMSnapshotWindowController.swift; sourceTree = "<group>"; };
 		BB1969DA2B2842D600922736 /* SnapshotWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SnapshotWindow.xib; sourceTree = "<group>"; };
 		BB1969DF2B2856A900922736 /* KMSnapshotPDFView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMSnapshotPDFView.swift; sourceTree = "<group>"; };
+		BB19A7302CB79D6E008204DC /* KMHomeRecommondView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMHomeRecommondView.swift; sourceTree = "<group>"; };
+		BB19A7352CB79D77008204DC /* KMHomeRecommondView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMHomeRecommondView.xib; sourceTree = "<group>"; };
 		BB1A34A6295EA30100B80B3E /* NSBitmapImageRep_SKExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSBitmapImageRep_SKExtensions.h; sourceTree = "<group>"; };
 		BB1A34A7295EA30100B80B3E /* NSBitmapImageRep_SKExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSBitmapImageRep_SKExtensions.m; sourceTree = "<group>"; };
 		BB1A91692AFB7868005E5FD8 /* KMConvertWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMConvertWindowController.swift; sourceTree = "<group>"; };
@@ -12352,6 +12360,8 @@
 		BB5A9D2F2CB6520100F64C1F /* KMHomeRecommondView */ = {
 			isa = PBXGroup;
 			children = (
+				BB19A7302CB79D6E008204DC /* KMHomeRecommondView.swift */,
+				BB19A7352CB79D77008204DC /* KMHomeRecommondView.xib */,
 			);
 			path = KMHomeRecommondView;
 			sourceTree = "<group>";
@@ -14680,6 +14690,7 @@
 				BBAFC84D298519F700D0648E /* KMSavePanelAccessoryController.xib in Resources */,
 				BB0FE0402B734DD1001E0F88 /* AITypeChooseView.xib in Resources */,
 				F3A9DC81294309D80074E5D2 /* CPDFListEditAnnotationViewController.xib in Resources */,
+				BB19A7362CB79D77008204DC /* KMHomeRecommondView.xib in Resources */,
 				ADBC375829CAE95700D93208 /* KMComparativeOutlineSectionCell.xib in Resources */,
 				BB234F042BA3D798008B3754 /* KMAIIconGuideView.xib in Resources */,
 				ADDF83982B391A5D00A81A4E /* PDFCertExportAccessoryView.xib in Resources */,
@@ -15199,6 +15210,7 @@
 				BBD922342B50D61200DB9585 /* KMRateWindowController.xib in Resources */,
 				ADBC373829CA975B00D93208 /* KMCompatative.xcassets in Resources */,
 				BB4EEF3129763EE7003A3537 /* KMRedactBaseWindowController.xib in Resources */,
+				BB19A7372CB79D77008204DC /* KMHomeRecommondView.xib in Resources */,
 				BB1B0B082B4FC6E900889528 /* KMGuideCoverView.xib in Resources */,
 				BB6347B12AF1F0BB00F5438E /* KMBatchOperateConvertViewController.xib in Resources */,
 				ADFA8F0E2B579957002595A4 /* KMSearchFindView.xib in Resources */,
@@ -15789,6 +15801,7 @@
 				BB0FE0572B734DD1001E0F88 /* AIUserInfoController.xib in Resources */,
 				BB8F4544295A98960037EA22 /* KMHeaderFooterPropertyController.xib in Resources */,
 				BB0FE0422B734DD1001E0F88 /* AITypeChooseView.xib in Resources */,
+				BB19A7382CB79D77008204DC /* KMHomeRecommondView.xib in Resources */,
 				89E4E7312963FBA2002DBA6F /* KMPropertiesViewPopController.xib in Resources */,
 				BB3AAB9529878CE000992A5A /* KMWatermarkAdjectivePropertyMainController.xib in Resources */,
 				ADDF839A2B391A5D00A81A4E /* PDFCertExportAccessoryView.xib in Resources */,
@@ -16708,6 +16721,7 @@
 				BB4EEF4429764FEF003A3537 /* KMWatermarkAligementView.swift in Sources */,
 				BB853C912AF8DCBF009C20C1 /* KMBatchOperateRemovePasswordViewController.swift in Sources */,
 				BBBB6CD62AD150D20035AA66 /* CPDFCircleAnnotation+PDFListView.swift in Sources */,
+				BB19A7312CB79D6E008204DC /* KMHomeRecommondView.swift in Sources */,
 				BB1BFF922AEA6352003EB179 /* KMImageToPDFMethod.swift in Sources */,
 				BBEC00AF295C2AF300A26C98 /* KMBatesPreviewController.swift in Sources */,
 				ADDF836B2B391A5C00A81A4E /* DSignatureSaveTypeViewController.swift in Sources */,
@@ -18073,6 +18087,7 @@
 				AD055E892B882E7F0035F824 /* SKBookmark.m in Sources */,
 				ADDEEA872AD7805200EF675D /* KMGeneralButton.swift in Sources */,
 				BB5BE4EE2B060E2F00D51BF2 /* KMLanguageViewController.swift in Sources */,
+				BB19A7322CB79D6E008204DC /* KMHomeRecommondView.swift in Sources */,
 				BBBAECFD2B57713F00266BD3 /* KMTransitionInfo.swift in Sources */,
 				BB1B0AED2B4FC6E900889528 /* KMGuideCoverView.swift in Sources */,
 				9F1FE4EE29406E4700E952CA /* ThrobberView.m in Sources */,
@@ -19182,6 +19197,7 @@
 				ADAFD9F52AE68A7400F084BC /* KMCreatPDFView.swift in Sources */,
 				BB74DA792AC41182006EDFE7 /* NSFont+KMExtension.swift in Sources */,
 				BB493F972B3E9805003E6175 /* KMBatchQuickActionManager.swift in Sources */,
+				BB19A7332CB79D6E008204DC /* KMHomeRecommondView.swift in Sources */,
 				BB49ECF3293F40F500C82CA2 /* KMConvertPageRangeSettingItemView.swift in Sources */,
 				9F69DBB42B512614003D4C45 /* KMAnnotationTextWidgetOptionsViewController.swift in Sources */,
 				BBFEF7212B3A787900C28AC0 /* KMSystemAnnotationMenu.swift in Sources */,