QMProfileManager.m 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. //
  2. // QMProfileManager.m
  3. // IMSDK-OC
  4. //
  5. // Created by HCF on 16/8/11.
  6. // Copyright © 2016年 HCF. All rights reserved.
  7. //
  8. #import "QMProfileManager.h"
  9. #import "QMFileModel.h"
  10. #import "QMFileManager.h"
  11. @implementation QMProfileManager
  12. static NSString *DocFolder = @"%@/Doc";
  13. static NSString *ImageFolder = @"%@/Image";
  14. static NSString *AudioFolder = @"%@/Audio";
  15. static NSString *VideoFolder = @"%@/Video";
  16. static NSString *OtherFolder = @"%@/Other";
  17. static NSString *SendVideoFolder = @"%@/SendVideo";
  18. static NSString *profileList = @"profiles.plist";
  19. static NSString *lastLogin = @"lastlogin.plist";
  20. static NSString *KEY_LASTLOGIN_NAME = @"LASTLOGIN_NAME";
  21. static NSString *KEY_LASTLOGIN_PASSWORD = @"LASTLOGIN_PASSWORD";
  22. static QMProfileManager * instance = nil;
  23. + (instancetype)sharedInstance {
  24. static dispatch_once_t onceToken;
  25. dispatch_once(&onceToken, ^{
  26. instance = [[self alloc] init];
  27. });
  28. return instance;
  29. }
  30. + (instancetype)allocWithZone:(struct _NSZone *)zone {
  31. static dispatch_once_t onceToken;
  32. dispatch_once(&onceToken, ^{
  33. instance = [super allocWithZone:zone];
  34. });
  35. return instance;
  36. }
  37. - (BOOL)loadProfile: (NSString *)name password: (NSString *)password {
  38. if (![QMFileManager fileIsExsited:profileList]) {
  39. [QMFileManager writeDictionary:[NSDictionary new] toFile:profileList];
  40. [QMFileManager writeDictionary:[NSDictionary new] toFile:lastLogin];
  41. }
  42. NSMutableDictionary *profiles = [QMFileManager readDictionary:profileList];
  43. if ([profiles objectForKey:name]==nil) {
  44. [QMFileManager createFolder:name];
  45. [QMFileManager createFolder:[NSString stringWithFormat:DocFolder, name]];
  46. [QMFileManager createFolder:[NSString stringWithFormat:AudioFolder, name]];
  47. [QMFileManager createFolder:[NSString stringWithFormat:ImageFolder, name]];
  48. [QMFileManager createFolder:[NSString stringWithFormat:VideoFolder, name]];
  49. [QMFileManager createFolder:[NSString stringWithFormat:OtherFolder, name]];
  50. [QMFileManager createFolder:[NSString stringWithFormat:SendVideoFolder, name]];
  51. }
  52. NSDictionary *lastDict = @{
  53. KEY_LASTLOGIN_NAME :name,
  54. KEY_LASTLOGIN_PASSWORD :password
  55. };
  56. [QMFileManager writeDictionary:lastDict toFile:lastLogin];
  57. return YES;
  58. }
  59. - (NSArray *)getFilesAttributes: (enum QMFileCategory)type {
  60. NSMutableArray *fileModels = [[NSMutableArray alloc] init];
  61. NSMutableDictionary *profiles = [QMFileManager readDictionary:lastLogin];
  62. if ([profiles objectForKey:KEY_LASTLOGIN_NAME] == nil) {
  63. return fileModels;
  64. }
  65. NSString *folder = @"";
  66. switch (type) {
  67. case DOCX:
  68. folder = [NSString stringWithFormat:DocFolder, [profiles objectForKey:KEY_LASTLOGIN_NAME]];
  69. break;
  70. case IMAGE:
  71. folder = [NSString stringWithFormat:ImageFolder, [profiles objectForKey:KEY_LASTLOGIN_NAME]];
  72. break;
  73. case AUDIO:
  74. folder = [NSString stringWithFormat:AudioFolder, [profiles objectForKey:KEY_LASTLOGIN_NAME]];
  75. break;
  76. case VIDEO:
  77. folder = [NSString stringWithFormat:VideoFolder, [profiles objectForKey:KEY_LASTLOGIN_NAME]];
  78. break;
  79. case OTHER:
  80. folder = [NSString stringWithFormat:OtherFolder, [profiles objectForKey:KEY_LASTLOGIN_NAME]];
  81. break;
  82. default:
  83. break;
  84. }
  85. NSArray *fileNames = [QMFileManager getFileNames:folder];
  86. NSLog(@"%@", fileNames);
  87. for (NSString * fileName in fileNames) {
  88. NSLog(@"%@", fileName);
  89. NSLog(@"%@", [NSString stringWithFormat:@"%@/%@", folder, fileName]);
  90. NSDictionary *fileInfo = [QMFileManager getFileAttributes:[NSString stringWithFormat:@"%@/%@", folder, fileName]];
  91. QMFileModel *model = [[QMFileModel alloc] init];
  92. model.fileName = fileName;
  93. NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
  94. formatter.dateFormat = @"MM-dd HH:mm";
  95. model.fileDate = [formatter stringFromDate:[fileInfo objectForKey:NSFileCreationDate]];
  96. if ([[fileInfo objectForKey:NSFileSize] floatValue] > 1024) {
  97. model.fileSize = [NSString stringWithFormat:@"%.f KB", [[fileInfo objectForKey:NSFileSize] floatValue]/1024];
  98. }else {
  99. model.fileSize = [NSString stringWithFormat:@"%.f MB", [[fileInfo objectForKey:NSFileSize] floatValue]/1024/1024];
  100. }
  101. // model.fileSize = [[fileInfo objectForKey:NSFileSize] description];
  102. model.filePath = [NSString stringWithFormat:@"%@/%@", folder, fileName];
  103. [fileModels addObject:model];
  104. }
  105. return fileModels;
  106. }
  107. - (NSString *)getFilePath: (NSString *)fileName {
  108. NSMutableDictionary *profiles = [QMFileManager readDictionary:lastLogin];
  109. if ([profiles objectForKey:KEY_LASTLOGIN_NAME] == nil) {
  110. return @"";
  111. }
  112. NSString *folder = [NSString stringWithFormat:[self checkFileExtension:fileName], [profiles objectForKey:KEY_LASTLOGIN_NAME]];
  113. NSLog(@"%@", [NSString stringWithFormat:@"%@/%@", folder, fileName]);
  114. return [NSString stringWithFormat:@"%@/%@", folder, fileName];
  115. }
  116. - (NSString *)checkFileExtension: (NSString *)name {
  117. NSMutableDictionary *profiles = [QMFileManager readDictionary:lastLogin];
  118. if ([profiles objectForKey:KEY_LASTLOGIN_NAME] == nil) {
  119. return name;
  120. }
  121. NSString *tempString = @"";
  122. NSString *exten = name.pathExtension.lowercaseString;
  123. if ([exten isEqualToString:@"doc"]||[exten isEqualToString:@"docx"]||[exten isEqualToString:@"ppt"]||[exten isEqualToString:@"pptx"]||[exten isEqualToString:@"xls"]||[exten isEqualToString:@"xlsx"]||[exten isEqualToString:@"xml"]||[exten isEqualToString:@"wps"]||[exten isEqualToString:@"txt"]||[exten isEqualToString:@"html"]||[exten isEqualToString:@"htm"]||[exten isEqualToString:@"pps"]||[exten isEqualToString:@"text"]) {
  124. tempString = [NSString stringWithFormat:DocFolder, [profiles objectForKey:KEY_LASTLOGIN_NAME]];
  125. }else if ([exten isEqualToString:@"png"]||[exten isEqualToString:@"gif"]||[exten isEqualToString:@"jpg"]||[exten isEqualToString:@"jpeg"]||[exten isEqualToString:@"bmp"]) {
  126. tempString = [NSString stringWithFormat:ImageFolder, [profiles objectForKey:KEY_LASTLOGIN_NAME]];
  127. }else if ([exten isEqualToString:@"mp3"]||[exten isEqualToString:@"wav"]||[exten isEqualToString:@"m4a"]||[exten isEqualToString:@"wma"]||[exten isEqualToString:@"caf"]) {
  128. tempString = [NSString stringWithFormat:AudioFolder, [profiles objectForKey:KEY_LASTLOGIN_NAME]];
  129. }else if ([exten isEqualToString:@"avi"]||[exten isEqualToString:@"mov"]||[exten isEqualToString:@"mp4"]||[exten isEqualToString:@"mkv"]||[exten isEqualToString:@"rmvb"]||[exten isEqualToString:@"wmv"]) {
  130. tempString = [NSString stringWithFormat:VideoFolder, [profiles objectForKey:KEY_LASTLOGIN_NAME]];
  131. }else {
  132. tempString = [NSString stringWithFormat:OtherFolder, [profiles objectForKey:KEY_LASTLOGIN_NAME]];
  133. }
  134. return [NSString stringWithFormat:@"%@/%@", tempString, name];
  135. }
  136. @end