Browse Source

【偏好设置】AutoSaveManager OC转Swift

tangchao 1 year ago
parent
commit
b019271f19

+ 8 - 10
PDF Office/PDF Master.xcodeproj/project.pbxproj

@@ -2287,12 +2287,12 @@
 		BB3EAEB0293E3D6000D92407 /* KMConvertBaseWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB3EAEAC293E3D6000D92407 /* KMConvertBaseWindowController.xib */; };
 		BB3EAEB1293E3D6000D92407 /* KMConvertBaseWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB3EAEAC293E3D6000D92407 /* KMConvertBaseWindowController.xib */; };
 		BB3EAEB2293E3D6000D92407 /* KMConvertBaseWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB3EAEAC293E3D6000D92407 /* KMConvertBaseWindowController.xib */; };
-		BB46CF432AFB663700281EDF /* AutoSaveManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BB46CF422AFB663700281EDF /* AutoSaveManager.m */; };
-		BB46CF442AFB663700281EDF /* AutoSaveManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BB46CF422AFB663700281EDF /* AutoSaveManager.m */; };
-		BB46CF452AFB663700281EDF /* AutoSaveManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BB46CF422AFB663700281EDF /* AutoSaveManager.m */; };
 		BB46CF482AFB7E5C00281EDF /* InitialUserDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB46CF472AFB7E5C00281EDF /* InitialUserDefaults.plist */; };
 		BB46CF492AFB7E5C00281EDF /* InitialUserDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB46CF472AFB7E5C00281EDF /* InitialUserDefaults.plist */; };
 		BB46CF4A2AFB7E5C00281EDF /* InitialUserDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB46CF472AFB7E5C00281EDF /* InitialUserDefaults.plist */; };
+		BB46CF4C2AFBB34900281EDF /* AutoSaveManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB46CF4B2AFBB34800281EDF /* AutoSaveManager.swift */; };
+		BB46CF4D2AFBB34900281EDF /* AutoSaveManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB46CF4B2AFBB34800281EDF /* AutoSaveManager.swift */; };
+		BB46CF4E2AFBB34900281EDF /* AutoSaveManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB46CF4B2AFBB34800281EDF /* AutoSaveManager.swift */; };
 		BB49ECDD293EED6100C82CA2 /* KMConvertWordWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ECDB293EED6100C82CA2 /* KMConvertWordWindowController.swift */; };
 		BB49ECDE293EED6100C82CA2 /* KMConvertWordWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ECDB293EED6100C82CA2 /* KMConvertWordWindowController.swift */; };
 		BB49ECDF293EED6100C82CA2 /* KMConvertWordWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ECDB293EED6100C82CA2 /* KMConvertWordWindowController.swift */; };
