Browse Source

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

# Conflicts:
#	PDF Office/PDF Master.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
niehaoyu 1 year ago
parent
commit
47550834db
58 changed files with 950 additions and 585 deletions
  1. 6 6
      PDF Office/PDF Master.xcodeproj/project.pbxproj
  2. 13 42
      PDF Office/PDF Master.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  3. 428 300
      PDF Office/PDF Master.xcodeproj/xcuserdata/lizhe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 11 0
      PDF Office/PDF Master/AppDelegate.swift
  5. 0 11
      PDF Office/PDF Master/Assets.xcassets/AccentColor.colorset/Contents.json
  6. BIN
      PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/1024.png
  7. BIN
      PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/128.png
  8. BIN
      PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/16.png
  9. BIN
      PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/256 1.png
  10. BIN
      PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/256.png
  11. BIN
      PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/32 1.png
  12. BIN
      PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/32.png
  13. BIN
      PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/512 1.png
  14. BIN
      PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/512.png
  15. BIN
      PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/64.png
  16. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/1024.png
  17. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/128.png
  18. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/16.png
  19. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/256-1.png
  20. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/256.png
  21. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/32-1.png
  22. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/32.png
  23. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/512-1.png
  24. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/512.png
  25. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/64.png
  26. 6 6
      PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/Contents.json
  27. 68 0
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Contents.json
  28. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-128.png
  29. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-128@2x.png
  30. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-16.png
  31. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-16@2x.png
  32. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-256.png
  33. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-256@2x.png
  34. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-32.png
  35. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-32@2x.png
  36. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-512.png
  37. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-512@2x.png
  38. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/1024.png
  39. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/128.png
  40. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/16.png
  41. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/256-1.png
  42. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/256.png
  43. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/32-1.png
  44. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/32.png
  45. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/512-1.png
  46. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/512.png
  47. BIN
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/64.png
  48. 68 0
      PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/Contents.json
  49. 2 2
      PDF Office/PDF Master/Base.lproj/Main.storyboard
  50. 4 3
      PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFStampAnnotation+PDFListView.swift
  51. 1 1
      PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/KMAnnotationPropertiesViewController.m
  52. 51 152
      PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/ViewController/KMAnnotationSelfSignViewController.swift
  53. 10 6
      PDF Office/PDF Master/Class/Preference/Controller/DisplayPreferences.xib
  54. 16 0
      PDF Office/PDF Master/Class/Preference/Controller/GeneralPreferences.xib
  55. 89 19
      PDF Office/PDF Master/Class/Preference/Controller/KMDisplayPreferences.swift
  56. 89 29
      PDF Office/PDF Master/Class/Preference/Controller/KMGeneralPreferences.swift
  57. 11 0
      PDF Office/PDF Master/Class/Preference/Window/KMPreferenceController.swift
  58. 77 8
      PDF Office/PDF Master/Third Pard Library/RemoteConfig /KMFirebaseRemoteConfig.swift

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

@@ -17142,7 +17142,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_APPICON_NAME = "PDF Reader Pro Free";
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
 				BUILD_LIBRARY_FOR_DISTRIBUTION = NO;
@@ -17237,7 +17237,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_APPICON_NAME = "PDF Reader Pro Free";
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
 				BUILD_LIBRARY_FOR_DISTRIBUTION = NO;
@@ -17399,7 +17399,7 @@
 		BBFBE70F28DD7C21008B2335 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_APPICON_NAME = "PDF Reader Pro";
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_ENTITLEMENTS = "PDF Master Pro/PDF_Master_Pro.entitlements";
@@ -17528,7 +17528,7 @@
 		BBFBE71028DD7C21008B2335 /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_APPICON_NAME = "PDF Reader Pro";
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_ENTITLEMENTS = "PDF Master Pro/PDF_Master_Pro.entitlements";
@@ -17737,7 +17737,7 @@
 		BBFBE73E28DD7C43008B2335 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_APPICON_NAME = "PDF Reader Pro Edition";
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_ENTITLEMENTS = "";
@@ -17914,7 +17914,7 @@
 		BBFBE73F28DD7C43008B2335 /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_APPICON_NAME = "PDF Reader Pro Edition";
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_ENTITLEMENTS = "";

+ 13 - 42
PDF Office/PDF Master.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -7,65 +7,34 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "58215A11-E067-4E21-81D8-26BD345FE5C5"
+            uuid = "8A50A9B0-05C6-4F44-90A0-BB7EDAD9B880"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuidePanel.swift"
+            filePath = "PDF Master/Class/Preference/Controller/KMDisplayPreferences.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "130"
-            endingLineNumber = "130"
-            landmarkName = "updateViewColor()"
+            startingLineNumber = "197"
+            endingLineNumber = "197"
+            landmarkName = "comboBoxSelectionDidChange(_:)"
             landmarkType = "7">
-            <Locations>
-               <Location
-                  uuid = "58215A11-E067-4E21-81D8-26BD345FE5C5 - e377629d1c98e4c7"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMOpenFileGuidePanel.updateViewColor() -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuidePanel.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "130"
-                  endingLineNumber = "130"
-                  offsetFromSymbolStart = "1844">
-               </Location>
-               <Location
-                  uuid = "58215A11-E067-4E21-81D8-26BD345FE5C5 - 32c35c7a28ba4894"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master_DMG.KMOpenFileGuidePanel.updateViewColor() -&gt; ()"
-                  moduleName = "PDF Master DMG"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuidePanel.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "130"
-                  endingLineNumber = "130"
-                  offsetFromSymbolStart = "796">
-               </Location>
-            </Locations>
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "770E4A49-AE8B-4D16-BE6A-9C03F79E1C27"
+            uuid = "3D86A5D4-2323-4A07-958E-ECB922C37944"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+            filePath = "PDF Master/Class/Preference/Controller/KMDisplayPreferences.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "727"
-            endingLineNumber = "727"
-            landmarkName = "loadOpenFileFunctionGuide(_:)"
+            startingLineNumber = "205"
+            endingLineNumber = "205"
+            landmarkName = "controlTextDidChange(_:)"
             landmarkType = "7">
+<<<<<<< HEAD
             <Locations>
                <Location
                   uuid = "770E4A49-AE8B-4D16-BE6A-9C03F79E1C27 - 7f6d6c511fd317b4"
@@ -344,6 +313,8 @@
                   offsetFromSymbolStart = "160">
                </Location>
             </Locations>
+=======
+>>>>>>> d5e98d061b7af55827b8f32b6e9a5d60382a44b0
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy

+ 428 - 300
PDF Office/PDF Master.xcodeproj/xcuserdata/lizhe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -4561,7 +4561,7 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "1715"
             endingLineNumber = "1715"
-            landmarkName = "pdfViewEditingAreaDidChanged(_:)"
+            landmarkName = "pdfViewCanVerticalScroll()"
             landmarkType = "7">
             <Locations>
                <Location
@@ -4639,6 +4639,51 @@
                   endingLineNumber = "1715"
                   offsetFromSymbolStart = "1336">
                </Location>
