Browse Source

【UI替换】主页 - 产品互推

lizhe 1 year ago
parent
commit
ecaff09830

+ 2 - 2
PDF Office/PDF Master.xcodeproj/project.pbxproj

@@ -5960,10 +5960,10 @@
 		ADAFDA062AE8DD6600F084BC /* Cell */ = {
 			isa = PBXGroup;
 			children = (
-				ADAFDA072AE8DD6600F084BC /* KMAdvertisementCollectionViewItem.xib */,
-				ADAFDA082AE8DD6600F084BC /* KMAdvertisementCollectionHeadView.xib */,
 				ADAFDA092AE8DD6600F084BC /* KMAdvertisementCollectionViewItem.swift */,
+				ADAFDA072AE8DD6600F084BC /* KMAdvertisementCollectionViewItem.xib */,
 				ADAFDA0A2AE8DD6600F084BC /* KMAdvertisementCollectionHeadView.swift */,
+				ADAFDA082AE8DD6600F084BC /* KMAdvertisementCollectionHeadView.xib */,
 			);
 			path = Cell;
 			sourceTree = "<group>";

+ 51 - 162
PDF Office/PDF Master.xcodeproj/xcuserdata/lizhe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -6079,6 +6079,21 @@
                   endingLineNumber = "478"
                   offsetFromSymbolStart = "20">
                </Location>
+               <Location
+                  uuid = "5B80F998-3B3F-4A3F-842D-1EDB32380522 - e234b4ac8a61f3b7"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMToolbarController.exitPageEditToolbarViewController(PDF_Master.KMToolbarViewController) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/Toolbar/KMToolbarController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "480"
+                  endingLineNumber = "480"
+                  offsetFromSymbolStart = "20">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -13906,43 +13921,28 @@
             filePath = "PDF Master/Class/Home/ViewController/KMHomeViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "647"
-            endingLineNumber = "647"
+            startingLineNumber = "625"
+            endingLineNumber = "625"
             landmarkName = "openPDFAction(_:)"
             landmarkType = "7">
             <Locations>
                <Location
-                  uuid = "9637C1F6-AD48-462A-8BD8-6B448BB2E505 - 904e656a6c1cdb3"
+                  uuid = "9637C1F6-AD48-462A-8BD8-6B448BB2E505 - 6c46a0de33280d07"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMHomeViewController.openPDFAction(PDF_Master.KMBox) -&gt; ()"
+                  symbolName = "closure #1 (Swift.Optional&lt;__C.NSDocument&gt;, Swift.Bool, Swift.Optional&lt;Swift.Error&gt;) -&gt; () in closure #1 (__C.NSModalResponse) -&gt; () in PDF_Master.KMHomeViewController.openPDFAction(PDF_Master.KMBox) -&gt; ()"
                   moduleName = "PDF Master"
                   usesParentBreakpointCondition = "Yes"
                   urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/Home/ViewController/KMHomeViewController.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "675"
-                  endingLineNumber = "675"
-                  offsetFromSymbolStart = "92">
-               </Location>
-               <Location
-                  uuid = "9637C1F6-AD48-462A-8BD8-6B448BB2E505 - 904e656a6c1c019"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMHomeViewController.openPDFAction(PDF_Master.KMBox) -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/Home/ViewController/KMHomeViewController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "649"
-                  endingLineNumber = "649"
-                  offsetFromSymbolStart = "92">
+                  startingLineNumber = "625"
+                  endingLineNumber = "625"
+                  offsetFromSymbolStart = "116">
                </Location>
                <Location
-                  uuid = "9637C1F6-AD48-462A-8BD8-6B448BB2E505 - 904e656a6c1c057"
+                  uuid = "9637C1F6-AD48-462A-8BD8-6B448BB2E505 - 904e656a6c1c701"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
@@ -13952,8 +13952,8 @@
                   urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/Home/ViewController/KMHomeViewController.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "647"
-                  endingLineNumber = "647"
+                  startingLineNumber = "625"
+                  endingLineNumber = "625"
                   offsetFromSymbolStart = "92">
                </Location>
             </Locations>
@@ -14218,192 +14218,81 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "DD8E388D-AC95-4521-8DAB-8C75F929D214"
+            uuid = "1E8F42EB-E0EE-42BF-8614-3CA834F872DC"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/Home/ViewController/KMHomeViewController.swift"
+            filePath = "PDF Master/Class/KMAdvertisement/Manager/KMAdvertisementManager.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "165"
-            endingLineNumber = "165"
-            landmarkName = "initNetworkingData()"
-            landmarkType = "7">
-            <Locations>
-               <Location
-                  uuid = "DD8E388D-AC95-4521-8DAB-8C75F929D214 - 2a9dd30d34c051da"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMHomeViewController.initNetworkingData() -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/Home/ViewController/KMHomeViewController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "165"
-                  endingLineNumber = "165"
-                  offsetFromSymbolStart = "24">
-               </Location>
-               <Location
-                  uuid = "DD8E388D-AC95-4521-8DAB-8C75F929D214 - f0496718ebb6f98a"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "closure #1 (Swift.Optional&lt;Swift.Array&lt;PDF_Master.KMAdvertisementModel&gt;&gt;, Swift.Optional&lt;Swift.AnyObject&gt;, Swift.Optional&lt;Swift.Error&gt;) -&gt; () in PDF_Master.KMHomeViewController.initNetworkingData() -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/Home/ViewController/KMHomeViewController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "166"
-                  endingLineNumber = "166"
-                  offsetFromSymbolStart = "284">
-               </Location>
-            </Locations>
+            startingLineNumber = "188"
+            endingLineNumber = "188"
+            landmarkName = "KMAdvertisementManager"
+            landmarkType = "21">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "85BE38F1-5C06-4AFE-ABC8-758046A1C70B"
+            uuid = "10DA6408-0BCF-40FE-ACDD-5D60C0D61DD2"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/Home/ViewController/KMHomeViewController.swift"
+            filePath = "PDF Master/Class/KMAdvertisement/View/Cell/KMAdvertisementCollectionViewItem.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "167"
-            endingLineNumber = "167"
-            landmarkName = "initNetworkingData()"
+            startingLineNumber = "44"
+            endingLineNumber = "44"
+            landmarkName = "updateColor(_:)"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "587FFB94-A5B5-4912-93C3-67071E57E81E"
+            uuid = "EAB7C63F-65A3-478A-8803-7B8D99EAC02C"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/KMAdvertisement/Manager/KMAdvertisementManager.swift"
+            filePath = "PDF Master/Class/KMAdvertisement/View/Cell/KMAdvertisementCollectionHeadView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "63"
-            endingLineNumber = "63"
-            landmarkName = "fetchDataWithResponseObject(completion:)"
+            startingLineNumber = "35"
+            endingLineNumber = "35"
+            landmarkName = "reloadData()"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "B305205E-3246-4750-AF38-A063B9D3E572"
+            uuid = "B05C2456-CC5D-4721-A4E8-3289F393E515"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/KMAdvertisement/Manager/KMAdvertisementManager.swift"
+            filePath = "PDF Master/Class/Appearance/KMAppearance.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "124"
-            endingLineNumber = "124"
-            landmarkName = "parseData(data:isNeedLocalComparison:completion:)"
+            startingLineNumber = "1224"
+            endingLineNumber = "1224"
+            landmarkName = "l0Color()"
             landmarkType = "7">
-            <Locations>
-               <Location
-                  uuid = "B305205E-3246-4750-AF38-A063B9D3E572 - ee4ed5a50c4c3dd8"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMAdvertisementManager.parseData(data: Swift.Array&lt;__C.NSDictionary&gt;, isNeedLocalComparison: Swift.Bool, completion: (Swift.Array&lt;PDF_Master.KMAdvertisementModel&gt;) -&gt; ()) -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMAdvertisement/Manager/KMAdvertisementManager.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "124"
-                  endingLineNumber = "124"
-                  offsetFromSymbolStart = "508">
-               </Location>
-               <Location
-                  uuid = "B305205E-3246-4750-AF38-A063B9D3E572 - ee4ed5a50c4c3dd8"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMAdvertisementManager.parseData(data: Swift.Array&lt;__C.NSDictionary&gt;, isNeedLocalComparison: Swift.Bool, completion: (Swift.Array&lt;PDF_Master.KMAdvertisementModel&gt;) -&gt; ()) -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMAdvertisement/Manager/KMAdvertisementManager.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "124"
-                  endingLineNumber = "124"
-                  offsetFromSymbolStart = "524">
-               </Location>
-               <Location
-                  uuid = "B305205E-3246-4750-AF38-A063B9D3E572 - ee4ed5a50c4c3dd8"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMAdvertisementManager.parseData(data: Swift.Array&lt;__C.NSDictionary&gt;, isNeedLocalComparison: Swift.Bool, completion: (Swift.Array&lt;PDF_Master.KMAdvertisementModel&gt;) -&gt; ()) -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMAdvertisement/Manager/KMAdvertisementManager.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "124"
-                  endingLineNumber = "124"
-                  offsetFromSymbolStart = "528">
-               </Location>
-            </Locations>
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "53A7DC2F-8405-4F56-9AF4-27CBD16A4E5A"
+            uuid = "620E9D8A-7F07-45A8-904B-A0729BA10368"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/KMAdvertisement/Manager/KMAdvertisementManager.swift"
+            filePath = "PDF Master/Class/Appearance/KMAppearance.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "129"
-            endingLineNumber = "129"
-            landmarkName = "parseData(data:isNeedLocalComparison:completion:)"
+            startingLineNumber = "1254"
+            endingLineNumber = "1254"
+            landmarkName = "h1Color()"
             landmarkType = "7">
-            <Locations>
-               <Location
-                  uuid = "53A7DC2F-8405-4F56-9AF4-27CBD16A4E5A - ee4ed5a50c4c3c67"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMAdvertisementManager.parseData(data: Swift.Array&lt;__C.NSDictionary&gt;, isNeedLocalComparison: Swift.Bool, completion: (Swift.Array&lt;PDF_Master.KMAdvertisementModel&gt;) -&gt; ()) -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMAdvertisement/Manager/KMAdvertisementManager.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "129"
-                  endingLineNumber = "129"
-                  offsetFromSymbolStart = "1692">
-               </Location>
-               <Location
-                  uuid = "53A7DC2F-8405-4F56-9AF4-27CBD16A4E5A - ee4ed5a50c4c3c67"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMAdvertisementManager.parseData(data: Swift.Array&lt;__C.NSDictionary&gt;, isNeedLocalComparison: Swift.Bool, completion: (Swift.Array&lt;PDF_Master.KMAdvertisementModel&gt;) -&gt; ()) -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMAdvertisement/Manager/KMAdvertisementManager.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "129"
-                  endingLineNumber = "129"
-                  offsetFromSymbolStart = "1696">
-               </Location>
-            </Locations>
          </BreakpointContent>
       </BreakpointProxy>
    </Breakpoints>

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

@@ -60,6 +60,8 @@ import Cocoa
     
     @IBOutlet weak var creatPDFView: KMCreatPDFView!
     
+    //广告 互推
+    @IBOutlet weak var advertisementTableView: KMAdvertisementTableView!
     
     var aiHomeState: KMAIHomeToolState = .Home
     
@@ -165,35 +167,11 @@ import Cocoa
         KMAdvertisementManager.manager.fetchDataWithResponseObject { [unowned self] data, responseObject, error in
             KMPrint("获取广告数据成功")
             if data != nil {
-                for model in data! {
-                    guard let sectionContent = model.content else { break }
-                    if model.showType == .list {
-                        for section in sectionContent {
-                            KMPrint("list section 标题" + KMAdvertisementModelTransition.transitionLanguage(langeuage: section.sectionTitle?.language))
-                            guard let itemContent = section.content else { break }
-                            
-                            for item in itemContent {
-                                KMPrint("item 标题" + KMAdvertisementModelTransition.transitionLanguage(langeuage: item.title?.language))
-                                KMPrint("item 图片链接" + KMAdvertisementModelTransition.transitionLanguage(langeuage: item.imageURL?.normal?.universal))
-                                KMPrint("item 点击链接" + KMAdvertisementModelTransition.transitionLanguage(langeuage: item.linkURL))
-                                KMPrint("item tips" + KMAdvertisementModelTransition.transitionLanguage(langeuage: item.tips))
-                                KMPrint("item actionType" + String(Int(item.actionType.rawValue)))
-                            }
-                        }
-                    }
-                    if model.showType == .view {
-                        for section in sectionContent {
-                            KMPrint("view section 标题" + KMAdvertisementModelTransition.transitionLanguage(langeuage: section.sectionTitle?.language))
-                            guard let itemContent = section.content else { break }
-                            
-                            for item in itemContent {
-                                KMPrint("item 标题 = " + KMAdvertisementModelTransition.transitionLanguage(langeuage: item.title?.language))
-                                KMPrint("item 图片链接 = " + KMAdvertisementModelTransition.transitionLanguage(langeuage: item.imageURL?.normal?.universal))
-                                KMPrint("item 点击链接 = " + KMAdvertisementModelTransition.transitionLanguage(langeuage: item.linkURL))
-                                KMPrint("item tips = " + KMAdvertisementModelTransition.transitionLanguage(langeuage: item.tips))
-                                KMPrint("item actionType = " + String(Int(item.actionType.rawValue)))
-                            }
-                        }
+                advertisementTableView.inputData = data!.recommondContent
+                advertisementTableView.didSelect = { view, item in
+                    let string = KMAdvertisementModelTransition.transitionLanguage(langeuage: item.linkURL)
+                    if NSWorkspace.shared.open(URL.init(string: string)!) {
+                        NSWorkspace.shared.open(URL.init(string: string)!)
                     }
                 }
             }

+ 14 - 4
PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController.xib

@@ -8,6 +8,7 @@
     <objects>
         <customObject id="-2" userLabel="File's Owner" customClass="KMHomeViewController" customModule="PDF_Master" customModuleProvider="target">
             <connections>
+                <outlet property="advertisementTableView" destination="fnz-k9-XjO" id="UbQ-y0-tnF"/>
                 <outlet property="aiErrorCorrectionBox" destination="gfM-nc-QPH" id="Hmh-sg-oXV"/>
                 <outlet property="aiErrorCorrectionImageView" destination="tWj-m1-RHC" id="Vih-4K-hKQ"/>
                 <outlet property="aiErrorCorrectionLabel" destination="aGT-3k-XaH" id="v9b-2n-Uue"/>
@@ -267,20 +268,28 @@ Gw
                                         </constraints>
                                     </customView>
                                     <customView translatesAutoresizingMaskIntoConstraints="NO" id="eZs-02-dfp">
-                                        <rect key="frame" x="16" y="152" width="238" height="500"/>
+                                        <rect key="frame" x="16" y="0.0" width="238" height="652"/>
                                         <subviews>
                                             <customView translatesAutoresizingMaskIntoConstraints="NO" id="fnz-k9-XjO" customClass="KMAdvertisementTableView" customModule="PDF_Master" customModuleProvider="target">
-                                                <rect key="frame" x="0.0" y="200" width="238" height="300"/>
+                                                <rect key="frame" x="0.0" y="152" width="238" height="500"/>
                                                 <constraints>
-                                                    <constraint firstAttribute="height" constant="300" id="pex-rA-Zma"/>
+                                                    <constraint firstAttribute="height" constant="500" id="Tot-Bo-gOe"/>
+                                                </constraints>
+                                            </customView>
+                                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="SYM-SV-gBY">
+                                                <rect key="frame" x="0.0" y="40" width="238" height="96"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="height" constant="96" id="zaj-sz-Tdy"/>
                                                 </constraints>
                                             </customView>
                                         </subviews>
                                         <constraints>
                                             <constraint firstItem="fnz-k9-XjO" firstAttribute="leading" secondItem="eZs-02-dfp" secondAttribute="leading" id="9nx-Kn-ay8"/>
                                             <constraint firstAttribute="trailing" secondItem="fnz-k9-XjO" secondAttribute="trailing" id="Ea6-4t-JOh"/>
+                                            <constraint firstItem="SYM-SV-gBY" firstAttribute="leading" secondItem="eZs-02-dfp" secondAttribute="leading" id="I02-eo-zxb"/>
                                             <constraint firstItem="fnz-k9-XjO" firstAttribute="top" secondItem="eZs-02-dfp" secondAttribute="top" id="SNd-w5-4mI"/>
-                                            <constraint firstAttribute="height" constant="500" id="WQL-MY-cvc"/>
+                                            <constraint firstItem="SYM-SV-gBY" firstAttribute="top" secondItem="fnz-k9-XjO" secondAttribute="bottom" constant="16" id="k1P-NP-gcR"/>
+                                            <constraint firstAttribute="trailing" secondItem="SYM-SV-gBY" secondAttribute="trailing" id="qLr-RD-68z"/>
                                         </constraints>
                                     </customView>
                                     <customView translatesAutoresizingMaskIntoConstraints="NO" id="xMk-8H-B64" customClass="KMCreatPDFView" customModule="PDF_Master" customModuleProvider="target">
@@ -297,6 +306,7 @@ Gw
                                     <constraint firstItem="eZs-02-dfp" firstAttribute="top" secondItem="xMk-8H-B64" secondAttribute="bottom" constant="16" id="BoC-48-m5e"/>
                                     <constraint firstItem="3io-Hj-Kiz" firstAttribute="top" secondItem="2gJ-MM-ZrB" secondAttribute="top" id="OUk-vQ-edJ"/>
                                     <constraint firstItem="3io-Hj-Kiz" firstAttribute="leading" secondItem="2gJ-MM-ZrB" secondAttribute="leading" id="eTW-ob-qK1"/>
+                                    <constraint firstAttribute="bottom" secondItem="eZs-02-dfp" secondAttribute="bottom" id="hKB-Xy-3r7"/>
                                     <constraint firstAttribute="trailing" secondItem="3io-Hj-Kiz" secondAttribute="trailing" id="kZa-Sb-BLN"/>
                                     <constraint firstItem="xMk-8H-B64" firstAttribute="leading" secondItem="2gJ-MM-ZrB" secondAttribute="leading" constant="16" id="llZ-cI-Lb3"/>
                                     <constraint firstAttribute="trailing" secondItem="eZs-02-dfp" secondAttribute="trailing" constant="16" id="pwm-0C-e6W"/>

+ 71 - 62
PDF Office/PDF Master/Class/KMAdvertisement/Manager/KMAdvertisementManager.swift

@@ -50,7 +50,7 @@ extension KMAdvertisementManager {
      @param data 传入参数 类型为KMAdvertisementModel
      @return
       */
-    @objc public func fetchData(completion: @escaping (_ data: [KMAdvertisementModel]?, _ error:Error?) -> Void) -> Void {
+    @objc public func fetchData(completion: @escaping (_ data: KMAdvertisementInfo?, _ error:Error?) -> Void) -> Void {
         self.fetchDataWithResponseObject { data, responseObject, error in
             if completion != nil {
                 completion(data, error)
@@ -58,7 +58,7 @@ extension KMAdvertisementManager {
         }
     }
     
-    @objc public func fetchDataWithResponseObject(completion:@escaping (_ data: [KMAdvertisementModel]?, _ responseObject: AnyObject? , _ error:Error?) -> Void) -> Void {
+    @objc public func fetchDataWithResponseObject(completion:@escaping (_ data: KMAdvertisementInfo?, _ responseObject: AnyObject? , _ error:Error?) -> Void) -> Void {
         print("开始获取数据")
         var version: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString").debugDescription
         if (version.count == 0) {
@@ -75,7 +75,7 @@ extension KMAdvertisementManager {
         if cacheData.count != 0 {
             self.parseData(data: cacheData, isNeedLocalComparison: false) { result in
                 if result.count != 0 {
-                    completion(result, nil, nil)
+                    completion(result.first, nil, nil)
                 }
             }
         }
@@ -91,7 +91,7 @@ extension KMAdvertisementManager {
                     weakSelf.parseData(data: array as! [NSDictionary], isNeedLocalComparison: true) { data in
                         print("数据处理完毕")
                         if data.count != 0 {
-                            completion(data, responseObject, nil)
+                            completion(data.first, responseObject, nil)
                         }
                     }
                 } else {
@@ -115,12 +115,12 @@ extension KMAdvertisementManager {
      @param isNeedLocalComparison 是否需要对比本地版本,如果不一样将会刷新
      @return KMAdvertisementModel
       */
-    public func parseData(data: [NSDictionary], isNeedLocalComparison: Bool ,completion:(_ result: [KMAdvertisementModel]) -> Void) -> Void {
+    public func parseData(data: [NSDictionary], isNeedLocalComparison: Bool ,completion:(_ result: [KMAdvertisementInfo]) -> Void) -> Void {
         //获取缓存数据
         var isNeedSave = false
         let cacheData = KMAdvertisementCache.default.readData()
         
-        var resultArray:[KMAdvertisementModel] = []
+        var resultArray:[KMAdvertisementInfo] = []
         for model in data {
             if (!(cacheData.contains(model) && isNeedLocalComparison)) {
                 if (self.allowLoadData(data: model)) {
@@ -134,11 +134,11 @@ extension KMAdvertisementManager {
                     decoder.nonConformingFloatDecodingStrategy = .convertFromString(positiveInfinity: "+∞", negativeInfinity: "-∞", nan: "NaN")
     #if DEBUG
                     //MARK: 测试使用
-                    var advertisementModel = try! decoder.decode(KMAdvertisementModel2.self, from: jsonData)
-//                    if (self.allowLoadContentData(data: advertisementModel)) {
-//                        resultArray.append(self.allowLoadItemData(advertisementModel))
-//                        isNeedSave = true
-//                    }
+                    var advertisementModel = try! decoder.decode(KMAdvertisementInfo.self, from: jsonData)
+                    if (self.allowLoadContentData(data: advertisementModel)) {
+                        resultArray.append(self.allowLoadItemData(advertisementModel))
+                        isNeedSave = true
+                    }
     #else
     //            MARK: 此处try 使用 ? ,如果数据出问题 advertisementModel将无参数, 测试时使用!
                     var advertisementModel = try? decoder.decode(KMAdvertisementModel.self, from: jsonData)
@@ -177,63 +177,72 @@ extension KMAdvertisementManager {
         
     }
     
-    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
-        }
+    func allowLoadContentData(data: KMAdvertisementInfo) -> Bool {
+        var result = true
         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: 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 allowLoadItemData(_ data: KMAdvertisementInfo) -> KMAdvertisementInfo {
+        return data;
     }
     
+//    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 = ""

+ 109 - 101
PDF Office/PDF Master/Class/KMAdvertisement/Model/KMAdvertisementModel.swift

@@ -7,41 +7,51 @@
 
 
 
-@objcMembers public class KMAdvertisementModel2: NSObject, Codable {
-    public var recommondContent: KMAdvertisementModel3?
-    public var advertisement: KMAdvertisementModel3?
+@objcMembers public class KMAdvertisementInfo: NSObject, Codable {
+    public var recommondContent: KMAdvertisementContent?
+    public var advertisement: KMAdvertisementContent?
 //    public var remoteControl: KMAdvertisementModel3
 }
 
-@objcMembers public class KMAdvertisementModel3: NSObject, Codable {
-    public var recommondContentOther: KMAdvertisementModel4?
-    public var recommondContentPDFPro: KMAdvertisementModel4?
+@objcMembers public class KMAdvertisementContent: NSObject, Codable {
+    public var recommondContentOther: KMAdvertisementItem?
+    public var recommondContentPDFPro: KMAdvertisementItem?
 }
 
-@objcMembers public class KMAdvertisementModel4: NSObject, Codable {
+@objcMembers public class KMAdvertisementItem: NSObject, Codable {
     public var version: String?
     public var name: Language?
-    public var content: [KMAdvertisementModel5]?
+    public var content: [KMAdvertisementItemInfo]?
 }
 
-@objcMembers public class KMAdvertisementModel5: NSObject, Codable {
+@objcMembers public class KMAdvertisementItemInfo: NSObject, Codable {
+    var index: Int?
     var show: String? //是否显示,内部有做了时间区间判断
     var showType: KMRecommondShowType?
     var startDate: String?
     var endDate: String?
     var versionKey: String? //版本号,唯一标识符
     var showCloseBtn: String? //是否显示关闭按钮,(左下角广告需要)
-    var normalImage: String? //APP互推,常规状态下的图片
-    var hoverImage: String? //APP互推悬浮状态下的图片
+    var image: Image? //APP互推,常规状态下的图片
     var iconImage: String? //广告显示图片(自适应多语)
     var name: Language? //名称(自适应多语)
-    var tooltips: String? //提示语(自适应多语)
+    var tooltip: Language? //提示语(自适应多语)
     var linkURL: Language? //跳转链接(自适应多语)
     
     //Firebase
     var firebaseEvent: String?
     var firebasePropertyKey: String?
     var firebasePropertyValue: String?
+    
+    public class Image: NSObject, Codable {
+        public let zh_TW: String?
+        public let hover_Dark: String?
+        public let hover_Light: String?
+        
+        public let zh_CN: String?
+        public let normal_Light: String?
+        public let normal_Dark: String?
+    }
 }
 
 public class Language: NSObject, Codable {
@@ -50,92 +60,90 @@ public class Language: NSObject, Codable {
     public let 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?
-    }
-}
+//@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?
+//    }
+//}

+ 38 - 42
PDF Office/PDF Master/Class/KMAdvertisement/Model/KMAdvertisementModelTransition.swift

@@ -8,53 +8,49 @@ 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 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: KMAdvertisementModelItem.Image?, highlight:Bool) -> String {
+    public static func transitionImagePath(image: KMAdvertisementItemInfo.Image?, highlight:Bool) -> String {
         var result = ""
         guard let tempImage = image else { return result }
         
         if highlight {
-            if tempImage.height != nil {
-                result = transitionLanguage(langeuage: KMAdvertisementConfig.isDarkModel() ? tempImage.height!.dark : tempImage.height!.universal)
-            }
+            result = (KMAdvertisementConfig.isDarkModel() ? tempImage.hover_Dark : tempImage.hover_Light) ?? ""
         } else {
-            if tempImage.normal != nil {
-                result = transitionLanguage(langeuage: KMAdvertisementConfig.isDarkModel() ? tempImage.normal?.dark : tempImage.normal?.universal)
-            }
+            result = (KMAdvertisementConfig.isDarkModel() ? tempImage.normal_Dark : tempImage.normal_Light) ?? ""
         }
         
         return result
     }
     
     //多语转换
-    @objc public static func transitionLanguage(langeuage: KMAdvertisementModelItem.Language?) -> String {
+    @objc public static func transitionLanguage(langeuage: Language?) -> String {
         var result = ""
 //        let languageConfig = KMAdvertisementManager.manager.configuration.language
 //        if languageConfig != .unknow {
@@ -66,14 +62,14 @@ import AppKit
 //                result = langeuage?.zh_TW ?? ""
 //            }
 //        } else {
-//            let string = KMAdvertisementModelTransition.getLanguageType()
-//            if string == "zh-Hans-CN" {
-//                result = langeuage?.zh_CN ?? ""
-//            } else if string == "zh-Hans-TW" {
-//                result = langeuage?.zh_TW ?? ""
-//            } else {
-//                result = langeuage?.en ?? ""
-//            }
+            let string = KMAdvertisementModelTransition.getLanguageType()
+            if string == "zh-Hans-CN" {
+                result = langeuage?.zh_CN ?? ""
+            } else if string == "zh-Hans-TW" {
+                result = langeuage?.zh_TW ?? ""
+            } else {
+                result = langeuage?.en ?? ""
+            }
 //        }
         return result
     }

+ 8 - 6
PDF Office/PDF Master/Class/KMAdvertisement/View/Cell/KMAdvertisementCollectionHeadView.swift

@@ -21,20 +21,22 @@ class KMAdvertisementCollectionHeadView: NSView {
         return nil
     }()
     
-    var model: KMAdvertisementModelSection! {
+    var model: KMAdvertisementItem! {
         didSet {
             self.reloadData()
         }
     }
     
     func reloadData() {
-        if model?.sectionTitle?.language != nil {
-            self.titleTextField?.stringValue = KMAdvertisementModelTransition.transitionLanguage(langeuage: (model?.sectionTitle?.language)!)
+        if model?.name != nil {
+            self.titleTextField?.stringValue = KMAdvertisementModelTransition.transitionLanguage(langeuage: (model?.name)!)
         }
         
-        if model.sectionTitle?.color != nil {
-            self.titleTextField?.textColor = KMAdvertisementModelTransition.transitionColor(color: (model.sectionTitle?.color)!, highlight: false)
-        }
+        self.titleTextField?.textColor = KMAppearance.Layout.h1Color()
+        
+//        if model.sectionTitle?.color != nil {
+//            self.titleTextField?.textColor = KMAdvertisementModelTransition.transitionColor(color: (model.sectionTitle?.color)!, highlight: false)
+//        }
     }
     
     override func draw(_ dirtyRect: NSRect) {

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

@@ -9,7 +9,7 @@
         <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="KMAdvertisement" customModuleProvider="target">
+        <customView id="c22-O7-iKe" customClass="KMAdvertisementCollectionHeadView" customModule="PDF_Master" customModuleProvider="target">
             <rect key="frame" x="0.0" y="0.0" width="480" height="30"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>

+ 17 - 20
PDF Office/PDF Master/Class/KMAdvertisement/View/Cell/KMAdvertisementCollectionViewItem.swift

@@ -11,7 +11,7 @@ class KMAdvertisementCollectionViewItem: NSCollectionViewItem {
     @IBOutlet weak var titleLabel: NSTextField!
     
     @IBOutlet weak var contentView: NSView!
-    var model: KMAdvertisementModelItem! {
+    var model: KMAdvertisementItemInfo? {
         didSet {
             self.reloadData()
         }
@@ -23,35 +23,32 @@ class KMAdvertisementCollectionViewItem: NSCollectionViewItem {
         self.view.addTrackingRect(self.view.bounds, owner: self, userData: nil, assumeInside: false)
         self.contentView.wantsLayer = true
         self.contentView.layer?.masksToBounds = true
+        self.updateColor(false)
+//        self.contentView.layer?.backgroundColor = NSColor.init(red: 38.0/255.0, green: 40/255.0, blue: 43/255.0, alpha: 1).cgColor
     }
     
     func reloadData() {
-        self.titleLabel.stringValue = KMAdvertisementModelTransition.transitionLanguage(langeuage: model?.title?.language)
-        self.titleLabel.font = NSFont.init(name: model?.title?.font?.name ?? "AppleSystemUIFont", size: CGFloat(model?.title?.font?.size ?? 13))
-        self.contentView.toolTip = KMAdvertisementModelTransition.transitionLanguage(langeuage: model?.tips)
-        self.contentView.layer?.cornerRadius = model.title?.background?.layer?.cornerRadius ?? 0
+        self.titleLabel.stringValue = KMAdvertisementModelTransition.transitionLanguage(langeuage: model?.name)
+//        self.titleLabel.font = NSFont.init(name: model?.title?.font?.name ?? "AppleSystemUIFont", size: CGFloat(model?.title?.font?.size ?? 13))
+        self.contentView.toolTip = KMAdvertisementModelTransition.transitionLanguage(langeuage: model?.tooltip)
+        self.contentView.layer?.cornerRadius = 8
         self.updateColor(false)
     }
     
     func updateColor(_ highlight: Bool) {
         
-        if model.title?.color != nil {
-            self.titleLabel.textColor = KMAdvertisementModelTransition.transitionColor(color: (model.title?.color), highlight: highlight)
-        }
-        
-        if model.title?.background?.color != nil {
-            self.contentView.layer?.backgroundColor = KMAdvertisementModelTransition.transitionColor(color: (model.title?.background?.color)!, highlight: highlight).cgColor
+        if highlight {
+            self.titleLabel.textColor = KMAppearance.Layout.mColor()
+            self.contentView.layer?.backgroundColor = KMAppearance.Status.hovColor().cgColor
+        } else {
+            self.titleLabel.textColor = KMAppearance.Layout.h1Color()
+            self.contentView.layer?.backgroundColor = KMAppearance.Layout.l0Color().cgColor
         }
         
-        if model.imageURL != nil {
-            weak var weakSelf = self
-            let url = URL(string: KMAdvertisementModelTransition.transitionImagePath(image: model.imageURL!, highlight: highlight))
-            self.iconImageView.image = KMAdvertisementImage.imageWithURL(url: url, completion: { image in
-                if weakSelf != nil {
-                    weakSelf!.iconImageView.image = image
-                }
-            })
-        }
+        let url = URL(string: KMAdvertisementModelTransition.transitionImagePath(image: model?.image, highlight: highlight))
+        self.iconImageView.image = KMAdvertisementImage.imageWithURL(url: url, completion: { [weak self] image in
+            self?.iconImageView.image = image
+        })
     }
     
     override func mouseEntered(with event: NSEvent) {

+ 2 - 1
PDF Office/PDF Master/Class/KMAdvertisement/View/Cell/KMAdvertisementCollectionViewItem.xib

@@ -1,11 +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">
     <dependencies>
+        <deployment identifier="macosx"/>
         <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMAdvertisementCollectionViewItem" customModule="KMAdvertisement">
+        <customObject id="-2" userLabel="File's Owner" customClass="KMAdvertisementCollectionViewItem" customModule="PDF_Master" 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"/>

+ 28 - 13
PDF Office/PDF Master/Class/KMAdvertisement/View/KMAdvertisementTableView.swift

@@ -11,7 +11,7 @@
     import UIKit
 #endif
 
-typealias KMAdvertisementTableViewDidSelect = (_ view: KMAdvertisementTableView, _ item: KMAdvertisementModelItem) -> Void
+typealias KMAdvertisementTableViewDidSelect = (_ view: KMAdvertisementTableView, _ item: KMAdvertisementItemInfo) -> Void
 @objcMembers open class KMAdvertisementTableView: NSView {
 
     @IBOutlet var contentView: NSView!
@@ -24,14 +24,14 @@ typealias KMAdvertisementTableViewDidSelect = (_ view: KMAdvertisementTableView,
       @abstract 外部传入数据
       @param inputData 文件路劲
       */
-    open var inputData: KMAdvertisementModel! {
+    open var inputData: KMAdvertisementContent! {
         didSet {
-            
+            self.reloadData()
         }
     }
 
     //内部使用数据
-    fileprivate var data: [KMAdvertisementModelSection]?
+    fileprivate var data: [KMAdvertisementItem] = []
 
     open override func draw(_ dirtyRect: NSRect) {
         super.draw(dirtyRect)
@@ -39,7 +39,7 @@ typealias KMAdvertisementTableViewDidSelect = (_ view: KMAdvertisementTableView,
         // Drawing code here.
     }
     
-    convenience init (data: KMAdvertisementModel, superView: NSView) {
+    convenience init (data: [KMAdvertisementItem], superView: NSView) {
         self.init(frame: superView.bounds)
         superView.addSubview(self)
         self.autoresizingMask = [.height , .width]
@@ -88,6 +88,21 @@ typealias KMAdvertisementTableViewDidSelect = (_ view: KMAdvertisementTableView,
         self.collectionView.isSelectable = true
         //注册cell
         self.collectionView.register(KMAdvertisementCollectionViewItem.self, forItemWithIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMAdvertisementCollectionViewItem"))
+        
+        self.backgroundColor(KMAppearance.Layout.l0Color())
+    }
+    
+    func reloadData() {
+        self.data.removeAll()
+        if inputData.recommondContentPDFPro != nil {
+            self.data.append(inputData.recommondContentPDFPro!)
+        }
+        
+        if inputData.recommondContentOther != nil {
+            self.data.append(inputData.recommondContentOther!)
+        }
+        
+        self.collectionView.reloadData()
     }
 }
 
@@ -97,27 +112,27 @@ extension KMAdvertisementTableView: NSCollectionViewDelegate {
         print("点击")
         let view = collectionView.item(at: indexPaths.first!) as! KMAdvertisementCollectionViewItem
         
-        var content = view.model
+        let content = view.model
         
         guard let callBack = didSelect else { return }
         
-        content?.index = indexPaths.first?.item
+        content?.index = indexPaths.first!.item
         callBack(self, content!)
     }
     
    //当item取消选中
     public func collectionView(_ collectionView: NSCollectionView, didDeselectItemsAt indexPaths: Set<IndexPath>) {
-        let view = collectionView.item(at: indexPaths.first!) as! KMAdvertisementCollectionViewItem
+        _ = collectionView.item(at: indexPaths.first!) as! KMAdvertisementCollectionViewItem
     }
 }
 
 extension KMAdvertisementTableView: NSCollectionViewDataSource {
     public func numberOfSections(in collectionView: NSCollectionView) -> Int {
-        return self.data?.count ?? 0
+        return self.data.count
     }
     
     public func collectionView(_ collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
-        let model: KMAdvertisementModelSection = (self.data?[section])!
+        let model: KMAdvertisementItem = (self.data[section])
         return model.content!.count
     }
     
@@ -125,8 +140,8 @@ extension KMAdvertisementTableView: NSCollectionViewDataSource {
     public func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
         let view = collectionView.makeItem(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMAdvertisementCollectionViewItem"), for: indexPath) as! KMAdvertisementCollectionViewItem
         
-        let model = self.data?[indexPath.section]
-        view.model = model?.content![indexPath.item]
+        let model = self.data[indexPath.section]
+        view.model = model.content![indexPath.item]
         return view
     }
     
@@ -138,7 +153,7 @@ extension KMAdvertisementTableView: NSCollectionViewDataSource {
         
         let view = collectionView.makeSupplementaryView(ofKind: kind, withIdentifier: NSUserInterfaceItemIdentifier(rawValue: nibName!), for: indexPath)
         if let view = view as? KMAdvertisementCollectionHeadView {
-            let model = self.data?[indexPath.section]
+            let model = self.data[indexPath.section]
             view.model = model
         }
         return view

+ 1 - 1
PDF Office/PDF Master/Class/KMAdvertisement/View/KMAdvertisementTableView.xib

@@ -6,7 +6,7 @@
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMAdvertisementTableView" customModule="KMAdvertisement" customModuleProvider="target">
+        <customObject id="-2" userLabel="File's Owner" customClass="KMAdvertisementTableView" customModule="PDF_Master" customModuleProvider="target">
             <connections>
                 <outlet property="collectionView" destination="DM1-E5-H8J" id="npq-W6-KFs"/>
                 <outlet property="contentView" destination="c22-O7-iKe" id="PMK-sn-xgD"/>