@@ -4482,9 +4482,8 @@
 		BB3AD6F829935483004FC1AE /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = "<group>"; };
 		BB3EAEAB293E3D6000D92407 /* KMConvertBaseWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMConvertBaseWindowController.swift; sourceTree = "<group>"; };
 		BB3EAEAC293E3D6000D92407 /* KMConvertBaseWindowController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMConvertBaseWindowController.xib; sourceTree = "<group>"; };
-		BB46CF412AFB663600281EDF /* AutoSaveManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoSaveManager.h; sourceTree = "<group>"; };
-		BB46CF422AFB663700281EDF /* AutoSaveManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoSaveManager.m; sourceTree = "<group>"; };
 		BB46CF472AFB7E5C00281EDF /* InitialUserDefaults.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = InitialUserDefaults.plist; sourceTree = "<group>"; };
+		BB46CF4B2AFBB34800281EDF /* AutoSaveManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoSaveManager.swift; sourceTree = "<group>"; };
 		BB49ECDB293EED6100C82CA2 /* KMConvertWordWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMConvertWordWindowController.swift; sourceTree = "<group>"; };
 		BB49ECDC293EED6100C82CA2 /* KMConvertWordWindowController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMConvertWordWindowController.xib; sourceTree = "<group>"; };
 		BB49ECE4293EF54800C82CA2 /* KMCustomPDFView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMCustomPDFView.swift; sourceTree = "<group>"; };
@@ -7809,8 +7808,7 @@
 		BB46CF402AFB65F700281EDF /* Tools */ = {
 			isa = PBXGroup;
 			children = (
-				BB46CF412AFB663600281EDF /* AutoSaveManager.h */,
-				BB46CF422AFB663700281EDF /* AutoSaveManager.m */,
+				BB46CF4B2AFBB34800281EDF /* AutoSaveManager.swift */,
 			);
 			path = Tools;
 			sourceTree = "<group>";
@@ -10708,6 +10706,7 @@
 				9F0CB5092986563300007028 /* KMDesignToken+BorderBottom.swift in Sources */,
 				9F1FE4E429406E4700E952CA /* GTMNSColor+Luminance.m in Sources */,
 				BBA5429C29F13A140041BAD0 /* KMMemorandumPattern.swift in Sources */,
+				BB46CF4C2AFBB34900281EDF /* AutoSaveManager.swift in Sources */,
 				8942F7BF2923670F00389627 /* KMBOTAManagerClass.swift in Sources */,
 				89E4E7352964148E002DBA6F /* KMAnnotationPropertiesViewController.m in Sources */,
 				9F221ED729A9EC0900978A59 /* KMFillSignTextPanel.swift in Sources */,
@@ -11077,7 +11076,6 @@
 				BB5F8A0E29BB04F000365ADB /* GBDeviceInfo_OSX.m in Sources */,
 				BBB7B4892A033F6200B58A5A /* KMThumbnailView.swift in Sources */,
 				BB671A012AD2D2A0003D44D5 /* CPDFStampAnnotation+PDFListView.swift in Sources */,
-				BB46CF432AFB663700281EDF /* AutoSaveManager.m in Sources */,
 				9F0CB4F5298655D500007028 /* KMDesignToken+Fill.swift in Sources */,
 				BBB7B48D2A0384E100B58A5A /* NSCollectionViewItem+KMExtension.swift in Sources */,
 				F3732323292DFFFE0013862C /* CPDFListView+Extension.m in Sources */,
@@ -11325,6 +11323,7 @@
 				AD1CA4312A0640F20070541F /* KMAnnotationScreenHeadView.swift in Sources */,
 				BB14700C299DC0D100784A6A /* OIDAuthorizationRequest.m in Sources */,
 				ADE3C1DF29A5AA0B00793B13 /* KMRequestServer.swift in Sources */,
+				BB46CF4D2AFBB34900281EDF /* AutoSaveManager.swift in Sources */,
 				BBC3484B2958222C008D2CD1 /* KMBackgroundOutsideView.swift in Sources */,
 				BB90E4F32AF37F9F00B04B9F /* KMCustomViewButton.swift in Sources */,
 				AD0257402A8601CD00EAD5D5 /* KMAppleLoginManager.swift in Sources */,
@@ -11972,7 +11971,6 @@
 				ADAFDA352AE8EE9300F084BC /* KMAdvertisementImage.swift in Sources */,
 				9F1F82CB292F6CF90092C4B4 /* KMPDFInsertPageWindow.swift in Sources */,
 				BB6CA4CD298BB0D000A13864 /* KMPreferenceWindowController.swift in Sources */,
-				BB46CF442AFB663700281EDF /* AutoSaveManager.m in Sources */,
 				ADB5E51A2A3711CB007110A8 /* KMSubscribeWaterMarkView.swift in Sources */,
 				BB8F456E295AC1220037EA22 /* KMHeaderFooterAdjectiveModel.swift in Sources */,
 				F3599174292B62F5000D25DE /* CStringConstants.m in Sources */,
@@ -12111,7 +12109,6 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				BB46CF452AFB663700281EDF /* AutoSaveManager.m in Sources */,
 				BBC745F9296178BD0072C2ED /* KMCropTools.swift in Sources */,
 				ADBC2D21299CDA29006280C8 /* NSView+Layer.swift in Sources */,
 				BB65A06D2AF8D8A1003A27A0 /* KMNotesPreferences.swift in Sources */,
@@ -12562,6 +12559,7 @@
 				9F81ADC829B9B12C002251F4 /* NSButton+DesignToken.swift in Sources */,
 				BB146FB9299DC0D100784A6A /* GTLRRuntimeCommon.m in Sources */,
 				BB147013299DC0D100784A6A /* OIDError.m in Sources */,
+				BB46CF4E2AFBB34900281EDF /* AutoSaveManager.swift in Sources */,
 				9F0CB4BF2977C06300007028 /* KMPropertiesPanelColorSubVC.swift in Sources */,
 				ADD1B6BD29420B4A00C3FFF7 /* KMPrintPreviewView.swift in Sources */,
 				BB146FF2299DC0D100784A6A /* GTLRUploadParameters.m in Sources */,

+ 0 - 44
PDF Office/PDF Master/Class/AutoSave/Tools/AutoSaveManager.h

@@ -1,44 +0,0 @@
-//
-//  AutoSaveManager.h
-//  PDF Reader Pro Edition
-//
-//  Created by Niehaoyu on 2023/08/10.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-#define KAutoSaveTimeValueChangedNoti @"KAutoSaveTimeValueChangedNoti"
-
-@interface AutoSaveManager : NSObject
-
-@property (nonatomic, copy, readonly) NSString *autoSaveFolder;
-
-@property (nonatomic, strong, readonly) NSMutableArray *originalPaths;//保存的原文件信息
-
-@property (nonatomic, strong, readonly) NSMutableArray *autoSavePaths;//对应保存的信息
-
-@property (nonatomic, strong) NSMutableArray *opendPaths;//所有打开的文件信息汇总
-
-@property (nonatomic, assign) BOOL autoSaveEnabled;//APP是否允许进行自动缓存
-
-@property (nonatomic, assign) BOOL autoSaveAlertShow;//防止重复弹出
-
-@property (nonatomic, assign) BOOL autoSaveDidEndAction;
-
-@property (nonatomic, assign) BOOL isSaving;//当前是否正在保存
-
-@property (nonatomic, assign) CGFloat timeInterval;
-
-+ (AutoSaveManager *)manager;
-
-- (void)clearCache;
-
-- (NSString *)autoSaveWithPath:(NSString *)filePath;
-
-- (void)removeAutoSavePath:(NSString *)filePath;
-
-@end
-
-NS_ASSUME_NONNULL_END

+ 0 - 232
PDF Office/PDF Master/Class/AutoSave/Tools/AutoSaveManager.m

@@ -1,232 +0,0 @@
-//
-//  AutoSaveManager.m
-//  PDF Reader Pro Edition
-//
-//  Created by Niehaoyu on 2023/08/10.
-//
-
-#import "AutoSaveManager.h"
-
-@interface AutoSaveManager ()
-
-@property (nonatomic, strong) NSMutableDictionary *infoDict;
-
-@property (nonatomic, strong, readwrite) NSMutableArray *originalPaths;//保存的原文件信息
-
-@property (nonatomic, strong, readwrite) NSMutableArray *autoSavePaths;
-
-@property (nonatomic, copy, readwrite) NSString *autoSaveFolder;
-
-@end
-
-@implementation AutoSaveManager
-
-+ (AutoSaveManager *)manager {
-    static AutoSaveManager *__manager = nil;
-    if (!__manager) {
-        __manager = [[super allocWithZone:NULL] init];
-    }
-    return __manager;
-}
-
-+ (instancetype)allocWithZone:(struct _NSZone *)zone {
-    return AutoSaveManager.manager;
-}
-
-- (id)init {
-    self = [super init];
-    if (self) {
-        
-        self.autoSaveEnabled = [[NSUserDefaults standardUserDefaults] boolForKey:@"ComAutoSaveKey"];
-        
-        if ([[NSUserDefaults standardUserDefaults] floatForKey:@"AutoSaveTimeIntervalKey"]) {
-            self.timeInterval = [[NSUserDefaults standardUserDefaults] floatForKey:@"AutoSaveTimeIntervalKey"];
-        } else {
-            self.timeInterval = 15;
-        }
-        
-        [self loadData];
-        
-        self.autoSaveDidEndAction = YES;
-        
-    }
-    return self;
-}
-
-- (void)loadData {
-    
-    NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
-    
-    if ([[NSFileManager defaultManager] fileExistsAtPath:[cachesPath stringByAppendingPathComponent:[NSBundle mainBundle].bundleIdentifier]]) {
-        cachesPath = [cachesPath stringByAppendingPathComponent:[NSBundle mainBundle].bundleIdentifier];
-    }
-    cachesPath = [cachesPath stringByAppendingPathComponent:@"autoSaveFolder"];
-    if (![[NSFileManager defaultManager] fileExistsAtPath:cachesPath]) {
-        [[NSFileManager defaultManager] createDirectoryAtPath:cachesPath withIntermediateDirectories:YES attributes:nil error:nil];
-    }
-    self.autoSaveFolder = cachesPath;
-    
-#if DEBUG
-    NSLog(@"autoSaveFolder===%@",cachesPath);
-#endif
-    
-    NSString *plistPath = [NSString stringWithFormat:@"%@/autoSaveInfo.plist",self.autoSaveFolder];
-    NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
-    if (dict.allKeys.count == 0) {
-        return;
-    }
-    
-    self.infoDict = dict;
-    
-    if (!self.autoSavePaths) {
-        self.autoSavePaths = [[NSMutableArray alloc] init];
-    }
-    
-    if (!self.originalPaths) {
-        self.originalPaths = [[NSMutableArray alloc] init];
-    }
-    [self.originalPaths addObjectsFromArray:dict.allKeys];
-    
-    self.opendPaths = [[NSMutableArray alloc] init];
-    
-    NSArray *arr = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:self.autoSaveFolder error:nil];
-    for (NSString *fileName in arr) {
-        NSString *savedKey = [self.autoSaveFolder stringByAppendingPathComponent:fileName];
-        if ([dict.allValues containsObject:savedKey]) {
-            [self.autoSavePaths addObject:savedKey];
-        }else {
-            if ([fileName isEqualToString:@"autoSaveInfo.plist"]) {
-                
-            } else {
-                [[NSFileManager defaultManager] removeItemAtPath:savedKey error:nil];
-            }
-        }
-    }
-}
-
-#pragma mark - Setter
-- (void)setAutoSaveEnabled:(BOOL)autoSaveEnabled {
-    _autoSaveEnabled = autoSaveEnabled;
-
-    [[NSUserDefaults standardUserDefaults] setBool:_autoSaveEnabled forKey:@"ComAutoSaveKey"];
-    [[NSUserDefaults standardUserDefaults] synchronize];
-}
-
-- (void)setTimeInterval:(CGFloat)timeInterval {
-    _timeInterval = timeInterval;
-    
-    [[NSUserDefaults standardUserDefaults] setFloat:_timeInterval forKey:@"AutoSaveTimeIntervalKey"];
-    [[NSUserDefaults standardUserDefaults] synchronize];
-}
-
-- (NSString *)URLEncodedString:(NSString *)string {
-    CFStringRef stringRef = CFBridgingRetain(string);
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-    CFStringRef encoded = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
-                                                                  stringRef,
-                                                                  NULL,
-                                                                  CFSTR("!*'\"();:@&=+$,/?%#[]% "),
-                                                                  kCFStringEncodingUTF8);
-#pragma clang diagnostic pop
-    CFRelease(stringRef);
-    return CFBridgingRelease(encoded);
-}
-
-- (NSString *)getValidFilePath:(NSString *)oldPath {
-    NSFileManager *fileManager = [NSFileManager defaultManager];
-    NSDictionary  *fileDic     = [fileManager attributesOfItemAtPath:oldPath error:nil];
-    NSString      *fileType    = [fileDic objectForKey:NSFileType];
-    int i =1;
-    NSString *newPath = oldPath;
-    while ([fileManager fileExistsAtPath:newPath]) {
-        if ([fileType isEqualToString:NSFileTypeDirectory]) {
-            newPath = [oldPath stringByAppendingFormat:@"(%d)",i];
-        } else {
-            NSString *fileExtension = [oldPath pathExtension];
-            newPath = [[oldPath stringByDeletingPathExtension] stringByAppendingFormat:@"(%d).%@",i,fileExtension];
-        }
-        i++;
-    }
-    return newPath;
-}
-
-#pragma mark - Public Method
-- (void)clearCache {
-    if ([[NSFileManager defaultManager] fileExistsAtPath:self.autoSaveFolder]) {
-        [[NSFileManager defaultManager] removeItemAtPath:self.autoSaveFolder error:nil];
-    }
-    if (![[NSFileManager defaultManager] fileExistsAtPath:self.autoSaveFolder]) {
-        [[NSFileManager defaultManager] createDirectoryAtPath:self.autoSaveFolder withIntermediateDirectories:YES attributes:nil error:nil];
-    }
-}
-
-- (NSString *)autoSaveWithPath:(NSString *)filePath {
-    
-    NSString *autoSaveFolder = self.autoSaveFolder;
-    
-    NSString *plistPath = [NSString stringWithFormat:@"%@/autoSaveInfo.plist",autoSaveFolder];
-    NSString *savePath = [NSString stringWithFormat:@"%@/%@_%@.%@",autoSaveFolder,filePath.lastPathComponent.stringByDeletingPathExtension,@"recovered",filePath.pathExtension];
-
-    if ([[NSFileManager defaultManager] fileExistsAtPath:plistPath]) {
-        NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
-        if ([dict.allKeys containsObject:filePath]) {
-            savePath = [dict valueForKey:filePath];
-        }
-        if (savePath.length > 0 && filePath.length > 0) {
-            if ([dict.allValues containsObject:savePath]) {
-                //不同路径下同名文件的保存覆盖的情况处理
-                NSArray *values = [[NSArray alloc] initWithArray:dict.allValues];
-                
-                for (NSString *key in dict.allKeys) {
-                    NSString *value = [dict objectForKey:key];
-                    if ([savePath isEqualToString:value] &&
-                        ![key isEqualToString:filePath]) {
-                        int count = 1;
-                        savePath = [NSString stringWithFormat:@"%@/%@_%@(%d).%@",autoSaveFolder,filePath.lastPathComponent.stringByDeletingPathExtension,@"recovered",count,filePath.pathExtension];
-                        while ([values containsObject:savePath]) {
-                            count ++;
-                            savePath = [NSString stringWithFormat:@"%@/%@_%@(%d).%@",autoSaveFolder,filePath.lastPathComponent.stringByDeletingPathExtension,@"recovered",count,filePath.pathExtension];
-                        }
-                    }
-                }
-            }
-            [dict setValue:savePath forKey:filePath];
-        }
-        [dict writeToURL:[NSURL fileURLWithPath:plistPath] error:nil];
-    } else {
-        NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
-        if (savePath.length > 0 && filePath.length > 0) {
-            [dict setValue:savePath forKey:filePath];
-        }
-        [dict writeToURL:[NSURL fileURLWithPath:plistPath] error:nil];
-        
-    }
-    return savePath;
-}
-
-- (void)removeAutoSavePath:(NSString *)filePath {
- 
-    NSString *autoSaveFolder = self.autoSaveFolder;
-
-    NSString *plistPath = [NSString stringWithFormat:@"%@/autoSaveInfo.plist",autoSaveFolder];
-    if ([[NSFileManager defaultManager] fileExistsAtPath:plistPath]) {
-        NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
-        if ([dict valueForKey:filePath]) {
-            NSString *savePath = [dict valueForKey:filePath];
-            if ([[NSFileManager defaultManager] fileExistsAtPath:savePath]) {
-                [[NSFileManager defaultManager] removeItemAtPath:savePath error:nil];
-            }
-            [dict removeObjectForKey:filePath];
-        }
-        
-        if (dict.allKeys.count > 0) {
-            [dict writeToURL:[NSURL fileURLWithPath:plistPath] error:nil];
-        } else {
-            [[NSFileManager defaultManager] removeItemAtPath:plistPath error:nil];
-        }
-    }
-    
-}
-
-@end