+               <Location
+                  uuid = "E7F4D56E-1C39-4024-BBA5-68C70086BBFF - 3283c8e4ec1037e9"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.pdfViewPerformURL(_: Swift.Optional&lt;__C.CPDFView&gt;, withContent: Swift.Optional&lt;Swift.String&gt;) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1717"
+                  endingLineNumber = "1717"
+                  offsetFromSymbolStart = "104">
+               </Location>
+               <Location
+                  uuid = "E7F4D56E-1C39-4024-BBA5-68C70086BBFF - 844046221d933101"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.pdfViewCanVerticalScroll() -&gt; Swift.Bool"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1715"
+                  endingLineNumber = "1715"
+                  offsetFromSymbolStart = "1020">
+               </Location>
+               <Location
+                  uuid = "E7F4D56E-1C39-4024-BBA5-68C70086BBFF - 844046221d933143"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.pdfViewCanVerticalScroll() -&gt; Swift.Bool"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1717"
+                  endingLineNumber = "1717"
+                  offsetFromSymbolStart = "376">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -5641,114 +5686,6 @@
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "2237DD70-B8BE-49EA-A4CE-79A8782755B0"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1527"
-            endingLineNumber = "1527"
-            landmarkName = "clearSaveWatermarkFlag()"
-            landmarkType = "7">
-            <Locations>
-               <Location
-                  uuid = "2237DD70-B8BE-49EA-A4CE-79A8782755B0 - c14e260fc59c11eb"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMMainViewController.documentDidUnlockNotification(Foundation.Notification) -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "1528"
-                  endingLineNumber = "1528"
-                  offsetFromSymbolStart = "3304">
-               </Location>
-               <Location
-                  uuid = "2237DD70-B8BE-49EA-A4CE-79A8782755B0 - dd7ad35f2ceaece8"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "closure #1 () -&gt; () in PDF_Master.KMMainViewController.recordIsPDFDocumentEdited(type: PDF_Master.KMSubscribeWaterMarkType) -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "1527"
-                  endingLineNumber = "1527"
-                  offsetFromSymbolStart = "60">
-               </Location>
-               <Location
-                  uuid = "2237DD70-B8BE-49EA-A4CE-79A8782755B0 - 212e83c65b6968eb"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMMainViewController.recordIsPDFDocumentEdited(type: PDF_Master.KMSubscribeWaterMarkType) -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "1527"
-                  endingLineNumber = "1527"
-                  offsetFromSymbolStart = "56">
-               </Location>
-               <Location
-                  uuid = "2237DD70-B8BE-49EA-A4CE-79A8782755B0 - dd7ad35f2ceaeccb"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "closure #1 () -&gt; () in PDF_Master.KMMainViewController.recordIsPDFDocumentEdited(type: PDF_Master.KMSubscribeWaterMarkType) -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "1528"
-                  endingLineNumber = "1528"
-                  offsetFromSymbolStart = "48">
-               </Location>
-               <Location
-                  uuid = "2237DD70-B8BE-49EA-A4CE-79A8782755B0 - d41263d42370e59b"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMMainViewController.clearSaveWatermarkFlag() -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "1527"
-                  endingLineNumber = "1527"
-                  offsetFromSymbolStart = "120">
-               </Location>
-               <Location
-                  uuid = "2237DD70-B8BE-49EA-A4CE-79A8782755B0 - d41263d42370e459"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMMainViewController.clearSaveWatermarkFlag() -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "1529"
-                  endingLineNumber = "1529"
-                  offsetFromSymbolStart = "44">
-               </Location>
-            </Locations>
-         </BreakpointContent>
-      </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
@@ -7901,99 +7838,6 @@
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "62BC6468-594C-4A01-ADDD-BBD0C1BEAB50"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1556"
-            endingLineNumber = "1556"
-            landmarkName = "documentDidUnlockNotification(_:)"
-            landmarkType = "7">
-            <Locations>
-               <Location
-                  uuid = "62BC6468-594C-4A01-ADDD-BBD0C1BEAB50 - 580d1f9e8b4d5f31"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMMainViewController.CPDFDocumentPageCountChangedNotification(Foundation.Notification) -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "1559"
-                  endingLineNumber = "1559"
-                  offsetFromSymbolStart = "88">
-               </Location>
-               <Location
-                  uuid = "62BC6468-594C-4A01-ADDD-BBD0C1BEAB50 - c14e260fc59c1d8f"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMMainViewController.documentDidUnlockNotification(Foundation.Notification) -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "1556"
-                  endingLineNumber = "1556"
-                  offsetFromSymbolStart = "3236">
-               </Location>
-               <Location
-                  uuid = "62BC6468-594C-4A01-ADDD-BBD0C1BEAB50 - c14e260fc59c1dae"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMMainViewController.documentDidUnlockNotification(Foundation.Notification) -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "1557"
-                  endingLineNumber = "1557"
-                  offsetFromSymbolStart = "3080">
-               </Location>
-               <Location
-                  uuid = "62BC6468-594C-4A01-ADDD-BBD0C1BEAB50 - c14e260fc59c1d8f"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMMainViewController.documentDidUnlockNotification(Foundation.Notification) -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "1556"
-                  endingLineNumber = "1556"
-                  offsetFromSymbolStart = "2672">
-               </Location>
-               <Location
-                  uuid = "62BC6468-594C-4A01-ADDD-BBD0C1BEAB50 - c14e260fc59c1dae"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMMainViewController.documentDidUnlockNotification(Foundation.Notification) -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "1557"
-                  endingLineNumber = "1557"
-                  offsetFromSymbolStart = "1728">
-               </Location>
-            </Locations>
-         </BreakpointContent>
-      </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
@@ -10825,8 +10669,8 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "1319"
             endingLineNumber = "1319"
-            landmarkName = "needShowRegisterView()"
-            landmarkType = "7">
+            landmarkName = "KMMainViewController"
+            landmarkType = "3">
             <Locations>
                <Location
                   uuid = "EB3CC863-CD88-4969-8755-C4ABD9B1445B - e1fc27ffdcb48496"
@@ -10903,6 +10747,36 @@
                   endingLineNumber = "1319"
                   offsetFromSymbolStart = "692">
                </Location>
+               <Location
+                  uuid = "EB3CC863-CD88-4969-8755-C4ABD9B1445B - dde9b0cb239df10"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.startAutoSaveTimer(Swift.Double) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1319"
+                  endingLineNumber = "1319"
+                  offsetFromSymbolStart = "216">
+               </Location>
+               <Location
+                  uuid = "EB3CC863-CD88-4969-8755-C4ABD9B1445B - c0f9ec99aa8628fa"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.needSaveDocument() -&gt; Swift.Bool"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1320"
+                  endingLineNumber = "1320"
+                  offsetFromSymbolStart = "84">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -11657,6 +11531,21 @@
                   endingLineNumber = "334"
                   offsetFromSymbolStart = "1252">
                </Location>
+               <Location
+                  uuid = "665D932E-541E-466A-8B21-F2E5162577C1 - 7bdf58dd940e0453"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMRequestServerManager.logout(complete: (Swift.Bool, Swift.Optional&lt;PDF_Master.Result&gt;) -&gt; ()) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/Manager/KMRequestServerManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "334"
+                  endingLineNumber = "334"
+                  offsetFromSymbolStart = "1264">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -13750,7 +13639,7 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "1788"
             endingLineNumber = "1788"
-            landmarkName = "pdfViewEditingAreaDidChanged(_:)"
+            landmarkName = "documentDidUnlockNotification(_:)"
             landmarkType = "7">
             <Locations>
                <Location
@@ -13828,34 +13717,79 @@
                   endingLineNumber = "1788"
                   offsetFromSymbolStart = "10484">
                </Location>
-            </Locations>
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "48000A49-5A22-4B3C-80F7-E5569AEEBBB4"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/PDFWindowController/Side/RightSide/Signature/KMDrawView.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "76"
-            endingLineNumber = "76"
-            landmarkName = "signatureImage()"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "DA9BA9CB-22EB-46CD-8640-AFC17C46F317"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/PDFWindowController/Side/RightSide/Signature/KMSignatureWindowController.swift"
-            startingColumnNumber = "9223372036854775807"
+               <Location
+                  uuid = "92E48F43-EDDA-41B9-AC18-29D691252B4A - 41c232057cc11ab6"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.pdfViewEditingAreaDidChanged(Swift.Optional&lt;__C.CPDFView&gt;) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1790"
+                  endingLineNumber = "1790"
+                  offsetFromSymbolStart = "5208">
+               </Location>
+               <Location
+                  uuid = "92E48F43-EDDA-41B9-AC18-29D691252B4A - c14e260fc59c3396"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.documentDidUnlockNotification(Foundation.Notification) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1789"
+                  endingLineNumber = "1789"
+                  offsetFromSymbolStart = "3080">
+               </Location>
+               <Location
+                  uuid = "92E48F43-EDDA-41B9-AC18-29D691252B4A - c14e260fc59c3377"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.documentDidUnlockNotification(Foundation.Notification) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1788"
+                  endingLineNumber = "1788"
+                  offsetFromSymbolStart = "2672">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "48000A49-5A22-4B3C-80F7-E5569AEEBBB4"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/PDFWindowController/Side/RightSide/Signature/KMDrawView.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "76"
+            endingLineNumber = "76"
+            landmarkName = "signatureImage()"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "DA9BA9CB-22EB-46CD-8640-AFC17C46F317"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/PDFWindowController/Side/RightSide/Signature/KMSignatureWindowController.swift"
+            startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "704"
             endingLineNumber = "704"
@@ -13983,6 +13917,21 @@
                   endingLineNumber = "634"
                   offsetFromSymbolStart = "924">
                </Location>