+ 277 - 0
PDF Office/PDF Master/Class/AutoSave/Tools/AutoSaveManager.swift

@@ -0,0 +1,277 @@
+//
+//  AutoSaveManager.swift
+//  PDF Master
+//
+//  Created by tangchao on 2023/11/8.
+//
+
+import Cocoa
+
+public let KAutoSaveTimeValueChangedNoti = "KAutoSaveTimeValueChangedNoti"
+
+class AutoSaveManager: NSObject {
+    //APP是否允许进行自动缓存
+    var autoSaveEnabled = false
+    var timeInterval: CGFloat = 15
+    /*
+     @interface AutoSaveManager : NSObject
+
+     @property (nonatomic, copy, readonly) NSString *autoSaveFolder;
+
+     @property (nonatomic, strong, readonly) NSMutableArray *originalPaths;//保存的原文件信息
+
+     @property (nonatomic, strong, readonly) NSMutableArray *autoSavePaths;//对应保存的信息
+
+     @property (nonatomic, strong) NSMutableArray *opendPaths;//所有打开的文件信息汇总
+
+     @property (nonatomic, assign) BOOL;
+
+     @property (nonatomic, assign) BOOL autoSaveAlertShow;//防止重复弹出
+
+     @property (nonatomic, assign) BOOL autoSaveDidEndAction;
+
+     @property (nonatomic, assign) BOOL isSaving;//当前是否正在保存
+
+     @property (nonatomic, assign) CGFloat ;
+
+     + (AutoSaveManager *)manager;
+
+     - (void)clearCache;
+
+     - (NSString *)autoSaveWithPath:(NSString *)filePath;
+
+     - (void)removeAutoSavePath:(NSString *)filePath;
+
+     @end
+     */
+    
+    static let manager = AutoSaveManager()
+    
+    /*
+     @interface AutoSaveManager ()
+
+     @property (nonatomic, strong) NSMutableDictionary *infoDict;
+
+     @property (nonatomic, strong, readwrite) NSMutableArray *originalPaths;//保存的原文件信息
+
+     @property (nonatomic, strong, readwrite) NSMutableArray *autoSavePaths;
+
+     @property (nonatomic, copy, readwrite) NSString *autoSaveFolder;
+
+     @end
+
+     @implementation AutoSaveManager
+
+     + (AutoSaveManager *)manager {
+         static AutoSaveManager *__manager = nil;
+         if (!__manager) {
+             __manager = [[super allocWithZone:NULL] init];
+         }
+         return __manager;
+     }
+
+     + (instancetype)allocWithZone:(struct _NSZone *)zone {
+         return AutoSaveManager.manager;
+     }
+
+     - (id)init {
+         self = [super init];
+         if (self) {
+             
+             self.autoSaveEnabled = [[NSUserDefaults standardUserDefaults] boolForKey:@"ComAutoSaveKey"];
+             
+             if ([[NSUserDefaults standardUserDefaults] floatForKey:@"AutoSaveTimeIntervalKey"]) {
+                 self.timeInterval = [[NSUserDefaults standardUserDefaults] floatForKey:@"AutoSaveTimeIntervalKey"];
+             } else {
+                 self.timeInterval = 15;
+             }
+             
+             [self loadData];
+             
+             self.autoSaveDidEndAction = YES;
+             
+         }
+         return self;
+     }
+
+     - (void)loadData {
+         
+         NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
+         
+         if ([[NSFileManager defaultManager] fileExistsAtPath:[cachesPath stringByAppendingPathComponent:[NSBundle mainBundle].bundleIdentifier]]) {
+             cachesPath = [cachesPath stringByAppendingPathComponent:[NSBundle mainBundle].bundleIdentifier];
+         }
+         cachesPath = [cachesPath stringByAppendingPathComponent:@"autoSaveFolder"];
+         if (![[NSFileManager defaultManager] fileExistsAtPath:cachesPath]) {
+             [[NSFileManager defaultManager] createDirectoryAtPath:cachesPath withIntermediateDirectories:YES attributes:nil error:nil];
+         }
+         self.autoSaveFolder = cachesPath;
+         
+     #if DEBUG
+         NSLog(@"autoSaveFolder===%@",cachesPath);
+     #endif
+         
+         NSString *plistPath = [NSString stringWithFormat:@"%@/autoSaveInfo.plist",self.autoSaveFolder];
+         NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
+         if (dict.allKeys.count == 0) {
+             return;
+         }
+         
+         self.infoDict = dict;
+         
+         if (!self.autoSavePaths) {
+             self.autoSavePaths = [[NSMutableArray alloc] init];
+         }
+         
+         if (!self.originalPaths) {
+             self.originalPaths = [[NSMutableArray alloc] init];
+         }
+         [self.originalPaths addObjectsFromArray:dict.allKeys];
+         
+         self.opendPaths = [[NSMutableArray alloc] init];
+         
+         NSArray *arr = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:self.autoSaveFolder error:nil];
+         for (NSString *fileName in arr) {
+             NSString *savedKey = [self.autoSaveFolder stringByAppendingPathComponent:fileName];
+             if ([dict.allValues containsObject:savedKey]) {
+                 [self.autoSavePaths addObject:savedKey];
+             }else {
+                 if ([fileName isEqualToString:@"autoSaveInfo.plist"]) {
+                     
+                 } else {
+                     [[NSFileManager defaultManager] removeItemAtPath:savedKey error:nil];
+                 }
+             }
+         }
+     }
+
+     #pragma mark - Setter
+     - (void)setAutoSaveEnabled:(BOOL)autoSaveEnabled {
+         _autoSaveEnabled = autoSaveEnabled;
+
+         [[NSUserDefaults standardUserDefaults] setBool:_autoSaveEnabled forKey:@"ComAutoSaveKey"];
+         [[NSUserDefaults standardUserDefaults] synchronize];
+     }
+
+     - (void)setTimeInterval:(CGFloat)timeInterval {
+         _timeInterval = timeInterval;
+         
+         [[NSUserDefaults standardUserDefaults] setFloat:_timeInterval forKey:@"AutoSaveTimeIntervalKey"];
+         [[NSUserDefaults standardUserDefaults] synchronize];
+     }
+
+     - (NSString *)URLEncodedString:(NSString *)string {
+         CFStringRef stringRef = CFBridgingRetain(string);
+     #pragma clang diagnostic push
+     #pragma clang diagnostic ignored "-Wdeprecated-declarations"
+         CFStringRef encoded = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
+                                                                       stringRef,
+                                                                       NULL,
+                                                                       CFSTR("!*'\"();:@&=+$,/?%#[]% "),
+                                                                       kCFStringEncodingUTF8);
+     #pragma clang diagnostic pop
+         CFRelease(stringRef);
+         return CFBridgingRelease(encoded);
+     }
+
+     - (NSString *)getValidFilePath:(NSString *)oldPath {
+         NSFileManager *fileManager = [NSFileManager defaultManager];
+         NSDictionary  *fileDic     = [fileManager attributesOfItemAtPath:oldPath error:nil];
+         NSString      *fileType    = [fileDic objectForKey:NSFileType];
+         int i =1;
+         NSString *newPath = oldPath;
+         while ([fileManager fileExistsAtPath:newPath]) {
+             if ([fileType isEqualToString:NSFileTypeDirectory]) {
+                 newPath = [oldPath stringByAppendingFormat:@"(%d)",i];
+             } else {
+                 NSString *fileExtension = [oldPath pathExtension];
+                 newPath = [[oldPath stringByDeletingPathExtension] stringByAppendingFormat:@"(%d).%@",i,fileExtension];
+             }
+             i++;
+         }
+         return newPath;
+     }
+
+     #pragma mark - Public Method
+     - (void)clearCache {
+         if ([[NSFileManager defaultManager] fileExistsAtPath:self.autoSaveFolder]) {
+             [[NSFileManager defaultManager] removeItemAtPath:self.autoSaveFolder error:nil];
+         }
+         if (![[NSFileManager defaultManager] fileExistsAtPath:self.autoSaveFolder]) {
+             [[NSFileManager defaultManager] createDirectoryAtPath:self.autoSaveFolder withIntermediateDirectories:YES attributes:nil error:nil];
+         }
+     }
+
+     - (NSString *)autoSaveWithPath:(NSString *)filePath {
+         
+         NSString *autoSaveFolder = self.autoSaveFolder;
+         
+         NSString *plistPath = [NSString stringWithFormat:@"%@/autoSaveInfo.plist",autoSaveFolder];
+         NSString *savePath = [NSString stringWithFormat:@"%@/%@_%@.%@",autoSaveFolder,filePath.lastPathComponent.stringByDeletingPathExtension,@"recovered",filePath.pathExtension];
+
+         if ([[NSFileManager defaultManager] fileExistsAtPath:plistPath]) {
+             NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
+             if ([dict.allKeys containsObject:filePath]) {
+                 savePath = [dict valueForKey:filePath];
+             }
+             if (savePath.length > 0 && filePath.length > 0) {
+                 if ([dict.allValues containsObject:savePath]) {
+                     //不同路径下同名文件的保存覆盖的情况处理
+                     NSArray *values = [[NSArray alloc] initWithArray:dict.allValues];
+                     
+                     for (NSString *key in dict.allKeys) {
+                         NSString *value = [dict objectForKey:key];
+                         if ([savePath isEqualToString:value] &&
+                             ![key isEqualToString:filePath]) {
+                             int count = 1;
+                             savePath = [NSString stringWithFormat:@"%@/%@_%@(%d).%@",autoSaveFolder,filePath.lastPathComponent.stringByDeletingPathExtension,@"recovered",count,filePath.pathExtension];
+                             while ([values containsObject:savePath]) {
+                                 count ++;
+                                 savePath = [NSString stringWithFormat:@"%@/%@_%@(%d).%@",autoSaveFolder,filePath.lastPathComponent.stringByDeletingPathExtension,@"recovered",count,filePath.pathExtension];
+                             }
+                         }
+                     }
+                 }
+                 [dict setValue:savePath forKey:filePath];
+             }
+             [dict writeToURL:[NSURL fileURLWithPath:plistPath] error:nil];
+         } else {
+             NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
+             if (savePath.length > 0 && filePath.length > 0) {
+                 [dict setValue:savePath forKey:filePath];
+             }
+             [dict writeToURL:[NSURL fileURLWithPath:plistPath] error:nil];
+             
+         }
+         return savePath;
+     }
+
+     - (void)removeAutoSavePath:(NSString *)filePath {
+      
+         NSString *autoSaveFolder = self.autoSaveFolder;
+
+         NSString *plistPath = [NSString stringWithFormat:@"%@/autoSaveInfo.plist",autoSaveFolder];
+         if ([[NSFileManager defaultManager] fileExistsAtPath:plistPath]) {
+             NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
+             if ([dict valueForKey:filePath]) {
+                 NSString *savePath = [dict valueForKey:filePath];
+                 if ([[NSFileManager defaultManager] fileExistsAtPath:savePath]) {
+                     [[NSFileManager defaultManager] removeItemAtPath:savePath error:nil];
+                 }
+                 [dict removeObjectForKey:filePath];
+             }
+             
+             if (dict.allKeys.count > 0) {
+                 [dict writeToURL:[NSURL fileURLWithPath:plistPath] error:nil];
+             } else {
+                 [[NSFileManager defaultManager] removeItemAtPath:plistPath error:nil];
+             }
+         }
+         
+     }
+
+     @end
+
+     */
+
+}

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