+               <Location
+                  uuid = "9637C1F6-AD48-462A-8BD8-6B448BB2E505 - 97bb60fbf38c2cd5"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMHomeViewController.creatPDFAction(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 = "635"
+                  endingLineNumber = "635"
+                  offsetFromSymbolStart = "84">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -14946,7 +14895,7 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "877"
             endingLineNumber = "877"
-            landmarkName = "showSecureSuccessTip()"
+            landmarkName = "enterPageEdit(_:)"
             landmarkType = "7">
             <Locations>
                <Location
@@ -15054,6 +15003,51 @@
                   endingLineNumber = "877"
                   offsetFromSymbolStart = "3896">
                </Location>
+               <Location
+                  uuid = "022F293D-ED6A-47AE-B2B5-BF53C2EFBC64 - bbab371e35dc8172"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #1 (__C.NSModalResponse) -&gt; () in closure #1 (Swift.Int) -&gt; () in PDF_Master.KMMainViewController.exeRedactConfirm(_: PDF_Master.KMRedactConfirmType, callback: () -&gt; Swift.Optional&lt;()&gt;) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "877"
+                  endingLineNumber = "877"
+                  offsetFromSymbolStart = "1008">
+               </Location>
+               <Location
+                  uuid = "022F293D-ED6A-47AE-B2B5-BF53C2EFBC64 - b3e3ffe5293183c3"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.enterPageEdit(Swift.Array&lt;Swift.Int&gt;) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "877"
+                  endingLineNumber = "877"
+                  offsetFromSymbolStart = "1932">
+               </Location>
+               <Location
+                  uuid = "022F293D-ED6A-47AE-B2B5-BF53C2EFBC64 - b3e3ffe5293183c3"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.enterPageEdit(Swift.Array&lt;Swift.Int&gt;) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "877"
+                  endingLineNumber = "877"
+                  offsetFromSymbolStart = "1240">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -15179,7 +15173,7 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "884"
             endingLineNumber = "884"
-            landmarkName = "showSecureSuccessTip()"
+            landmarkName = "enterPageEdit(_:)"
             landmarkType = "7">
             <Locations>
                <Location
@@ -15272,6 +15266,51 @@
                   endingLineNumber = "884"
                   offsetFromSymbolStart = "144">
                </Location>
+               <Location
+                  uuid = "413CB931-992A-496A-9810-2C75366C21AA - bbab371e35dc819b"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #1 (__C.NSModalResponse) -&gt; () in closure #1 (Swift.Int) -&gt; () in PDF_Master.KMMainViewController.exeRedactConfirm(_: PDF_Master.KMRedactConfirmType, callback: () -&gt; Swift.Optional&lt;()&gt;) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "884"
+                  endingLineNumber = "884"
+                  offsetFromSymbolStart = "1712">
+               </Location>
+               <Location
+                  uuid = "413CB931-992A-496A-9810-2C75366C21AA - b3e3ffe5293180cb"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.enterPageEdit(Swift.Array&lt;Swift.Int&gt;) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "885"
+                  endingLineNumber = "885"
+                  offsetFromSymbolStart = "2080">
+               </Location>
+               <Location
+                  uuid = "413CB931-992A-496A-9810-2C75366C21AA - b3e3ffe5293180ae"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.enterPageEdit(Swift.Array&lt;Swift.Int&gt;) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "888"
+                  endingLineNumber = "888"
+                  offsetFromSymbolStart = "2080">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -15738,6 +15777,21 @@
                   endingLineNumber = "3178"
                   offsetFromSymbolStart = "5172">
                </Location>
+               <Location
+                  uuid = "EA21967B-634C-4850-8C77-13815B814BFE - 642a8aa40dfa2ffe"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "(1) suspend resume partial function for closure #1 @Sendable () async -&gt; () in PDF_Master.KMMainViewController.clickChildTool(type: PDF_Master.KMToolbarType, index: Swift.Int) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "3172"
+                  endingLineNumber = "3172"
+                  offsetFromSymbolStart = "5100">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -15940,6 +15994,36 @@
                   endingLineNumber = "3343"
                   offsetFromSymbolStart = "2196">
                </Location>
+               <Location
+                  uuid = "60D16BC6-1CB2-4C01-A490-001FDFD0443C - 400d753f438a1dd9"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #1 (Swift.Int) -&gt; () in closure #10 (__C.NSModalResponse) -&gt; () in closure #1 @Sendable () async -&gt; () in PDF_Master.KMMainViewController.clickChildTool(type: PDF_Master.KMToolbarType, index: Swift.Int) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "3343"
+                  endingLineNumber = "3343"
+                  offsetFromSymbolStart = "724">
+               </Location>
+               <Location
+                  uuid = "60D16BC6-1CB2-4C01-A490-001FDFD0443C - d6e9d78a725e8a75"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #1 (Swift.Optional&lt;__C.NSDocument&gt;, Swift.Bool, Swift.Optional&lt;Swift.Error&gt;) -&gt; () in closure #1 (Swift.Int) -&gt; () in closure #10 (__C.NSModalResponse) -&gt; () in closure #1 @Sendable () async -&gt; () in PDF_Master.KMMainViewController.clickChildTool(type: PDF_Master.KMToolbarType, index: Swift.Int) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "3344"
+                  endingLineNumber = "3344"
+                  offsetFromSymbolStart = "36">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -15971,8 +16055,8 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "1010"
             endingLineNumber = "1010"
-            landmarkName = "KMMainViewController"
-            landmarkType = "3">
+            landmarkName = "_goToFirstPageForFristAppear()"
+            landmarkType = "7">
             <Locations>
                <Location
                   uuid = "D849E96F-D566-4F07-8763-C431124F4A67 - f1dc75734f3fabf5"
@@ -16049,6 +16133,51 @@
                   endingLineNumber = "1010"
                   offsetFromSymbolStart = "4528">
                </Location>
+               <Location
+                  uuid = "D849E96F-D566-4F07-8763-C431124F4A67 - 1f21647d290dae60"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.exitFullScreen(Any) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1010"
+                  endingLineNumber = "1010"
+                  offsetFromSymbolStart = "84">
+               </Location>
+               <Location
+                  uuid = "D849E96F-D566-4F07-8763-C431124F4A67 - d716b6810ca24031"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.isFileGreaterThan10MB(atPath: Swift.String) -&gt; Swift.Bool"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1011"
+                  endingLineNumber = "1011"
+                  offsetFromSymbolStart = "108">
+               </Location>
+               <Location
+                  uuid = "D849E96F-D566-4F07-8763-C431124F4A67 - d65ae9c3fb518d10"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #1 @Swift.MainActor () -&gt; () in PDF_Master.KMMainViewController._goToFirstPageForFristAppear() -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1010"
+                  endingLineNumber = "1010"
+                  offsetFromSymbolStart = "244">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -16316,6 +16445,21 @@
                   endingLineNumber = "3393"
                   offsetFromSymbolStart = "23780">
                </Location>
+               <Location
+                  uuid = "225836A8-1672-481E-A55E-CC1EEFE6073E - 642a8aa40dfa0371"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "(1) suspend resume partial function for closure #1 @Sendable () async -&gt; () in PDF_Master.KMMainViewController.clickChildTool(type: PDF_Master.KMToolbarType, index: Swift.Int) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "3393"
+                  endingLineNumber = "3393"
+                  offsetFromSymbolStart = "23372">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -16381,6 +16525,38 @@
             endingLineNumber = "3086"
             landmarkName = "clickChildTool(type:index:)"
             landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "E6B1CDBF-AE0C-4A94-ACB5-2A41B09EAD97 - 642a8aa40dfa38e4"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "(1) suspend resume partial function for closure #1 @Sendable () async -&gt; () in PDF_Master.KMMainViewController.clickChildTool(type: PDF_Master.KMToolbarType, index: Swift.Int) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "3086"
+                  endingLineNumber = "3086"
+                  offsetFromSymbolStart = "824">
+               </Location>
+               <Location
+                  uuid = "E6B1CDBF-AE0C-4A94-ACB5-2A41B09EAD97 - 642a8aa40dfa3860"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "(1) suspend resume partial function for closure #1 @Sendable () async -&gt; () in PDF_Master.KMMainViewController.clickChildTool(type: PDF_Master.KMToolbarType, index: Swift.Int) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "3090"
+                  endingLineNumber = "3090"
+                  offsetFromSymbolStart = "824">
+               </Location>
+            </Locations>
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
@@ -16845,22 +17021,6 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "FE9CDECD-01B3-4F91-9249-E6FE38BB8EAC"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/Home/ViewController/KMHomeViewController.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "172"
-            endingLineNumber = "172"
-            landmarkName = "initNetworkingData()"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
@@ -16896,80 +17056,48 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "1B540E62-5162-49F4-B069-ABE88BC88DD9"
+            uuid = "A538466B-893A-46C1-89D4-E7209C54CBA8"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/Home/ViewController/KMHomeViewController.swift"
+            filePath = "PDF Master/Class/Home/ViewController/KMHomeViewController+Action.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "200"
-            endingLineNumber = "200"
-            landmarkName = "setup()"
+            startingLineNumber = "320"
+            endingLineNumber = "320"
+            landmarkName = "openHistoryFilePath(url:)"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "E675B819-D6C5-4011-852F-FBE30AF8CE35"
+            uuid = "A078F64E-877D-4778-9508-D68534FDEEDA"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/Home/ViewController/KMHomeViewController.swift"
+            filePath = "PDF Master/Third Pard Library/RemoteConfig /KMFirebaseRemoteConfig.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "192"
-            endingLineNumber = "192"
-            landmarkName = "setup()"
+            startingLineNumber = "138"
+            endingLineNumber = "138"
+            landmarkName = "fetchWithRemoteConfigCompletionHandler(completionHandler:)"
             landmarkType = "7">
-            <Locations>
-               <Location
-                  uuid = "E675B819-D6C5-4011-852F-FBE30AF8CE35 - 740bbb176ffdea8"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "closure #3 (PDF_Master.KMHomeContentView, PDF_Master.KMFile) -&gt; () in PDF_Master.KMHomeViewController.setup() -&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 = "192"
-                  endingLineNumber = "192"
-                  offsetFromSymbolStart = "180">
-               </Location>
-               <Location
-                  uuid = "E675B819-D6C5-4011-852F-FBE30AF8CE35 - 740bbb176ffdea8"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "closure #3 (PDF_Master.KMHomeContentView, PDF_Master.KMFile) -&gt; () in PDF_Master.KMHomeViewController.setup() -&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 = "192"
-                  endingLineNumber = "192"
-                  offsetFromSymbolStart = "56">
-               </Location>
-            </Locations>
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "A538466B-893A-46C1-89D4-E7209C54CBA8"
+            uuid = "18B2B5BD-721E-4042-9B85-1E806A805032"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/Home/ViewController/KMHomeViewController+Action.swift"
+            filePath = "PDF Master/Class/AD/KMAdsManager.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "320"
-            endingLineNumber = "320"
-            landmarkName = "openHistoryFilePath(url:)"
+            startingLineNumber = "49"
+            endingLineNumber = "49"
+            landmarkName = "beginSheetModalForView(_:directions:adPosY:animated:completionHandler:)"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>

+ 11 - 0
PDF Office/PDF Master/AppDelegate.swift

@@ -43,6 +43,17 @@ class AppDelegate: NSObject, NSApplicationDelegate {
 #else
 #endif
 
+        //Firebase RemoteConfig
+#if VERSION_FREE
+        KMKdanRemoteConfig.remoteConfig().fetch { _status, error in
+            
+        }
+#endif
+        
+        KMKdanRemoteConfig.remoteConfig().fetchWithRemoteConfigCompletionHandler { status, error in
+            
+        }
+
         //        MARK: 广告数据初始化
         KMAdvertisementManager.manager.initConfig(appName: .PDFReaderProMac,
                                                   subscribeType: .unknow,

+ 0 - 11
PDF Office/PDF Master/Assets.xcassets/AccentColor.colorset/Contents.json

@@ -1,11 +0,0 @@
-{
-  "colors" : [
-    {
-      "idiom" : "universal"
-    }
-  ],
-  "info" : {
-    "author" : "xcode",
-    "version" : 1
-  }
-}

BIN
PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/1024.png


BIN
PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/128.png


BIN
PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/16.png


BIN
PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/256 1.png


BIN
PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/256.png


BIN
PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/32 1.png


BIN
PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/32.png


BIN
PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/512 1.png


BIN
PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/512.png


BIN
PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/64.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/1024.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/128.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/16.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/256-1.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/256.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/32-1.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/32.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/512-1.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/512.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Edition.appiconset/64.png


+ 6 - 6
PDF Office/PDF Master/Assets.xcassets/AppIcon.appiconset/Contents.json

@@ -7,13 +7,13 @@
       "size" : "16x16"
     },
     {
-      "filename" : "32 1.png",
+      "filename" : "32.png",
       "idiom" : "mac",
       "scale" : "2x",
       "size" : "16x16"
     },
     {
-      "filename" : "32.png",
+      "filename" : "32-1.png",
       "idiom" : "mac",
       "scale" : "1x",
       "size" : "32x32"
@@ -31,25 +31,25 @@
       "size" : "128x128"
     },
     {
-      "filename" : "256 1.png",
+      "filename" : "256.png",
       "idiom" : "mac",
       "scale" : "2x",
       "size" : "128x128"
     },
     {
-      "filename" : "256.png",
+      "filename" : "256-1.png",
       "idiom" : "mac",
       "scale" : "1x",
       "size" : "256x256"
     },
     {
-      "filename" : "512 1.png",
+      "filename" : "512.png",
       "idiom" : "mac",
       "scale" : "2x",
       "size" : "256x256"
     },
     {
-      "filename" : "512.png",
+      "filename" : "512-1.png",
       "idiom" : "mac",
       "scale" : "1x",
       "size" : "512x512"

+ 68 - 0
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Contents.json

@@ -0,0 +1,68 @@
+{
+  "images" : [
+    {
+      "filename" : "Icon-16.png",
+      "idiom" : "mac",
+      "scale" : "1x",
+      "size" : "16x16"
+    },
+    {
+      "filename" : "Icon-16@2x.png",
+      "idiom" : "mac",
+      "scale" : "2x",
+      "size" : "16x16"
+    },
+    {
+      "filename" : "Icon-32.png",
+      "idiom" : "mac",
+      "scale" : "1x",
+      "size" : "32x32"
+    },
+    {
+      "filename" : "Icon-32@2x.png",
+      "idiom" : "mac",
+      "scale" : "2x",
+      "size" : "32x32"
+    },
+    {
+      "filename" : "Icon-128.png",
+      "idiom" : "mac",
+      "scale" : "1x",
+      "size" : "128x128"
+    },
+    {
+      "filename" : "Icon-128@2x.png",
+      "idiom" : "mac",
+      "scale" : "2x",
+      "size" : "128x128"
+    },
+    {
+      "filename" : "Icon-256.png",
+      "idiom" : "mac",
+      "scale" : "1x",
+      "size" : "256x256"
+    },
+    {
+      "filename" : "Icon-256@2x.png",
+      "idiom" : "mac",
+      "scale" : "2x",
+      "size" : "256x256"
+    },
+    {
+      "filename" : "Icon-512.png",
+      "idiom" : "mac",
+      "scale" : "1x",
+      "size" : "512x512"
+    },
+    {
+      "filename" : "Icon-512@2x.png",
+      "idiom" : "mac",
+      "scale" : "2x",
+      "size" : "512x512"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-128.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-128@2x.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-16.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-16@2x.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-256.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-256@2x.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-32.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-32@2x.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-512.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro Free.appiconset/Icon-512@2x.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/1024.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/128.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/16.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/256-1.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/256.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/32-1.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/32.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/512-1.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/512.png


BIN
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/64.png


+ 68 - 0
PDF Office/PDF Master/Assets.xcassets/PDF Reader Pro.appiconset/Contents.json

@@ -0,0 +1,68 @@
+{
+  "images" : [
+    {
+      "filename" : "16.png",
+      "idiom" : "mac",
+      "scale" : "1x",
+      "size" : "16x16"
+    },
+    {
+      "filename" : "32.png",
+      "idiom" : "mac",
+      "scale" : "2x",
+      "size" : "16x16"
+    },
+    {
+      "filename" : "32-1.png",
+      "idiom" : "mac",
+      "scale" : "1x",
+      "size" : "32x32"
+    },
+    {
+      "filename" : "64.png",
+      "idiom" : "mac",
+      "scale" : "2x",
+      "size" : "32x32"
+    },
+    {
+      "filename" : "128.png",
+      "idiom" : "mac",
+      "scale" : "1x",
+      "size" : "128x128"
+    },
+    {
+      "filename" : "256.png",
+      "idiom" : "mac",
+      "scale" : "2x",
+      "size" : "128x128"
+    },
+    {
+      "filename" : "256-1.png",
+      "idiom" : "mac",
+      "scale" : "1x",
+      "size" : "256x256"
+    },
+    {
+      "filename" : "512.png",
+      "idiom" : "mac",
+      "scale" : "2x",
+      "size" : "256x256"
+    },
+    {
+      "filename" : "512-1.png",
+      "idiom" : "mac",
+      "scale" : "1x",
+      "size" : "512x512"
+    },
+    {
+      "filename" : "1024.png",
+      "idiom" : "mac",
+      "scale" : "2x",
+      "size" : "512x512"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 2 - 2
PDF Office/PDF Master/Base.lproj/Main.storyboard

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
+<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <scenes>

+ 4 - 3
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFStampAnnotation+PDFListView.swift

@@ -10,20 +10,21 @@ import Foundation
 @objc extension CPDFStampAnnotation {
     class func annotationImage(annotationModel: CPDFAnnotationModel) -> NSImage? {
         var image: NSImage?
-        let bounds = CGRectMake(0, 0, annotationModel.noteWidth(), annotationModel.noteHeight())
+//        let bounds = CGRectMake(0, 0, annotationModel.noteWidth(), annotationModel.noteHeight())
+        let bounds = CGRectMake(0, 0, 64, 64)
         image = NSImage(size: bounds.size)
         image?.lockFocus()
         NSGraphicsContext.current?.imageInterpolation = .high
         let context = NSGraphicsContext.current?.cgContext
         let lineWidth = annotationModel.lineWidth()
         let color = annotationModel.color()
-        _ = annotationModel.opacity()
+        let opacity = annotationModel.opacity()
         var red: CGFloat = 0.0
         var green: CGFloat = 0.0
         var blue: CGFloat = 0.0
         var alpha: CGFloat = 0.0
         color?.usingColorSpaceName(.calibratedRGB)?.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
-        let paintColor = NSColor(red: red, green: green, blue: blue, alpha: alpha)
+        let paintColor = NSColor(red: red, green: green, blue: blue, alpha: opacity)
         if (annotationModel.stampAnnotationType() == .signFalse) {
             context?.move(to: CGPoint(x: CGRectGetMinX(bounds) + lineWidth/2, y: CGRectGetMinY(bounds) + lineWidth/2))
             context?.addLine(to: CGPoint(x: CGRectGetMaxX(bounds) - lineWidth/2, y: CGRectGetMaxY(bounds)-lineWidth/2))

+ 1 - 1
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/KMAnnotationPropertiesViewController.m

@@ -580,7 +580,7 @@
         [annotation isKindOfClass:[CPDFMovieAnnotation class]] ||
         [annotation isKindOfClass:[CPDFSoundAnnotation class]]) {
         return 0;
-    } else if ([annotation isKindOfClass:[KMSelfSignAnnotation class]]) {
+    } else if ([annotation isKindOfClass:[CSelfSignAnnotation class]]) {
         return 279;
     } else if ([annotation isKindOfClass:[CPDFSignatureAnnotation class]]) {
         return 279;

+ 51 - 152
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/ViewController/KMAnnotationSelfSignViewController.swift

@@ -11,7 +11,7 @@ typealias KMAnnotationSelfSignViewControllerCallBack = (CAnnotationType) -> Void
 
 @objcMembers class KMAnnotationSelfSignViewController: NSViewController {
 
-    var _annotations: [KMSelfSignAnnotation]?
+    var _annotations: [CSelfSignAnnotation]?
     var selfSignType: CAnnotationType = .signText
     var pdfview: CPDFListView?
     var callBack: KMAnnotationSelfSignViewControllerCallBack?
@@ -136,89 +136,14 @@ typealias KMAnnotationSelfSignViewControllerCallBack = (CAnnotationType) -> Void
     
     // MARK: Set & Get
     
-    var annotations: [KMSelfSignAnnotation] {
-        set {
-            _annotations = newValue
-            
-            annotation = newValue.first
-        }
+    var annotations: [CSelfSignAnnotation] {
         get {
-            return _annotations!
+            return annotationModel?.annotations as! [CSelfSignAnnotation]
         }
     }
     
     // MARK: Private Method
     
-    func drawImage(with type: CAnnotationType) -> NSImage? {
-        let imageSize = NSSize(width: 50, height: 50)
-        guard imageSize.width != 0 && imageSize.height != 0 else {
-            return nil
-        }
-        
-        let image = NSImage(size: imageSize)
-        
-        let bounds = NSRect(x: 0, y: 0, width: 50, height: 50)
-        image.lockFocus()
-        NSGraphicsContext.current?.imageInterpolation = .high
-        guard let context = NSGraphicsContext.current?.cgContext else {
-            image.unlockFocus()
-            return nil
-        }
-        
-        var paintColor: NSColor
-        var lineWidth: CGFloat
-        if let annotation = annotation {
-            paintColor = annotation.lineColor
-            lineWidth = annotation.lineAnnotationWidth
-        } else {
-            paintColor = KMSelfSignAnnotation.fetchStoredColor(type)
-            lineWidth = KMSelfSignAnnotation.fetchStoredLineWidth(type)
-        }
-        
-        if type == .signTure {
-            context.move(to: CGPoint(x: bounds.minX + lineWidth/2, y: bounds.midY + lineWidth/2))
-            context.addLine(to: CGPoint(x: bounds.minX + bounds.width/3.0, y: bounds.minY + lineWidth/2))
-            context.addLine(to: CGPoint(x: bounds.maxX - lineWidth/2, y: bounds.maxY - lineWidth/2))
-            context.setLineWidth(lineWidth)
-            context.setStrokeColor(paintColor.cgColor)
-            context.setFillColor(paintColor.cgColor)
-            context.strokePath()
-        } else if type == .signFalse {
-            context.move(to: CGPoint(x: bounds.minX + lineWidth/2, y: bounds.minY + lineWidth/2))
-            context.addLine(to: CGPoint(x: bounds.maxX - lineWidth/2, y: bounds.maxY - lineWidth/2))
-            context.setLineWidth(lineWidth)
-            context.setStrokeColor(paintColor.cgColor)
-            context.setFillColor(paintColor.cgColor)
-            context.strokePath()
-            context.move(to: CGPoint(x: bounds.minX + lineWidth/2, y: bounds.maxY - lineWidth/2))
-            context.addLine(to: CGPoint(x: bounds.maxX - lineWidth/2, y: bounds.minY + lineWidth/2))
-            context.setStrokeColor(paintColor.cgColor)
-            context.setFillColor(paintColor.cgColor)
-            context.strokePath()
-        } else if type == .signLine {
-            let path = NSBezierPath(roundedRect: NSRect(x: bounds.minX + 1, y: bounds.midY - lineWidth/2, width: bounds.width - 2, height: lineWidth), xRadius: lineWidth/2.0, yRadius: lineWidth/2.0)
-            paintColor.set()
-            path.fill()
-        } else if type == .signCircle {
-            let r = min(bounds.width, bounds.height)/3.0
-            let path = NSBezierPath(roundedRect: bounds.insetBy(dx: lineWidth/2, dy: lineWidth/2), xRadius: r, yRadius: r)
-            
-            path.lineWidth = lineWidth
-            paintColor.set()
-            path.stroke()
-        } else if type == .signDot {
-            context.setStrokeColor(NSColor.black.cgColor)
-            context.setLineWidth(1.0)
-            context.addArc(center: CGPoint(x: bounds.midX, y: bounds.midY), radius: min(bounds.width/2.0 - 1, bounds.height/2.0 - 1), startAngle: 0, endAngle: CGFloat.pi * 2, clockwise: true)
-            
-            context.setStrokeColor(paintColor.cgColor)
-            context.setFillColor(paintColor.cgColor)
-            context.fillPath()
-        }
-        image.unlockFocus()
-        return image
-    }
-    
     func typeSelected(_ type: CAnnotationType) {
         let buttons: [NSButton] = [falseTypeButton, trueTypeButton, circletypeButton, lineTypeButton, dotTypeButton]
         
@@ -252,6 +177,16 @@ typealias KMAnnotationSelfSignViewControllerCallBack = (CAnnotationType) -> Void
         }
     }
     
+    private func updateAnnotation() {
+        if annotationModel?.annotation != nil {
+            for tAnnotation in annotations {
+                tAnnotation.updateAppearanceStream()
+                pdfView?.setNeedsDisplayAnnotationViewFor(tAnnotation.page)
+            }
+        }
+        imageView.image = annotationModel?.annotationImage
+    }
+    
     // MARK: Outlet Methods
     
     @IBAction func opacityComboboxAction(_ sender: NSComboBox) {
@@ -269,7 +204,6 @@ typealias KMAnnotationSelfSignViewControllerCallBack = (CAnnotationType) -> Void
         var opacity: CGFloat = 0.0
         
         originalColor.usingColorSpaceName(.calibratedRGB)?.getRed(&red, green: &green, blue: &blue, alpha: &opacity)
-
         switch sender.stringValue {
         case "25%":
             opacity = 0.25
@@ -282,97 +216,62 @@ typealias KMAnnotationSelfSignViewControllerCallBack = (CAnnotationType) -> Void
         default:
             break
         }
-        
-        opacitySlider.doubleValue = Double(opacity)
-        opacityComboBox.stringValue = "\(Int(opacity * 100))%"
-        
-        let newColor = NSColor(calibratedRed: red, green: green, blue: blue, alpha: opacity)
-        
-        if let annotation = annotation {
-            for tAnnotation in annotations {
-                tAnnotation.lineColor = newColor
-            }
-            pdfview?.needsDisplay = true
-        } else {
-            KMSelfSignAnnotation.changeStoredColor(selfSignType, color: newColor)
-        }
-        
-        colorPickView.color = newColor
-        imageView.image = drawImage(with: selfSignType)
+        annotationModel?.setOpacity(opacity)
+        opacitySlider.floatValue = Float(opacity)
+        opacitySlider.toolTip = "\(Int(opacity * 100))%"
+        updateAnnotation()
+
     }
     
     @IBAction func colorPickViewAction(_ sender: Any) {
-        if let annotation = annotation {
-            for tAnnotation in annotations {
-                tAnnotation.lineColor = colorPickView.color!
+        var red: CGFloat = 0.0, green: CGFloat = 0.0, blue: CGFloat = 0.0, opacity: CGFloat = 0.0
+        if let textColor = colorPickView.color {
+            textColor.usingColorSpaceName(.calibratedRGB)?.getRed(&red, green: &green, blue: &blue, alpha: &opacity)
+            if fabs(opacity - 0) < 0.001 {
+                if annotationModel?.annotationType == .signTure || annotationModel?.annotationType == .signFalse || annotationModel?.annotationType == .signDot || annotationModel?.annotationType == .signLine || annotationModel?.annotationType == .signCircle {
+                    annotationModel?.setOpacity(0)
+                    annotationModel?.setColor(.black)
+                }
+                
+            } else {
+                if annotationModel?.annotationType == .signTure || annotationModel?.annotationType == .signFalse || annotationModel?.annotationType == .signDot || annotationModel?.annotationType == .signLine || annotationModel?.annotationType == .signCircle {
+                    annotationModel?.setOpacity(opacity)
+                    annotationModel?.setColor(textColor)
+                }
             }
-            pdfview?.needsDisplay = true
-        } else {
-            KMSelfSignAnnotation.changeStoredColor(selfSignType, color: colorPickView.color!)
+            opacitySlider.floatValue = Float(opacity)
         }
-        imageView.image = drawImage(with: selfSignType)
+        updateAnnotation()
     }
     
     @IBAction func opacitySliderAction(_ sender: Any) {
-        var originalColor: NSColor?
-
-        if let annotation = annotation {
-            originalColor = annotation.lineColor
-        } else {
-            originalColor = KMSelfSignAnnotation.fetchStoredColor(selfSignType)
-        }
-
-        var red: CGFloat = 0.0, green: CGFloat = 0.0, blue: CGFloat = 0.0, opacity: CGFloat = 0.0
-        originalColor!.usingColorSpaceName(.calibratedRGB)?.getRed(&red, green: &green, blue: &blue, alpha: &opacity)
-
-        opacity = CGFloat(opacitySlider.floatValue)
-        opacityComboBox.stringValue = String(format: "%d%%", Int(opacity * 100))
-
-        let newColor = NSColor(calibratedRed: red, green: green, blue: blue, alpha: opacity)
-
-        if let annotation = annotation {
-            for tAnnotation in annotations {
-                tAnnotation.lineColor = newColor
-            }
-            pdfview?.needsDisplay = true
-        } else {
-            KMSelfSignAnnotation.changeStoredColor(selfSignType, color: newColor)
+        var opcity = CGFloat(opacitySlider.floatValue)
+        if opcity == 0 {
+            opcity = 0.0001
         }
-
-        imageView.image = drawImage(with: selfSignType)
-        colorPickView.color = newColor
+        annotationModel?.setOpacity(opcity)
+        opacityComboBox.stringValue = "\(Int(opcity * 100))%"
+        updateAnnotation()
     }
     
-    @IBAction func lineWidthSliderAction(_ sender: NSSlider) {
-        if let annotation = annotation {
-            for tAnnotation in annotations {
-                tAnnotation.lineAnnotationWidth = CGFloat(sender.floatValue)
-            }
-        } else {
-            KMSelfSignAnnotation.changeStoredLineWidth(selfSignType, lineWidth: CGFloat(sender.floatValue))
-        }
+    @IBAction func lineWidthSliderAction(_ sender: NSSlider) {        
+        annotationModel?.setLineWidth(CGFloat(lineWidthSlider.floatValue))
+        lineWidthComboBox.stringValue = String(format: "%0.1f pt", (annotationModel?.lineWidth())!)
         
-        lineWidthComboBox.stringValue = String(format: "%.1f pt", sender.floatValue)
-        imageView.image = drawImage(with: selfSignType)
+        updateAnnotation()
     }
 
     @IBAction func lineWidthComboboxAction(_ sender: NSComboBox) {
-        var lineWidth = sender.floatValue
+        var lineWidth = lineWidthComboBox.floatValue
         if lineWidth > 18 {
             lineWidth = 18
+        } else if lineWidth < 0.5 {
+            lineWidth = 0.5
         }
+        annotationModel?.setLineWidth(CGFloat(lineWidth))
+        lineWidthSlider.floatValue = Float((annotationModel?.lineWidth())!)
         
-        if let annotation = annotation {
-            for tAnnotation in annotations {
-                tAnnotation.lineAnnotationWidth = CGFloat(lineWidth)
-            }
-        } else {
-            KMSelfSignAnnotation.changeStoredLineWidth(selfSignType, lineWidth: CGFloat(lineWidth))
-        }
-        
-        lineWidthSlider.floatValue = lineWidth
-        sender.stringValue = String(format: "%0.1f pt", lineWidth)
-        imageView.image = drawImage(with: selfSignType)
+        updateAnnotation()
     }
     
     @IBAction func buttonClicked_TypeAwitch(_ sender: NSButton) {
@@ -402,7 +301,7 @@ typealias KMAnnotationSelfSignViewControllerCallBack = (CAnnotationType) -> Void
 
         pdfview?.needsDisplay = true
         selfSignType = annotation!.annotationType
-        imageView.image = drawImage(with: selfSignType)
+        imageView.image = annotationModel?.annotationImage
         typeSelected(selfSignType)
 
         if let callBack = callBack {

+ 10 - 6
PDF Office/PDF Master/Class/Preference/Controller/DisplayPreferences.xib

@@ -9,22 +9,26 @@
         <customObject id="-2" userLabel="File's Owner" customClass="KMDisplayPreferences" customModule="PDF_Master" customModuleProvider="target">
             <connections>
                 <outlet property="antiAliasCheckButton" destination="9" id="101"/>
-                <outlet property="colorControl1" destination="16" id="4VH-rQ-aQh"/>
-                <outlet property="colorControl2" destination="15" id="mXT-Tn-DxH"/>
-                <outlet property="colorControl3" destination="17" id="rO8-kH-MIn"/>
-                <outlet property="colorControl4" destination="23" id="u2w-ik-lQX"/>
-                <outlet property="colorControl5" destination="24" id="sAj-v2-oQu"/>
+                <outlet property="backgroundColorLabel" destination="13" id="gpv-xx-K0p"/>
                 <outlet property="discreteSizeCheckbox" destination="6" id="UuS-R3-NWc"/>
+                <outlet property="displayLabel" destination="12" id="n6e-iu-1AL"/>
+                <outlet property="fullScreenColorWell" destination="17" id="XfC-gi-IZe"/>
+                <outlet property="fullScreenLabel" destination="15" id="zOv-f9-wsL"/>
                 <outlet property="greekingLabelField" destination="11" id="88"/>
                 <outlet property="greekingTextField" destination="10" id="89"/>
+                <outlet property="invertBarButton" destination="24" id="IaJ-Qp-wNw"/>
                 <outlet property="normalColorLabel" destination="14" id="daq-AW-7rq"/>
+                <outlet property="normalColorWell" destination="16" id="9Sh-2N-iB5"/>
                 <outlet property="pagesLabel" destination="2" id="I9C-bM-UbM"/>
                 <outlet property="pagesSlider" destination="3" id="TP7-Qv-sKL"/>
+                <outlet property="readBarColorWell" destination="23" id="MaK-yT-7AC"/>
+                <outlet property="readBarLabel" destination="22" id="hZx-Ia-jCe"/>
                 <outlet property="readingbarColorLabel" destination="25" id="sWY-2L-hjx"/>
                 <outlet property="snapshotLabel" destination="4" id="9nB-5o-dYN"/>
                 <outlet property="snapshotSlider" destination="5" id="2lw-as-Icg"/>
                 <outlet property="tableFontComboBox" destination="29" id="90"/>
                 <outlet property="tableFontLabelField" destination="28" id="91"/>
+                <outlet property="thumbSizeLabel" destination="7" id="diK-Qz-Afl"/>
                 <outlet property="view" destination="1" id="81"/>
             </connections>
         </customObject>
@@ -265,7 +269,7 @@
                     </connections>
                 </comboBox>
             </subviews>
-            <point key="canvasLocation" x="-3" y="154"/>
+            <point key="canvasLocation" x="82" y="86"/>
         </customView>
         <userDefaultsController representsSharedInstance="YES" id="61"/>
         <customObject id="108" userLabel="Thumbnail Size Labels"/>

+ 16 - 0
PDF Office/PDF Master/Class/Preference/Controller/GeneralPreferences.xib

@@ -18,6 +18,9 @@
                 <outlet property="fullScreenButton" destination="13" id="rwP-bT-LWq"/>
                 <outlet property="keepSnapshotOnTopButton" destination="4" id="bht-be-yAj"/>
                 <outlet property="normalButton" destination="14" id="2S5-K4-kkj"/>
+                <outlet property="openFileForDefaultButton" destination="33" id="3xZ-fT-imW"/>
+                <outlet property="openFileForFitButton" destination="31" id="tAU-m9-tFw"/>
+                <outlet property="openFileForMaximButton" destination="32" id="B4z-pC-Eqx"/>
                 <outlet property="openFilesLabelField" destination="16" id="78"/>
                 <outlet property="openFilesMatrix" destination="17" id="77"/>
                 <outlet property="openTabButton" destination="A68-ez-c6M" id="72V-76-LRe"/>
@@ -25,6 +28,9 @@
                 <outlet property="rememberSnapshotButton" destination="18" id="o9x-Lr-Cj5"/>
                 <outlet property="reopenLastOpenFilesButton" destination="2" id="bGZ-Pm-RIH"/>
                 <outlet property="savePasswordsMatrix" destination="21" id="75"/>
+                <outlet property="savePwdForAlwaysButton" destination="27" id="GAB-mq-gLv"/>
+                <outlet property="savePwdForAskButton" destination="25" id="ZSq-bS-eey"/>
+                <outlet property="savePwdForNeverButton" destination="26" id="WRR-tA-ahj"/>
                 <outlet property="showConvertMenuButton" destination="AVa-Al-8gG" id="XPN-Cp-dpt"/>
                 <outlet property="showLeftSideButton" destination="3" id="dqO-V9-G0B"/>
                 <outlet property="updateIntervalLabelField" destination="7" id="76"/>
@@ -175,15 +181,22 @@
                                 <font key="font" metaFont="system"/>
                                 <connections>
                                     <accessibilityConnection property="title" destination="16" id="51"/>
+                                    <action selector="openFileForDefaultAction:" target="-2" id="eTS-vr-ReX"/>
                                 </connections>
                             </buttonCell>
                             <buttonCell type="radio" title="Maximized" imagePosition="leading" alignment="left" tag="1" inset="2" id="32">
                                 <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
                                 <font key="font" metaFont="system"/>
+                                <connections>
+                                    <action selector="openFileForMaximAction:" target="-2" id="KK4-zZ-Go6"/>
+                                </connections>
                             </buttonCell>
                             <buttonCell type="radio" title="Fit" imagePosition="leading" alignment="left" tag="2" inset="2" id="31">
                                 <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
                                 <font key="font" metaFont="system"/>
+                                <connections>
+                                    <action selector="openFileForFitAction:" target="-2" id="HNe-8C-0zd"/>
+                                </connections>
                             </buttonCell>
                         </column>
                     </cells>
@@ -344,6 +357,7 @@
                                 <font key="font" metaFont="system"/>
                                 <connections>
                                     <accessibilityConnection property="title" destination="20" id="54"/>
+                                    <action selector="savePwdForAlwaysAction:" target="-2" id="4xv-FY-2lB"/>
                                 </connections>
                             </buttonCell>
                         </column>
@@ -353,6 +367,7 @@
                                 <font key="font" metaFont="system"/>
                                 <connections>
                                     <accessibilityConnection property="title" destination="20" id="52"/>
+                                    <action selector="savePwdForNeverAction:" target="-2" id="Eoe-Jg-bT6"/>
                                 </connections>
                             </buttonCell>
                         </column>
@@ -362,6 +377,7 @@
                                 <font key="font" metaFont="system"/>
                                 <connections>
                                     <accessibilityConnection property="title" destination="20" id="55"/>
+                                    <action selector="savePwdForAskAction:" target="-2" id="IBr-Rp-Zdj"/>
                                 </connections>
                             </buttonCell>
                         </column>

+ 89 - 19
PDF Office/PDF Master/Class/Preference/Controller/KMDisplayPreferences.swift

@@ -9,31 +9,36 @@ import Cocoa
 
 @objcMembers class KMDisplayPreferences: NSViewController {
     
+    @IBOutlet weak var thumbSizeLabel: NSTextField!
+    @IBOutlet weak var pagesLabel: NSTextField!
+    @IBOutlet weak var pagesSlider: NSSlider!
+    @IBOutlet weak var snapshotLabel: NSTextField!
+    @IBOutlet weak var snapshotSlider: NSSlider!
+    @IBOutlet weak var discreteSizeCheckbox: NSButton!
+    
     @IBOutlet var tableFontLabelField: NSTextField!
     @IBOutlet var tableFontComboBox: NSComboBox!
+    
+    @IBOutlet weak var displayLabel: NSTextField!
     @IBOutlet var greekingLabelField: NSTextField!
     @IBOutlet var greekingTextField: NSTextField!
     @IBOutlet var antiAliasCheckButton: NSButton!
     
-    @IBOutlet weak var pagesLabel: NSTextField!
-    @IBOutlet weak var snapshotLabel: NSTextField!
-    var thumbnailSizeLabels: [NSTextField] = []
+    @IBOutlet weak var backgroundColorLabel: NSTextField!
+    @IBOutlet weak var normalColorLabel: NSTextField!
+    @IBOutlet weak var normalColorWell: NSColorWell!
+    @IBOutlet weak var fullScreenLabel: NSTextField!
+    @IBOutlet weak var fullScreenColorWell: NSColorWell!
     
-    @IBOutlet weak var pagesSlider: NSSlider!
-    @IBOutlet weak var snapshotSlider: NSSlider!
-    @IBOutlet weak var discreteSizeCheckbox: NSButton!
+    @IBOutlet weak var readBarLabel: NSTextField!
+    @IBOutlet weak var readingbarColorLabel: NSTextField!
+    @IBOutlet weak var readBarColorWell: NSColorWell!
+    @IBOutlet weak var invertBarButton: NSButton!
+   
+    var thumbnailSizeLabels: [NSTextField] = []
     var thumbnailSizeControls: [NSControl] = []
     
-    @IBOutlet weak var normalColorLabel: NSTextField!
-    @IBOutlet weak var readingbarColorLabel: NSTextField!
     var colorLabels: [NSTextField] = []
-    
-    
-    @IBOutlet weak var colorControl1: NSColorWell!
-    @IBOutlet weak var colorControl2: NSTextField!
-    @IBOutlet weak var colorControl3: NSColorWell!
-    @IBOutlet weak var colorControl4: NSColorWell!
-    @IBOutlet weak var colorControl5: NSButton!
     var colorControls: [NSControl] = []
     /*
      - (NSUInteger)countOfSizes;
@@ -57,10 +62,10 @@ import Cocoa
         _ = KMAutoSizeLabelFields([self.greekingLabelField], [self.greekingTextField], false)
         self.antiAliasCheckButton.sizeToFit()
         self.colorLabels = [self.normalColorLabel, self.readingbarColorLabel]
-        self.colorControls = [self.colorControl1, self.colorControl2, self.colorControl3, self.colorControl4, self.colorControl5]
+        self.colorControls = [self.normalColorWell, self.fullScreenLabel, self.fullScreenColorWell, self.readBarColorWell, self.invertBarButton]
         _ = KMAutoSizeLabelFields(self.colorLabels, self.colorControls, false)
-        _ = KMAutoSizeLabelFields([self.colorControl2], [self.colorControl3], false);
-        self.colorControl5.sizeToFit()
+        _ = KMAutoSizeLabelFields([self.fullScreenLabel], [self.fullScreenColorWell], false);
+        self.invertBarButton.sizeToFit()
         
         var w = 0.0
         for view in self.view.subviews {
@@ -83,8 +88,29 @@ import Cocoa
         super.viewDidLoad()
         // Do view setup here.
         
+        self.pagesSlider.target = self
+        self.pagesSlider.action = #selector(pageSliderAction)
+        self.snapshotSlider.target = self
+        self.snapshotSlider.action = #selector(snapshotSliderAction)
+        
         self.tableFontComboBox.addItems(withObjectValues: SKDefaultFontSizes)
         self.tableFontComboBox.selectItem(at: 4)
+        self.tableFontComboBox.delegate = self
+        
+        self.greekingTextField.delegate = self
+        self.antiAliasCheckButton.target = self
+        self.antiAliasCheckButton.action = #selector(antiAliasCheckAction)
+        
+        self.normalColorWell.target = self
+        self.normalColorWell.action = #selector(normalColorAction)
+        self.fullScreenColorWell.target = self
+        self.fullScreenColorWell.action = #selector(fullScreenColorAction)
+        
+        self.readBarColorWell.target = self
+        self.readBarColorWell.action = #selector(readBarColorAction)
+        
+        self.invertBarButton.target = self
+        self.invertBarButton.action = #selector(invertBarAction)
     }
     
     override var title: String? {
@@ -96,6 +122,14 @@ import Cocoa
         }
     }
     
+    @objc func pageSliderAction(_ sender: NSSlider) {
+        
+    }
+    
+    @objc func snapshotSliderAction(_ sender: NSSlider) {
+        
+    }
+    
     @IBAction func changeDiscreteThumbnailSizes(_ sender: AnyObject?) {
         let slider1 = self.pagesSlider
         let slider2 = self.snapshotSlider
@@ -118,6 +152,26 @@ import Cocoa
         slider2?.sizeToFit()
     }
     
+    @objc func antiAliasCheckAction(_ sender: NSButton) {
+        
+    }
+    
+    @objc func normalColorAction(_ sender: NSColorWell) {
+        
+    }
+    
+    @objc func fullScreenColorAction(_ sender: NSColorWell) {
+        
+    }
+    
+    @objc func readBarColorAction(_ sender: NSColorWell) {
+        
+    }
+    
+    @objc func invertBarAction(_ sender: NSButton) {
+        
+    }
+    
     /*
      - (NSUInteger)countOfSizes {
          return sizeof(SKDefaultFontSizes) / sizeof(CGFloat);
@@ -132,6 +186,22 @@ import Cocoa
 
 extension KMDisplayPreferences: KMPreferencePane {
     func defaultsDidRevert() {
-        
+        // no things.
+    }
+}
+
+extension KMDisplayPreferences: NSComboBoxDelegate {
+    func comboBoxSelectionDidChange(_ notification: Notification) {
+        if self.tableFontComboBox.isEqual(to: notification.object) {
+            
+        }
+    }
+}
+
+extension KMDisplayPreferences: NSTextFieldDelegate {
+    func controlTextDidChange(_ obj: Notification) {
+        if self.greekingTextField.isEqual(to: obj.object) {
+            
+        }
     }
 }

+ 89 - 29
PDF Office/PDF Master/Class/Preference/Controller/KMGeneralPreferences.swift

@@ -30,6 +30,10 @@ class KMGeneralPreferences: NSViewController {
     
     @IBOutlet weak var openFilesLabelField: NSTextField!
     @IBOutlet weak var openFilesMatrix: NSMatrix!
+    @IBOutlet weak var openFileForDefaultButton: NSButtonCell!
+    @IBOutlet weak var openFileForMaximButton: NSButtonCell!
+    @IBOutlet weak var openFileForFitButton: NSButtonCell!
+    
     @IBOutlet weak var showLeftSideButton: NSButton!
     @IBOutlet weak var rememberSnapshotButton: NSButton!
     @IBOutlet weak var normalButton: NSButton!
@@ -40,6 +44,9 @@ class KMGeneralPreferences: NSViewController {
     @IBOutlet weak var keepSnapshotOnTopButton: NSButton!
     
     @IBOutlet var savePasswordsMatrix: NSMatrix!
+    @IBOutlet weak var savePwdForAlwaysButton: NSButtonCell!
+    @IBOutlet weak var savePwdForNeverButton: NSButtonCell!
+    @IBOutlet weak var savePwdForAskButton: NSButtonCell!
     
     @IBOutlet var updateIntervalPopUpButton: NSPopUpButton!
     @IBOutlet var updateIntervalLabelField: NSTextField!
@@ -136,10 +143,12 @@ class KMGeneralPreferences: NSViewController {
         }
         self.autoSaveLbl.stringValue = String(format: "%.0f %@", AutoSaveManager.manager.timeInterval, KMLocalizedString("minute(s)", nil))
         
+        self._selectOpenFileType(KMPreference.shared.openFileType)
         self.showLeftSideButton.state = KMPreference.shared.showLeftSideBar ? .on : .off
         self.rememberSnapshotButton.state = KMPreference.shared.rememberSnapshot ? .on : .off
         self.autoSaveNotesBackupButton.state = KMPreference.shared.autoSaveNoteBackup ? .on : .off
         self.keepSnapshotOnTopButton.state = KMPreference.shared.keepSnapshotWindowToTop ? .on : .off
+        self._selectSavePasswordType(KMPreference.shared.savePasswordType)
         
         self.authorLabel.sizeToFit()
         var frame = self.authorTextField.frame
@@ -165,16 +174,12 @@ class KMGeneralPreferences: NSViewController {
     
     @IBAction func revertPDFViewSettings(_ sender: AnyObject?) {
 //        [[NSUserDefaultsController sharedUserDefaultsController] revertToInitialValueForKey:SKStringConstants.defaultPDFDisplaySettingsKey];
+        KMPreference.shared.revertInitPDFViewSettingType = .normal
     }
     
     @IBAction func revertFullScreenPDFViewSettings(_ sender: AnyObject?) {
 //        [[NSUserDefaultsController sharedUserDefaultsController] revertToInitialValueForKey:SKStringConstants.defaultFullScreenPDFDisplaySettingsKey];
-    }
-    
-    @IBAction func authorTextFieldAction(_ sender: AnyObject?) {
-//        NSString *userName = self.authorTextField.stringValue.length > 0 ? self.authorTextField.stringValue : @"";
-//        [[NSUserDefaults standardUserDefaults] setObject:userName forKey:@"SKUserName"];
-//        [[NSUserDefaults standardUserDefaults] synchronize];
+        KMPreference.shared.revertInitPDFViewSettingType = .fullScreen
     }
     
     @IBAction func defaultOpenButtonAction(_ sender: AnyObject?) {
@@ -182,28 +187,28 @@ class KMGeneralPreferences: NSViewController {
     }
     
     @IBAction func openTabButtonAction(_ sender: AnyObject?) {
-//        if (@available(macOS 10.12, *)) {
-//            NSWindowTabbingMode tabbingMode = NSWindowTabbingModeAutomatic;
-//            if (self.openTabButton.indexOfSelectedItem == 0) {
-//    #if VERSION_FREE
-//    //            if (![IAPProductsManager defaultManager].isAvailableAllFunction) {
-//    //                [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"KMOpenDocumentInTab"];
-//    //                [[KMPurchaseCompareWindowController sharedInstance] showWindow:nil];
-//    //                return;
-//    //            }
-//    #endif
-//                tabbingMode = NSWindowTabbingModePreferred;
-//            } else if (self.openTabButton.indexOfSelectedItem == 1) {
-//                tabbingMode = NSWindowTabbingModeDisallowed;
-//            }
-//            for (NSDocument *document in [[NSDocumentController sharedDocumentController] documents]) {
-//    //            if ([document isKindOfClass:[SKMainDocument class]]) {
-//    //                for (NSWindowController *windowController in document.windowControllers) {
-//    //                    windowController.window.tabbingMode = tabbingMode;
-//    //                }
-//    //            }
-//            }
-//        }
+        var tabbingMode = NSWindow.TabbingMode.automatic
+        if (self.openTabButton.indexOfSelectedItem == 0) {
+#if VERSION_FREE
+            if IAPProductsManager.default().isAvailableAllFunction() == false {
+                //    //                [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"KMOpenDocumentInTab"];
+                KMPreference.shared.openDocumentType = .newWindow
+                KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+                return
+            }
+#endif
+            tabbingMode = .preferred
+        } else if (self.openTabButton.indexOfSelectedItem == 1) {
+            tabbingMode = .disallowed
+        }
+        for document in NSDocumentController.shared.documents {
+            guard let _doc = document as? KMMainDocument else {
+                continue
+            }
+            for windowController in _doc.windowControllers {
+                windowController.window?.tabbingMode = tabbingMode
+            }
+        }
     }
     
     @IBAction func showConvertMenuButtonAction(_ sender: AnyObject?) {
@@ -219,6 +224,18 @@ class KMGeneralPreferences: NSViewController {
         KMPreference.shared.openLastUnclosedDocumentWhenAppStart = sender.state == .on
     }
     
+    
+    @IBAction func openFileForDefaultAction(_ sender: Any) {
+        KMPreference.shared.openFileType = .default
+    }
+    
+    @IBAction func openFileForMaximAction(_ sender: Any) {
+        KMPreference.shared.openFileType = .maxim
+    }
+    @IBAction func openFileForFitAction(_ sender: Any) {
+        KMPreference.shared.openFileType = .fit
+    }
+    
     @IBAction func showLeftSideAction(_ sender: Any) {
         KMPreference.shared.showLeftSideBar = self.showLeftSideButton.state == .on
     }
@@ -252,7 +269,18 @@ class KMGeneralPreferences: NSViewController {
     @objc func autoSaveSliderFinish() {
         NotificationCenter.default.post(name: NSNotification.Name(rawValue: KAutoSaveTimeValueChangedNoti), object: nil)
     }
-
+    
+    @IBAction func savePwdForAlwaysAction(_ sender: Any) {
+        KMPreference.shared.savePasswordType = .always
+    }
+    
+    @IBAction func savePwdForNeverAction(_ sender: Any) {
+        KMPreference.shared.savePasswordType = .never
+    }
+    @IBAction func savePwdForAskAction(_ sender: Any) {
+        KMPreference.shared.savePasswordType = .ask
+    }
+    
     /*
      #pragma mark Accessors
 
@@ -324,6 +352,38 @@ extension KMGeneralPreferences {
             self.fullScreenButton.isEnabled = true
         }
     }
+    
+    private func _selectOpenFileType(_ type: KMPreferenceOpenFileType) {
+        if type == .default {
+            self.openFileForDefaultButton.state = .on
+            self.openFileForMaximButton.state = .off
+            self.openFileForFitButton.state = .off
+        } else if type == .maxim {
+            self.openFileForDefaultButton.state = .off
+            self.openFileForMaximButton.state = .on
+            self.openFileForFitButton.state = .off
+        } else if type == .fit {
+            self.openFileForDefaultButton.state = .off
+            self.openFileForMaximButton.state = .off
+            self.openFileForFitButton.state = .on
+        }
+    }
+    
+    private func _selectSavePasswordType(_ type: KMPreferenceSavePasswordType) {
+        if type == .always {
+            self.savePwdForAlwaysButton.state = .on
+            self.savePwdForNeverButton.state = .off
+            self.savePwdForAskButton.state = .off
+        } else if type == .never {
+            self.savePwdForAlwaysButton.state = .off
+            self.savePwdForNeverButton.state = .on
+            self.savePwdForAskButton.state = .off
+        } else if type == .ask {
+            self.savePwdForAlwaysButton.state = .off
+            self.savePwdForNeverButton.state = .off
+            self.savePwdForAskButton.state = .on
+        }
+    }
 }
 
 extension KMGeneralPreferences: KMPreferencePane {

+ 11 - 0
PDF Office/PDF Master/Class/Preference/Window/KMPreferenceController.swift

@@ -309,6 +309,8 @@ class KMPreferenceController: NSWindowController {
                 pane.defaultsDidRevert?()
             }
             
+            KMPreference.shared.resetAllData()
+            
             //重置OCR后,记录切换值
 //            [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"KMStatusPlanPopUpBtnKey"];
 //            [[NSUserDefaults standardUserDefaults] synchronize];
@@ -428,6 +430,15 @@ extension KMPreferenceController {
                     NSUserDefaultsController.shared.revertToInitialValues(forKeys: data)
                 }
                 self.currentPane?.defaultsDidRevert?()
+                
+                if _currentPane is KMGeneralPreferences {
+                    KMPreference.shared.resetData(.general)
+                } else if _currentPane is KMDisplayPreferences {
+                    KMPreference.shared.resetData(.display)
+                } else if _currentPane is KMNotesPreferences {
+                    KMPreference.shared.resetData(.markup)
+                }
+                
 //                if ([[currentPane title] isEqualToString:@"OCR"]) { //重置OCR后,记录切换值
 //                    [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"KMStatusPlanPopUpBtnKey"];
 //                    [[NSUserDefaults standardUserDefaults] synchronize];

+ 77 - 8
PDF Office/PDF Master/Third Pard Library/RemoteConfig /KMFirebaseRemoteConfig.swift

@@ -9,10 +9,9 @@ enum KMRemoteConfigFetchStatus: Int {
 let KMFirebaseRemateConfigRequestIsSuccessful = "KMFirebaseRemateConfigRequestIsSuccessful"
 let KMFirebaseRemateConfigFinishNoti = "KMFirebaseRemateConfigFinishNoti"
 
-class KMKdanRemoteConfig: NSObject {
-
-    typealias KMRemoteConfigFetchCompletion = (KMRemoteConfigFetchStatus, Error?) -> Void
+typealias KMRemoteConfigFetchCompletion = (_ status: KMRemoteConfigFetchStatus, _ error: Error?) -> Void
 
+class KMKdanRemoteConfig: NSObject {
     private let kIsDisplayAdsKey = "isDisplayAds"
     private let kIsDisplayAdsEvaluateAfterKey = "isDisplayAdsEvaluateAfter"
     private let kDisplayAdsUrlConfigKey = "displayAdsUrl"
@@ -69,11 +68,81 @@ class KMKdanRemoteConfig: NSObject {
     }
 
     func fetch(completionHandler: @escaping KMRemoteConfigFetchCompletion) {
-        // Your implementation here
+        let mainBundleString = Bundle.main.bundleIdentifier ?? ""
+        let configuration = URLSessionConfiguration.default
+        configuration.requestCachePolicy = .reloadIgnoringLocalCacheData
+        configuration.urlCache = URLCache.shared
+        
+        let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? ""
+        let params = "app_code=\(mainBundleString)&app_version=\(appVersion)&key=DisplayAds"
+        
+        var urlString = "http://store.pdfreaderpro.com:3018/api/get_config"
+        
+        #if DEBUG
+        urlString = "http://test-store.kdan.cn:3018/api/get_config"
+        #endif
+        
+        if let url = URL(string: "\(urlString)?\(params)") {
+            var request = URLRequest(url: url)
+            request.httpMethod = "GET"
+            request.setValue("application/json", forHTTPHeaderField: "Content-Type")
+            
+            let session = URLSession(configuration: configuration)
+            let task = session.dataTask(with: request) { data, response, error in
+                if let error = error {
+                    completionHandler(.failure, error)
+                } else if let data = data {
+                    do {
+                        if let datas = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any],
+                           let displayAds = datas["data"] as? [String: Any] {
+    #if VERSION_DMG
+                            if let dmg = displayAds["DisplayAds"] as? String {
+                                if let jsonData = dmg.data(using: .utf8),
+                                   let dic = try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any],
+                                   let remoteConfigDatas = dic["dmg"] {
+                                    self.remoteConfigDatas = remoteConfigDatas
+                                }
+                            }
+    #else
+                            if let store = displayAds["DisplayAds"] as? String {
+                                if let jsonData = store.data(using: .utf8),
+                                   let dic = try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any],
+                                   let remoteConfigDatas = dic["store"] {
+                                    self.remoteConfigDatas = remoteConfigDatas as! [String : Any]
+                                }
+                            }
+    #endif
+                        }
+                        completionHandler(.success, nil)
+                    } catch {
+                        completionHandler(.failure, error)
+                    }
+                }
+                
+                NotificationCenter.default.post(name: Notification.Name(KMFirebaseRemateConfigRequestIsSuccessful), object: self, userInfo: nil)
+            }
+            task.resume()
+        }
     }
-
+    
     func fetchWithRemoteConfigCompletionHandler(completionHandler: @escaping RemoteConfigFetchCompletion) {
-        // Your implementation here
+        let expirationDuration: TimeInterval = 0
+        
+        // If your app is using developer mode, expirationDuration is set to 0, so each fetch will
+        // retrieve values from the Remote Config service.
+        // TimeInterval is set to expirationDuration here, indicating the next fetch request will use
+        // data fetched from the Remote Config service, rather than cached parameter values, if cached
+        // parameter values are more than expirationDuration seconds old. See Best Practices in the
+        // README for more information.
+        self.firebaseConfig.fetch(withExpirationDuration: expirationDuration) { status, error in
+            if status == .success {
+                self.firebaseConfig.activate { changed, error in
+                    // Handle activation completion if needed
+                }
+            }
+            NotificationCenter.default.post(name: Notification.Name(KMFirebaseRemateConfigFinishNoti), object: self, userInfo: nil)
+            completionHandler(status, error)
+        }
     }
 
     func isDisplayAds() -> Bool {
@@ -157,7 +226,7 @@ class KMKdanRemoteConfig: NSObject {
     }
 
     func appEvaluateBeforeAdsCount() -> Int {
-        var evaluateCount = userInfo[kAppEvaluateBeforeAdsCountKey] as? Int ?? 0
+        var evaluateCount = userInfo[kAppEvaluateBeforeAdsCountKey] as? Int ?? 1
         if let value = remoteConfigDatas[kAppEvaluateBeforeAdsCountKey] as? Int {
             evaluateCount = value
         }
@@ -165,7 +234,7 @@ class KMKdanRemoteConfig: NSObject {
     }
 
     func appEvaluateAfterAdsCount() -> Int {
-        var evaluateCount = userInfo[kAppEvaluateAfterAdsCountKey] as? Int ?? 0
+        var evaluateCount = userInfo[kAppEvaluateAfterAdsCountKey] as? Int ?? 1
         if let value = remoteConfigDatas[kAppEvaluateAfterAdsCountKey] as? Int {
             evaluateCount = value
         }