@@ -138,15 +138,15 @@ class KMGeneralPreferences: NSViewController {
     #endif
         
         self.autoSaveInfoBtn.title = KMLocalizedString("Autosave Documents", nil)
-        self.autoSaveInfoBtn.state = AutoSaveManager().autoSaveEnabled ? .on : .off
-        self.autoSaveSlider.isEnabled = AutoSaveManager().autoSaveEnabled
+        self.autoSaveInfoBtn.state = AutoSaveManager.manager.autoSaveEnabled ? .on : .off
+        self.autoSaveSlider.isEnabled = AutoSaveManager.manager.autoSaveEnabled
         
-        if (AutoSaveManager().timeInterval > 1) {
-            self.autoSaveSlider.floatValue = Float((AutoSaveManager().timeInterval - 1) / 19)
+        if (AutoSaveManager.manager.timeInterval > 1) {
+            self.autoSaveSlider.floatValue = Float((AutoSaveManager.manager.timeInterval - 1) / 19)
         } else {
             self.autoSaveSlider.floatValue = 0;
         }
-        self.autoSaveLbl.stringValue = String(format: "%.0f %@", AutoSaveManager().timeInterval, KMLocalizedString("minute(s)", nil))
+        self.autoSaveLbl.stringValue = String(format: "%.0f %@", AutoSaveManager.manager.timeInterval, KMLocalizedString("minute(s)", nil))
     }
     
     override func viewDidLoad() {
@@ -210,15 +210,15 @@ class KMGeneralPreferences: NSViewController {
     }
     
     @IBAction func autoSaveButtonAction(_ sender: AnyObject?) {
-        AutoSaveManager().autoSaveEnabled = self.autoSaveInfoBtn.state == .on
-        self.autoSaveSlider.isEnabled = AutoSaveManager().autoSaveEnabled
+        AutoSaveManager.manager.autoSaveEnabled = self.autoSaveInfoBtn.state == .on
+        self.autoSaveSlider.isEnabled = AutoSaveManager.manager.autoSaveEnabled
     }
     
     @IBAction func autoSaveSliderAction(_ sender: AnyObject?) {
         let value = 1 + 19 * self.autoSaveSlider.floatValue
         
-        AutoSaveManager().timeInterval = CGFloat(value)
-        self.autoSaveLbl.stringValue = String(format: "%.0f %@", AutoSaveManager().timeInterval, KMLocalizedString("minute(s)", nil))
+        AutoSaveManager.manager.timeInterval = CGFloat(value)
+        self.autoSaveLbl.stringValue = String(format: "%.0f %@", AutoSaveManager.manager.timeInterval, KMLocalizedString("minute(s)", nil))
         
         Self.cancelPreviousPerformRequests(withTarget: self, selector: #selector(autoSaveSliderFinish), object: nil)
         self.perform(#selector(autoSaveSliderFinish), with: nil, afterDelay: 1)

+ 0 - 2
PDF Office/PDF Master/PDF_Master DMG-Bridging-Header.h

@@ -60,5 +60,3 @@
 
 #import "KMConvertURLToPDF.h"
 #import "NSImage_SKExtensions.h"
-
-#import "AutoSaveManager.h"

+ 0 - 2
PDF Office/PDF Master/PDF_Master Pro-Bridging-Header.h

@@ -43,5 +43,3 @@
 
 #import "KMConvertURLToPDF.h"
 #import "NSImage_SKExtensions.h"
-
-#import "AutoSaveManager.h"

+ 0 - 2
PDF Office/PDF Master/PDF_Master-Bridging-Header.h

@@ -57,5 +57,3 @@
 #import "KMConvertURLToPDF.h"
 
 #import "NSImage_SKExtensions.h"
-
-#import "AutoSaveManager.h"