Browse Source

Merge branch '1.3功能开发'

# Conflicts:
#	创维盒子/双子星云手机.xcodeproj/project.pbxproj
#	创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/uploadFileManager.m
#	创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileRecordViewController.m
#	创维盒子/双子星云手机/CloudPlayer/PlayerViewController+otherDelegate.mm
#	创维盒子/双子星云手机/zh-Hans.lproj/Localizable.strings
huangxiaodong 1 year ago
parent
commit
39ea1d3ce3
100 changed files with 5981 additions and 867 deletions
  1. 260 12
      创维盒子/双子星云手机.xcodeproj/project.pbxproj
  2. 22 0
      创维盒子/双子星云手机/AppDelegate/AppDelegate.m
  3. 18 0
      创维盒子/双子星云手机/AppDelegate/Config/Const.h
  4. 18 0
      创维盒子/双子星云手机/AppDelegate/Config/Const.m
  5. 28 2
      创维盒子/双子星云手机/AppDelegate/Config/Notification.h
  6. 6 0
      创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/Contents.json
  7. 22 0
      创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_Hans.imageset/Contents.json
  8. BIN
      创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_Hans.imageset/scan_tip_Hans@2x.png
  9. BIN
      创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_Hans.imageset/scan_tip_Hans@3x.png
  10. 21 0
      创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_Hant.imageset/Contents.json
  11. BIN
      创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_Hant.imageset/scan_tip_Hant@2x.png
  12. 21 0
      创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_en.imageset/Contents.json
  13. BIN
      创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_en.imageset/scan_tip_en@2x.png
  14. 21 0
      创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_ja.imageset/Contents.json
  15. BIN
      创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_ja.imageset/scan_tip_ja@2x.png
  16. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/app_update.imageset/编组 6@2x.png
  17. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/app_update.imageset/编组 6@3x.png
  18. 22 0
      创维盒子/双子星云手机/Assets.xcassets/Set/donwload_file_white_100.imageset/Contents.json
  19. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/donwload_file_white_100.imageset/donwload_file_white_100@2x.png
  20. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/donwload_file_white_100.imageset/donwload_file_white_100@3x.png
  21. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/icon-gengxin.imageset/icon-gengxin@2x.png
  22. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/icon-gengxin.imageset/icon-gengxin@3x.png
  23. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/icon_Restore_Factory.imageset/icon_Restore_Factory@2x.png
  24. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/icon_Restore_Factory.imageset/icon_Restore_Factory@3x.png
  25. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/icon_change_ohone.imageset/编组@2x.png
  26. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/icon_change_ohone.imageset/编组@3x.png
  27. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/icon_common_problem.imageset/icon_common_problem@2x.png
  28. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/icon_common_problem.imageset/icon_common_problem@3x.png
  29. 22 0
      创维盒子/双子星云手机/Assets.xcassets/Set/icon_file_transfer.imageset/Contents.json
  30. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/icon_file_transfer.imageset/icon_file_transfer@2x.png
  31. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/icon_file_transfer.imageset/icon_file_transfer@3x.png
  32. 22 0
      创维盒子/双子星云手机/Assets.xcassets/Set/image_backups_icon.imageset/Contents.json
  33. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/image_backups_icon.imageset/image_backups_icon@2x.png
  34. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/image_backups_icon.imageset/image_backups_icon@3x.png
  35. 22 0
      创维盒子/双子星云手机/Assets.xcassets/Set/setting_Privacy_bg.imageset/Contents.json
  36. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/setting_Privacy_bg.imageset/setting_Privacy_bg@2x.png
  37. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/setting_Privacy_bg.imageset/setting_Privacy_bg@3x.png
  38. 22 0
      创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_bg_downLoad.imageset/Contents.json
  39. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_bg_downLoad.imageset/uploadFile_bg_downLoad@2x.png
  40. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_bg_downLoad.imageset/uploadFile_bg_downLoad@3x.png
  41. 22 0
      创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_bg_upload.imageset/Contents.json
  42. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_bg_upload.imageset/uploadFile_bg_upload@2x.png
  43. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_bg_upload.imageset/uploadFile_bg_upload@3x.png
  44. 22 0
      创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_file_icon.imageset/Contents.json
  45. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_file_icon.imageset/uploadFile_file_icon@2x.png
  46. BIN
      创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_file_icon.imageset/uploadFile_file_icon@3x.png
  47. 22 0
      创维盒子/双子星云手机/Assets.xcassets/common/common_eye_close.imageset/Contents.json
  48. BIN
      创维盒子/双子星云手机/Assets.xcassets/common/common_eye_close.imageset/common_eye_close@2x.png
  49. BIN
      创维盒子/双子星云手机/Assets.xcassets/common/common_eye_close.imageset/common_eye_close@3x.png
  50. 22 0
      创维盒子/双子星云手机/Assets.xcassets/common/common_eye_open.imageset/Contents.json
  51. BIN
      创维盒子/双子星云手机/Assets.xcassets/common/common_eye_open.imageset/common_eye_open@2x.png
  52. BIN
      创维盒子/双子星云手机/Assets.xcassets/common/common_eye_open.imageset/common_eye_open@3x.png
  53. 140 40
      创维盒子/双子星云手机/Class/Guide/TipsQRCodeViewController.m
  54. 2 3
      创维盒子/双子星云手机/Class/Guide/inputPWDViewController.m
  55. 142 42
      创维盒子/双子星云手机/Class/Set/ChangeDevice/TipsQRCodeForChangeDeviceViewController.m
  56. 190 33
      创维盒子/双子星云手机/Class/Set/MySetViewController.m
  57. 1 1
      创维盒子/双子星云手机/Class/Set/uploadFile/PhotoPreviewViewController.m
  58. 16 0
      创维盒子/双子星云手机/Class/Set/uploadFile/downLoadFile/downLoadPreviewViewController.h
  59. 258 0
      创维盒子/双子星云手机/Class/Set/uploadFile/downLoadFile/downLoadPreviewViewController.m
  60. 28 0
      创维盒子/双子星云手机/Class/Set/uploadFile/downLoadFile/view/downLoadPreViewCell.h
  61. 179 0
      创维盒子/双子星云手机/Class/Set/uploadFile/downLoadFile/view/downLoadPreViewCell.m
  62. 20 0
      创维盒子/双子星云手机/Class/Set/uploadFile/downLoadFile/view/downloadFileBottomView.h
  63. 188 0
      创维盒子/双子星云手机/Class/Set/uploadFile/downLoadFile/view/downloadFileBottomView.m
  64. 16 0
      创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/backupsSetViewController.h
  65. 273 0
      创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/backupsSetViewController.m
  66. 16 0
      创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/fileTransfeSetViewController.h
  67. 255 0
      创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/fileTransfeSetViewController.m
  68. 16 0
      创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/fileTransferPathCheckViewController.h
  69. 309 0
      创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/fileTransferPathCheckViewController.m
  70. 17 0
      创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/view/filePathCreatPopView.h
  71. 386 0
      创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/view/filePathCreatPopView.m
  72. 25 0
      创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/view/filePathCreatTableViewCell.h
  73. 135 0
      创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/view/filePathCreatTableViewCell.m
  74. 25 0
      创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/view/fileSetTableViewCell.h
  75. 125 0
      创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/view/fileSetTableViewCell.m
  76. 25 0
      创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/view/fileTransferPathCheckTableViewCell.h
  77. 136 0
      创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/view/fileTransferPathCheckTableViewCell.m
  78. 18 0
      创维盒子/双子星云手机/Class/Set/uploadFile/fileTransferPopView.h
  79. 209 0
      创维盒子/双子星云手机/Class/Set/uploadFile/fileTransferPopView.m
  80. 56 0
      创维盒子/双子星云手机/Class/Set/uploadFile/model/photosBackupsTaskModel.h
  81. 18 0
      创维盒子/双子星云手机/Class/Set/uploadFile/model/photosBackupsTaskModel.m
  82. 2 0
      创维盒子/双子星云手机/Class/Set/uploadFile/model/uploadFileDataModel.h
  83. 0 299
      创维盒子/双子星云手机/Class/Set/uploadFile/photoView/uploadFileRecordTableView.m
  84. 4 4
      创维盒子/双子星云手机/Class/Set/uploadFile/photoView/uploadFileRecordheadView.m
  85. 42 0
      创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/backupsFileManager.h
  86. 348 0
      创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/backupsFileManager.m
  87. 6 0
      创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/cachesFileManager.h
  88. 31 3
      创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/cachesFileManager.m
  89. 43 0
      创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/downloadManager.h
  90. 367 0
      创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/downloadManager.m
  91. 26 0
      创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/downloadThumbnailManager.h
  92. 113 0
      创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/downloadThumbnailManager.m
  93. 105 115
      创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/uploadFileManager.m
  94. 4 1
      创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileRecordViewController.h
  95. 317 312
      创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileRecordViewController.m
  96. 24 0
      创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileView/backupsFileRecordCell.h
  97. 393 0
      创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileView/backupsFileRecordCell.m
  98. 30 0
      创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileView/backupsFilerecordTableView.h
  99. 267 0
      创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileView/backupsFilerecordTableView.m
  100. 0 0
      创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileView/downloadFileRecordCell.h

+ 260 - 12
创维盒子/双子星云手机.xcodeproj/project.pbxproj

@@ -163,6 +163,20 @@
 		6B0582862B0457C400D37290 /* uploadFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B0582842B0457C400D37290 /* uploadFileManager.m */; };
 		6B0582892B045E0B00D37290 /* uploadFileDataModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B0582872B045E0B00D37290 /* uploadFileDataModel.h */; };
 		6B05828A2B045E0B00D37290 /* uploadFileDataModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B0582882B045E0B00D37290 /* uploadFileDataModel.m */; };
+		6B1FBD222B43DAD200926382 /* backupsSetViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B1FBD202B43DAD200926382 /* backupsSetViewController.h */; };
+		6B1FBD232B43DAD200926382 /* backupsSetViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B1FBD212B43DAD200926382 /* backupsSetViewController.m */; };
+		6B1FBD262B4503E700926382 /* photosBackupsTaskModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B1FBD242B4503E700926382 /* photosBackupsTaskModel.h */; };
+		6B1FBD272B4503E700926382 /* photosBackupsTaskModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B1FBD252B4503E700926382 /* photosBackupsTaskModel.m */; };
+		6B1FBD2A2B452B3800926382 /* backupsFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B1FBD282B452B3800926382 /* backupsFileManager.h */; };
+		6B1FBD2B2B452B3800926382 /* backupsFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B1FBD292B452B3800926382 /* backupsFileManager.m */; };
+		6B1FBD322B455DBD00926382 /* PlayerViewController+upLoadFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B1FBD302B455DBD00926382 /* PlayerViewController+upLoadFile.h */; };
+		6B1FBD332B455DBD00926382 /* PlayerViewController+upLoadFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B1FBD312B455DBD00926382 /* PlayerViewController+upLoadFile.m */; };
+		6B1FBD362B455DD600926382 /* PlayerViewController+backupsFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B1FBD342B455DD600926382 /* PlayerViewController+backupsFile.h */; };
+		6B1FBD372B455DD600926382 /* PlayerViewController+backupsFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B1FBD352B455DD600926382 /* PlayerViewController+backupsFile.m */; };
+		6B1FBD3A2B467A8000926382 /* backupsFilerecordTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B1FBD382B467A8000926382 /* backupsFilerecordTableView.h */; };
+		6B1FBD3B2B467A8000926382 /* backupsFilerecordTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B1FBD392B467A8000926382 /* backupsFilerecordTableView.m */; };
+		6B1FBD3E2B46875300926382 /* backupsFileRecordCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B1FBD3C2B46875300926382 /* backupsFileRecordCell.h */; };
+		6B1FBD3F2B46875300926382 /* backupsFileRecordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B1FBD3D2B46875300926382 /* backupsFileRecordCell.m */; };
 		6B2170882B1444CC00656670 /* allVersionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B2170862B1444CC00656670 /* allVersionView.h */; };
 		6B2170892B1444CC00656670 /* allVersionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B2170872B1444CC00656670 /* allVersionView.m */; };
 		6B21708C2B14BDAA00656670 /* couldphoneSysInfoModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B21708A2B14BDAA00656670 /* couldphoneSysInfoModel.h */; };
@@ -180,6 +194,40 @@
 		6B3F963A2AD2AD0B008E349E /* newWorkInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B3F96392AD2AD0B008E349E /* newWorkInterface.h */; };
 		6B4D23B12B33DDBC005B718A /* imageVersionRenewTipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B4D23AF2B33DDBB005B718A /* imageVersionRenewTipView.h */; };
 		6B4D23B22B33DDBC005B718A /* imageVersionRenewTipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B4D23B02B33DDBB005B718A /* imageVersionRenewTipView.m */; };
+		6B5B60602B3BC8DE009A2AE2 /* fileTransferPopView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5B605E2B3BC8DE009A2AE2 /* fileTransferPopView.h */; };
+		6B5B60612B3BC8DE009A2AE2 /* fileTransferPopView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5B605F2B3BC8DE009A2AE2 /* fileTransferPopView.m */; };
+		6B5B60652B3D5FD8009A2AE2 /* fileTransfeSetViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5B60632B3D5FD8009A2AE2 /* fileTransfeSetViewController.h */; };
+		6B5B60662B3D5FD8009A2AE2 /* fileTransfeSetViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5B60642B3D5FD8009A2AE2 /* fileTransfeSetViewController.m */; };
+		6B5B606A2B3D67B2009A2AE2 /* fileSetTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5B60682B3D67B2009A2AE2 /* fileSetTableViewCell.h */; };
+		6B5B606B2B3D67B2009A2AE2 /* fileSetTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5B60692B3D67B2009A2AE2 /* fileSetTableViewCell.m */; };
+		6B5B606E2B3D7E3B009A2AE2 /* fileTransferPathCheckViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5B606C2B3D7E3B009A2AE2 /* fileTransferPathCheckViewController.h */; };
+		6B5B606F2B3D7E3B009A2AE2 /* fileTransferPathCheckViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5B606D2B3D7E3B009A2AE2 /* fileTransferPathCheckViewController.m */; };
+		6B5B60722B3D8098009A2AE2 /* fileTransferPathCheckTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5B60702B3D8098009A2AE2 /* fileTransferPathCheckTableViewCell.h */; };
+		6B5B60732B3D8098009A2AE2 /* fileTransferPathCheckTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5B60712B3D8098009A2AE2 /* fileTransferPathCheckTableViewCell.m */; };
+		6B5B60762B3E665E009A2AE2 /* filePathCreatPopView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5B60742B3E665E009A2AE2 /* filePathCreatPopView.h */; };
+		6B5B60772B3E665E009A2AE2 /* filePathCreatPopView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5B60752B3E665E009A2AE2 /* filePathCreatPopView.m */; };
+		6B5B607A2B3E71B6009A2AE2 /* filePathCreatTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5B60782B3E71B6009A2AE2 /* filePathCreatTableViewCell.h */; };
+		6B5B607B2B3E71B6009A2AE2 /* filePathCreatTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5B60792B3E71B6009A2AE2 /* filePathCreatTableViewCell.m */; };
+		6B5D40152B47F27A000965CF /* couldPhoneCommonModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5D40132B47F27A000965CF /* couldPhoneCommonModel.h */; };
+		6B5D40162B47F27A000965CF /* couldPhoneCommonModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5D40142B47F27A000965CF /* couldPhoneCommonModel.m */; };
+		6B5D401A2B4A9850000965CF /* couldPhoneFolderListModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5D40182B4A9850000965CF /* couldPhoneFolderListModel.h */; };
+		6B5D401B2B4A9850000965CF /* couldPhoneFolderListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5D40192B4A9850000965CF /* couldPhoneFolderListModel.m */; };
+		6B5D40232B4AA7BF000965CF /* downLoadPreviewViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5D40212B4AA7BF000965CF /* downLoadPreviewViewController.h */; };
+		6B5D40242B4AA7BF000965CF /* downLoadPreviewViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5D40222B4AA7BF000965CF /* downLoadPreviewViewController.m */; };
+		6B5D40272B4BC402000965CF /* couldPhoneFileListModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5D40252B4BC402000965CF /* couldPhoneFileListModel.h */; };
+		6B5D40282B4BC402000965CF /* couldPhoneFileListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5D40262B4BC402000965CF /* couldPhoneFileListModel.m */; };
+		6B5D402F2B4BCBC1000965CF /* downLoadPreViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5D402D2B4BCBC1000965CF /* downLoadPreViewCell.h */; };
+		6B5D40302B4BCBC1000965CF /* downLoadPreViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5D402E2B4BCBC1000965CF /* downLoadPreViewCell.m */; };
+		6B5D40332B4BE358000965CF /* downloadFileBottomView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5D40312B4BE358000965CF /* downloadFileBottomView.h */; };
+		6B5D40342B4BE358000965CF /* downloadFileBottomView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5D40322B4BE358000965CF /* downloadFileBottomView.m */; };
+		6B5D40372B4BEEF8000965CF /* downloadThumbnailManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5D40352B4BEEF8000965CF /* downloadThumbnailManager.h */; };
+		6B5D40382B4BEEF8000965CF /* downloadThumbnailManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5D40362B4BEEF8000965CF /* downloadThumbnailManager.m */; };
+		6B5D403B2B4BFEB9000965CF /* PlayerViewController+downloadThumbnailImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5D40392B4BFEB9000965CF /* PlayerViewController+downloadThumbnailImage.h */; };
+		6B5D403C2B4BFEB9000965CF /* PlayerViewController+downloadThumbnailImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5D403A2B4BFEB9000965CF /* PlayerViewController+downloadThumbnailImage.m */; };
+		6B5D403F2B4CE40F000965CF /* downloadManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5D403D2B4CE40F000965CF /* downloadManager.h */; };
+		6B5D40402B4CE40F000965CF /* downloadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5D403E2B4CE40F000965CF /* downloadManager.m */; };
+		6B5D40432B4CF04C000965CF /* PlayerViewController+downloadFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5D40412B4CF04C000965CF /* PlayerViewController+downloadFile.h */; };
+		6B5D40442B4CF04C000965CF /* PlayerViewController+downloadFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5D40422B4CF04C000965CF /* PlayerViewController+downloadFile.m */; };
 		6B72724B2B0AF59200C03F87 /* uploadFileRecordTableViewHeadView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B7272492B0AF59200C03F87 /* uploadFileRecordTableViewHeadView.h */; };
 		6B72724C2B0AF59200C03F87 /* uploadFileRecordTableViewHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B72724A2B0AF59200C03F87 /* uploadFileRecordTableViewHeadView.m */; };
 		6B72724F2B0B58E500C03F87 /* uploadFileRecordEditBottomView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B72724D2B0B58E500C03F87 /* uploadFileRecordEditBottomView.h */; };
@@ -207,6 +255,10 @@
 		6BBB35DE2AE76AD800E4A59B /* AudioSessionObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BBB35DC2AE76AD800E4A59B /* AudioSessionObject.m */; };
 		6BBB35E22AE935C000E4A59B /* DDYLanguageTool.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BBB35E02AE935C000E4A59B /* DDYLanguageTool.h */; };
 		6BBB35E32AE935C000E4A59B /* DDYLanguageTool.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BBB35E12AE935C000E4A59B /* DDYLanguageTool.m */; };
+		6BED888A2B4E819000F76DDC /* downloadFileRecordTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BED88882B4E819000F76DDC /* downloadFileRecordTableView.h */; };
+		6BED888B2B4E819000F76DDC /* downloadFileRecordTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BED88892B4E819000F76DDC /* downloadFileRecordTableView.m */; };
+		6BED888E2B4E901900F76DDC /* downloadFileRecordCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BED888C2B4E901900F76DDC /* downloadFileRecordCell.h */; };
+		6BED888F2B4E901900F76DDC /* downloadFileRecordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BED888D2B4E901900F76DDC /* downloadFileRecordCell.m */; };
 		6BF0F3D02AD391D8000AA133 /* connectDeviceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BF0F3CE2AD391D8000AA133 /* connectDeviceManager.h */; };
 		6BF0F3D12AD391D8000AA133 /* connectDeviceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BF0F3CF2AD391D8000AA133 /* connectDeviceManager.m */; };
 		6BF0F3D52AD3937B000AA133 /* DeviceThirdIdModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BF0F3D32AD3937B000AA133 /* DeviceThirdIdModel.h */; };
@@ -544,6 +596,20 @@
 		6B0582842B0457C400D37290 /* uploadFileManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = uploadFileManager.m; sourceTree = "<group>"; };
 		6B0582872B045E0B00D37290 /* uploadFileDataModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uploadFileDataModel.h; sourceTree = "<group>"; };
 		6B0582882B045E0B00D37290 /* uploadFileDataModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = uploadFileDataModel.m; sourceTree = "<group>"; };
+		6B1FBD202B43DAD200926382 /* backupsSetViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = backupsSetViewController.h; sourceTree = "<group>"; };
+		6B1FBD212B43DAD200926382 /* backupsSetViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = backupsSetViewController.m; sourceTree = "<group>"; };
+		6B1FBD242B4503E700926382 /* photosBackupsTaskModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = photosBackupsTaskModel.h; sourceTree = "<group>"; };
+		6B1FBD252B4503E700926382 /* photosBackupsTaskModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = photosBackupsTaskModel.m; sourceTree = "<group>"; };
+		6B1FBD282B452B3800926382 /* backupsFileManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = backupsFileManager.h; sourceTree = "<group>"; };
+		6B1FBD292B452B3800926382 /* backupsFileManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = backupsFileManager.m; sourceTree = "<group>"; };
+		6B1FBD302B455DBD00926382 /* PlayerViewController+upLoadFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PlayerViewController+upLoadFile.h"; sourceTree = "<group>"; };
+		6B1FBD312B455DBD00926382 /* PlayerViewController+upLoadFile.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PlayerViewController+upLoadFile.m"; sourceTree = "<group>"; };
+		6B1FBD342B455DD600926382 /* PlayerViewController+backupsFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PlayerViewController+backupsFile.h"; sourceTree = "<group>"; };
+		6B1FBD352B455DD600926382 /* PlayerViewController+backupsFile.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PlayerViewController+backupsFile.m"; sourceTree = "<group>"; };
+		6B1FBD382B467A8000926382 /* backupsFilerecordTableView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = backupsFilerecordTableView.h; sourceTree = "<group>"; };
+		6B1FBD392B467A8000926382 /* backupsFilerecordTableView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = backupsFilerecordTableView.m; sourceTree = "<group>"; };
+		6B1FBD3C2B46875300926382 /* backupsFileRecordCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = backupsFileRecordCell.h; sourceTree = "<group>"; };
+		6B1FBD3D2B46875300926382 /* backupsFileRecordCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = backupsFileRecordCell.m; sourceTree = "<group>"; };
 		6B2170862B1444CC00656670 /* allVersionView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = allVersionView.h; sourceTree = "<group>"; };
 		6B2170872B1444CC00656670 /* allVersionView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = allVersionView.m; sourceTree = "<group>"; };
 		6B21708A2B14BDAA00656670 /* couldphoneSysInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = couldphoneSysInfoModel.h; sourceTree = "<group>"; };
@@ -561,6 +627,40 @@
 		6B3F96392AD2AD0B008E349E /* newWorkInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = newWorkInterface.h; sourceTree = "<group>"; };
 		6B4D23AF2B33DDBB005B718A /* imageVersionRenewTipView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imageVersionRenewTipView.h; sourceTree = "<group>"; };
 		6B4D23B02B33DDBB005B718A /* imageVersionRenewTipView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = imageVersionRenewTipView.m; sourceTree = "<group>"; };
+		6B5B605E2B3BC8DE009A2AE2 /* fileTransferPopView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fileTransferPopView.h; sourceTree = "<group>"; };
+		6B5B605F2B3BC8DE009A2AE2 /* fileTransferPopView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = fileTransferPopView.m; sourceTree = "<group>"; };
+		6B5B60632B3D5FD8009A2AE2 /* fileTransfeSetViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fileTransfeSetViewController.h; sourceTree = "<group>"; };
+		6B5B60642B3D5FD8009A2AE2 /* fileTransfeSetViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = fileTransfeSetViewController.m; sourceTree = "<group>"; };
+		6B5B60682B3D67B2009A2AE2 /* fileSetTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fileSetTableViewCell.h; sourceTree = "<group>"; };
+		6B5B60692B3D67B2009A2AE2 /* fileSetTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = fileSetTableViewCell.m; sourceTree = "<group>"; };
+		6B5B606C2B3D7E3B009A2AE2 /* fileTransferPathCheckViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fileTransferPathCheckViewController.h; sourceTree = "<group>"; };
+		6B5B606D2B3D7E3B009A2AE2 /* fileTransferPathCheckViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = fileTransferPathCheckViewController.m; sourceTree = "<group>"; };
+		6B5B60702B3D8098009A2AE2 /* fileTransferPathCheckTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fileTransferPathCheckTableViewCell.h; sourceTree = "<group>"; };
+		6B5B60712B3D8098009A2AE2 /* fileTransferPathCheckTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = fileTransferPathCheckTableViewCell.m; sourceTree = "<group>"; };
+		6B5B60742B3E665E009A2AE2 /* filePathCreatPopView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = filePathCreatPopView.h; sourceTree = "<group>"; };
+		6B5B60752B3E665E009A2AE2 /* filePathCreatPopView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = filePathCreatPopView.m; sourceTree = "<group>"; };
+		6B5B60782B3E71B6009A2AE2 /* filePathCreatTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = filePathCreatTableViewCell.h; sourceTree = "<group>"; };
+		6B5B60792B3E71B6009A2AE2 /* filePathCreatTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = filePathCreatTableViewCell.m; sourceTree = "<group>"; };
+		6B5D40132B47F27A000965CF /* couldPhoneCommonModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = couldPhoneCommonModel.h; sourceTree = "<group>"; };
+		6B5D40142B47F27A000965CF /* couldPhoneCommonModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = couldPhoneCommonModel.m; sourceTree = "<group>"; };
+		6B5D40182B4A9850000965CF /* couldPhoneFolderListModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = couldPhoneFolderListModel.h; sourceTree = "<group>"; };
+		6B5D40192B4A9850000965CF /* couldPhoneFolderListModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = couldPhoneFolderListModel.m; sourceTree = "<group>"; };
+		6B5D40212B4AA7BF000965CF /* downLoadPreviewViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = downLoadPreviewViewController.h; sourceTree = "<group>"; };
+		6B5D40222B4AA7BF000965CF /* downLoadPreviewViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = downLoadPreviewViewController.m; sourceTree = "<group>"; };
+		6B5D40252B4BC402000965CF /* couldPhoneFileListModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = couldPhoneFileListModel.h; sourceTree = "<group>"; };
+		6B5D40262B4BC402000965CF /* couldPhoneFileListModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = couldPhoneFileListModel.m; sourceTree = "<group>"; };
+		6B5D402D2B4BCBC1000965CF /* downLoadPreViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = downLoadPreViewCell.h; sourceTree = "<group>"; };
+		6B5D402E2B4BCBC1000965CF /* downLoadPreViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = downLoadPreViewCell.m; sourceTree = "<group>"; };
+		6B5D40312B4BE358000965CF /* downloadFileBottomView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = downloadFileBottomView.h; sourceTree = "<group>"; };
+		6B5D40322B4BE358000965CF /* downloadFileBottomView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = downloadFileBottomView.m; sourceTree = "<group>"; };
+		6B5D40352B4BEEF8000965CF /* downloadThumbnailManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = downloadThumbnailManager.h; sourceTree = "<group>"; };
+		6B5D40362B4BEEF8000965CF /* downloadThumbnailManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = downloadThumbnailManager.m; sourceTree = "<group>"; };
+		6B5D40392B4BFEB9000965CF /* PlayerViewController+downloadThumbnailImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PlayerViewController+downloadThumbnailImage.h"; sourceTree = "<group>"; };
+		6B5D403A2B4BFEB9000965CF /* PlayerViewController+downloadThumbnailImage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PlayerViewController+downloadThumbnailImage.m"; sourceTree = "<group>"; };
+		6B5D403D2B4CE40F000965CF /* downloadManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = downloadManager.h; sourceTree = "<group>"; };
+		6B5D403E2B4CE40F000965CF /* downloadManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = downloadManager.m; sourceTree = "<group>"; };
+		6B5D40412B4CF04C000965CF /* PlayerViewController+downloadFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PlayerViewController+downloadFile.h"; sourceTree = "<group>"; };
+		6B5D40422B4CF04C000965CF /* PlayerViewController+downloadFile.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PlayerViewController+downloadFile.m"; sourceTree = "<group>"; };
 		6B7272492B0AF59200C03F87 /* uploadFileRecordTableViewHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uploadFileRecordTableViewHeadView.h; sourceTree = "<group>"; };
 		6B72724A2B0AF59200C03F87 /* uploadFileRecordTableViewHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = uploadFileRecordTableViewHeadView.m; sourceTree = "<group>"; };
 		6B72724D2B0B58E500C03F87 /* uploadFileRecordEditBottomView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uploadFileRecordEditBottomView.h; sourceTree = "<group>"; };
@@ -604,6 +704,10 @@
 		6BBB35DC2AE76AD800E4A59B /* AudioSessionObject.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AudioSessionObject.m; sourceTree = "<group>"; };
 		6BBB35E02AE935C000E4A59B /* DDYLanguageTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDYLanguageTool.h; sourceTree = "<group>"; };
 		6BBB35E12AE935C000E4A59B /* DDYLanguageTool.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDYLanguageTool.m; sourceTree = "<group>"; };
+		6BED88882B4E819000F76DDC /* downloadFileRecordTableView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = downloadFileRecordTableView.h; sourceTree = "<group>"; };
+		6BED88892B4E819000F76DDC /* downloadFileRecordTableView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = downloadFileRecordTableView.m; sourceTree = "<group>"; };
+		6BED888C2B4E901900F76DDC /* downloadFileRecordCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = downloadFileRecordCell.h; sourceTree = "<group>"; };
+		6BED888D2B4E901900F76DDC /* downloadFileRecordCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = downloadFileRecordCell.m; sourceTree = "<group>"; };
 		6BF0F3CE2AD391D8000AA133 /* connectDeviceManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = connectDeviceManager.h; sourceTree = "<group>"; };
 		6BF0F3CF2AD391D8000AA133 /* connectDeviceManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = connectDeviceManager.m; sourceTree = "<group>"; };
 		6BF0F3D32AD3937B000AA133 /* DeviceThirdIdModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DeviceThirdIdModel.h; sourceTree = "<group>"; };
@@ -836,6 +940,12 @@
 				6B21708B2B14BDAA00656670 /* couldphoneSysInfoModel.m */,
 				6BA533362B16E65500D1CB5C /* TvStatusModel.h */,
 				6BA533372B16E65500D1CB5C /* TvStatusModel.m */,
+				6B5D40132B47F27A000965CF /* couldPhoneCommonModel.h */,
+				6B5D40142B47F27A000965CF /* couldPhoneCommonModel.m */,
+				6B5D40182B4A9850000965CF /* couldPhoneFolderListModel.h */,
+				6B5D40192B4A9850000965CF /* couldPhoneFolderListModel.m */,
+				6B5D40252B4BC402000965CF /* couldPhoneFileListModel.h */,
+				6B5D40262B4BC402000965CF /* couldPhoneFileListModel.m */,
 			);
 			path = Model;
 			sourceTree = "<group>";
@@ -1041,6 +1151,14 @@
 				18FCE5472AD15E750020F623 /* PlayerViewController+AppDelegate.m */,
 				6B7B65562AD9227700BE8CB3 /* PlayerViewController+otherDelegate.h */,
 				6B7B65572AD9227700BE8CB3 /* PlayerViewController+otherDelegate.mm */,
+				6B1FBD302B455DBD00926382 /* PlayerViewController+upLoadFile.h */,
+				6B1FBD312B455DBD00926382 /* PlayerViewController+upLoadFile.m */,
+				6B1FBD342B455DD600926382 /* PlayerViewController+backupsFile.h */,
+				6B1FBD352B455DD600926382 /* PlayerViewController+backupsFile.m */,
+				6B5D40392B4BFEB9000965CF /* PlayerViewController+downloadThumbnailImage.h */,
+				6B5D403A2B4BFEB9000965CF /* PlayerViewController+downloadThumbnailImage.m */,
+				6B5D40412B4CF04C000965CF /* PlayerViewController+downloadFile.h */,
+				6B5D40422B4CF04C000965CF /* PlayerViewController+downloadFile.m */,
 				183AE6B12A8C9F5800B11CB0 /* View */,
 				183AE6A52A8C9EA900B11CB0 /* RCCommandHelp.h */,
 				183AE6A72A8C9EAA00B11CB0 /* RCCommandHelp.m */,
@@ -1197,6 +1315,9 @@
 		6B05815D2AFCD0A900D37290 /* uploadFile */ = {
 			isa = PBXGroup;
 			children = (
+				6B5D401C2B4AA70C000965CF /* downLoadFile */,
+				6B5D40172B4A70AB000965CF /* uploadFileView */,
+				6B5B60622B3D5F72009A2AE2 /* fileTransfeSet */,
 				6B0582822B0457A000D37290 /* uploadFileManager */,
 				6B0582712AFF79E100D37290 /* model */,
 				6B0581622AFCDB4300D37290 /* photoView */,
@@ -1206,6 +1327,8 @@
 				6B0582622AFF4B7D00D37290 /* PhotoPreviewViewController.m */,
 				6B05827E2B01C67400D37290 /* uploadFileRecordViewController.h */,
 				6B05827F2B01C67400D37290 /* uploadFileRecordViewController.m */,
+				6B5B605E2B3BC8DE009A2AE2 /* fileTransferPopView.h */,
+				6B5B605F2B3BC8DE009A2AE2 /* fileTransferPopView.m */,
 			);
 			path = uploadFile;
 			sourceTree = "<group>";
@@ -1229,16 +1352,6 @@
 				6B8FF6B82B04E19600800981 /* uploadFileRecordheadView.m */,
 				6B8FF6BB2B04EB7100800981 /* uploadFileRecordBodyView.h */,
 				6B8FF6BC2B04EB7100800981 /* uploadFileRecordBodyView.m */,
-				6B7272592B0E22D000C03F87 /* uploadFileRecordBgScorllView.h */,
-				6B72725A2B0E22D000C03F87 /* uploadFileRecordBgScorllView.m */,
-				6B72725D2B0E240F00C03F87 /* uploadFileRecordTableView.h */,
-				6B72725E2B0E240F00C03F87 /* uploadFileRecordTableView.m */,
-				6B8FF6BF2B05B24D00800981 /* uploadFileRecordCell.h */,
-				6B8FF6C02B05B24D00800981 /* uploadFileRecordCell.m */,
-				6B7272492B0AF59200C03F87 /* uploadFileRecordTableViewHeadView.h */,
-				6B72724A2B0AF59200C03F87 /* uploadFileRecordTableViewHeadView.m */,
-				6B72724D2B0B58E500C03F87 /* uploadFileRecordEditBottomView.h */,
-				6B72724E2B0B58E500C03F87 /* uploadFileRecordEditBottomView.m */,
 			);
 			path = photoView;
 			sourceTree = "<group>";
@@ -1250,6 +1363,8 @@
 				6B0582772AFF7C6D00D37290 /* TZAssetModel+imageData.m */,
 				6B0582872B045E0B00D37290 /* uploadFileDataModel.h */,
 				6B0582882B045E0B00D37290 /* uploadFileDataModel.m */,
+				6B1FBD242B4503E700926382 /* photosBackupsTaskModel.h */,
+				6B1FBD252B4503E700926382 /* photosBackupsTaskModel.m */,
 			);
 			path = model;
 			sourceTree = "<group>";
@@ -1257,8 +1372,14 @@
 		6B0582822B0457A000D37290 /* uploadFileManager */ = {
 			isa = PBXGroup;
 			children = (
+				6B1FBD282B452B3800926382 /* backupsFileManager.h */,
+				6B1FBD292B452B3800926382 /* backupsFileManager.m */,
 				6B0582832B0457C400D37290 /* uploadFileManager.h */,
 				6B0582842B0457C400D37290 /* uploadFileManager.m */,
+				6B5D40352B4BEEF8000965CF /* downloadThumbnailManager.h */,
+				6B5D40362B4BEEF8000965CF /* downloadThumbnailManager.m */,
+				6B5D403D2B4CE40F000965CF /* downloadManager.h */,
+				6B5D403E2B4CE40F000965CF /* downloadManager.m */,
 				6B7272512B0CABC600C03F87 /* cachesFileManager.h */,
 				6B7272522B0CABC600C03F87 /* cachesFileManager.m */,
 			);
@@ -1286,6 +1407,81 @@
 			path = netWork;
 			sourceTree = "<group>";
 		};
+		6B5B60622B3D5F72009A2AE2 /* fileTransfeSet */ = {
+			isa = PBXGroup;
+			children = (
+				6B5B60672B3D6795009A2AE2 /* view */,
+				6B5B60632B3D5FD8009A2AE2 /* fileTransfeSetViewController.h */,
+				6B5B60642B3D5FD8009A2AE2 /* fileTransfeSetViewController.m */,
+				6B5B606C2B3D7E3B009A2AE2 /* fileTransferPathCheckViewController.h */,
+				6B5B606D2B3D7E3B009A2AE2 /* fileTransferPathCheckViewController.m */,
+				6B1FBD202B43DAD200926382 /* backupsSetViewController.h */,
+				6B1FBD212B43DAD200926382 /* backupsSetViewController.m */,
+			);
+			path = fileTransfeSet;
+			sourceTree = "<group>";
+		};
+		6B5B60672B3D6795009A2AE2 /* view */ = {
+			isa = PBXGroup;
+			children = (
+				6B5B60682B3D67B2009A2AE2 /* fileSetTableViewCell.h */,
+				6B5B60692B3D67B2009A2AE2 /* fileSetTableViewCell.m */,
+				6B5B60702B3D8098009A2AE2 /* fileTransferPathCheckTableViewCell.h */,
+				6B5B60712B3D8098009A2AE2 /* fileTransferPathCheckTableViewCell.m */,
+				6B5B60782B3E71B6009A2AE2 /* filePathCreatTableViewCell.h */,
+				6B5B60792B3E71B6009A2AE2 /* filePathCreatTableViewCell.m */,
+				6B5B60742B3E665E009A2AE2 /* filePathCreatPopView.h */,
+				6B5B60752B3E665E009A2AE2 /* filePathCreatPopView.m */,
+			);
+			path = view;
+			sourceTree = "<group>";
+		};
+		6B5D40172B4A70AB000965CF /* uploadFileView */ = {
+			isa = PBXGroup;
+			children = (
+				6B7272592B0E22D000C03F87 /* uploadFileRecordBgScorllView.h */,
+				6B72725A2B0E22D000C03F87 /* uploadFileRecordBgScorllView.m */,
+				6B72725D2B0E240F00C03F87 /* uploadFileRecordTableView.h */,
+				6B72725E2B0E240F00C03F87 /* uploadFileRecordTableView.m */,
+				6BED88882B4E819000F76DDC /* downloadFileRecordTableView.h */,
+				6BED88892B4E819000F76DDC /* downloadFileRecordTableView.m */,
+				6B1FBD382B467A8000926382 /* backupsFilerecordTableView.h */,
+				6B1FBD392B467A8000926382 /* backupsFilerecordTableView.m */,
+				6B8FF6BF2B05B24D00800981 /* uploadFileRecordCell.h */,
+				6B8FF6C02B05B24D00800981 /* uploadFileRecordCell.m */,
+				6BED888C2B4E901900F76DDC /* downloadFileRecordCell.h */,
+				6BED888D2B4E901900F76DDC /* downloadFileRecordCell.m */,
+				6B1FBD3C2B46875300926382 /* backupsFileRecordCell.h */,
+				6B1FBD3D2B46875300926382 /* backupsFileRecordCell.m */,
+				6B7272492B0AF59200C03F87 /* uploadFileRecordTableViewHeadView.h */,
+				6B72724A2B0AF59200C03F87 /* uploadFileRecordTableViewHeadView.m */,
+				6B72724D2B0B58E500C03F87 /* uploadFileRecordEditBottomView.h */,
+				6B72724E2B0B58E500C03F87 /* uploadFileRecordEditBottomView.m */,
+			);
+			path = uploadFileView;
+			sourceTree = "<group>";
+		};
+		6B5D401C2B4AA70C000965CF /* downLoadFile */ = {
+			isa = PBXGroup;
+			children = (
+				6B5D402C2B4BCB74000965CF /* view */,
+				6B5D40212B4AA7BF000965CF /* downLoadPreviewViewController.h */,
+				6B5D40222B4AA7BF000965CF /* downLoadPreviewViewController.m */,
+			);
+			path = downLoadFile;
+			sourceTree = "<group>";
+		};
+		6B5D402C2B4BCB74000965CF /* view */ = {
+			isa = PBXGroup;
+			children = (
+				6B5D402D2B4BCBC1000965CF /* downLoadPreViewCell.h */,
+				6B5D402E2B4BCBC1000965CF /* downLoadPreViewCell.m */,
+				6B5D40312B4BE358000965CF /* downloadFileBottomView.h */,
+				6B5D40322B4BE358000965CF /* downloadFileBottomView.m */,
+			);
+			path = view;
+			sourceTree = "<group>";
+		};
 		6BBB35D42AE7645200E4A59B /* BackgroundKeepAlive */ = {
 			isa = PBXGroup;
 			children = (
@@ -1715,37 +1911,50 @@
 				184C8AD02A94980D00F26650 /* CustomerWebViewController.h in Headers */,
 				6BFF26992AFA16DA00FCB4F7 /* forgetSecretKeyViewController.h in Headers */,
 				6BFF26912AF9D88200FCB4F7 /* AuthCodeTextField.h in Headers */,
+				6B5D403B2B4BFEB9000965CF /* PlayerViewController+downloadThumbnailImage.h in Headers */,
 				184C8ADA2A949DAC00F26650 /* HaveNewVersionView.h in Headers */,
 				6BBB35DD2AE76AD800E4A59B /* AudioSessionObject.h in Headers */,
 				6B0582782AFF7C6D00D37290 /* TZAssetModel+imageData.h in Headers */,
+				6B5D403F2B4CE40F000965CF /* downloadManager.h in Headers */,
+				6B5D40372B4BEEF8000965CF /* downloadThumbnailManager.h in Headers */,
 				6B0582802B01C67400D37290 /* uploadFileRecordViewController.h in Headers */,
 				183AE6D12A8CA98C00B11CB0 /* CloudPhoneAPI.h in Headers */,
 				1868201D2AB97BE1005702A6 /* TipsQRCodeViewController.h in Headers */,
+				6B5B60602B3BC8DE009A2AE2 /* fileTransferPopView.h in Headers */,
 				181E85002A8F6B1800292B96 /* LogoSelectView.h in Headers */,
+				6B5B60762B3E665E009A2AE2 /* filePathCreatPopView.h in Headers */,
 				18BA24872AA5C57900BA01EE /* RSATool.h in Headers */,
+				6B5D40232B4AA7BF000965CF /* downLoadPreviewViewController.h in Headers */,
 				6B3F963A2AD2AD0B008E349E /* newWorkInterface.h in Headers */,
 				6B0581B22AFE02B100D37290 /* uploadFileBottomView.h in Headers */,
 				18F9CAFC2ABD35C4003FF71A /* ModifyPWDFirstViewController.h in Headers */,
 				1810F9012AA1839C00322116 /* PhoneTimeInfoModel.h in Headers */,
 				6BA533382B16E65500D1CB5C /* TvStatusModel.h in Headers */,
 				6BBB35E22AE935C000E4A59B /* DDYLanguageTool.h in Headers */,
+				6B1FBD262B4503E700926382 /* photosBackupsTaskModel.h in Headers */,
 				6BFF26882AF8949F00FCB4F7 /* playerShowSecretkeyView.h in Headers */,
 				6BF0F3D52AD3937B000AA133 /* DeviceThirdIdModel.h in Headers */,
 				6B2170982B15CD9200656670 /* NSDictionary+Log.h in Headers */,
+				6B1FBD362B455DD600926382 /* PlayerViewController+backupsFile.h in Headers */,
 				18FCE5332AD12FE00020F623 /* ConnectTestViewController.h in Headers */,
 				181E84F22A8F0A9B00292B96 /* HelpDownScrollView.h in Headers */,
 				6B2170882B1444CC00656670 /* allVersionView.h in Headers */,
 				6B2170912B15BAE700656670 /* privacyModeViewController.h in Headers */,
+				6B1FBD3A2B467A8000926382 /* backupsFilerecordTableView.h in Headers */,
 				6BF0F3D02AD391D8000AA133 /* connectDeviceManager.h in Headers */,
 				6BFF26952AF9D8CC00FCB4F7 /* AuthCodeInputView.h in Headers */,
+				6B5B607A2B3E71B6009A2AE2 /* filePathCreatTableViewCell.h in Headers */,
 				18FCE5442AD136FF0020F623 /* ShortcutManager.h in Headers */,
 				6B2170A02B15D39900656670 /* privacyModeTipViewController.h in Headers */,
 				181E84FB2A8F57A500292B96 /* ChangeLogoViewController.h in Headers */,
+				6B5B606A2B3D67B2009A2AE2 /* fileSetTableViewCell.h in Headers */,
 				18C4754F2A8E0DB5006129C0 /* MySetViewController.h in Headers */,
 				18FCE53F2AD136670020F623 /* PlayerViewController+TouchPointXD.h in Headers */,
 				18FCE53E2AD136670020F623 /* PlayerViewController+AdjustBtnFrame.h in Headers */,
 				6B05815B2AFC851E00D37290 /* mySetHeadView.h in Headers */,
 				6BF52CAD2AD82EA500A617DB /* PlayerControlButTipView.h in Headers */,
+				6B1FBD2A2B452B3800926382 /* backupsFileManager.h in Headers */,
+				6B5B60652B3D5FD8009A2AE2 /* fileTransfeSetViewController.h in Headers */,
 				6B4D23B12B33DDBC005B718A /* imageVersionRenewTipView.h in Headers */,
 				6B8FF6BD2B04EB7100800981 /* uploadFileRecordBodyView.h in Headers */,
 				6B0582892B045E0B00D37290 /* uploadFileDataModel.h in Headers */,
@@ -1758,6 +1967,8 @@
 				6B7B65582AD9227700BE8CB3 /* PlayerViewController+otherDelegate.h in Headers */,
 				6B7272572B0DAF7600C03F87 /* couldPhoneBaseInfoModel.h in Headers */,
 				186820212AB98600005702A6 /* QRCodeScanViewController.h in Headers */,
+				6B5D40332B4BE358000965CF /* downloadFileBottomView.h in Headers */,
+				6B1FBD222B43DAD200926382 /* backupsSetViewController.h in Headers */,
 				6B8FF6B92B04E19600800981 /* uploadFileRecordheadView.h in Headers */,
 				18FCE5482AD15E750020F623 /* PlayerViewController+AppDelegate.h in Headers */,
 				6B72724B2B0AF59200C03F87 /* uploadFileRecordTableViewHeadView.h in Headers */,
@@ -1765,25 +1976,34 @@
 				181E84F72A8F451D00292B96 /* MineViewCell.h in Headers */,
 				6B8FF6C12B05B24D00800981 /* uploadFileRecordCell.h in Headers */,
 				183AE6D42A8CAFAE00B11CB0 /* UIView+View.h in Headers */,
+				6BED888A2B4E819000F76DDC /* downloadFileRecordTableView.h in Headers */,
 				6B0581AF2AFCF57300D37290 /* AJPhotoGroupCell.h in Headers */,
+				6B5D401A2B4A9850000965CF /* couldPhoneFolderListModel.h in Headers */,
+				6BED888E2B4E901900F76DDC /* downloadFileRecordCell.h in Headers */,
 				184C8ACC2A94557200F26650 /* HidenMaskSetViewController.h in Headers */,
 				18EC79DC2ABC109F0084836A /* SetPWDSecondViewController.h in Headers */,
 				6B0582852B0457C400D37290 /* uploadFileManager.h in Headers */,
 				6BFF268C2AF8E1C600FCB4F7 /* forgetPwdViewController.h in Headers */,
 				6BF52C992AD5546500A617DB /* Reachability.h in Headers */,
+				6B5D40432B4CF04C000965CF /* PlayerViewController+downloadFile.h in Headers */,
+				6B5D40152B47F27A000965CF /* couldPhoneCommonModel.h in Headers */,
 				18BB18412AC417CB00A36F63 /* RYShearDeviceUDPManager.h in Headers */,
 				184C8AD52A949D5900F26650 /* AboutViewController.h in Headers */,
 				6B0581A22AFCF50300D37290 /* AJPhotoListCell.h in Headers */,
 				187076772A9F400300F15F7F /* PlayerLoadingView.h in Headers */,
 				6B0581602AFCD0DF00D37290 /* uploadImageOrVideoViewController.h in Headers */,
 				18F9CB092ABD7835003FF71A /* TipsQRCodeForChangeDeviceViewController.h in Headers */,
+				6B5B60722B3D8098009A2AE2 /* fileTransferPathCheckTableViewCell.h in Headers */,
 				6B05819F2AFCF4E800D37290 /* AJPhotoListView.h in Headers */,
 				18963B462AB84398006E7C50 /* GuideView.h in Headers */,
+				6B1FBD322B455DBD00926382 /* PlayerViewController+upLoadFile.h in Headers */,
 				6B72725B2B0E22D000C03F87 /* uploadFileRecordBgScorllView.h in Headers */,
 				18A909982ABC4A3300E6D2BE /* ComontAlretViewController.h in Headers */,
 				6B7272532B0CABC600C03F87 /* cachesFileManager.h in Headers */,
+				6B1FBD3E2B46875300926382 /* backupsFileRecordCell.h in Headers */,
 				186820192AB94877005702A6 /* GuideLastView.h in Headers */,
 				6B0582632AFF4B7D00D37290 /* PhotoPreviewViewController.h in Headers */,
+				6B5D402F2B4BCBC1000965CF /* downLoadPreViewCell.h in Headers */,
 				6B0581AD2AFCF57300D37290 /* AJPhotoGroupView.h in Headers */,
 				18F9CB072ABD7835003FF71A /* QRCodeScanForChangeDeviceViewController.h in Headers */,
 				18664FF62AC2B3A4008F8A61 /* ShearDeviceUDPManager.h in Headers */,
@@ -1793,6 +2013,8 @@
 				18FCE5392AD1351B0020F623 /* PlayerViewController.h in Headers */,
 				6BF52CA62AD7D3BE00A617DB /* customLaunchView.h in Headers */,
 				183AE7C72A8CB39100B11CB0 /* SafeForKey.h in Headers */,
+				6B5D40272B4BC402000965CF /* couldPhoneFileListModel.h in Headers */,
+				6B5B606E2B3D7E3B009A2AE2 /* fileTransferPathCheckViewController.h in Headers */,
 				186820252AB9B5BF005702A6 /* SetPWDFirstViewController.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -2074,31 +2296,39 @@
 				A084D68927E8587400054880 /* HWToolViewController.m in Sources */,
 				18E557232A3C5D75005CC84B /* NSString+FloatHandle.m in Sources */,
 				A08A950227E9A4E400C544BB /* FMDatabase.m in Sources */,
+				6B5B60612B3BC8DE009A2AE2 /* fileTransferPopView.m in Sources */,
 				6BF52C962AD5546500A617DB /* Reachability.m in Sources */,
 				18F9CAFB2ABD35C4003FF71A /* ModifyPWDFirstViewController.m in Sources */,
 				183AE6542A8A2CF000B11CB0 /* AFURLResponseSerialization.m in Sources */,
 				A0295B1227ED938B009C5D8B /* HWHistoryViewController.m in Sources */,
+				6B1FBD232B43DAD200926382 /* backupsSetViewController.m in Sources */,
 				A003F6D127D8425C00715CBF /* iTools.m in Sources */,
 				18EC79DD2ABC109F0084836A /* SetPWDSecondViewController.m in Sources */,
 				183AE6012A89CE3C00B11CB0 /* NSArray+JSONModel.m in Sources */,
 				A00221DB27EAFF4A00E45F78 /* HWAddBookmarkViewController.m in Sources */,
 				6BFF26922AF9D88200FCB4F7 /* AuthCodeTextField.m in Sources */,
 				18664FF52AC2B3A4008F8A61 /* ShearDeviceUDPManager.m in Sources */,
+				6B5B60772B3E665E009A2AE2 /* filePathCreatPopView.m in Sources */,
 				6BF52CA22AD7C2F600A617DB /* inputPWDViewController.m in Sources */,
 				A003F6B627D841EE00715CBF /* UIColor+Colors.m in Sources */,
 				6B05819E2AFCF4E800D37290 /* AJPhotoListView.m in Sources */,
 				18E557292A3C60ED005CC84B /* PwdInPutView.m in Sources */,
 				18BB18422AC417CB00A36F63 /* RYShearDeviceUDPManager.m in Sources */,
 				18F9CB062ABD7835003FF71A /* TipsQRCodeForChangeDeviceViewController.m in Sources */,
+				6B5B60662B3D5FD8009A2AE2 /* fileTransfeSetViewController.m in Sources */,
 				183AE6502A8A2CF000B11CB0 /* UIButton+AFNetworking.m in Sources */,
+				6B1FBD3B2B467A8000926382 /* backupsFilerecordTableView.m in Sources */,
 				A084D68E27E859D300054880 /* HWToolListCell.m in Sources */,
 				183AE6512A8A2CF000B11CB0 /* UIActivityIndicatorView+AFNetworking.m in Sources */,
 				A003F6A627D841C800715CBF /* BaseViewController.m in Sources */,
+				6B1FBD332B455DBD00926382 /* PlayerViewController+upLoadFile.m in Sources */,
 				18E557212A3C5D75005CC84B /* Calculator.m in Sources */,
 				A003F6ED27D84D9C00715CBF /* HWWebViewController.m in Sources */,
 				A031DD6D27EC1FCD00909527 /* HWBookmarkListCell.m in Sources */,
+				6B5D40302B4BCBC1000965CF /* downLoadPreViewCell.m in Sources */,
 				183AE6052A89CE3C00B11CB0 /* JSONModelError.m in Sources */,
 				6B7B65592AD9227700BE8CB3 /* PlayerViewController+otherDelegate.mm in Sources */,
+				6B5D40402B4CE40F000965CF /* downloadManager.m in Sources */,
 				A08A950027E9A4E400C544BB /* FMDatabaseQueue.m in Sources */,
 				6BF52CA72AD7D3BE00A617DB /* customLaunchView.m in Sources */,
 				A031DD7A27EC713A00909527 /* HWSetViewController.m in Sources */,
@@ -2114,7 +2344,9 @@
 				183AE6592A8A2CF000B11CB0 /* AFSecurityPolicy.m in Sources */,
 				18E557262A3C6088005CC84B /* SetUsePWDViewController.m in Sources */,
 				183AE6D52A8CAFAE00B11CB0 /* UIView+View.m in Sources */,
+				6B5D40282B4BC402000965CF /* couldPhoneFileListModel.m in Sources */,
 				183AE64E2A8A2CF000B11CB0 /* AFNetworkActivityIndicatorManager.m in Sources */,
+				6B5D40382B4BEEF8000965CF /* downloadThumbnailManager.m in Sources */,
 				6B7272582B0DAF7600C03F87 /* couldPhoneBaseInfoModel.m in Sources */,
 				6B0581B32AFE02B100D37290 /* uploadFileBottomView.m in Sources */,
 				181E85012A8F6B1800292B96 /* LogoSelectView.m in Sources */,
@@ -2126,6 +2358,7 @@
 				6B0582642AFF4B7D00D37290 /* PhotoPreviewViewController.m in Sources */,
 				A003F6B527D841EE00715CBF /* UIView+HWCategory.m in Sources */,
 				A003F6E227D8428200715CBF /* Const.m in Sources */,
+				6B1FBD372B455DD600926382 /* PlayerViewController+backupsFile.m in Sources */,
 				6B21708D2B14BDAA00656670 /* couldphoneSysInfoModel.m in Sources */,
 				A08A94FE27E9A4E400C544BB /* BGTool.m in Sources */,
 				183AE6072A89CE3C00B11CB0 /* JSONModelClassProperty.m in Sources */,
@@ -2135,6 +2368,7 @@
 				A08A950327E9A4E400C544BB /* FMDatabasePool.m in Sources */,
 				A003F6D327D8425C00715CBF /* iToast.m in Sources */,
 				A08A94E027E9837600C544BB /* HWPageListCell.m in Sources */,
+				6BED888B2B4E819000F76DDC /* downloadFileRecordTableView.m in Sources */,
 				A084D69827E8657800054880 /* HWHomeListCell.m in Sources */,
 				183AE6032A89CE3C00B11CB0 /* JSONKeyMapper.m in Sources */,
 				6BF52C9B2AD5546500A617DB /* SimplePing.m in Sources */,
@@ -2151,6 +2385,8 @@
 				183AE6532A8A2CF000B11CB0 /* AFImageDownloader.m in Sources */,
 				A003F6B327D841EE00715CBF /* UIColor+HZXColor.m in Sources */,
 				18E557222A3C5D75005CC84B /* CalculatorViewController.m in Sources */,
+				6B5D401B2B4A9850000965CF /* couldPhoneFolderListModel.m in Sources */,
+				6B1FBD2B2B452B3800926382 /* backupsFileManager.m in Sources */,
 				6BFF269A2AFA16DA00FCB4F7 /* forgetSecretKeyViewController.m in Sources */,
 				18E5572F2A3C6141005CC84B /* UITextfield+NLLimit.m in Sources */,
 				183AE6B72A8CA0C100B11CB0 /* ShowImageView.m in Sources */,
@@ -2163,6 +2399,7 @@
 				183AE64D2A8A2CF000B11CB0 /* UIRefreshControl+AFNetworking.m in Sources */,
 				A003F6E327D8428200715CBF /* SceneDelegate.m in Sources */,
 				6B2170A12B15D39900656670 /* privacyModeTipViewController.m in Sources */,
+				6B1FBD272B4503E700926382 /* photosBackupsTaskModel.m in Sources */,
 				6B2170922B15BAE700656670 /* privacyModeViewController.m in Sources */,
 				183AE6552A8A2CF000B11CB0 /* AFHTTPSessionManager.m in Sources */,
 				183AE6582A8A2CF000B11CB0 /* AFNetworkReachabilityManager.m in Sources */,
@@ -2171,6 +2408,7 @@
 				184C8AD12A94980D00F26650 /* CustomerWebViewController.m in Sources */,
 				A08A94FD27E9A4E400C544BB /* NSObject+BGModel.m in Sources */,
 				181E84F32A8F0A9B00292B96 /* HelpDownScrollView.m in Sources */,
+				6B5B606B2B3D67B2009A2AE2 /* fileSetTableViewCell.m in Sources */,
 				6BF0F3D12AD391D8000AA133 /* connectDeviceManager.m in Sources */,
 				181E84F62A8F451D00292B96 /* MineViewCell.m in Sources */,
 				18FCE5412AD136670020F623 /* PlayerViewController+AdjustBtnFrame.m in Sources */,
@@ -2178,18 +2416,23 @@
 				184C8ADE2A949DBD00F26650 /* HWVersionModel.m in Sources */,
 				6B21709D2B15CDB600656670 /* NSArray+Log.m in Sources */,
 				18FCE5352AD12FE00020F623 /* ConnectTestViewController.m in Sources */,
+				6BED888F2B4E901900F76DDC /* downloadFileRecordCell.m in Sources */,
 				183AE64C2A8A2CF000B11CB0 /* UIProgressView+AFNetworking.m in Sources */,
 				A031DD7527EC507000909527 /* HWAddFolderViewController.m in Sources */,
 				186820222AB98600005702A6 /* QRCodeScanViewController.m in Sources */,
 				6B2170892B1444CC00656670 /* allVersionView.m in Sources */,
+				6B5D40162B47F27A000965CF /* couldPhoneCommonModel.m in Sources */,
 				187076782A9F400300F15F7F /* PlayerLoadingView.m in Sources */,
 				A08A950127E9A4E400C544BB /* FMDatabaseAdditions.m in Sources */,
 				A08A94FB27E9A4E400C544BB /* BGDB.m in Sources */,
 				A003F6B427D841EE00715CBF /* UITextfield+NLLimit.m in Sources */,
+				6B1FBD3F2B46875300926382 /* backupsFileRecordCell.m in Sources */,
+				6B5D40242B4AA7BF000965CF /* downLoadPreviewViewController.m in Sources */,
 				6BFF26892AF8949F00FCB4F7 /* playerShowSecretkeyView.m in Sources */,
 				6B8FF6C22B05B24D00800981 /* uploadFileRecordCell.m in Sources */,
 				A003F6A727D841C800715CBF /* BaseNavigationController.m in Sources */,
 				A00221E427EB256D00E45F78 /* HWFolderModel.m in Sources */,
+				6B5B606F2B3D7E3B009A2AE2 /* fileTransferPathCheckViewController.m in Sources */,
 				183AE6B02A8C9EAB00B11CB0 /* RCCommandHelp.m in Sources */,
 				A00221E727EB25B000E45F78 /* HWBookmarkModel.m in Sources */,
 				A08A94FC27E9A4E400C544BB /* NSCache+BGCache.m in Sources */,
@@ -2199,6 +2442,8 @@
 				183AE6562A8A2CF000B11CB0 /* AFURLSessionManager.m in Sources */,
 				1868201A2AB94877005702A6 /* GuideLastView.m in Sources */,
 				6BA533392B16E65500D1CB5C /* TvStatusModel.m in Sources */,
+				6B5B60732B3D8098009A2AE2 /* fileTransferPathCheckTableViewCell.m in Sources */,
+				6B5D40442B4CF04C000965CF /* PlayerViewController+downloadFile.m in Sources */,
 				18F9CB002ABD3643003FF71A /* ModifyPWDSecondViewController.m in Sources */,
 				6B0582702AFF692700D37290 /* photoPreViewBottomView.m in Sources */,
 				1868201E2AB97BE1005702A6 /* TipsQRCodeViewController.m in Sources */,
@@ -2215,14 +2460,17 @@
 				A031DD7127EC34E500909527 /* HWBookmarkHeader.m in Sources */,
 				A003F6D227D8425C00715CBF /* HWDataManager.m in Sources */,
 				18C475502A8E0DB5006129C0 /* MySetViewController.m in Sources */,
+				6B5D40342B4BE358000965CF /* downloadFileBottomView.m in Sources */,
 				A003F6C127D841FF00715CBF /* FLAnimatedImageView.m in Sources */,
 				6BF0F3D62AD3937B000AA133 /* DeviceThirdIdModel.m in Sources */,
 				184C8ACD2A94557200F26650 /* HidenMaskSetViewController.m in Sources */,
+				6B5B607B2B3E71B6009A2AE2 /* filePathCreatTableViewCell.m in Sources */,
 				18963B472AB84398006E7C50 /* GuideView.m in Sources */,
 				18FCE5452AD136FF0020F623 /* ShortcutManager.m in Sources */,
 				6B0582812B01C67400D37290 /* uploadFileRecordViewController.m in Sources */,
 				A003F6A827D841C800715CBF /* BaseModel.m in Sources */,
 				A0295B1627EDA0EC009C5D8B /* HWHistoryModel.m in Sources */,
+				6B5D403C2B4BFEB9000965CF /* PlayerViewController+downloadThumbnailImage.m in Sources */,
 				183AE6B42A8CA00300B11CB0 /* PlayerView.m in Sources */,
 				A003F6F327D8593600715CBF /* HWToolBar.m in Sources */,
 				18FCE5382AD1351B0020F623 /* PlayerViewController.mm in Sources */,
@@ -2552,7 +2800,7 @@
 					"$(PROJECT_DIR)/双子星云手机/Vendor/UDP/RayProxy",
 					"$(PROJECT_DIR)/RayProxy",
 				);
-				MARKETING_VERSION = 1.2.1;
+				MARKETING_VERSION = 1.3.0;
 				PRODUCT_BUNDLE_IDENTIFIER = com.armcloud.privacy.x.box;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";
@@ -2631,7 +2879,7 @@
 					"$(PROJECT_DIR)/双子星云手机/Vendor/UDP/RayProxy",
 					"$(PROJECT_DIR)/RayProxy",
 				);
-				MARKETING_VERSION = 1.2.1;
+				MARKETING_VERSION = 1.3.0;
 				PRODUCT_BUNDLE_IDENTIFIER = com.armcloud.privacy.x.box;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";

+ 22 - 0
创维盒子/双子星云手机/AppDelegate/AppDelegate.m

@@ -92,6 +92,12 @@
     
     [Bugly startWithAppId:@"179559a521"];
     
+    
+    [[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];
+    [[UIDevice currentDevice] batteryLevel];
+    
+    // 监听电池电量变化通知
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryLevelChanged:) name:UIDeviceBatteryLevelDidChangeNotification object:nil];
     return YES;
 }
 
@@ -185,4 +191,20 @@
            // 刷新rootVC等
     }];
 }
+
+- (void)batteryLevelChanged:(NSNotification *)notification {
+    // 获取当前设备的电池电量
+    UIDevice *device = notification.object;
+    float batteryLevel = device.batteryLevel;
+      
+    // 根据电量级别执行相应的操作
+    if (batteryLevel < 0.2) {
+        NSLog(@"Low battery level. Please charge the device.");
+    } else if (batteryLevel < 0.5) {
+        NSLog(@"Medium battery level.");
+    } else {
+        NSLog(@"High battery level.");
+    }
+}
+
 @end

+ 18 - 0
创维盒子/双子星云手机/AppDelegate/Config/Const.h

@@ -85,6 +85,24 @@ UIKIT_EXTERN NSString *const Const_need_random_Change_Params;
 
 /*标记是否镜像版本更新日期*/
 UIKIT_EXTERN NSString *const Const_did_show_image_version_date;
+
+/*标记是否使用流量上传下载*/
+UIKIT_EXTERN NSString *const Const_file_Transfe_canUse_Cellular;
+
+/*标记是否低电量上传下载*/
+UIKIT_EXTERN NSString *const Const_file_Transfe_battery_level;
+
+/*相册备份是否开启*/
+UIKIT_EXTERN NSString *const Const_photo_backups_state;
+
+/*相册备份默认路径*/
+UIKIT_EXTERN NSString *const Const_photo_backups_default_path;
+
+/*标记是否使用流量备份*/
+UIKIT_EXTERN NSString *const Const_file_backups_canUse_Cellular;
+
+/*标记是否低电量备份*/
+UIKIT_EXTERN NSString *const Const_file_backups_battery_level;
 @end
 
 NS_ASSUME_NONNULL_END

+ 18 - 0
创维盒子/双子星云手机/AppDelegate/Config/Const.m

@@ -81,4 +81,22 @@ NSString *const Const_need_random_Change_Params  = @"need_random_Change_Params";
 
 /*标记是否镜像版本更新日期*/
 NSString *const Const_did_show_image_version_date  = @"did_show_image_version_date";
+
+/*标记是否使用流量上传下载*/
+NSString *const Const_file_Transfe_canUse_Cellular  = @"file_Transfe_canUse_Cellular";
+
+/*标记是否低电量上传下载*/
+NSString *const Const_file_Transfe_battery_level  = @"file_Transfe_battery_level";
+
+/*相册备份是否开启*/
+NSString *const Const_photo_backups_state = @"photo_backups_state";
+
+/*相册备份默认路径*/
+NSString *const Const_photo_backups_default_path = @"photo_backups_default_path";
+
+/*标记是否使用流量备份*/
+NSString *const Const_file_backups_canUse_Cellular = @"file_backups_canUse_Cellular";
+
+/*标记是否低电量备份*/
+NSString *const Const_file_backups_battery_level = @"file_backups_battery_level";
 @end

+ 28 - 2
创维盒子/双子星云手机/AppDelegate/Config/Notification.h

@@ -68,8 +68,34 @@
 #define uploadFileRefreshNotification                 @"uploadFileRefreshNot"
 /* 上传文件暂停通知*/
 #define uploadFileSuspendNotification                 @"uploadFileSuspendNot"
-/*上传文件删除通知*/
-#define uploadFileDeteleNotification                 @"uploadFileDeteleNot"
+
+/* 上传备份通知*/
+#define backupsFileBeginNotification                 @"backupsFileBeginNot"
+/*备份文件更新通知*/
+#define backupsFileRefreshNotification                 @"backupsFileRefreshNot"
+
+/* 下载缩略图通知*/
+#define downloadThumbnailBeginNotification                 @"downloadThumbnailBeginNot"
+
+/* 下载文件通知*/
+#define downloadFileBeginNotification                 @"downloadFileBeginNot"
+/*下载文件更新通知*/
+#define downloadFileRefreshNotification                 @"downloadFileRefreshNot"
+
+/* 创建文件夹通知*/
+#define createFolderBeginNotification                 @"createFolderBeginNot"
+/* 创建文件夹通知*/
+#define createFolderDoneNotification                 @"createFolderDoneNot"
+
+/* 获取文件夹通知*/
+#define getFolderListBeginNotification                 @"getFolderListBeginNot"
+/* 获取文件夹完成通知*/
+#define getFolderListDoneNotification                 @"getFolderListDoneNot"
+
+/* 搜索云机对应文件*/
+#define searchFileListBeginNotification                 @"searchFileListBeginNot"
+/* 搜索云机对应文件*/
+#define searchFileListDoneNotification                 @"searchFileListDoneNoti"
 
 /*获取云机基本信息通知*/
 #define getCouldPhoneBaseInfoNotification                 @"getCouldPhoneBaseInfoNot"

+ 6 - 0
创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 22 - 0
创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_Hans.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "scan_tip_Hans@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "scan_tip_Hans@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_Hans.imageset/scan_tip_Hans@2x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_Hans.imageset/scan_tip_Hans@3x.png


+ 21 - 0
创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_Hant.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "scan_tip_Hant@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_Hant.imageset/scan_tip_Hant@2x.png


+ 21 - 0
创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_en.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "scan_tip_en@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_en.imageset/scan_tip_en@2x.png


+ 21 - 0
创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_ja.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "scan_tip_ja@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
创维盒子/双子星云手机/Assets.xcassets/Guide/scan_tip/scan_tip_ja.imageset/scan_tip_ja@2x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/app_update.imageset/编组 6@2x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/app_update.imageset/编组 6@3x.png


+ 22 - 0
创维盒子/双子星云手机/Assets.xcassets/Set/donwload_file_white_100.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "donwload_file_white_100@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "donwload_file_white_100@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
创维盒子/双子星云手机/Assets.xcassets/Set/donwload_file_white_100.imageset/donwload_file_white_100@2x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/donwload_file_white_100.imageset/donwload_file_white_100@3x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/icon-gengxin.imageset/icon-gengxin@2x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/icon-gengxin.imageset/icon-gengxin@3x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/icon_Restore_Factory.imageset/icon_Restore_Factory@2x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/icon_Restore_Factory.imageset/icon_Restore_Factory@3x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/icon_change_ohone.imageset/编组@2x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/icon_change_ohone.imageset/编组@3x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/icon_common_problem.imageset/icon_common_problem@2x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/icon_common_problem.imageset/icon_common_problem@3x.png


+ 22 - 0
创维盒子/双子星云手机/Assets.xcassets/Set/icon_file_transfer.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "icon_file_transfer@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "icon_file_transfer@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
创维盒子/双子星云手机/Assets.xcassets/Set/icon_file_transfer.imageset/icon_file_transfer@2x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/icon_file_transfer.imageset/icon_file_transfer@3x.png


+ 22 - 0
创维盒子/双子星云手机/Assets.xcassets/Set/image_backups_icon.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "image_backups_icon@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "image_backups_icon@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
创维盒子/双子星云手机/Assets.xcassets/Set/image_backups_icon.imageset/image_backups_icon@2x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/image_backups_icon.imageset/image_backups_icon@3x.png


+ 22 - 0
创维盒子/双子星云手机/Assets.xcassets/Set/setting_Privacy_bg.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "setting_Privacy_bg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "setting_Privacy_bg@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
创维盒子/双子星云手机/Assets.xcassets/Set/setting_Privacy_bg.imageset/setting_Privacy_bg@2x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/setting_Privacy_bg.imageset/setting_Privacy_bg@3x.png


+ 22 - 0
创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_bg_downLoad.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "uploadFile_bg_downLoad@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "uploadFile_bg_downLoad@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_bg_downLoad.imageset/uploadFile_bg_downLoad@2x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_bg_downLoad.imageset/uploadFile_bg_downLoad@3x.png


+ 22 - 0
创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_bg_upload.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "uploadFile_bg_upload@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "uploadFile_bg_upload@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_bg_upload.imageset/uploadFile_bg_upload@2x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_bg_upload.imageset/uploadFile_bg_upload@3x.png


+ 22 - 0
创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_file_icon.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "uploadFile_file_icon@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "uploadFile_file_icon@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_file_icon.imageset/uploadFile_file_icon@2x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/Set/uploadFile_file_icon.imageset/uploadFile_file_icon@3x.png


+ 22 - 0
创维盒子/双子星云手机/Assets.xcassets/common/common_eye_close.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "common_eye_close@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "common_eye_close@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
创维盒子/双子星云手机/Assets.xcassets/common/common_eye_close.imageset/common_eye_close@2x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/common/common_eye_close.imageset/common_eye_close@3x.png


+ 22 - 0
创维盒子/双子星云手机/Assets.xcassets/common/common_eye_open.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "common_eye_open@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "common_eye_open@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
创维盒子/双子星云手机/Assets.xcassets/common/common_eye_open.imageset/common_eye_open@2x.png


BIN
创维盒子/双子星云手机/Assets.xcassets/common/common_eye_open.imageset/common_eye_open@3x.png


+ 140 - 40
创维盒子/双子星云手机/Class/Guide/TipsQRCodeViewController.m

@@ -28,73 +28,173 @@
     [self.navigationBar setHidden:YES];
     [self.toolBar setHidden:YES];
     
+    [self initBaseUIFun];
+    
     /*背景视图*/
-    UIImageView *bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"guide_qrcode_bg_icon"]];
-    [bgImageView setContentMode:(UIViewContentModeScaleToFill)];
-    [self.view addSubview:bgImageView];
-    [bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.top.mas_equalTo(0);
-        make.bottom.mas_equalTo(0);
+//    UIImageView *bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"guide_qrcode_bg_icon"]];
+//    [bgImageView setContentMode:(UIViewContentModeScaleToFill)];
+//    [self.view addSubview:bgImageView];
+//    [bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+//        make.top.mas_equalTo(0);
+//        make.bottom.mas_equalTo(0);
+//        make.left.mas_equalTo(0);
+//        make.right.mas_equalTo(0);
+//    }];
+//
+//    UIButton *qrcodeBtn = [[UIButton alloc] init];
+//    [qrcodeBtn setBackgroundColor:[UIColor clearColor]];
+//    [qrcodeBtn setBackgroundImage:[UIImage imageNamed:@"guide_qrcode_icon"] forState:(UIControlStateNormal)];
+//    [self.view addSubview:qrcodeBtn];
+//    [qrcodeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+//        make.top.mas_equalTo((363.f/812.f)*self.view.height - 80.f);
+//        make.centerX.equalTo(self.view.mas_centerX);
+//        make.width.mas_equalTo(160);
+//        make.height.mas_equalTo(160);
+//    }];
+//
+//    [qrcodeBtn addTarget:self
+//                  action:@selector(qrcodeBtnPressed)
+//        forControlEvents:(UIControlEventTouchUpInside)];
+//
+//    /*提示文字*/
+//    UILabel *tipsLabel = [[UILabel alloc] init];
+//    [tipsLabel setFont:[UIFont systemFontOfSize:14]];
+//    [tipsLabel setTextColor:HW666666Color];
+//    [tipsLabel setTextAlignment:(NSTextAlignmentCenter)];
+//    [self.view addSubview:tipsLabel];
+//    [tipsLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+//        make.top.equalTo(qrcodeBtn.mas_bottom).offset(8);
+//        make.left.mas_equalTo(60);
+//        make.right.mas_equalTo(-60);
+//    }];
+//    [tipsLabel setText:NSLocalizedString(@"guide_qrcoede_tips",nil)];
+//
+//    /*扫一扫按钮*/
+//    UIButton *qrcodeSmallBtn = [[UIButton alloc] init];
+//    qrcodeSmallBtn.frame = CGRectMake(0, 0, 120.f, 36.f);
+//
+//    // gradient
+//    CAGradientLayer *gl = [CAGradientLayer layer];
+//    gl.frame = CGRectMake(0,0,120.f,36.f);
+//    gl.startPoint = CGPointMake(0, 0.5);
+//    gl.endPoint = CGPointMake(1, 0.5);
+//    gl.colors = @[(__bridge id)HW0CDEFDColor.CGColor, (__bridge id)HW058DFBColor.CGColor];
+//    gl.locations = @[@(0), @(1.0f)];
+//
+//    [qrcodeSmallBtn.layer addSublayer:gl];
+//    [qrcodeSmallBtn addTarget:self action:@selector(qrcodeBtnPressed) forControlEvents:(UIControlEventTouchUpInside)];
+//    [qrcodeSmallBtn setTitle:NSLocalizedString(@"guide_qrcoede_btn_title",nil) forState:(UIControlStateNormal)];
+//    [qrcodeSmallBtn setTitleColor:[UIColor whiteColor] forState:(UIControlStateNormal)];
+//    [qrcodeSmallBtn.titleLabel setFont:[UIFont systemFontOfSize:14.f]];
+//    [qrcodeSmallBtn.layer setCornerRadius:18.f];
+//    qrcodeSmallBtn.clipsToBounds = YES;
+//    [self.view addSubview:qrcodeSmallBtn];
+//    [qrcodeSmallBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+//        make.centerX.equalTo(self.view.mas_centerX);
+//        make.width.mas_equalTo(120.f);
+//        make.top.equalTo(tipsLabel.mas_bottom).offset(20);
+//        make.height.mas_equalTo(36.f);
+//    }];
+}
+
+- (void)initBaseUIFun
+{
+    self.view.backgroundColor = [UIColor whiteColor];
+    
+    NSString *curTitleStr = NSLocalizedString(@"scan_Tip_title",nil);
+    
+    /*标题*/
+    UILabel *titleLabel = [[UILabel alloc] init];
+    [titleLabel setFont:[UIFont systemFontOfSize:18]];
+    [titleLabel setTextColor:HW333333Color];
+    [titleLabel setTextAlignment:(NSTextAlignmentCenter)];
+    [self.view addSubview:titleLabel];
+    [titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.titleLabel.mas_top).offset(0);
+        make.left.mas_equalTo(10);
+        make.right.mas_equalTo(-10);
+        make.height.mas_equalTo(25.0);
+    }];
+    [titleLabel setText:curTitleStr];
+    
+    //
+    UIScrollView *bgScorllV = [[UIScrollView alloc] init];
+    bgScorllV.showsHorizontalScrollIndicator = NO;
+    //bgScorllV.backgroundColor = [UIColor redColor];
+    [self.view addSubview:bgScorllV];
+    
+    [bgScorllV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.titleLabel.mas_bottom).offset(30);
         make.left.mas_equalTo(0);
         make.right.mas_equalTo(0);
+        make.bottom.mas_equalTo(-100.0);
     }];
+
+    NSString *languageCode = [NSLocale preferredLanguages][0];
+  
+    NSString *imageNameStr = @"scan_tip_en";
+    CGFloat imageW = 345.0;
+    CGFloat imageH = 598.0;
     
-    UIButton *qrcodeBtn = [[UIButton alloc] init];
-    [qrcodeBtn setBackgroundColor:[UIColor clearColor]];
-    [qrcodeBtn setBackgroundImage:[UIImage imageNamed:@"guide_qrcode_icon"] forState:(UIControlStateNormal)];
-    [self.view addSubview:qrcodeBtn];
-    [qrcodeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.top.mas_equalTo((363.f/812.f)*self.view.height - 80.f);
-        make.centerX.equalTo(self.view.mas_centerX);
-        make.width.mas_equalTo(160);
-        make.height.mas_equalTo(160);
-    }];
+    if([languageCode rangeOfString:@"zh-Hans"].location != NSNotFound)
+    {
+        imageNameStr = @"scan_tip_Hans";
+    }
+    else if([languageCode rangeOfString:@"zh-Hant"].location != NSNotFound)
+    {
+        imageNameStr = @"scan_tip_Hant";
+    }
+    else if([languageCode rangeOfString:@"ja-"].location != NSNotFound)
+    {
+        imageNameStr = @"scan_tip_ja";
+        
+        imageH = 672.0;
+    }
     
-    [qrcodeBtn addTarget:self
-                  action:@selector(qrcodeBtnPressed)
-        forControlEvents:(UIControlEventTouchUpInside)];
     
-    /*提示文字*/
-    UILabel *tipsLabel = [[UILabel alloc] init];
-    [tipsLabel setFont:[UIFont systemFontOfSize:14]];
-    [tipsLabel setTextColor:HW666666Color];
-    [tipsLabel setTextAlignment:(NSTextAlignmentCenter)];
-    [self.view addSubview:tipsLabel];
-    [tipsLabel mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.top.equalTo(qrcodeBtn.mas_bottom).offset(8);
-        make.left.mas_equalTo(60);
-        make.right.mas_equalTo(-60);
+    
+    UIImageView * bgImageV = [[UIImageView alloc] init];
+    bgImageV.image = [UIImage imageNamed:imageNameStr];
+    [bgScorllV addSubview:bgImageV];
+    
+    [bgImageV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.centerX.mas_equalTo(0);
+        make.top.mas_equalTo(0);
+        make.width.mas_equalTo(imageW);
+        make.height.mas_equalTo(imageH);
     }];
-    [tipsLabel setText:NSLocalizedString(@"guide_qrcoede_tips",nil)];
+    
+    bgScorllV.contentSize = CGSizeMake(imageW, imageH);
+    
     
     /*扫一扫按钮*/
     UIButton *qrcodeSmallBtn = [[UIButton alloc] init];
-    qrcodeSmallBtn.frame = CGRectMake(0, 0, 120.f, 36.f);
-
+   
     // gradient
     CAGradientLayer *gl = [CAGradientLayer layer];
-    gl.frame = CGRectMake(0,0,120.f,36.f);
+    gl.frame = CGRectMake(0,0,345.f,48.f);
     gl.startPoint = CGPointMake(0, 0.5);
     gl.endPoint = CGPointMake(1, 0.5);
     gl.colors = @[(__bridge id)HW0CDEFDColor.CGColor, (__bridge id)HW058DFBColor.CGColor];
     gl.locations = @[@(0), @(1.0f)];
-    
+
     [qrcodeSmallBtn.layer addSublayer:gl];
     [qrcodeSmallBtn addTarget:self action:@selector(qrcodeBtnPressed) forControlEvents:(UIControlEventTouchUpInside)];
-    [qrcodeSmallBtn setTitle:NSLocalizedString(@"guide_qrcoede_btn_title",nil) forState:(UIControlStateNormal)];
+    [qrcodeSmallBtn setTitle:NSLocalizedString(@"scan_Tip_title_button",nil) forState:(UIControlStateNormal)];
     [qrcodeSmallBtn setTitleColor:[UIColor whiteColor] forState:(UIControlStateNormal)];
-    [qrcodeSmallBtn.titleLabel setFont:[UIFont systemFontOfSize:14.f]];
-    [qrcodeSmallBtn.layer setCornerRadius:18.f];
+    [qrcodeSmallBtn.titleLabel setFont:[UIFont systemFontOfSize:16.f]];
+    [qrcodeSmallBtn.layer setCornerRadius:8.f];
     qrcodeSmallBtn.clipsToBounds = YES;
     [self.view addSubview:qrcodeSmallBtn];
     [qrcodeSmallBtn mas_makeConstraints:^(MASConstraintMaker *make) {
         make.centerX.equalTo(self.view.mas_centerX);
-        make.width.mas_equalTo(120.f);
-        make.top.equalTo(tipsLabel.mas_bottom).offset(20);
-        make.height.mas_equalTo(36.f);
+        make.width.mas_equalTo(345.f);
+        make.top.equalTo(bgScorllV.mas_bottom).offset(15);
+        make.height.mas_equalTo(48.f);
     }];
 }
 
+
 - (void)qrcodeBtnPressed{
     QRCodeScanViewController *nextVC = [[QRCodeScanViewController alloc] init];
     [self.navigationController pushViewController:nextVC animated:YES];

+ 2 - 3
创维盒子/双子星云手机/Class/Guide/inputPWDViewController.m

@@ -562,11 +562,10 @@
     }];
     
     ///
-    [NSTimer scheduledTimerWithTimeInterval:3 repeats:NO block:^(NSTimer * _Nonnull timer) {
-        
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
         [self->_pwdErrorTip removeFromSuperview];
         self->_pwdErrorTip = nil;
-    }];
+    });
 }
 
 - (void)keyBoardBtnPressed:(id)sender{

+ 142 - 42
创维盒子/双子星云手机/Class/Set/ChangeDevice/TipsQRCodeForChangeDeviceViewController.m

@@ -42,70 +42,170 @@
     [self.navBarBGView setHidden:NO];
     [self.titleLabel setText:NSLocalizedString(@"my_set_no_change_phone",nil)];
     
-    /*背景视图*/
-    UIImageView *bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"guide_qrcode_bg_icon"]];
-    [bgImageView setContentMode:(UIViewContentModeScaleToFill)];
-    [self.view addSubview:bgImageView];
-    [bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.top.mas_equalTo(0);
-        make.bottom.mas_equalTo(0);
+    [self initBaseUIFun];
+    
+//    /*背景视图*/
+//    UIImageView *bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"guide_qrcode_bg_icon"]];
+//    [bgImageView setContentMode:(UIViewContentModeScaleToFill)];
+//    [self.view addSubview:bgImageView];
+//    [bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+//        make.top.mas_equalTo(0);
+//        make.bottom.mas_equalTo(0);
+//        make.left.mas_equalTo(0);
+//        make.right.mas_equalTo(0);
+//    }];
+//    
+//    UIButton *qrcodeBtn = [[UIButton alloc] init];
+//    [qrcodeBtn setBackgroundColor:[UIColor clearColor]];
+//    [qrcodeBtn setBackgroundImage:[UIImage imageNamed:@"guide_qrcode_icon"] forState:(UIControlStateNormal)];
+//    [self.view addSubview:qrcodeBtn];
+//    [qrcodeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+//        make.top.mas_equalTo((363.f/812.f)*self.view.height - 80.f);
+//        make.centerX.equalTo(self.view.mas_centerX);
+//        make.width.mas_equalTo(160);
+//        make.height.mas_equalTo(160);
+//    }];
+//    
+//    [qrcodeBtn addTarget:self
+//                  action:@selector(qrcodeBtnPressed)
+//        forControlEvents:(UIControlEventTouchUpInside)];
+//    
+//    /*提示文字*/
+//    UILabel *tipsLabel = [[UILabel alloc] init];
+//    [tipsLabel setFont:[UIFont systemFontOfSize:14]];
+//    [tipsLabel setTextColor:HW666666Color];
+//    [tipsLabel setTextAlignment:(NSTextAlignmentCenter)];
+//    [self.view addSubview:tipsLabel];
+//    [tipsLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+//        make.top.equalTo(qrcodeBtn.mas_bottom).offset(8);
+//        make.left.mas_equalTo(60);
+//        make.right.mas_equalTo(-60);
+//    }];
+//    [tipsLabel setText:NSLocalizedString(@"guide_qrcoede_tips",nil)];
+//    
+//    /*扫一扫按钮*/
+//    UIButton *qrcodeSmallBtn = [[UIButton alloc] init];
+//    qrcodeSmallBtn.frame = CGRectMake(0, 0, 120.f, 36.f);
+//
+//    // gradient
+//    CAGradientLayer *gl = [CAGradientLayer layer];
+//    gl.frame = CGRectMake(0,0,120.f,36.f);
+//    gl.startPoint = CGPointMake(0, 0.5);
+//    gl.endPoint = CGPointMake(1, 0.5);
+//    gl.colors = @[(__bridge id)HW0CDEFDColor.CGColor, (__bridge id)HW058DFBColor.CGColor];
+//    gl.locations = @[@(0), @(1.0f)];
+//    
+//    [qrcodeSmallBtn.layer addSublayer:gl];
+//    [qrcodeSmallBtn addTarget:self action:@selector(qrcodeBtnPressed) forControlEvents:(UIControlEventTouchUpInside)];
+//    [qrcodeSmallBtn setTitle:NSLocalizedString(@"guide_qrcoede_btn_title",nil) forState:(UIControlStateNormal)];
+//    [qrcodeSmallBtn setTitleColor:[UIColor whiteColor] forState:(UIControlStateNormal)];
+//    [qrcodeSmallBtn.titleLabel setFont:[UIFont systemFontOfSize:14.f]];
+//    [qrcodeSmallBtn.layer setCornerRadius:18.f];
+//    qrcodeSmallBtn.clipsToBounds = YES;
+//    [self.view addSubview:qrcodeSmallBtn];
+//    [qrcodeSmallBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+//        make.centerX.equalTo(self.view.mas_centerX);
+//        make.width.mas_equalTo(120.f);
+//        make.top.equalTo(tipsLabel.mas_bottom).offset(20);
+//        make.height.mas_equalTo(36.f);
+//    }];
+}
+
+
+- (void)initBaseUIFun
+{
+    self.view.backgroundColor = [UIColor whiteColor];
+    
+//    NSString *curTitleStr = NSLocalizedString(@"scan_Tip_title",nil);
+//
+//    /*标题*/
+//    UILabel *titleLabel = [[UILabel alloc] init];
+//    [titleLabel setFont:[UIFont systemFontOfSize:18]];
+//    [titleLabel setTextColor:HW333333Color];
+//    [titleLabel setTextAlignment:(NSTextAlignmentCenter)];
+//    [self.view addSubview:titleLabel];
+//    [titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+//        make.top.equalTo(self.titleLabel.mas_top).offset(0);
+//        make.left.mas_equalTo(10);
+//        make.right.mas_equalTo(-10);
+//        make.height.mas_equalTo(25.0);
+//    }];
+//    [titleLabel setText:curTitleStr];
+    
+    //
+    UIScrollView *bgScorllV = [[UIScrollView alloc] init];
+    bgScorllV.showsHorizontalScrollIndicator = NO;
+    //bgScorllV.backgroundColor = [UIColor redColor];
+    [self.view addSubview:bgScorllV];
+    
+    [bgScorllV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.titleLabel.mas_bottom).offset(30);
         make.left.mas_equalTo(0);
         make.right.mas_equalTo(0);
+        make.bottom.mas_equalTo(-100.0);
     }];
+
+    NSString *languageCode = [NSLocale preferredLanguages][0];
+  
+    NSString *imageNameStr = @"scan_tip_en";
+    CGFloat imageW = 345.0;
+    CGFloat imageH = 598.0;
     
-    UIButton *qrcodeBtn = [[UIButton alloc] init];
-    [qrcodeBtn setBackgroundColor:[UIColor clearColor]];
-    [qrcodeBtn setBackgroundImage:[UIImage imageNamed:@"guide_qrcode_icon"] forState:(UIControlStateNormal)];
-    [self.view addSubview:qrcodeBtn];
-    [qrcodeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.top.mas_equalTo((363.f/812.f)*self.view.height - 80.f);
-        make.centerX.equalTo(self.view.mas_centerX);
-        make.width.mas_equalTo(160);
-        make.height.mas_equalTo(160);
-    }];
+    if([languageCode rangeOfString:@"zh-Hans"].location != NSNotFound)
+    {
+        imageNameStr = @"scan_tip_Hans";
+    }
+    else if([languageCode rangeOfString:@"zh-Hant"].location != NSNotFound)
+    {
+        imageNameStr = @"scan_tip_Hant";
+    }
+    else if([languageCode rangeOfString:@"ja-"].location != NSNotFound)
+    {
+        imageNameStr = @"scan_tip_ja";
+        
+        imageH = 672.0;
+    }
+    
+    
+    
+    UIImageView * bgImageV = [[UIImageView alloc] init];
+    bgImageV.image = [UIImage imageNamed:imageNameStr];
+    [bgScorllV addSubview:bgImageV];
     
-    [qrcodeBtn addTarget:self
-                  action:@selector(qrcodeBtnPressed)
-        forControlEvents:(UIControlEventTouchUpInside)];
-    
-    /*提示文字*/
-    UILabel *tipsLabel = [[UILabel alloc] init];
-    [tipsLabel setFont:[UIFont systemFontOfSize:14]];
-    [tipsLabel setTextColor:HW666666Color];
-    [tipsLabel setTextAlignment:(NSTextAlignmentCenter)];
-    [self.view addSubview:tipsLabel];
-    [tipsLabel mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.top.equalTo(qrcodeBtn.mas_bottom).offset(8);
-        make.left.mas_equalTo(60);
-        make.right.mas_equalTo(-60);
+    [bgImageV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.centerX.mas_equalTo(0);
+        make.top.mas_equalTo(0);
+        make.width.mas_equalTo(imageW);
+        make.height.mas_equalTo(imageH);
     }];
-    [tipsLabel setText:NSLocalizedString(@"guide_qrcoede_tips",nil)];
+    
+    bgScorllV.contentSize = CGSizeMake(imageW, imageH);
+    
     
     /*扫一扫按钮*/
     UIButton *qrcodeSmallBtn = [[UIButton alloc] init];
-    qrcodeSmallBtn.frame = CGRectMake(0, 0, 120.f, 36.f);
-
+   
     // gradient
     CAGradientLayer *gl = [CAGradientLayer layer];
-    gl.frame = CGRectMake(0,0,120.f,36.f);
+    gl.frame = CGRectMake(0,0,345.f,48.f);
     gl.startPoint = CGPointMake(0, 0.5);
     gl.endPoint = CGPointMake(1, 0.5);
     gl.colors = @[(__bridge id)HW0CDEFDColor.CGColor, (__bridge id)HW058DFBColor.CGColor];
     gl.locations = @[@(0), @(1.0f)];
-    
+
     [qrcodeSmallBtn.layer addSublayer:gl];
     [qrcodeSmallBtn addTarget:self action:@selector(qrcodeBtnPressed) forControlEvents:(UIControlEventTouchUpInside)];
-    [qrcodeSmallBtn setTitle:NSLocalizedString(@"guide_qrcoede_btn_title",nil) forState:(UIControlStateNormal)];
+    [qrcodeSmallBtn setTitle:NSLocalizedString(@"scan_Tip_title_button",nil) forState:(UIControlStateNormal)];
     [qrcodeSmallBtn setTitleColor:[UIColor whiteColor] forState:(UIControlStateNormal)];
-    [qrcodeSmallBtn.titleLabel setFont:[UIFont systemFontOfSize:14.f]];
-    [qrcodeSmallBtn.layer setCornerRadius:18.f];
+    [qrcodeSmallBtn.titleLabel setFont:[UIFont systemFontOfSize:16.f]];
+    [qrcodeSmallBtn.layer setCornerRadius:8.f];
     qrcodeSmallBtn.clipsToBounds = YES;
     [self.view addSubview:qrcodeSmallBtn];
     [qrcodeSmallBtn mas_makeConstraints:^(MASConstraintMaker *make) {
         make.centerX.equalTo(self.view.mas_centerX);
-        make.width.mas_equalTo(120.f);
-        make.top.equalTo(tipsLabel.mas_bottom).offset(20);
-        make.height.mas_equalTo(36.f);
+        make.width.mas_equalTo(345.f);
+        make.top.equalTo(bgScorllV.mas_bottom).offset(15);
+        make.height.mas_equalTo(48.f);
     }];
 }
 

+ 190 - 33
创维盒子/双子星云手机/Class/Set/MySetViewController.m

@@ -27,6 +27,10 @@
 #import "privacyModeViewController.h"
 #import "TvStatusModel.h"
 #import "inputPWDViewController.h"
+#import "fileTransferPopView.h"
+#import "fileTransfeSetViewController.h"
+#import "backupsSetViewController.h"
+#import "downLoadPreviewViewController.h"
 
 @interface MySetViewController ()<HelpDownScrollViewDelegate,UITableViewDelegate,UITableViewDataSource,ComontAlretViewControllerDelegate>
 {
@@ -35,7 +39,7 @@
     UIButton *tvP2PBtn;
 }
 @property (nonatomic, strong, nullable) UITableView *tableView;
-
+@property (nonatomic, strong, nullable) mySetHeadView *customTableHeadView;
 @end
 
 @implementation MySetViewController
@@ -66,6 +70,18 @@
     [self.navBarBGView setHidden:NO];
     [self.titleLabel setText:NSLocalizedString(@"more_set",nil)];
     
+    UIButton* rightButton = [[UIButton alloc] init];
+    [rightButton setImage:[UIImage imageNamed:@"icon_file_transfer"] forState:UIControlStateNormal];
+    [rightButton addTarget:self action:@selector(didiClikRightButFun:) forControlEvents:UIControlEventTouchUpInside];
+    [self.navBarBGView addSubview:rightButton];
+    
+    [rightButton mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(40);
+        make.height.mas_equalTo(40);
+        make.right.mas_equalTo(-15);
+        make.centerY.mas_equalTo(self.titleLabel.mas_centerY);
+    }];
+    
     [self.view addSubview:self.tableView];
     [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
         make.left.mas_equalTo(0);
@@ -77,59 +93,198 @@
 
 
 
-- (UIView *)tableHeadView{
-    UIView *bgView = [[UIView alloc] initWithFrame:(CGRectMake(0, 0, SCREEN_W, 108.f + 15))];
-    [bgView setBackgroundColor:[UIColor clearColor]];
+- (mySetHeadView *)customTableHeadView{
     
-    mySetHeadView *headView = [[mySetHeadView alloc] init];
-    [bgView addSubview:headView];
-    headView.layer.cornerRadius = 8;
-    headView.layer.masksToBounds = YES;
-    
-    [headView mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.left.mas_equalTo(15);
-        make.right.mas_equalTo(-15);
-        make.top.mas_equalTo(0);
-        make.bottom.mas_equalTo(-15);
-    }];
-    
-    KWeakSelf
-#pragma mark 上传文件相关处理
-    headView.didClickBut = ^(NSInteger tag) {
-        [weakSelf didClickUploadFileByTag:tag];
-    };
+    if(!_customTableHeadView){
+        CGFloat PrivacyBgW = SCREEN_W - 20;
+        CGFloat PrivacyBgH = 116.0 * PrivacyBgW / (345.0);
+        
+        CGFloat totalHeight = 10 + PrivacyBgH + (110+15) + (110+15)+(135+15);
+        
+
+        _customTableHeadView = [[mySetHeadView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, totalHeight)];
+
+        
+        KWeakSelf
+    #pragma mark 上传文件相关处理
+        _customTableHeadView.didClickBut = ^(NSInteger tag) {
+            [weakSelf didClickUploadFileByTag:tag];
+        };
+    }
     
-    return bgView;
+    return _customTableHeadView;
+}
+
+- (void)didiClikRightButFun:(UIButton*)but
+{
+    uploadFileRecordViewController *vc = [uploadFileRecordViewController new];
+    [self.navigationController pushViewController:vc animated:YES];
 }
 
 #pragma mark 点击文件上传相关
 - (void)didClickUploadFileByTag:(NSInteger)tag
 {
-    if(tag ==2 || tag ==3){
-        
+    HLog(@"hhh %ld",tag);
+    KWeakSelf
+    switch (tag) {
+        case 1:{
+                fileTransfeSetViewController *nextVC = [fileTransfeSetViewController new];
+                [self.navigationController pushViewController:nextVC animated:YES];
+            }
+            break;
+        case 2:
+        case 3:
+        {
+            fileTransferPopView * fileTransferPopV = [[fileTransferPopView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, SCREEN_H)];
+            if(tag==2){
+                fileTransferPopV.fileTransferType =1;
+            }
+            else{
+                fileTransferPopV.fileTransferType =2;
+            }
+            [self.view.window addSubview:fileTransferPopV];
+            
+            
+            fileTransferPopV.didClickBut = ^(NSInteger tag) {
+                [weakSelf gotoFileTransferFunBy:tag];
+            };
+            
+        }
+            break;
+        case 4:
+            {
+                inputPWDViewController *nextVC = [inputPWDViewController new];
+                nextVC.isCheckPwdType = YES;
+                [self.navigationController pushViewController:nextVC animated:YES];
+                
+                
+                nextVC.didInputRightPwdFun = ^{
+                    [weakSelf gotoPrivacyModeVCFun];
+                };
+            }
+            break;
+        case 5:
+        {
+            backupsSetViewController *nextVC = [backupsSetViewController new];
+            [self.navigationController pushViewController:nextVC animated:YES];
+            
+        }
+            break;
+        case 10:
+            {
+                TipsQRCodeForChangeDeviceViewController *vc = [[TipsQRCodeForChangeDeviceViewController alloc] init];
+                [self.navigationController pushViewController:vc animated:YES];
+            }
+            break;
+        case 7:
+            {
+                /*弹窗提示关闭备份*/
+                ComontAlretViewController *nextVC = [[ComontAlretViewController alloc] initWithTiTle:NSLocalizedString(@"File_backups_set_close_title",nil)
+                                                                                                 msg:NSLocalizedString(@"File_backups_set_close_tip",nil)
+                                                                                            imageStr:nil
+                                                                                         cancelTitle:NSLocalizedString(@"other_cancel",nil)
+                                                                                             okTitle:NSLocalizedString(@"other_comment_ok",nil) isOkBtnHighlight:YES
+                                                                                          didClickOk:^{
+                    [weakSelf gotoClosePhotosBackupsFun];
+                } didClickCancel:^{
+                   
+                }];
+                nextVC.modalPresentationStyle = UIModalPresentationCustom;
+                [self presentViewController:nextVC animated:YES completion:^{
+                    nextVC.view.superview.backgroundColor = [UIColor clearColor];
+                }];
+            }
+            break;
+        case 11:
+            {
+                /*弹窗提示重启*/
+                ComontAlretViewController *nextVC = [[ComontAlretViewController alloc] initWithTiTle:NSLocalizedString(@"my_set_no_restart_phone_tips",nil)
+                                                                                                 msg:nil
+                                                                                            imageStr:nil
+                                                                                         cancelTitle:NSLocalizedString(@"other_cancel",nil)
+                                                                                             okTitle:NSLocalizedString(@"my_set_no_restart_phone_btn_ok",nil) isOkBtnHighlight:NO
+                                                                                          didClickOk:^{
+                    
+                } didClickCancel:^{
+                    
+                }];
+                nextVC.modalPresentationStyle = UIModalPresentationCustom;
+                nextVC.delegate = self;
+                [self presentViewController:nextVC animated:YES completion:^{
+                    nextVC.view.superview.backgroundColor = [UIColor clearColor];
+                }];
+            }
+            break;
+        case 12:
+            {
+                [self RestoreFactoryAleartFun];
+            }
+            break;
+        case 13:
+            {
+                CustomerWebViewController *vc = [[CustomerWebViewController alloc] init];
+                vc.titleStr = NSLocalizedString(@"my_set_no_common_problem",nil);
+                NSString *url = @"https://cliys.armclouding.com/h5/microserviceUserH5/commonProblem/questionIndex.html";
+                vc.webUrl = url;
+                [self.navigationController pushViewController:vc animated:YES];
+            }
+            break;
+        case 14:
+            {
+                AboutViewController *vc = [[AboutViewController alloc] init];
+                vc.getSysInfo = ^{
+                    if(self->_getSysInfo){
+                        self->_getSysInfo();
+                    }
+                };
+                [self.navigationController pushViewController:vc animated:YES];
+            }
+            break;
+        default:
+            break;
+    }
+    
+
+}
+
+- (void)gotoClosePhotosBackupsFun
+{
+    [[self customTableHeadView] closeImageBackupsFun];
+}
+
+#pragma mark 点击图片或者视频
+- (void)gotoFileTransferFunBy:(NSInteger)tag
+{
+    if(tag == 11 ||tag == 21){
         if(self->_getBaseInfo){
             self->_getBaseInfo();
         }
         
         uploadImageOrVideoViewController *vc = [uploadImageOrVideoViewController new];
-        if(tag ==2){
+        if(tag ==11){
             vc.isPhotoType = YES;
         }
         else{
             vc.isPhotoType = NO;
         }
         [self.navigationController pushViewController:vc animated:YES];
-        
     }
-    else if(tag == 1){
-        uploadFileRecordViewController *vc = [uploadFileRecordViewController new];
-        vc.isNotUploadingType = YES;
+    else if(tag == 12 ||tag == 22){
+        
+        
+        downLoadPreviewViewController *vc = [downLoadPreviewViewController new];
+        if(tag ==12){
+            vc.isPhotoType = YES;
+        }
+        else{
+            vc.isPhotoType = NO;
+        }
         [self.navigationController pushViewController:vc animated:YES];
     }
 }
 
 - (UIView *)tableFoorView{
-    UIView *bgView = [[UIView alloc] initWithFrame:(CGRectMake(0, 0, SCREEN_W, 68.f))];
+    UIView *bgView = [[UIView alloc] initWithFrame:(CGRectMake(0, 0, SCREEN_W, 48.f))];
     [bgView setBackgroundColor:[UIColor clearColor]];
     
     tvP2PBtn = [[UIButton alloc] initWithFrame:(CGRectMake(15, 20, SCREEN_W - 2*15.f, 48.f))];
@@ -254,7 +409,7 @@
         }
         
         [_tableView setTableFooterView:[self tableFoorView]];
-        [_tableView setTableHeaderView:[self tableHeadView]];
+        [_tableView setTableHeaderView:[self customTableHeadView]];
     }
     
     return _tableView;
@@ -262,11 +417,13 @@
 
 #pragma mark - 列表委托
 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
-    return 1;
+    return 0;
+    //return 1;
 }
 
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
-    return 6;
+    return 0;
+    //return 6;
      //return 5;//去掉更换icon
 }
 

+ 1 - 1
创维盒子/双子星云手机/Class/Set/uploadFile/PhotoPreviewViewController.m

@@ -355,7 +355,7 @@
     
     uploadFileRecordViewController *vc = [uploadFileRecordViewController new];
     [self.navigationController pushViewController:vc animated:YES];
-    
+    vc.isUploadingType = YES;
     [vc gotoUploadFile:_indexPathsForSelectedItems];
 }
 

+ 16 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/downLoadFile/downLoadPreviewViewController.h

@@ -0,0 +1,16 @@
+//
+//  downLoadPreviewViewController.h
+//  隐私保护
+//
+//  Created by xd h on 2024/1/7.
+//
+
+#import "BaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface downLoadPreviewViewController : BaseViewController
+@property (nonatomic,assign) BOOL isPhotoType;//是否为选择图片类型
+@end
+
+NS_ASSUME_NONNULL_END

+ 258 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/downLoadFile/downLoadPreviewViewController.m

@@ -0,0 +1,258 @@
+//
+//  downLoadPreviewViewController.m
+//  隐私保护
+//
+//  Created by xd h on 2024/1/7.
+//
+
+#import "downLoadPreviewViewController.h"
+#import "couldPhoneFileListModel.h"
+#import "downLoadPreViewCell.h"
+#import "downloadFileBottomView.h"
+#import "downloadThumbnailManager.h"
+#import "downloadManager.h"
+#import "uploadFileRecordViewController.h"
+
+@interface downLoadPreviewViewController ()<UITableViewDelegate,UITableViewDataSource>
+@property (nonatomic, strong) UITableView *tableView;
+@property (nonatomic, strong) UIButton *rightButton;
+@property (nonatomic, strong) downloadFileBottomView *downloadFileBottomV;
+@property (nonatomic,assign) BOOL didGetType;
+
+@property(nonatomic,strong) couldPhoneFileListModel *curCouldPhoneFileListMod;
+@end
+
+@implementation downLoadPreviewViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    
+    [self.toolBar setHidden:YES];
+    [self.navigationBar setHidden:YES];
+    [self.navBarBGView setHidden:NO];
+    self.navBarBGView.backgroundColor = [UIColor whiteColor];
+    [self.view setBackgroundColor:[UIColor whiteColor]];
+    
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(searchFileListDoneFun:) name:searchFileListDoneNotification object:nil];
+    
+    [self drawAnyView];
+}
+
+- (void)drawAnyView{
+    
+    _rightButton = [[UIButton alloc] init];
+    [_rightButton setTitle:NSLocalizedString(@"File_upload_Record_select_all",nil) forState:UIControlStateNormal];
+    [_rightButton setTitle:NSLocalizedString(@"File_upload_cancel_select_all",nil) forState:UIControlStateSelected];
+    
+    [_rightButton setTitleColor:[UIColor hwColor:@"#01B7EA" alpha:1.0] forState:UIControlStateNormal];
+    _rightButton.titleLabel.font = [UIFont systemFontOfSize:18.0];
+    _rightButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;
+    [_rightButton addTarget:self action:@selector(didClickSelectAllButton:) forControlEvents:UIControlEventTouchUpInside];
+    [self.navBarBGView addSubview:_rightButton];
+    
+    
+    
+    [_rightButton mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(120);
+        make.height.mas_equalTo(40);
+        make.right.mas_equalTo(-15);
+        make.centerY.mas_equalTo(self.titleLabel.mas_centerY);
+    }];
+    
+    [self.view addSubview:self.tableView];
+    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(0);
+        make.right.mas_equalTo(0);
+        make.bottom.mas_equalTo(-(60 + safeArea));
+        make.top.equalTo(self.navBarBGView.mas_bottom).offset(10.f);
+    }];
+    
+    _downloadFileBottomV = [[downloadFileBottomView alloc] init];
+    [self.view insertSubview:_downloadFileBottomV atIndex:0];
+    
+    [_downloadFileBottomV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(0);
+        make.right.mas_equalTo(0);
+        make.bottom.mas_equalTo(0);
+        make.height.mas_equalTo(60 + safeArea);
+    }];
+    
+    [self RefreshBottomViewUIFun];
+    
+    KWeakSelf
+    _downloadFileBottomV.didClickDownloadFile = ^{
+        [weakSelf gotoDownloadloadFileRecordFun];
+    };
+    
+}
+
+#pragma mark - 懒加载
+- (UITableView *)tableView{
+    if (!_tableView) {
+        _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, SCREEN_H - TABBARHEIGHT) style:UITableViewStylePlain];
+        _tableView.delegate = self;
+        _tableView.dataSource = self;
+        _tableView.showsVerticalScrollIndicator = NO;
+        _tableView.showsHorizontalScrollIndicator = NO;
+//        _tableView.contentInset = UIEdgeInsetsMake(-H_STATE_BAR, 0, 0, 0);
+        [_tableView setSeparatorStyle:(UITableViewCellSeparatorStyleNone)];
+        [_tableView setSeparatorColor:[UIColor clearColor]];
+        [_tableView setBackgroundColor:[UIColor clearColor]];
+        [_tableView setTableFooterView:[UIView new]];
+        [_tableView setBounces:YES];
+        
+        if (@available(iOS 15.0, *)) {
+            _tableView.sectionHeaderTopPadding = 0;
+        }
+        
+    }
+    
+    return _tableView;
+}
+
+
+#pragma mark - 列表委托
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
+    return 1;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    if(!_curCouldPhoneFileListMod){
+        return 0;
+    }
+    return _curCouldPhoneFileListMod.data.list.count;
+}
+
+- (downLoadPreViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
+    
+    __block NSInteger row = indexPath.row;
+    static NSString *identifier = @"downLoadPreViewCell";
+    
+    downLoadPreViewCell * cell =  [tableView dequeueReusableCellWithIdentifier:identifier];
+    cell.selectionStyle = UITableViewCellSelectionStyleNone;
+    if (!cell){
+        cell = [[downLoadPreViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier];
+        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
+        [cell setBackgroundColor:[UIColor clearColor]];
+        [cell setAccessoryType:(UITableViewCellAccessoryNone)];
+        
+        [cell.bgViewLayer removeFromSuperlayer];
+        [cell.titleLabel2 setHidden:NO];
+        [cell.rightImage setHidden:YES];
+        [cell.lineView setHidden:YES];
+        [cell.checkButton setHidden:NO];
+        
+    }
+    
+    if(row < _curCouldPhoneFileListMod.data.list.count){
+        couldPhoneFileModel* fileModel = _curCouldPhoneFileListMod.data.list[row];
+        cell.curFileModel = fileModel;
+    }
+    
+    
+    KWeakSelf
+    cell.didClickSwitch = ^(BOOL SwitchOn) {
+        [weakSelf userCheckFilePreviewByRow:row];
+    };
+    
+    return cell;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
+    return 70;
+}
+
+- (void)userCheckFilePreviewByRow:(NSInteger)row
+{
+    if(row < _curCouldPhoneFileListMod.data.list.count){
+        couldPhoneFileModel* fileModel = _curCouldPhoneFileListMod.data.list[row];
+         fileModel.isSelectType = !fileModel.isSelectType;
+        [self.tableView reloadData];
+        [self RefreshBottomViewUIFun];
+    }
+}
+
+- (void)didClickSelectAllButton:(UIButton*)button
+{
+    button.selected = !button.selected;
+    
+    for (couldPhoneFileModel* fileModel in _curCouldPhoneFileListMod.data.list) {
+        fileModel.isSelectType = button.selected;
+    }
+    
+    [self.tableView reloadData];
+    [self RefreshBottomViewUIFun];
+}
+
+#pragma mark 刷新底部
+- (void)RefreshBottomViewUIFun
+{
+    NSMutableArray *selectArr = [NSMutableArray new];
+    
+    for (couldPhoneFileModel* fileModel in _curCouldPhoneFileListMod.data.list) {
+        
+        if(fileModel.isSelectType){
+            [selectArr addObject:fileModel];
+        }
+    }
+    
+    _downloadFileBottomV.indexPathsForSelectedItems = selectArr;
+}
+
+- (void)viewWillAppear:(BOOL)animated
+{
+    [super viewWillAppear:animated];
+    
+    if(!_didGetType){
+        if(_isPhotoType){
+            self.titleLabel.text = NSLocalizedString(@"my_set_no_image_upload",nil) ;
+        }
+        else{
+            self.titleLabel.text = NSLocalizedString(@"my_set_no_video_upload",nil) ;
+        }
+        
+        [self searchFileListFun];
+        
+        _didGetType = YES;
+    }
+    
+}
+
+- (void)searchFileListFun
+{
+    NSNumber *curNum = [NSNumber numberWithBool:_isPhotoType];
+    [[NSNotificationCenter defaultCenter] postNotificationName:searchFileListBeginNotification object:curNum];/*发送通知*/
+}
+
+- (void)searchFileListDoneFun:(NSNotification*)notification
+{
+    NSDictionary *dataDict = [notification object];
+    
+    if(!dataDict || ![dataDict isKindOfClass:[NSDictionary class]]){
+        return;
+    }
+    
+    _curCouldPhoneFileListMod = [[couldPhoneFileListModel alloc] initWithDictionary:dataDict error:nil];
+    
+    [self.tableView reloadData];
+    
+    [self gotoDownThumbnailManagerFun];
+}
+
+
+#pragma mark 去下载缩略图
+- (void)gotoDownThumbnailManagerFun
+{
+    [[downloadThumbnailManager shareInstance] handlToDownloadThumbnailWith:_curCouldPhoneFileListMod.data.list];
+}
+
+- (void)gotoDownloadloadFileRecordFun
+{
+    uploadFileRecordViewController *vc = [uploadFileRecordViewController new];
+    [self.navigationController pushViewController:vc animated:YES];
+    vc.isDownloadingType = YES;
+    [vc gotoDownloadFile:_downloadFileBottomV.indexPathsForSelectedItems];
+}
+
+@end

+ 28 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/downLoadFile/view/downLoadPreViewCell.h

@@ -0,0 +1,28 @@
+//
+//  downLoadPreViewCell.h
+//  隐私保护
+//
+//  Created by xd h on 2024/1/8.
+//
+
+#import <UIKit/UIKit.h>
+#import "couldPhoneFileListModel.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface downLoadPreViewCell : UITableViewCell
+@property(nonatomic,strong)UIView *lineView;
+@property(nonatomic,strong)UIView *cellBgView;
+@property(nonatomic,strong)UIImageView *mImageView;
+@property(nonatomic,strong)UILabel *titleLabel;
+@property(nonatomic,strong)UILabel *titleLabel2;
+@property(nonatomic,strong)UIImageView *rightImage;
+@property(nonatomic, strong) CALayer* bgViewLayer;
+@property(nonatomic, strong) UIButton *checkButton;
+
+@property (nonatomic,copy) void (^didClickSwitch)(BOOL SwitchOn);
+
+@property(nonatomic,strong) couldPhoneFileModel*curFileModel;
+@end
+
+NS_ASSUME_NONNULL_END

+ 179 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/downLoadFile/view/downLoadPreViewCell.m

@@ -0,0 +1,179 @@
+//
+//  downLoadPreViewCell.m
+//  隐私保护
+//
+//  Created by xd h on 2024/1/8.
+//
+
+#import "downLoadPreViewCell.h"
+
+
+@implementation downLoadPreViewCell
+@synthesize cellBgView;
+@synthesize mImageView;
+@synthesize titleLabel;
+@synthesize titleLabel2;
+@synthesize rightImage;
+@synthesize lineView;
+@synthesize checkButton;
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
+{
+    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+    
+    if (self)
+    {
+        [self drawView];
+    }
+    
+    return self;
+}
+
+- (void)drawView
+{
+    cellBgView = [[UIView alloc] init];
+    [self.contentView addSubview:cellBgView];
+    cellBgView.backgroundColor = [UIColor whiteColor];
+    [cellBgView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(15.f);
+        make.top.mas_equalTo(0);
+        make.bottom.mas_equalTo(0);
+        make.width.mas_equalTo(SCREEN_W - 2*15.f);
+    }];
+    
+    /*图片*/
+    mImageView = [[UIImageView alloc] init];
+    [mImageView setBackgroundColor:[UIColor clearColor]];
+    mImageView.image = [UIImage imageNamed:@"uploadFile_image"];
+    [cellBgView addSubview:mImageView];
+    [mImageView setContentMode:(UIViewContentModeScaleAspectFill)];
+    [mImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(15);
+        make.width.mas_equalTo(36);
+        make.height.mas_equalTo(36);
+        make.centerY.equalTo(cellBgView.mas_centerY);
+    }];
+    
+    /*右侧箭头*/
+    rightImage = [[UIImageView alloc] init];
+    [rightImage setBackgroundColor:[UIColor clearColor]];
+    [rightImage setImage:[UIImage imageNamed:@"cell_right_access"]];
+    [cellBgView addSubview:rightImage];
+    [rightImage mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(28);
+        make.right.mas_equalTo(-15.f);
+        make.height.mas_equalTo(28);
+        make.centerY.equalTo(cellBgView.mas_centerY);
+    }];
+    
+    checkButton = [[UIButton alloc] init];
+    [checkButton setImage:[UIImage imageNamed:@"upload_file_uncheck"] forState:UIControlStateNormal];
+    [checkButton setImage:[UIImage imageNamed:@"upload_file_check"] forState:UIControlStateSelected];
+    [cellBgView addSubview:checkButton];
+    
+    [checkButton mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-18.f);
+        make.centerY.equalTo(cellBgView.mas_centerY);
+        make.width.mas_equalTo(36.f);
+        make.height.mas_equalTo(36.f);
+    }];
+    
+    [checkButton addTarget:self action:@selector(maskSwitchPressed:) forControlEvents:(UIControlEventTouchUpInside)];
+    
+    
+    /**标题*/
+    titleLabel = [[UILabel alloc] init];
+    [cellBgView addSubview:titleLabel];
+    titleLabel.font = [UIFont boldSystemFontOfSize:14.f];
+    titleLabel.numberOfLines = 0;
+    [titleLabel setTextColor:HW0A132BColor];
+    [titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.equalTo(mImageView.mas_right).offset(5.f);
+        make.right.equalTo(checkButton.mas_left).offset(-5.f);
+        make.centerY.equalTo(cellBgView.mas_centerY);
+        //make.top.mas_equalTo(15.f);
+    }];
+    
+    /**副标题*/
+    titleLabel2 = [[UILabel alloc] init];
+    [cellBgView addSubview:titleLabel2];
+    titleLabel2.font = [UIFont systemFontOfSize:12.f];
+    //[titleLabel2 setTextAlignment:(NSTextAlignmentRight)];
+    [titleLabel2 setTextColor:HW666666Color];
+    [titleLabel2 mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-53.f);
+        make.left.mas_equalTo(titleLabel.mas_left);
+        //make.centerY.equalTo(cellBgView.mas_centerY);
+        make.bottom.mas_equalTo(-15);
+    }];
+    
+    lineView = [[UIView alloc] init];
+    [lineView setBackgroundColor:HW979797Color10];
+    [cellBgView addSubview:lineView];
+    [lineView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-15.f);
+        make.left.mas_equalTo(15.f);
+        make.bottom.mas_equalTo(0);
+        make.height.mas_equalTo(1.f);
+    }];
+    
+    
+    //titleLabel2.text = @"2023/10/22";
+}
+
+- (void)maskSwitchPressed:(UIButton *)maskSwitch{
+    if(_didClickSwitch){
+        _didClickSwitch(maskSwitch.selected);
+    }
+}
+
+- (void)setCurFileModel:(couldPhoneFileModel *)curFileModel
+{
+    mImageView.image = [UIImage imageNamed:@"uploadFile_image"];
+    checkButton.selected = curFileModel.isSelectType;
+
+    
+    //时间戳转换为日期
+    NSString *timeStr = [[NSString alloc] initWithFormat:@"%ld",curFileModel.time];
+    NSString *dateStr = [iTools getDateStringWithTimeStr:timeStr];
+    
+    NSString * totalSizeStr = nil;
+    NSInteger totalSize_k = curFileModel.length / 1024;
+    if(totalSize_k < 1024){
+        totalSizeStr = [[NSString alloc] initWithFormat:@"%ldKB",totalSize_k];
+    }
+    else if( totalSize_k >= 1024 && totalSize_k < 1024*1024){
+        totalSizeStr = [[NSString alloc] initWithFormat:@"%.1fMB",totalSize_k/1024.0];
+        
+    }
+    else{
+        totalSizeStr = [[NSString alloc] initWithFormat:@"%.2fG",totalSize_k/1024.0/1024.0];
+    }
+    
+    NSString * leftStr = curFileModel.name;
+    NSString * rightStr = [[NSString alloc] initWithFormat:@"\n%@      %@",dateStr,totalSizeStr];
+    
+    
+    NSString *totalStr = [[NSString alloc] initWithFormat:@"%@%@",leftStr,rightStr];
+    
+    NSMutableAttributedString *noteStr = [[NSMutableAttributedString alloc] initWithString:totalStr];
+    
+    NSRange redRange = NSMakeRange([totalStr rangeOfString:rightStr].location, [totalStr rangeOfString:rightStr].length);
+    [noteStr addAttribute:NSForegroundColorAttributeName value:[UIColor hwColor:@"#666666" alpha:1.0] range:redRange];
+    [noteStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12.0] range:redRange];
+    // 设置行间距
+    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
+    [paragraphStyle setLineSpacing:5];        //设置行间距
+    
+    [noteStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [totalStr  length])];
+    
+    
+    titleLabel.attributedText = noteStr;
+}
+
+@end

+ 20 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/downLoadFile/view/downloadFileBottomView.h

@@ -0,0 +1,20 @@
+//
+//  downloadFileBottomView.h
+//  隐私保护
+//
+//  Created by xd h on 2024/1/8.
+//
+
+#import <UIKit/UIKit.h>
+#import "couldPhoneFileListModel.h"
+NS_ASSUME_NONNULL_BEGIN
+
+@interface downloadFileBottomView : UIView
+//选中的项 
+@property (nonatomic,strong) NSMutableArray *indexPathsForSelectedItems;
+@property (nonatomic,copy) NSString *availableStorage;
+//点击上传
+@property (nonatomic,copy) void (^didClickDownloadFile)(void);
+@end
+
+NS_ASSUME_NONNULL_END

+ 188 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/downLoadFile/view/downloadFileBottomView.m

@@ -0,0 +1,188 @@
+//
+//  downloadFileBottomView.m
+//  隐私保护
+//
+//  Created by xd h on 2024/1/8.
+//
+
+#import "downloadFileBottomView.h"
+#import <sys/mount.h>
+#include <sys/param.h>
+
+@interface downloadFileBottomView ()
+@property(nonatomic,strong)UILabel *selectNumLabel;
+@property(nonatomic,strong)UILabel *uploadFileRoutelabel;
+@property(nonatomic,strong)UIButton *uploadButon;
+@end
+
+@implementation downloadFileBottomView
+
+- (id)initWithFrame:(CGRect)frame{
+    self = [super initWithFrame:frame];
+    [self setBackgroundColor:[UIColor whiteColor]];
+    [self drawAnyView];
+    
+    _availableStorage = [self freeDiskSpaceInBytes];
+    return self;
+}
+
+- (NSString *)freeDiskSpaceInBytes{
+    struct statfs buf;
+    unsigned long long freeSpace = -1;
+    if (statfs("/var", &buf) >= 0) {
+        freeSpace = (unsigned long long)(buf.f_bsize * buf.f_bavail);
+    }
+     NSString *str = [NSString stringWithFormat:@"%0.2f GB",freeSpace/1024.0/1024.0/1024.0];
+    return str;
+}
+
+- (void)drawAnyView{
+    _selectNumLabel = [[UILabel alloc] init];
+    _selectNumLabel.font = [UIFont boldSystemFontOfSize:16.0];
+    [self addSubview:_selectNumLabel];
+    
+    [_selectNumLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(15);
+        make.top.mas_equalTo(10);
+        make.right.mas_equalTo(-110);
+        make.height.mas_equalTo(20);
+    }];
+    
+    //设置即得标题
+    self.indexPathsForSelectedItems = [NSMutableArray new];
+    
+    _uploadFileRoutelabel = [[UILabel alloc] init];
+    _uploadFileRoutelabel.font = [UIFont systemFontOfSize:14.0];
+    _uploadFileRoutelabel.textColor = [UIColor hwColor:@"#959799" alpha:1.0];
+    _uploadFileRoutelabel.text = NSLocalizedString(@"File_download_Path_default",nil);
+    [self addSubview:_uploadFileRoutelabel];
+    
+    [_uploadFileRoutelabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(15);
+        make.top.mas_equalTo(_selectNumLabel.mas_bottom).offset(10);
+        make.right.mas_equalTo(-110);
+        make.height.mas_equalTo(20);
+    }];
+    
+    //图片上传
+    NSString* curImgUploadStr = [[NSString alloc] initWithFormat:@"%@ %@",@"  ",NSLocalizedString(@"my_set_no_File_download",nil)];
+    
+    
+    // gradient
+    CAGradientLayer *gl_But = [CAGradientLayer layer];
+    gl_But.frame = CGRectMake(0,0,88.f,40.f);
+    gl_But.startPoint = CGPointMake(0, 0.5);
+    gl_But.endPoint = CGPointMake(1, 0.5);
+    gl_But.colors = @[(__bridge id)HW0CDEFDColor.CGColor, (__bridge id)HW058DFBColor.CGColor];
+    gl_But.locations = @[@(0), @(1.0f)];
+    gl_But.cornerRadius = 8;
+    
+    
+    UIButton *imageUploadBut = [[UIButton alloc] init];
+    
+    
+    [imageUploadBut setImage:[UIImage imageNamed:@"donwload_file_white_100"] forState:UIControlStateNormal];
+    [imageUploadBut setTitle:curImgUploadStr forState:UIControlStateNormal];
+   
+    [imageUploadBut setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
+    imageUploadBut.titleLabel.font = [UIFont boldSystemFontOfSize:13.0];
+    imageUploadBut.tag = 2;
+    [imageUploadBut addTarget:self action:@selector(didClickButFun:) forControlEvents:UIControlEventTouchUpInside];
+    [self addSubview:imageUploadBut];
+    [imageUploadBut.layer insertSublayer:gl_But atIndex:0];
+    [imageUploadBut bringSubviewToFront:imageUploadBut.imageView];
+    
+    self.uploadButon = imageUploadBut;
+    
+    //imageUploadBut.backgroundColor = [UIColor redColor];
+    
+    [imageUploadBut mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-15);
+        make.top.mas_equalTo(10);
+        make.width.mas_equalTo(88);
+        make.height.mas_equalTo(40);
+    }];
+    
+    imageUploadBut.enabled = NO;
+    imageUploadBut.alpha = 0.5;
+}
+
+
+#pragma mark 数据处理
+- (void)setIndexPathsForSelectedItems:(NSMutableArray *)indexPathsForSelectedItems
+{
+    
+    _indexPathsForSelectedItems = indexPathsForSelectedItems;
+    if(!_indexPathsForSelectedItems){
+        _indexPathsForSelectedItems = [NSMutableArray new];
+    }
+    
+    //TZAssetModel imageData (以字节为单位)
+    NSUInteger allImageData = 0;
+    
+    for (couldPhoneFileModel* model in _indexPathsForSelectedItems) {
+        
+        allImageData += model.length;
+        
+    }
+    
+    allImageData /= 1024;
+    
+    NSString *byteStr = nil;
+    NSString *unitStr = @"KB";
+    
+    if(allImageData < 1024){
+        byteStr = [[NSString alloc] initWithFormat:@"%ld",allImageData];
+    }
+    else if( allImageData >= 1024 && allImageData < 1024*1024){
+        byteStr = [[NSString alloc] initWithFormat:@"%.1f",allImageData/1024.0];
+        unitStr = @"MB";
+    }
+    else{
+        byteStr = [[NSString alloc] initWithFormat:@"%.2f",allImageData/1024.0/1024.0];
+        unitStr = @"G";
+    }
+    
+    if(!_availableStorage){
+        _availableStorage = @"--";
+    }
+    
+    NSString *curStr1 = [NSString stringWithFormat:@"已选%ld项",_indexPathsForSelectedItems.count];
+    NSString *curStr2 = [NSString stringWithFormat:@"(%@%@,%@)",byteStr,unitStr,_availableStorage];
+    NSString *totalStr = [[NSString alloc] initWithFormat:@"%@ %@",curStr1,curStr2];
+    
+    NSMutableAttributedString *noteStr = [[NSMutableAttributedString alloc] initWithString:totalStr];
+    
+    NSRange redRange = NSMakeRange([totalStr rangeOfString:curStr2].location, [totalStr rangeOfString:curStr2].length);
+    [noteStr addAttribute:NSForegroundColorAttributeName value:[UIColor hwColor:@"#959799" alpha:1.0] range:redRange];
+    [noteStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14.0] range:redRange];
+    // 设置行间距
+    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
+    [paragraphStyle setLineSpacing:5];        //设置行间距
+    
+    [noteStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [totalStr  length])];
+
+    _selectNumLabel.attributedText = noteStr;
+    
+    if(_indexPathsForSelectedItems.count > 0){
+        self.uploadButon.enabled = YES;
+        self.uploadButon.alpha = 1;
+    }
+    else
+    {
+        self.uploadButon.enabled = NO;
+        self.uploadButon.alpha = 0.5;
+    }
+}
+
+#pragma mark 按钮点击
+- (void)didClickButFun:(UIButton*)but
+{
+    if(_didClickDownloadFile)
+    {
+        _didClickDownloadFile();
+    }
+}
+
+@end
+

+ 16 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/backupsSetViewController.h

@@ -0,0 +1,16 @@
+//
+//  backupsSetViewController.h
+//  隐私保护
+//
+//  Created by xd h on 2024/1/2.
+//
+
+#import "BaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface backupsSetViewController : BaseViewController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 273 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/backupsSetViewController.m

@@ -0,0 +1,273 @@
+//
+//  backupsSetViewController.m
+//  隐私保护
+//
+//  Created by xd h on 2024/1/2.
+//
+
+#import "backupsSetViewController.h"
+
+#import "fileSetTableViewCell.h"
+#import "fileTransferPathCheckViewController.h"
+#import "backupsFileManager.h"
+
+@interface backupsSetViewController ()<UITableViewDelegate,UITableViewDataSource>
+@property (nonatomic, strong) UITableView *tableView;
+@property (nonatomic, strong) UIView *tailView;
+@property (nonatomic, strong) UILabel *uploadFilePathLabel;
+@end
+
+@implementation backupsSetViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    
+    [self.toolBar setHidden:YES];
+    [self.navigationBar setHidden:YES];
+    [self.navBarBGView setHidden:NO];
+    [self.titleLabel setText:NSLocalizedString(@"File_backups_path_set",nil)];
+    [self.view setBackgroundColor:HWF5F7FAColor];
+    
+    [self drawAnyView];
+}
+
+- (void)drawAnyView{
+    
+    [self.view addSubview:self.tableView];
+    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(0);
+        make.right.mas_equalTo(0);
+        make.bottom.mas_equalTo(0);
+        make.top.equalTo(self.navBarBGView.mas_bottom).offset(10.f);
+    }];
+    
+    self.tableView.tableFooterView = [self tailView];
+}
+
+#pragma mark - 懒加载
+- (UITableView *)tableView{
+    if (!_tableView) {
+        _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, SCREEN_H - TABBARHEIGHT) style:UITableViewStylePlain];
+        _tableView.delegate = self;
+        _tableView.dataSource = self;
+        _tableView.showsVerticalScrollIndicator = NO;
+        _tableView.showsHorizontalScrollIndicator = NO;
+//        _tableView.contentInset = UIEdgeInsetsMake(-H_STATE_BAR, 0, 0, 0);
+        [_tableView setSeparatorStyle:(UITableViewCellSeparatorStyleNone)];
+        [_tableView setSeparatorColor:[UIColor clearColor]];
+        [_tableView setBackgroundColor:[UIColor clearColor]];
+        [_tableView setTableFooterView:[UIView new]];
+        [_tableView setBounces:YES];
+        
+        _tableView.scrollEnabled = NO;
+        
+        if (@available(iOS 15.0, *)) {
+            _tableView.sectionHeaderTopPadding = 0;
+        }
+        
+    }
+    
+    return _tableView;
+}
+
+
+#pragma mark - 懒加载
+- (UIView *)tailView{
+    if (!_tailView) {
+        _tailView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, 140 +15)];
+        
+        UIView *tailBgView = [[UIView alloc] init];
+        tailBgView.backgroundColor = [UIColor whiteColor];
+        tailBgView.layer.cornerRadius = 8;
+        [_tailView addSubview:tailBgView];
+        
+        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didClickTailViewFun)];
+        [tailBgView addGestureRecognizer:tap];
+        
+        [tailBgView mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.left.mas_equalTo(15);
+            make.right.mas_equalTo(-15);
+            make.height.mas_equalTo(60);
+            make.top.mas_equalTo(15);
+        }];
+        
+        UILabel *titleLab = [[UILabel alloc] init];
+        titleLab.text = NSLocalizedString(@"File_backups_path_set",nil);
+        titleLab.font = [UIFont boldSystemFontOfSize:14.0];
+        titleLab.textColor = [UIColor hwColor:@"#0A132B" alpha:1.0];
+        [tailBgView addSubview:titleLab];
+        
+        [titleLab mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.left.mas_equalTo(10);
+            make.right.mas_equalTo(-50);
+            make.height.mas_equalTo(20);
+            make.top.mas_equalTo(20);
+        }];
+        
+        /*右侧箭头*/
+        UIImageView *rightImage = [[UIImageView alloc] init];
+        [rightImage setBackgroundColor:[UIColor clearColor]];
+        [rightImage setImage:[UIImage imageNamed:@"cell_right_access"]];
+        [tailBgView addSubview:rightImage];
+        [rightImage mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.width.mas_equalTo(28);
+            make.right.mas_equalTo(-15.f);
+            make.height.mas_equalTo(28);
+            make.centerY.equalTo(titleLab.mas_centerY);
+        }];
+        
+        _uploadFilePathLabel=[[UILabel alloc] init];
+        //titleLab.text = NSLocalizedString(@"File_upload_path_set",nil);
+        _uploadFilePathLabel.font = [UIFont systemFontOfSize:12.0];
+        _uploadFilePathLabel.textColor = [UIColor hwColor:@"#6A6A6A" alpha:1.0];
+        _uploadFilePathLabel.numberOfLines = 0;
+        [_tailView addSubview:_uploadFilePathLabel];
+        
+        [_uploadFilePathLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.left.mas_equalTo(15);
+            make.right.mas_equalTo(-15);
+            make.bottom.mas_equalTo(-10);
+            make.top.mas_equalTo(tailBgView.mas_bottom).offset(10.0);
+        }];
+        
+        [self setUploadFilePathLabelTitleFun];
+    }
+    
+    return _tailView;
+}
+
+- (void)setUploadFilePathLabelTitleFun
+{
+    NSString * leftStr = NSLocalizedString(@"File_backups_path_way_tip",nil);
+    
+    NSString * backupsDefaultPath = [HWDataManager getStringWithKey:Const_photo_backups_default_path];
+    
+    if(!backupsDefaultPath || backupsDefaultPath.length == 0){
+        backupsDefaultPath = @"sdcard/Download";
+        [HWDataManager setStringWithKey:Const_photo_backups_default_path value:backupsDefaultPath];
+    }
+    
+    NSString * rightStr = backupsDefaultPath;
+    
+    NSString *totalStr = [[NSString alloc] initWithFormat:@"%@%@",leftStr,rightStr];
+    
+    NSMutableAttributedString *noteStr = [[NSMutableAttributedString alloc] initWithString:totalStr];
+    
+    NSRange redRange = NSMakeRange([totalStr rangeOfString:rightStr].location, [totalStr rangeOfString:rightStr].length);
+    [noteStr addAttribute:NSForegroundColorAttributeName value:[UIColor hwColor:@"#01B7EA" alpha:0.8] range:redRange];
+    [noteStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12.0] range:redRange];
+    // 设置行间距
+    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
+    [paragraphStyle setLineSpacing:5];        //设置行间距
+    
+    [noteStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [totalStr  length])];
+    
+    _uploadFilePathLabel.attributedText = noteStr;
+}
+
+#pragma mark 尾部事件
+- (void)didClickTailViewFun
+{
+    photosBackupsTaskModel* model = [backupsFileManager shareInstance].curPhotosBackupsTaskMod;
+    
+    if(model && model.curBackupsState == backupsStateUploading){
+        [[iToast makeText:NSLocalizedString(@"File_backups_set_default_path_tip",nil)] show];
+        return;
+    }
+    
+    fileTransferPathCheckViewController *vc = [fileTransferPathCheckViewController new];
+    vc.curType = 2;
+    [self.navigationController pushViewController:vc animated:YES];
+}
+
+#pragma mark - 列表委托
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
+    return 1;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    return 2;
+}
+
+- (fileSetTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
+    
+    __block NSInteger row = indexPath.row;
+    static NSString *identifier = @"fileSetTableViewCell";
+    
+    fileSetTableViewCell * cell =  [tableView dequeueReusableCellWithIdentifier:identifier];
+    cell.selectionStyle = UITableViewCellSelectionStyleNone;
+    if (!cell){
+        cell = [[fileSetTableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier];
+        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
+        [cell setBackgroundColor:[UIColor clearColor]];
+        [cell setAccessoryType:(UITableViewCellAccessoryNone)];
+        
+        [cell.bgViewLayer removeFromSuperlayer];
+        [cell.titleLabel2 setHidden:YES];
+        [cell.rightImage setHidden:YES];
+        [cell.lineView setHidden:NO];
+        [cell.maskSwitch setHidden:NO];
+        
+    }
+    
+    
+    if (row == 0){
+        [cell.titleLabel setText:NSLocalizedString(@"File_backups_set_Cellular",nil)];
+        
+        BOOL haveOpenMask = [HWDataManager getBoolWithKey:Const_file_backups_canUse_Cellular];
+        [cell.maskSwitch setOn:haveOpenMask];
+        
+        /*上圆角*/
+        //设置部分圆角  贝塞尔曲线
+        UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, SCREEN_W-30 , 60)
+                                                       byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight
+                                                             cornerRadii:CGSizeMake(8, 8)];
+        CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
+        maskLayer.frame = cell.cellBgView.bounds;
+        maskLayer.path = maskPath.CGPath;
+        cell.bgViewLayer = maskLayer;
+        cell.cellBgView.layer.mask = cell.bgViewLayer;
+    }else if (row == 1){
+        [cell.titleLabel setText:NSLocalizedString(@"File_backups_set_battery_level",nil)];
+ 
+        BOOL haveOpenMask = [HWDataManager getBoolWithKey:Const_file_backups_battery_level];
+        [cell.maskSwitch setOn:haveOpenMask];
+
+        /*下圆角*/
+        UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, SCREEN_W-30 , 60)
+                                                       byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight
+                                                             cornerRadii:CGSizeMake(8, 8)];
+        CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
+        maskLayer.frame = cell.cellBgView.bounds;
+        maskLayer.path = maskPath.CGPath;
+        cell.bgViewLayer = maskLayer;
+        cell.cellBgView.layer.mask = cell.bgViewLayer;
+        
+        [cell.lineView setHidden:YES];
+    }
+
+    KWeakSelf
+    cell.didClickSwitch = ^(BOOL SwitchOn) {
+        [weakSelf didClickSwitchBy:SwitchOn withRow:row];
+    };
+    
+    return cell;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
+    return 60;
+}
+
+- (void)didClickSwitchBy:(BOOL)SwitchOn withRow:(NSInteger)row
+{
+    if(row == 0){
+        [HWDataManager setBoolWithKey:Const_file_backups_canUse_Cellular value:SwitchOn];
+    }
+    else{
+        [HWDataManager setBoolWithKey:Const_file_backups_battery_level value:SwitchOn];
+    }
+}
+
+@end
+

+ 16 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/fileTransfeSetViewController.h

@@ -0,0 +1,16 @@
+//
+//  fileTransfeSetViewController.h
+//  隐私保护
+//
+//  Created by xd h on 2023/12/28.
+//
+
+#import "BaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface fileTransfeSetViewController : BaseViewController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 255 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/fileTransfeSetViewController.m

@@ -0,0 +1,255 @@
+//
+//  fileTransfeSetViewController.m
+//  隐私保护
+//
+//  Created by xd h on 2023/12/28.
+//
+
+#import "fileTransfeSetViewController.h"
+#import "fileSetTableViewCell.h"
+#import "fileTransferPathCheckViewController.h"
+
+@interface fileTransfeSetViewController ()<UITableViewDelegate,UITableViewDataSource>
+@property (nonatomic, strong) UITableView *tableView;
+@property (nonatomic, strong) UIView *tailView;
+@property (nonatomic, strong) UILabel *uploadFilePathLabel;
+@end
+
+@implementation fileTransfeSetViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    
+    [self.toolBar setHidden:YES];
+    [self.navigationBar setHidden:YES];
+    [self.navBarBGView setHidden:NO];
+    [self.titleLabel setText:NSLocalizedString(@"set_upload_download_tip",nil)];
+    [self.view setBackgroundColor:HWF5F7FAColor];
+    
+    [self drawAnyView];
+}
+
+- (void)drawAnyView{
+    
+    [self.view addSubview:self.tableView];
+    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(0);
+        make.right.mas_equalTo(0);
+        make.bottom.mas_equalTo(0);
+        make.top.equalTo(self.navBarBGView.mas_bottom).offset(10.f);
+    }];
+    
+    //self.tableView.tableFooterView = [self tailView];
+}
+
+#pragma mark - 懒加载
+- (UITableView *)tableView{
+    if (!_tableView) {
+        _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, SCREEN_H - TABBARHEIGHT) style:UITableViewStylePlain];
+        _tableView.delegate = self;
+        _tableView.dataSource = self;
+        _tableView.showsVerticalScrollIndicator = NO;
+        _tableView.showsHorizontalScrollIndicator = NO;
+//        _tableView.contentInset = UIEdgeInsetsMake(-H_STATE_BAR, 0, 0, 0);
+        [_tableView setSeparatorStyle:(UITableViewCellSeparatorStyleNone)];
+        [_tableView setSeparatorColor:[UIColor clearColor]];
+        [_tableView setBackgroundColor:[UIColor clearColor]];
+        [_tableView setTableFooterView:[UIView new]];
+        [_tableView setBounces:YES];
+        
+        _tableView.scrollEnabled = NO;
+        
+        if (@available(iOS 15.0, *)) {
+            _tableView.sectionHeaderTopPadding = 0;
+        }
+        
+    }
+    
+    return _tableView;
+}
+
+
+#pragma mark - 懒加载
+- (UIView *)tailView{
+    if (!_tailView) {
+        _tailView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, 110 +15)];
+        
+        UIView *tailBgView = [[UIView alloc] init];
+        tailBgView.backgroundColor = [UIColor whiteColor];
+        tailBgView.layer.cornerRadius = 8;
+        [_tailView addSubview:tailBgView];
+        
+        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didClickTailViewFun)];
+        [tailBgView addGestureRecognizer:tap];
+        
+        [tailBgView mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.left.mas_equalTo(15);
+            make.right.mas_equalTo(-15);
+            make.bottom.mas_equalTo(0);
+            make.top.mas_equalTo(15);
+        }];
+        
+        UILabel *titleLab = [[UILabel alloc] init];
+        titleLab.text = NSLocalizedString(@"File_upload_path_set",nil);
+        titleLab.font = [UIFont boldSystemFontOfSize:14.0];
+        titleLab.textColor = [UIColor hwColor:@"#0A132B" alpha:1.0];
+        [tailBgView addSubview:titleLab];
+        
+        [titleLab mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.left.mas_equalTo(10);
+            make.right.mas_equalTo(-50);
+            make.height.mas_equalTo(20);
+            make.top.mas_equalTo(20);
+        }];
+        
+        /*右侧箭头*/
+        UIImageView *rightImage = [[UIImageView alloc] init];
+        [rightImage setBackgroundColor:[UIColor clearColor]];
+        [rightImage setImage:[UIImage imageNamed:@"cell_right_access"]];
+        [tailBgView addSubview:rightImage];
+        [rightImage mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.width.mas_equalTo(28);
+            make.right.mas_equalTo(-15.f);
+            make.height.mas_equalTo(28);
+            make.centerY.equalTo(titleLab.mas_centerY);
+        }];
+        
+        _uploadFilePathLabel=[[UILabel alloc] init];
+        //titleLab.text = NSLocalizedString(@"File_upload_path_set",nil);
+        _uploadFilePathLabel.font = [UIFont systemFontOfSize:12.0];
+        _uploadFilePathLabel.textColor = [UIColor hwColor:@"#6A6A6A" alpha:1.0];
+        _uploadFilePathLabel.numberOfLines = 0;
+        [tailBgView addSubview:_uploadFilePathLabel];
+        
+        [_uploadFilePathLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.left.mas_equalTo(10);
+            make.right.mas_equalTo(-15);
+            make.bottom.mas_equalTo(-20);
+            make.top.mas_equalTo(titleLab.mas_bottom).offset(10.0);
+        }];
+        
+        [self setUploadFilePathLabelTitleFun];
+    }
+    
+    return _tailView;
+}
+
+- (void)setUploadFilePathLabelTitleFun
+{
+    NSString * leftStr = NSLocalizedString(@"File_upload_path_way",nil);
+    NSString * rightStr = @"我的空间/来自【手机设备名称】的相册备份";
+    
+    NSString *totalStr = [[NSString alloc] initWithFormat:@"%@%@",leftStr,rightStr];
+    
+    NSMutableAttributedString *noteStr = [[NSMutableAttributedString alloc] initWithString:totalStr];
+    
+    NSRange redRange = NSMakeRange([totalStr rangeOfString:rightStr].location, [totalStr rangeOfString:rightStr].length);
+    [noteStr addAttribute:NSForegroundColorAttributeName value:[UIColor hwColor:@"#01B7EA" alpha:0.8] range:redRange];
+    [noteStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12.0] range:redRange];
+    // 设置行间距
+    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
+    [paragraphStyle setLineSpacing:5];        //设置行间距
+    
+    [noteStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [totalStr  length])];
+    
+    _uploadFilePathLabel.attributedText = noteStr;
+}
+
+#pragma mark 尾部事件
+- (void)didClickTailViewFun
+{
+    fileTransferPathCheckViewController *vc = [fileTransferPathCheckViewController new];
+    vc.curType = 1;
+    [self.navigationController pushViewController:vc animated:YES];
+}
+
+#pragma mark - 列表委托
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
+    return 1;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    return 2;
+}
+
+- (fileSetTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
+    
+    __block NSInteger row = indexPath.row;
+    static NSString *identifier = @"fileSetTableViewCell";
+    
+    fileSetTableViewCell * cell =  [tableView dequeueReusableCellWithIdentifier:identifier];
+    cell.selectionStyle = UITableViewCellSelectionStyleNone;
+    if (!cell){
+        cell = [[fileSetTableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier];
+        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
+        [cell setBackgroundColor:[UIColor clearColor]];
+        [cell setAccessoryType:(UITableViewCellAccessoryNone)];
+        
+        [cell.bgViewLayer removeFromSuperlayer];
+        [cell.titleLabel2 setHidden:YES];
+        [cell.rightImage setHidden:YES];
+        [cell.lineView setHidden:NO];
+        [cell.maskSwitch setHidden:NO];
+        
+    }
+    
+    
+    if (row == 0){
+        [cell.titleLabel setText:NSLocalizedString(@"File_Transfer_set_Cellular",nil)];
+        
+        BOOL haveOpenMask = [HWDataManager getBoolWithKey:Const_file_Transfe_canUse_Cellular];
+        [cell.maskSwitch setOn:haveOpenMask];
+        
+        /*上圆角*/
+        //设置部分圆角  贝塞尔曲线
+        UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, SCREEN_W-30 , 60)
+                                                       byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight
+                                                             cornerRadii:CGSizeMake(8, 8)];
+        CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
+        maskLayer.frame = cell.cellBgView.bounds;
+        maskLayer.path = maskPath.CGPath;
+        cell.bgViewLayer = maskLayer;
+        cell.cellBgView.layer.mask = cell.bgViewLayer;
+    }else if (row == 1){
+        [cell.titleLabel setText:NSLocalizedString(@"File_Transfer_set_battery_level",nil)];
+ 
+        BOOL haveOpenMask = [HWDataManager getBoolWithKey:Const_file_Transfe_battery_level];
+        [cell.maskSwitch setOn:haveOpenMask];
+
+        /*下圆角*/
+        UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, SCREEN_W-30 , 60)
+                                                       byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight
+                                                             cornerRadii:CGSizeMake(8, 8)];
+        CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
+        maskLayer.frame = cell.cellBgView.bounds;
+        maskLayer.path = maskPath.CGPath;
+        cell.bgViewLayer = maskLayer;
+        cell.cellBgView.layer.mask = cell.bgViewLayer;
+        
+        [cell.lineView setHidden:YES];
+    }
+
+    KWeakSelf
+    cell.didClickSwitch = ^(BOOL SwitchOn) {
+        [weakSelf didClickSwitchBy:SwitchOn withRow:row];
+    };
+    
+    return cell;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
+    return 60;
+}
+
+- (void)didClickSwitchBy:(BOOL)SwitchOn withRow:(NSInteger)row
+{
+    if(row == 0){
+        [HWDataManager setBoolWithKey:Const_file_Transfe_canUse_Cellular value:SwitchOn];
+    }
+    else{
+        [HWDataManager setBoolWithKey:Const_file_Transfe_battery_level value:SwitchOn];
+    }
+}
+
+@end

+ 16 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/fileTransferPathCheckViewController.h

@@ -0,0 +1,16 @@
+//
+//  fileTransferPathCheckViewController.h
+//  隐私保护
+//
+//  Created by xd h on 2023/12/28.
+//
+
+#import "BaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface fileTransferPathCheckViewController : BaseViewController
+@property(nonatomic,assign) NSInteger curType;// 1上传 2是备份
+@end
+
+NS_ASSUME_NONNULL_END

+ 309 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/fileTransferPathCheckViewController.m

@@ -0,0 +1,309 @@
+//
+//  fileTransferPathCheckViewController.m
+//  隐私保护
+//
+//  Created by xd h on 2023/12/28.
+//
+
+#import "fileTransferPathCheckViewController.h"
+#import "fileTransferPathCheckTableViewCell.h"
+#import "filePathCreatPopView.h"
+#import "IQKeyboardManager.h"
+#import "couldPhoneFolderListModel.h"
+
+@interface fileTransferPathCheckViewController ()<UITableViewDelegate,UITableViewDataSource>
+@property (nonatomic, strong) UITableView *tableView;
+@property (nonatomic, strong) NSMutableArray * folderListArr;
+@property (nonatomic,assign) NSInteger selectIndex;
+
+@property(nonatomic,copy)NSString* createFolderNameStr;
+@end
+
+@implementation fileTransferPathCheckViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    [self.toolBar setHidden:YES];
+    [self.navigationBar setHidden:YES];
+    [self.navBarBGView setHidden:NO];
+    //[self.titleLabel setText:NSLocalizedString(@"File_upload_path_check",nil)];
+    [self.view setBackgroundColor:HWF5F7FAColor];
+    
+    _folderListArr = [NSMutableArray new];
+    
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(createFolderDoneNotFun:) name:createFolderDoneNotification object:nil];
+    
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getFolderListDoneNotFun:) name:getFolderListDoneNotification object:nil];
+    
+    [self drawAnyView];
+    [self setupKeyboardManager];
+    
+    [self getFolderListFun];
+    
+}
+
+- (void)getFolderListFun
+{
+    [[NSNotificationCenter defaultCenter] postNotificationName:getFolderListBeginNotification object:nil];
+}
+
+- (void)drawAnyView{
+    
+    UIButton* rightButton = [[UIButton alloc] init];
+    [rightButton setTitle:NSLocalizedString(@"File_upload_path_new",nil)  forState:UIControlStateNormal];
+    [rightButton setTitleColor:[UIColor hwColor:@"#01B7EA" alpha:1.0] forState:UIControlStateNormal];
+    rightButton.titleLabel.font = [UIFont systemFontOfSize:18.0];
+    rightButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;
+    [rightButton addTarget:self action:@selector(didiClikRightButFun:) forControlEvents:UIControlEventTouchUpInside];
+    [self.navBarBGView addSubview:rightButton];
+    
+    
+    
+    [rightButton mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(120);
+        make.height.mas_equalTo(40);
+        make.right.mas_equalTo(-15);
+        make.centerY.mas_equalTo(self.titleLabel.mas_centerY);
+    }];
+    
+    [self.view addSubview:self.tableView];
+    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(0);
+        make.right.mas_equalTo(0);
+        make.bottom.mas_equalTo(0);
+        make.top.equalTo(self.navBarBGView.mas_bottom).offset(10.f);
+    }];
+    
+}
+
+
+- (void)viewWillAppear:(BOOL)animated
+{
+    [super viewWillAppear:animated];
+    IQKeyboardManager *keyboardManager = [IQKeyboardManager sharedManager];
+    keyboardManager.enable = YES;
+    
+    if(_curType == 2){
+        [self.titleLabel setText:NSLocalizedString(@"File_upload_path_new_check_title",nil)];
+    }
+    else{
+        [self.titleLabel setText:NSLocalizedString(@"File_upload_path_check",nil)];
+    }
+}
+
+- (void)viewWillDisappear:(BOOL)animated
+{
+    [super viewWillDisappear:animated];
+    IQKeyboardManager *keyboardManager = [IQKeyboardManager sharedManager];
+    keyboardManager.enable = NO;
+}
+
+- (void)setupKeyboardManager {
+    IQKeyboardManager *keyboardManager = [IQKeyboardManager sharedManager];
+    keyboardManager.enable = YES;
+    keyboardManager.shouldResignOnTouchOutside = YES;
+    keyboardManager.shouldShowToolbarPlaceholder = NO;
+    keyboardManager.enableAutoToolbar = NO;
+}
+
+#pragma mark - 懒加载
+- (UITableView *)tableView{
+    if (!_tableView) {
+        _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, SCREEN_H - TABBARHEIGHT) style:UITableViewStylePlain];
+        _tableView.delegate = self;
+        _tableView.dataSource = self;
+        _tableView.showsVerticalScrollIndicator = NO;
+        _tableView.showsHorizontalScrollIndicator = NO;
+//        _tableView.contentInset = UIEdgeInsetsMake(-H_STATE_BAR, 0, 0, 0);
+        [_tableView setSeparatorStyle:(UITableViewCellSeparatorStyleNone)];
+        [_tableView setSeparatorColor:[UIColor clearColor]];
+        [_tableView setBackgroundColor:[UIColor clearColor]];
+        [_tableView setTableFooterView:[UIView new]];
+        [_tableView setBounces:YES];
+        
+        if (@available(iOS 15.0, *)) {
+            _tableView.sectionHeaderTopPadding = 0;
+        }
+        
+    }
+    
+    return _tableView;
+}
+
+
+#pragma mark - 列表委托
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
+    return 1;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    return _folderListArr.count;
+}
+
+- (fileTransferPathCheckTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
+    
+    __block NSInteger row = indexPath.row;
+    static NSString *identifier = @"fileTransferPathCheckTableViewCell";
+    
+    fileTransferPathCheckTableViewCell * cell =  [tableView dequeueReusableCellWithIdentifier:identifier];
+    cell.selectionStyle = UITableViewCellSelectionStyleNone;
+    if (!cell){
+        cell = [[fileTransferPathCheckTableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier];
+        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
+        [cell setBackgroundColor:[UIColor clearColor]];
+        [cell setAccessoryType:(UITableViewCellAccessoryNone)];
+        
+        [cell.bgViewLayer removeFromSuperlayer];
+        [cell.titleLabel2 setHidden:YES];
+        [cell.rightImage setHidden:YES];
+        [cell.lineView setHidden:NO];
+        [cell.checkButton setHidden:NO];
+        
+    }
+    
+    if(row < _folderListArr.count){
+        cell.titleLabel.text = _folderListArr[row];
+        
+        if(row == _selectIndex){
+            cell.checkButton.selected = YES;
+        }
+        else{
+            cell.checkButton.selected = NO;
+        }
+    }
+    
+    
+    if (row == 0){
+        
+        /*上圆角*/
+        //设置部分圆角  贝塞尔曲线
+        UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, SCREEN_W-30 , 90)
+                                                       byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight
+                                                             cornerRadii:CGSizeMake(8, 8)];
+        CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
+        maskLayer.frame = cell.cellBgView.bounds;
+        maskLayer.path = maskPath.CGPath;
+        cell.bgViewLayer = maskLayer;
+        cell.cellBgView.layer.mask = cell.bgViewLayer;
+    }//else
+        
+    if (row == _folderListArr.count -1){
+        //[cell.titleLabel setText:NSLocalizedString(@"File_Transfer_set_battery_level",nil)];
+ 
+        //cell.titleLabel.text = @"云机名称/我的空间/XYJ";
+        
+        /*下圆角*/
+        UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, SCREEN_W-30 , 90)
+                                                       byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight
+                                                             cornerRadii:CGSizeMake(8, 8)];
+        CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
+        maskLayer.frame = cell.cellBgView.bounds;
+        maskLayer.path = maskPath.CGPath;
+        cell.bgViewLayer = maskLayer;
+        cell.cellBgView.layer.mask = cell.bgViewLayer;
+        
+        [cell.lineView setHidden:YES];
+    }
+
+    KWeakSelf
+    cell.didClickSwitch = ^(BOOL SwitchOn) {
+        [weakSelf userCheckFolderPathByRow:row];
+    };
+    
+    return cell;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
+    return 90;
+}
+
+- (void)didiClikRightButFun:(UIButton*)but
+{
+    filePathCreatPopView * filePathCreatPopV = [[filePathCreatPopView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, SCREEN_H)];
+    
+    //[self.view.window addSubview:filePathCreatPopV];
+    [self.view addSubview:filePathCreatPopV];
+    
+    filePathCreatPopV.curType = _curType;
+    
+    KWeakSelf
+    filePathCreatPopV.didClickOkBut = ^(NSString * _Nonnull folderName) {
+        [weakSelf didGetFolderName:folderName];
+    };
+}
+
+
+#pragma mark 用户选择默认上次文件夹
+- (void)userCheckFolderPathByRow:(NSInteger)row
+{
+    _selectIndex = row;
+    NSString *cutPath = _folderListArr[row];
+    [HWDataManager setStringWithKey:Const_photo_backups_default_path value:cutPath];
+    [self.tableView reloadData];
+    
+}
+
+#pragma mark
+- (void)didGetFolderName:(NSString*)folderName
+{
+    _createFolderNameStr = folderName;
+    
+    NSString *curbackupsDefaultPath = [[NSString alloc] initWithFormat:@"sdcard/%@",_createFolderNameStr];
+    
+    [HWDataManager setStringWithKey:Const_photo_backups_default_path value:curbackupsDefaultPath];
+    
+    [[NSNotificationCenter defaultCenter] postNotificationName:createFolderBeginNotification object:folderName];/*发送通知*/
+}
+
+- (void)createFolderDoneNotFun:(NSNotification *)notification
+{
+    NSNumber *stateNumber = [notification object];
+    
+    NSString * tipStr = NSLocalizedString(@"File_upload_path_new_suc",nil);
+     
+    if(stateNumber.integerValue !=0 ){
+        tipStr = NSLocalizedString(@"File_upload_path_new_fail",nil);
+    }
+    
+    [[iToast makeText:tipStr] show];
+    
+    [self getFolderListFun];
+    
+}
+
+- (void)getFolderListDoneNotFun:(NSNotification *)notification
+{
+    NSDictionary *dataDict = [notification object];
+    
+    couldPhoneFolderListModel *model = [[couldPhoneFolderListModel alloc] initWithDictionary:dataDict error:nil];
+    
+    if(model){
+        [_folderListArr removeAllObjects];
+        
+        [_folderListArr addObjectsFromArray:model.data];
+        
+        NSString * backupsDefaultPath = [HWDataManager getStringWithKey:Const_photo_backups_default_path];
+        
+        BOOL needAddHadDefaultPath = YES;
+        
+        for (int i=0; i<_folderListArr.count; i++) {
+            NSString * curPathStr = _folderListArr[i];
+            if([curPathStr isEqualToString:backupsDefaultPath]){
+                needAddHadDefaultPath = NO;
+                _selectIndex = i;
+                break;
+            }
+        }
+        
+        if(needAddHadDefaultPath){
+            [_folderListArr insertObject:backupsDefaultPath atIndex:0];
+            _selectIndex = 0;
+        }
+        
+    }
+    
+    
+    [self.tableView reloadData];
+}
+@end

+ 17 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/view/filePathCreatPopView.h

@@ -0,0 +1,17 @@
+//
+//  filePathCreatPopView.h
+//  隐私保护
+//
+//  Created by xd h on 2023/12/29.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface filePathCreatPopView : UIView
+@property(nonatomic,assign) NSInteger curType;// 1上传 2是备份
+@property (nonatomic,copy) void (^didClickOkBut)(NSString* folderName);
+@end
+
+NS_ASSUME_NONNULL_END

+ 386 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/view/filePathCreatPopView.m

@@ -0,0 +1,386 @@
+//
+//  filePathCreatPopView.m
+//  隐私保护
+//
+//  Created by xd h on 2023/12/29.
+//
+
+#import "filePathCreatPopView.h"
+#import "filePathCreatTableViewCell.h"
+
+
+@interface filePathCreatPopView ()<UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate>
+{
+    UIView *whiteBgView;
+    UITextField *filePathNameTF;
+    
+    UIButton *canclButton;
+    UIButton *okButton;
+}
+
+@property (nonatomic, strong) UITableView *tableView;
+@end
+
+@implementation filePathCreatPopView
+
+- (id)initWithFrame:(CGRect)frame{
+    self = [super initWithFrame:frame];
+    
+    [self drawAnyView];
+    
+ 
+    
+    return self;
+}
+
+
+
+- (void)drawAnyView{
+    [self setBackgroundColor:[UIColor hwColor:@"#000000" alpha:0.6]];
+    
+    whiteBgView = [[UIView alloc] init];
+    whiteBgView.backgroundColor = [UIColor whiteColor];
+    whiteBgView.layer.cornerRadius = 12;
+    [self addSubview:whiteBgView];
+    
+    [whiteBgView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(0);
+        make.right.mas_equalTo(0);
+        make.height.mas_equalTo(418+ 10 + safeArea);
+        make.bottom.mas_equalTo(10);
+    }];
+    
+    UIView *tapView = [[UIView alloc] init];
+    [self addSubview:tapView];
+    
+//    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapUpFun:)];
+//    [tapView addGestureRecognizer:tap];
+    
+    [tapView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(0);
+        make.right.mas_equalTo(0);
+        make.top.mas_equalTo(0);
+        make.bottom.mas_equalTo(whiteBgView.mas_top);
+    }];
+    
+    UILabel *titleLabel = [[UILabel alloc] init];
+    titleLabel.text = NSLocalizedString(@"File_upload_path_new",nil);
+    titleLabel.font = [UIFont boldSystemFontOfSize:18.0];
+    titleLabel.textColor = [UIColor hwColor:@"#0A132B" alpha:1.0];
+    [whiteBgView addSubview:titleLabel];
+
+    [titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(0);
+        make.height.mas_equalTo(20);
+        make.left.mas_equalTo(15);
+        make.top.mas_equalTo(15);
+    }];
+    
+    [whiteBgView addSubview:self.tableView];
+    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(15);
+        make.right.mas_equalTo(-15);
+        make.height.mas_equalTo(70*2+50);
+        make.top.equalTo(titleLabel.mas_bottom).offset(15.f);
+    }];
+    
+    
+    UILabel *tipLabel = [[UILabel alloc] init];
+    tipLabel.text = NSLocalizedString(@"File_upload_path_new_name_tip",nil);
+    tipLabel.font = [UIFont systemFontOfSize:14.0];
+    tipLabel.textColor = [UIColor hwColor:@"#0A132B" alpha:1.0];
+    [whiteBgView addSubview:tipLabel];
+
+    [tipLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(0);
+        make.height.mas_equalTo(20);
+        make.left.mas_equalTo(15);
+        make.top.equalTo(self.tableView.mas_bottom).offset(15);
+    }];
+    
+    filePathNameTF = [[UITextField alloc] init];
+    filePathNameTF.backgroundColor = [UIColor hwColor:@"#F9F9F9" alpha:1.0];
+    filePathNameTF.layer.cornerRadius = 8;
+    filePathNameTF.font = [UIFont systemFontOfSize:14.0];
+    filePathNameTF.placeholder = NSLocalizedString(@"File_upload_path_new_input_tip",nil);
+    filePathNameTF.delegate = self;
+    filePathNameTF.returnKeyType = UIReturnKeyDone;
+    [whiteBgView addSubview:filePathNameTF];
+    [filePathNameTF setTintColor:[UIColor hwColor:@"#01B7EA" alpha:1.0]];
+    
+    UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 1)];
+    filePathNameTF.leftView = leftView;
+    filePathNameTF.leftViewMode = UITextFieldViewModeAlways;
+
+    [filePathNameTF mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-15);
+        make.height.mas_equalTo(48);
+        make.left.mas_equalTo(15);
+        make.top.equalTo(tipLabel.mas_bottom).offset(15);
+    }];
+    
+    
+    canclButton = [[UIButton alloc] init];
+    [canclButton setTitle:NSLocalizedString(@"other_cancel",nil) forState:UIControlStateNormal];
+    [canclButton setTitleColor:[UIColor hwColor:@"#0A132B" alpha:1.0] forState:UIControlStateNormal];
+    canclButton.backgroundColor = [UIColor hwColor:@"#E3E8F1" alpha:1.0];
+    canclButton.layer.cornerRadius = 8;
+    canclButton.tag = 1;
+    [canclButton addTarget:self action:@selector(didClickButtonFun:) forControlEvents:UIControlEventTouchUpInside];
+    [whiteBgView addSubview:canclButton];
+
+    [canclButton mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(15.0);
+        make.right.equalTo(whiteBgView.mas_centerX).offset(-10);
+        make.height.mas_equalTo(40);
+        make.bottom.mas_equalTo(-safeArea -10);
+    }];
+
+
+    okButton = [[UIButton alloc] init];
+    okButton.tag = 2;
+    [okButton setTitle:NSLocalizedString(@"other_comment_ok",nil) forState:UIControlStateNormal];
+    okButton.titleLabel.font = [UIFont boldSystemFontOfSize:16.0];
+    okButton.layer.cornerRadius = 8;
+    okButton.layer.masksToBounds = YES;
+    [okButton addTarget:self action:@selector(didClickButtonFun:) forControlEvents:UIControlEventTouchUpInside];
+    [whiteBgView addSubview:okButton];
+
+    // gradient
+    CAGradientLayer* _glayer = [CAGradientLayer layer];
+    _glayer.startPoint = CGPointMake(0, 0.5);
+    _glayer.endPoint = CGPointMake(1, 0.5);
+    _glayer.colors = @[(__bridge id)[UIColor hwColor:@"#0BDDFD" alpha:1.0].CGColor, (__bridge id)[UIColor hwColor:@"#048CFB" alpha:1.0].CGColor];
+    _glayer.locations = @[@(0), @(1.0f)];
+    [okButton.layer  insertSublayer:_glayer atIndex:0];
+    
+    CGRect frame = CGRectMake(0, 0, SCREEN_W/2.0, 40);
+    _glayer.frame = frame;
+    
+    [okButton mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-15.0);
+        make.left.equalTo(whiteBgView.mas_centerX).offset(10);
+        make.height.mas_equalTo(40);
+        make.bottom.mas_equalTo(-safeArea -10);
+    }];
+}
+
+#pragma mark - 懒加载
+- (UITableView *)tableView{
+    if (!_tableView) {
+        _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 0, 0) style:UITableViewStylePlain];
+        _tableView.delegate = self;
+        _tableView.dataSource = self;
+        _tableView.showsVerticalScrollIndicator = NO;
+        _tableView.showsHorizontalScrollIndicator = NO;
+//        _tableView.contentInset = UIEdgeInsetsMake(-H_STATE_BAR, 0, 0, 0);
+        [_tableView setSeparatorStyle:(UITableViewCellSeparatorStyleNone)];
+        [_tableView setSeparatorColor:[UIColor clearColor]];
+        [_tableView setBackgroundColor:[UIColor clearColor]];
+        [_tableView setTableFooterView:[UIView new]];
+        [_tableView setBounces:YES];
+        _tableView.backgroundColor = [UIColor hwColor:@"#F9F9F9" alpha:1.0];
+        _tableView.layer.cornerRadius = 8;
+        _tableView.scrollEnabled = NO;
+        if (@available(iOS 15.0, *)) {
+            _tableView.sectionHeaderTopPadding = 0;
+        }
+        
+    }
+    
+    return _tableView;
+}
+
+
+#pragma mark - 列表委托
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
+    return 1;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    return 2;
+}
+
+- (filePathCreatTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
+    
+    __block NSInteger row = indexPath.row;
+    static NSString *identifier = @"filePathCreatTableViewCell";
+    
+    filePathCreatTableViewCell * cell =  [tableView dequeueReusableCellWithIdentifier:identifier];
+    cell.selectionStyle = UITableViewCellSelectionStyleNone;
+    if (!cell){
+        cell = [[filePathCreatTableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier];
+        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
+        [cell setBackgroundColor:[UIColor clearColor]];
+        [cell setAccessoryType:(UITableViewCellAccessoryNone)];
+        
+        [cell.bgViewLayer removeFromSuperlayer];
+        [cell.titleLabel2 setHidden:NO];
+        [cell.rightImage setHidden:YES];
+        [cell.lineView setHidden:YES];
+        [cell.checkButton setHidden:NO];
+        
+    }
+    
+    
+    if (row == 0){
+        //[cell.titleLabel setText:NSLocalizedString(@"File_Transfer_set_Cellular",nil)];
+        cell.titleLabel.text = @"云机系统名称";
+        
+        cell.checkButton.selected = YES;
+        
+    }else if (row == 1){
+        //[cell.titleLabel setText:NSLocalizedString(@"File_Transfer_set_battery_level",nil)];
+ 
+        cell.titleLabel.text = @"云机系统名称";
+        
+       
+    }
+
+    KWeakSelf
+    cell.didClickSwitch = ^(BOOL SwitchOn) {
+        
+    };
+    
+    return cell;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
+    return 70;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
+{
+    return 40.0;
+}
+
+- (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
+{
+    UIView *headView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, 40)];
+    //headView.backgroundColor = [UIColor greenColor];
+    
+    UILabel *titleLabel = [[UILabel alloc] init];
+    titleLabel.text = NSLocalizedString(@"File_upload_path_new_check_tip",nil);
+    titleLabel.font = [UIFont systemFontOfSize:14.0];
+    titleLabel.textColor = [UIColor hwColor:@"#0A132B" alpha:1.0];
+    [headView addSubview:titleLabel];
+    
+    [titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(15);
+        make.right.mas_equalTo(-15);
+        make.height.mas_equalTo(20);
+        make.top.mas_equalTo(10);
+    }];
+    
+    return headView;
+}
+
+//- (void)setFileTransferType:(NSInteger)fileTransferType
+//{
+//    _fileTransferType = fileTransferType;
+//
+//    NSString *uploadTitle = NSLocalizedString(@"File_upload_type_image",nil);
+//    NSString *uploadTip = NSLocalizedString(@"File_upload_type_tip",nil);
+//
+//    NSString *downloadTitle = NSLocalizedString(@"File_down_type_image",nil);
+//    NSString *downloadTip = NSLocalizedString(@"File_down_type_tip",nil);
+//
+//    if(fileTransferType == 2)
+//    {
+//        uploadTitle = NSLocalizedString(@"File_upload_type_video",nil);
+//        downloadTitle = NSLocalizedString(@"File_down_type_video",nil);
+//    }
+//
+//    UILabel *uploadLabel = [[UILabel alloc] init];
+//    uploadLabel.textColor = [UIColor whiteColor];
+//    uploadLabel.font = [UIFont boldSystemFontOfSize:18.0];
+//    uploadLabel.numberOfLines = 0;
+//    [uploadButton addSubview:uploadLabel];
+//
+//    NSString *totalStr = [[NSString alloc] initWithFormat:@"%@\n%@",uploadTitle,uploadTip];
+//
+//    NSMutableAttributedString *noteStr = [[NSMutableAttributedString alloc] initWithString:totalStr];
+//
+//    NSRange redRange = NSMakeRange([totalStr rangeOfString:uploadTip].location, [totalStr rangeOfString:uploadTip].length);
+//    [noteStr addAttribute:NSForegroundColorAttributeName value:[UIColor hwColor:@"#FFFFFF" alpha:0.8] range:redRange];
+//    [noteStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14.0] range:redRange];
+//    // 设置行间距
+//    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
+//    [paragraphStyle setLineSpacing:5];        //设置行间距
+//
+//    [noteStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [totalStr  length])];
+//
+//    uploadLabel.attributedText = noteStr;
+//
+//    [uploadLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+//        make.left.mas_equalTo(15);
+//        make.right.mas_equalTo(-15);
+//        make.bottom.mas_equalTo(0);
+//        make.top.mas_equalTo(0);
+//    }];
+//
+//    UILabel *downloadLabel = [[UILabel alloc] init];
+//    downloadLabel.textColor = [UIColor whiteColor];
+//    downloadLabel.font = [UIFont boldSystemFontOfSize:18.0];
+//    downloadLabel.numberOfLines = 0;
+//    [downButton addSubview:downloadLabel];
+//
+//    NSString *downTotalStr = [[NSString alloc] initWithFormat:@"%@\n%@",downloadTitle,downloadTip];
+//
+//    NSMutableAttributedString *downNoteStr = [[NSMutableAttributedString alloc] initWithString:downTotalStr];
+//
+//    NSRange downredRange = NSMakeRange([downTotalStr rangeOfString:downloadTip].location, [downTotalStr rangeOfString:downloadTip].length);
+//    [downNoteStr addAttribute:NSForegroundColorAttributeName value:[UIColor hwColor:@"#FFFFFF" alpha:0.8] range:downredRange];
+//    [downNoteStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14.0] range:downredRange];
+//    // 设置行间距
+////    NSMutableParagraphStyle *paragraphStyle1 = [[NSMutableParagraphStyle alloc] init];
+////    [paragraphStyle1 setLineSpacing:5];        //设置行间距
+//
+//    [downNoteStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [downTotalStr  length])];
+//
+//    downloadLabel.attributedText = downNoteStr;
+//
+//    [downloadLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+//        make.left.mas_equalTo(15);
+//        make.right.mas_equalTo(-15);
+//        make.bottom.mas_equalTo(0);
+//        make.top.mas_equalTo(0);
+//    }];
+//}
+
+
+- (void)tapUpFun:(UITapGestureRecognizer*)tap
+{
+    //[self deleteFromSuperview];
+}
+
+- (void)deleteFromSuperview
+{
+    
+    [self removeFromSuperview];
+}
+
+- (void)didClickButtonFun:(UIButton*)button
+{
+    NSInteger tag = button.tag;
+    
+    if(tag == 1){
+        [self deleteFromSuperview];
+    }
+    else if(tag == 2){
+        NSString* folderName = filePathNameTF.text;
+        if(!folderName || folderName.length ==0){
+            [[iToast makeText:NSLocalizedString(@"File_upload_path_new_input_tip",nil)] show];
+            return;
+        }
+        
+        [self deleteFromSuperview];
+        
+        if(_didClickOkBut)
+        {
+            _didClickOkBut(folderName);
+        }
+    }
+    
+}
+@end

+ 25 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/view/filePathCreatTableViewCell.h

@@ -0,0 +1,25 @@
+//
+//  filePathCreatTableViewCell.h
+//  隐私保护
+//
+//  Created by xd h on 2023/12/29.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface filePathCreatTableViewCell : UITableViewCell
+@property(nonatomic,strong)UIView *lineView;
+@property(nonatomic,strong)UIView *cellBgView;
+@property(nonatomic,strong)UIImageView *mImageView;
+@property(nonatomic,strong)UILabel *titleLabel;
+@property(nonatomic,strong)UILabel *titleLabel2;
+@property(nonatomic,strong)UIImageView *rightImage;
+@property(nonatomic, strong) CALayer* bgViewLayer;
+@property(nonatomic, strong) UIButton *checkButton;
+
+@property (nonatomic,copy) void (^didClickSwitch)(BOOL SwitchOn);
+@end
+
+NS_ASSUME_NONNULL_END

+ 135 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/view/filePathCreatTableViewCell.m

@@ -0,0 +1,135 @@
+//
+//  filePathCreatTableViewCell.m
+//  隐私保护
+//
+//  Created by xd h on 2023/12/29.
+//
+
+#import "filePathCreatTableViewCell.h"
+
+
+@implementation filePathCreatTableViewCell
+@synthesize cellBgView;
+@synthesize mImageView;
+@synthesize titleLabel;
+@synthesize titleLabel2;
+@synthesize rightImage;
+@synthesize lineView;
+@synthesize checkButton;
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
+{
+    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+    
+    if (self)
+    {
+        [self drawView];
+    }
+    
+    return self;
+}
+
+- (void)drawView
+{
+    cellBgView = [[UIView alloc] init];
+    [self.contentView addSubview:cellBgView];
+    //cellBgView.backgroundColor = [UIColor whiteColor];
+    [cellBgView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(0.f);
+        make.top.mas_equalTo(0);
+        make.bottom.mas_equalTo(0);
+        make.right.mas_equalTo(0.f);
+        //make.width.mas_equalTo(SCREEN_W - 2*15.f);
+    }];
+    
+    /*图片*/
+    mImageView = [[UIImageView alloc] init];
+    [mImageView setBackgroundColor:[UIColor clearColor]];
+    mImageView.image = [UIImage imageNamed:@"uploadFile_file_icon"];
+    [cellBgView addSubview:mImageView];
+    [mImageView setContentMode:(UIViewContentModeScaleAspectFill)];
+    [mImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(15);
+        make.width.mas_equalTo(36);
+        make.height.mas_equalTo(36);
+        make.centerY.equalTo(cellBgView.mas_centerY);
+    }];
+    
+    /*右侧箭头*/
+    rightImage = [[UIImageView alloc] init];
+    [rightImage setBackgroundColor:[UIColor clearColor]];
+    [rightImage setImage:[UIImage imageNamed:@"cell_right_access"]];
+    [cellBgView addSubview:rightImage];
+    [rightImage mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(28);
+        make.right.mas_equalTo(-15.f);
+        make.height.mas_equalTo(28);
+        make.centerY.equalTo(cellBgView.mas_centerY);
+    }];
+    
+    checkButton = [[UIButton alloc] init];
+    [checkButton setImage:[UIImage imageNamed:@"upload_file_uncheck"] forState:UIControlStateNormal];
+    [checkButton setImage:[UIImage imageNamed:@"upload_file_check"] forState:UIControlStateSelected];
+    [cellBgView addSubview:checkButton];
+    [checkButton mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-18.f);
+        make.centerY.equalTo(cellBgView.mas_centerY);
+        make.width.mas_equalTo(36.f);
+        make.height.mas_equalTo(36.f);
+    }];
+    
+    [checkButton addTarget:self action:@selector(maskSwitchPressed:) forControlEvents:(UIControlEventValueChanged)];
+    
+    
+    /**标题*/
+    titleLabel = [[UILabel alloc] init];
+    [cellBgView addSubview:titleLabel];
+    titleLabel.font = [UIFont boldSystemFontOfSize:14.f];
+    titleLabel.numberOfLines = 0;
+    [titleLabel setTextColor:HW0A132BColor];
+    [titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.equalTo(mImageView.mas_right).offset(5.f);
+        make.right.equalTo(checkButton.mas_left).offset(-5.f);
+        //make.centerY.equalTo(cellBgView.mas_centerY);
+        make.top.mas_equalTo(15.f);
+    }];
+    
+    /**副标题*/
+    titleLabel2 = [[UILabel alloc] init];
+    [cellBgView addSubview:titleLabel2];
+    titleLabel2.font = [UIFont systemFontOfSize:12.f];
+    //[titleLabel2 setTextAlignment:(NSTextAlignmentRight)];
+    [titleLabel2 setTextColor:HW666666Color];
+    [titleLabel2 mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-53.f);
+        make.left.mas_equalTo(titleLabel.mas_left);
+        //make.centerY.equalTo(cellBgView.mas_centerY);
+        make.bottom.mas_equalTo(-15);
+    }];
+    
+    lineView = [[UIView alloc] init];
+    [lineView setBackgroundColor:HW979797Color10];
+    [cellBgView addSubview:lineView];
+    [lineView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-15.f);
+        make.left.mas_equalTo(15.f);
+        make.bottom.mas_equalTo(0);
+        make.height.mas_equalTo(1.f);
+    }];
+    
+    
+    titleLabel2.text = @"30GB/128GB";
+}
+
+- (void)maskSwitchPressed:(UISwitch *)maskSwitch{
+    if(_didClickSwitch){
+        _didClickSwitch(maskSwitch.on);
+    }
+}
+
+@end

+ 25 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/view/fileSetTableViewCell.h

@@ -0,0 +1,25 @@
+//
+//  fileSetTableViewCell.h
+//  隐私保护
+//
+//  Created by xd h on 2023/12/28.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface fileSetTableViewCell : UITableViewCell
+@property(nonatomic,strong)UIView *lineView;
+@property(nonatomic,strong)UIView *cellBgView;
+@property(nonatomic,strong)UIImageView *mImageView;
+@property(nonatomic,strong)UILabel *titleLabel;
+@property(nonatomic,strong)UILabel *titleLabel2;
+@property(nonatomic,strong)UIImageView *rightImage;
+@property(nonatomic, strong) CALayer* bgViewLayer;
+@property(nonatomic, strong) UISwitch *maskSwitch;
+
+@property (nonatomic,copy) void (^didClickSwitch)(BOOL SwitchOn);
+@end
+
+NS_ASSUME_NONNULL_END

+ 125 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/view/fileSetTableViewCell.m

@@ -0,0 +1,125 @@
+//
+//  fileSetTableViewCell.m
+//  隐私保护
+//
+//  Created by xd h on 2023/12/28.
+//
+
+#import "fileSetTableViewCell.h"
+
+@implementation fileSetTableViewCell
+@synthesize cellBgView;
+@synthesize mImageView;
+@synthesize titleLabel;
+@synthesize titleLabel2;
+@synthesize rightImage;
+@synthesize lineView;
+@synthesize maskSwitch;
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
+{
+    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+    
+    if (self)
+    {
+        [self drawView];
+    }
+    
+    return self;
+}
+
+- (void)drawView
+{
+    cellBgView = [[UIView alloc] init];
+    [self.contentView addSubview:cellBgView];
+    cellBgView.backgroundColor = [UIColor whiteColor];
+    [cellBgView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(15.f);
+        make.top.mas_equalTo(0);
+        make.bottom.mas_equalTo(0);
+        make.width.mas_equalTo(SCREEN_W - 2*15.f);
+    }];
+    
+    /*图片*/
+    mImageView = [[UIImageView alloc] init];
+    [mImageView setBackgroundColor:[UIColor clearColor]];
+    [cellBgView addSubview:mImageView];
+    [mImageView setContentMode:(UIViewContentModeScaleAspectFill)];
+    [mImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(15);
+        make.width.mas_equalTo(28);
+        make.height.mas_equalTo(28);
+        make.centerY.equalTo(cellBgView.mas_centerY);
+    }];
+    
+    /*右侧箭头*/
+    rightImage = [[UIImageView alloc] init];
+    [rightImage setBackgroundColor:[UIColor clearColor]];
+    [rightImage setImage:[UIImage imageNamed:@"cell_right_access"]];
+    [cellBgView addSubview:rightImage];
+    [rightImage mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(28);
+        make.right.mas_equalTo(-15.f);
+        make.height.mas_equalTo(28);
+        make.centerY.equalTo(cellBgView.mas_centerY);
+    }];
+    
+    maskSwitch = [[UISwitch alloc] init];
+    [cellBgView addSubview:maskSwitch];
+    [maskSwitch mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-18.f);
+        make.centerY.equalTo(cellBgView.mas_centerY);
+    }];
+    [maskSwitch setOnTintColor:HW13B2EBColor];
+    [maskSwitch addTarget:self action:@selector(maskSwitchPressed:) forControlEvents:(UIControlEventValueChanged)];
+
+    BOOL haveOpenMask = [HWDataManager getBoolWithKey:Consn_Fanzhuan_Exit_app_Open];
+    [maskSwitch setOn:haveOpenMask];
+
+    /**标题*/
+    titleLabel = [[UILabel alloc] init];
+    [cellBgView addSubview:titleLabel];
+    titleLabel.font = [UIFont boldSystemFontOfSize:14.f];
+    [titleLabel setTextColor:HW0A132BColor];
+    [titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        //make.left.equalTo(mImageView.mas_right).offset(5.f);
+        make.left.mas_equalTo(10.f);
+        make.right.mas_equalTo(-50.f);
+        make.centerY.equalTo(cellBgView.mas_centerY);
+    }];
+    
+    /**副标题*/
+    titleLabel2 = [[UILabel alloc] init];
+    [cellBgView addSubview:titleLabel2];
+    titleLabel2.font = [UIFont systemFontOfSize:12.f];
+    [titleLabel2 setTextAlignment:(NSTextAlignmentRight)];
+    [titleLabel2 setTextColor:HW666666Color];
+    [titleLabel2 mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-53.f);
+        make.left.mas_equalTo(100.f);
+        make.centerY.equalTo(cellBgView.mas_centerY);
+    }];
+    
+    lineView = [[UIView alloc] init];
+    [lineView setBackgroundColor:HW979797Color10];
+    [cellBgView addSubview:lineView];
+    [lineView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-15.f);
+        make.left.mas_equalTo(15.f);
+        make.bottom.mas_equalTo(0);
+        make.height.mas_equalTo(1.f);
+    }];
+}
+
+- (void)maskSwitchPressed:(UISwitch *)maskSwitch{
+    if(_didClickSwitch){
+        _didClickSwitch(maskSwitch.on);
+    }
+}
+
+@end

+ 25 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/view/fileTransferPathCheckTableViewCell.h

@@ -0,0 +1,25 @@
+//
+//  fileTransferPathCheckTableViewCell.h
+//  隐私保护
+//
+//  Created by xd h on 2023/12/28.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface fileTransferPathCheckTableViewCell : UITableViewCell
+@property(nonatomic,strong)UIView *lineView;
+@property(nonatomic,strong)UIView *cellBgView;
+@property(nonatomic,strong)UIImageView *mImageView;
+@property(nonatomic,strong)UILabel *titleLabel;
+@property(nonatomic,strong)UILabel *titleLabel2;
+@property(nonatomic,strong)UIImageView *rightImage;
+@property(nonatomic, strong) CALayer* bgViewLayer;
+@property(nonatomic, strong) UIButton *checkButton;
+
+@property (nonatomic,copy) void (^didClickSwitch)(BOOL SwitchOn);
+@end
+
+NS_ASSUME_NONNULL_END

+ 136 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/fileTransfeSet/view/fileTransferPathCheckTableViewCell.m

@@ -0,0 +1,136 @@
+//
+//  fileTransferPathCheckTableViewCell.m
+//  隐私保护
+//
+//  Created by xd h on 2023/12/28.
+//
+
+#import "fileTransferPathCheckTableViewCell.h"
+
+
+@implementation fileTransferPathCheckTableViewCell
+@synthesize cellBgView;
+@synthesize mImageView;
+@synthesize titleLabel;
+@synthesize titleLabel2;
+@synthesize rightImage;
+@synthesize lineView;
+@synthesize checkButton;
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
+{
+    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+    
+    if (self)
+    {
+        [self drawView];
+    }
+    
+    return self;
+}
+
+- (void)drawView
+{
+    cellBgView = [[UIView alloc] init];
+    [self.contentView addSubview:cellBgView];
+    cellBgView.backgroundColor = [UIColor whiteColor];
+    [cellBgView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(15.f);
+        make.top.mas_equalTo(0);
+        make.bottom.mas_equalTo(0);
+        make.width.mas_equalTo(SCREEN_W - 2*15.f);
+    }];
+    
+    /*图片*/
+    mImageView = [[UIImageView alloc] init];
+    [mImageView setBackgroundColor:[UIColor clearColor]];
+    mImageView.image = [UIImage imageNamed:@"uploadFile_file_icon"];
+    [cellBgView addSubview:mImageView];
+    [mImageView setContentMode:(UIViewContentModeScaleAspectFill)];
+    [mImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(15);
+        make.width.mas_equalTo(36);
+        make.height.mas_equalTo(36);
+        make.centerY.equalTo(cellBgView.mas_centerY);
+    }];
+    
+    /*右侧箭头*/
+    rightImage = [[UIImageView alloc] init];
+    [rightImage setBackgroundColor:[UIColor clearColor]];
+    [rightImage setImage:[UIImage imageNamed:@"cell_right_access"]];
+    [cellBgView addSubview:rightImage];
+    [rightImage mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(28);
+        make.right.mas_equalTo(-15.f);
+        make.height.mas_equalTo(28);
+        make.centerY.equalTo(cellBgView.mas_centerY);
+    }];
+    
+    checkButton = [[UIButton alloc] init];
+    [checkButton setImage:[UIImage imageNamed:@"upload_file_uncheck"] forState:UIControlStateNormal];
+    [checkButton setImage:[UIImage imageNamed:@"upload_file_check"] forState:UIControlStateSelected];
+    [cellBgView addSubview:checkButton];
+   
+    [checkButton mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-18.f);
+        make.centerY.equalTo(cellBgView.mas_centerY);
+        make.width.mas_equalTo(36.f);
+        make.height.mas_equalTo(36.f);
+    }];
+    
+    [checkButton addTarget:self action:@selector(maskSwitchPressed:) forControlEvents:(UIControlEventTouchUpInside)];
+
+
+    /**标题*/
+    titleLabel = [[UILabel alloc] init];
+    [cellBgView addSubview:titleLabel];
+    titleLabel.font = [UIFont boldSystemFontOfSize:14.f];
+    titleLabel.numberOfLines = 0;
+    [titleLabel setTextColor:HW0A132BColor];
+    [titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.equalTo(mImageView.mas_right).offset(5.f);
+        make.right.equalTo(checkButton.mas_left).offset(-5.f);
+        make.centerY.equalTo(cellBgView.mas_centerY);
+        make.top.mas_equalTo(15.f);
+    }];
+    
+    /**副标题*/
+    titleLabel2 = [[UILabel alloc] init];
+    [cellBgView addSubview:titleLabel2];
+    titleLabel2.font = [UIFont systemFontOfSize:12.f];
+    //[titleLabel2 setTextAlignment:(NSTextAlignmentRight)];
+    [titleLabel2 setTextColor:HW666666Color];
+    [titleLabel2 mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-53.f);
+        make.left.mas_equalTo(titleLabel.mas_left);
+        //make.centerY.equalTo(cellBgView.mas_centerY);
+        make.bottom.mas_equalTo(-15);
+    }];
+    
+    lineView = [[UIView alloc] init];
+    [lineView setBackgroundColor:HW979797Color10];
+    [cellBgView addSubview:lineView];
+    [lineView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-15.f);
+        make.left.mas_equalTo(15.f);
+        make.bottom.mas_equalTo(0);
+        make.height.mas_equalTo(1.f);
+    }];
+    
+    
+    //titleLabel2.text = @"2023/10/22";
+}
+
+- (void)maskSwitchPressed:(UIButton *)maskSwitch{
+    if(_didClickSwitch){
+        _didClickSwitch(maskSwitch.selected);
+    }
+}
+
+@end
+

+ 18 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/fileTransferPopView.h

@@ -0,0 +1,18 @@
+//
+//  fileTransferPopView.h
+//  隐私保护
+//
+//  Created by xd h on 2023/12/27.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface fileTransferPopView : UIView
+@property (nonatomic,assign) NSInteger fileTransferType;// 1 上传 2下载
+
+@property (nonatomic,copy) void (^didClickBut)(NSInteger tag);// 11 图片上传 12  图片下载 21视频上传 22 视频下载
+@end
+
+NS_ASSUME_NONNULL_END

+ 209 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/fileTransferPopView.m

@@ -0,0 +1,209 @@
+//
+//  fileTransferPopView.m
+//  隐私保护
+//
+//  Created by xd h on 2023/12/27.
+//
+
+#import "fileTransferPopView.h"
+@interface fileTransferPopView ()
+{
+    UIButton *uploadButton;
+    UIButton *downButton;
+}
+@end
+
+@implementation fileTransferPopView
+
+- (id)initWithFrame:(CGRect)frame{
+    self = [super initWithFrame:frame];
+    
+    [self drawAnyView];
+    
+    return self;
+}
+
+- (void)drawAnyView{
+    [self setBackgroundColor:[UIColor hwColor:@"#000000" alpha:0.6]];
+    
+    UIView *whiteBgView = [[UIView alloc] init];
+    whiteBgView.backgroundColor = [UIColor whiteColor];
+    whiteBgView.layer.cornerRadius = 12;
+    [self addSubview:whiteBgView];
+    
+    [whiteBgView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(0);
+        make.right.mas_equalTo(0);
+        make.height.mas_equalTo(237+ 10);
+        make.bottom.mas_equalTo(10);
+    }];
+    
+    UIView *tapView = [[UIView alloc] init];
+    [self addSubview:tapView];
+    
+    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapUpFun:)];
+    [tapView addGestureRecognizer:tap];
+    
+    [tapView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(0);
+        make.right.mas_equalTo(0);
+        make.top.mas_equalTo(0);
+        make.bottom.mas_equalTo(whiteBgView.mas_top);
+    }];
+    
+    UIView *blackView = [[UIView alloc] init];
+    blackView.backgroundColor = [UIColor blackColor];
+    blackView.layer.cornerRadius = 2;
+    [whiteBgView addSubview:blackView];
+
+    [blackView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(40);
+        make.height.mas_equalTo(4);
+        make.centerX.mas_equalTo(0);
+        make.top.mas_equalTo(8);
+    }];
+    
+    CGFloat butW = SCREEN_W - 15*2;
+    CGFloat butH =  butW * 80.0/345.0;
+    
+    //
+    uploadButton = [[UIButton alloc] init];
+    [uploadButton setBackgroundImage:[UIImage imageNamed:@"uploadFile_bg_upload"] forState:UIControlStateNormal];
+    uploadButton.tag = 1;
+    [uploadButton addTarget:self action:@selector(didClickButtonFun:) forControlEvents:UIControlEventTouchUpInside];
+    [whiteBgView addSubview:uploadButton];
+    
+    [uploadButton mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(butW);
+        make.height.mas_equalTo(butH);
+        make.centerX.mas_equalTo(0);
+        make.top.mas_equalTo(blackView.mas_bottom).offset(10);
+    }];
+    
+    
+    
+    downButton = [[UIButton alloc] init];
+    downButton.tag = 2;
+    [downButton setBackgroundImage:[UIImage imageNamed:@"uploadFile_bg_downLoad"] forState:UIControlStateNormal];
+    [downButton addTarget:self action:@selector(didClickButtonFun:) forControlEvents:UIControlEventTouchUpInside];
+    [whiteBgView addSubview:downButton];
+    
+    [downButton mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(butW);
+        make.height.mas_equalTo(butH);
+        make.centerX.mas_equalTo(0);
+        make.top.mas_equalTo(uploadButton.mas_bottom).offset(15);
+    }];
+}
+
+- (void)setFileTransferType:(NSInteger)fileTransferType
+{
+    _fileTransferType = fileTransferType;
+    
+    NSString *uploadTitle = NSLocalizedString(@"File_upload_type_image",nil);
+    NSString *uploadTip = NSLocalizedString(@"File_upload_type_tip",nil);
+    
+    NSString *downloadTitle = NSLocalizedString(@"File_down_type_image",nil);
+    NSString *downloadTip = NSLocalizedString(@"File_down_type_tip",nil);
+    
+    if(fileTransferType == 2)
+    {
+        uploadTitle = NSLocalizedString(@"File_upload_type_video",nil);
+        downloadTitle = NSLocalizedString(@"File_down_type_video",nil);
+    }
+    
+    UILabel *uploadLabel = [[UILabel alloc] init];
+    uploadLabel.textColor = [UIColor whiteColor];
+    uploadLabel.font = [UIFont boldSystemFontOfSize:18.0];
+    uploadLabel.numberOfLines = 0;
+    [uploadButton addSubview:uploadLabel];
+    
+    NSString *totalStr = [[NSString alloc] initWithFormat:@"%@\n%@",uploadTitle,uploadTip];
+    
+    NSMutableAttributedString *noteStr = [[NSMutableAttributedString alloc] initWithString:totalStr];
+    
+    NSRange redRange = NSMakeRange([totalStr rangeOfString:uploadTip].location, [totalStr rangeOfString:uploadTip].length);
+    [noteStr addAttribute:NSForegroundColorAttributeName value:[UIColor hwColor:@"#FFFFFF" alpha:0.8] range:redRange];
+    [noteStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14.0] range:redRange];
+    // 设置行间距
+    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
+    [paragraphStyle setLineSpacing:5];        //设置行间距
+    
+    [noteStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [totalStr  length])];
+    
+    uploadLabel.attributedText = noteStr;
+    
+    [uploadLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(15);
+        make.right.mas_equalTo(-15);
+        make.bottom.mas_equalTo(0);
+        make.top.mas_equalTo(0);
+    }];
+    
+    UILabel *downloadLabel = [[UILabel alloc] init];
+    downloadLabel.textColor = [UIColor whiteColor];
+    downloadLabel.font = [UIFont boldSystemFontOfSize:18.0];
+    downloadLabel.numberOfLines = 0;
+    [downButton addSubview:downloadLabel];
+    
+    NSString *downTotalStr = [[NSString alloc] initWithFormat:@"%@\n%@",downloadTitle,downloadTip];
+    
+    NSMutableAttributedString *downNoteStr = [[NSMutableAttributedString alloc] initWithString:downTotalStr];
+    
+    NSRange downredRange = NSMakeRange([downTotalStr rangeOfString:downloadTip].location, [downTotalStr rangeOfString:downloadTip].length);
+    [downNoteStr addAttribute:NSForegroundColorAttributeName value:[UIColor hwColor:@"#FFFFFF" alpha:0.8] range:downredRange];
+    [downNoteStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14.0] range:downredRange];
+    // 设置行间距
+//    NSMutableParagraphStyle *paragraphStyle1 = [[NSMutableParagraphStyle alloc] init];
+//    [paragraphStyle1 setLineSpacing:5];        //设置行间距
+    
+    [downNoteStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [downTotalStr  length])];
+    
+    downloadLabel.attributedText = downNoteStr;
+    
+    [downloadLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(15);
+        make.right.mas_equalTo(-15);
+        make.bottom.mas_equalTo(0);
+        make.top.mas_equalTo(0);
+    }];
+}
+
+- (void)tapUpFun:(UITapGestureRecognizer*)tap
+{
+    [self removeFromSuperview];
+}
+
+- (void)didClickButtonFun:(UIButton*)button
+{
+    [self tapUpFun:nil];
+    
+    NSInteger tag = button.tag;
+    
+    NSInteger didTag = -1;
+    
+    if(_fileTransferType == 1){
+        if(tag == 1){
+            didTag = 11;
+        }
+        else if(tag == 2){
+            didTag = 12;
+        }
+    }
+    else if(_fileTransferType == 2){
+        if(tag == 1){
+            didTag = 21;
+        }
+        else if(tag == 2){
+            didTag = 22;
+        }
+    }
+    
+    if(didTag){
+        if(_didClickBut)
+        {
+            _didClickBut(didTag);
+        }
+    }
+}
+@end

+ 56 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/model/photosBackupsTaskModel.h

@@ -0,0 +1,56 @@
+//
+//  photosBackupsTaskModel.h
+//  隐私保护
+//
+//  Created by xd h on 2024/1/3.
+//
+
+#import "JSONModel.h"
+#import "BGFMDB.h" //添加该头文件,本类就具有了存储功能.
+#import <Photos/Photos.h>
+#import "uploadFileDataModel.h"
+NS_ASSUME_NONNULL_BEGIN
+
+typedef enum{
+    backupsStateUploading = 0,
+    backupsStateSuspend,
+    backupsStateFail,
+    backupsStateDone,//
+}backupsStateType;
+
+typedef enum{
+    backupsSuspendNone = 0,
+    backupsSuspendByOther,
+    backupsSuspendByUser,//
+}backupsSuspendType;
+
+@interface photosBackupsTaskModel : JSONModel
+@property (nonatomic, assign) NSInteger count;       ///< Count of photos the album contain
+//@property (nonatomic, strong) PHFetchResult *result;
+//@property (nonatomic, strong) PHAssetCollection *collection;
+//@property (nonatomic, strong) PHFetchOptions *options;
+//@property (nonatomic, strong) NSArray *models;
+
+@property (nonatomic, copy) NSString *totalLocalIdentifier;
+@property (nonatomic, strong) NSArray *LocalIdentifierArr;
+@property (nonatomic, copy) NSString *filename;
+
+@property (nonatomic, assign) BOOL didBackupsOneFileType;//某个文件已经存在
+@property (nonatomic, assign) NSUInteger failCount;
+@property (nonatomic, assign) NSUInteger didBackupsCount;
+@property (nonatomic, assign) backupsSuspendType isBackupsSuspendType;
+@property (nonatomic, assign) backupsStateType curBackupsState;
+@property (nonatomic, copy) NSString *backupsTipMsg;//备份失败消息等
+
+@property (nonatomic, retain) NSData *_Nullable imageData;//image
+
+//@property (nonatomic, assign)  uploadStateType curUploadStateType;
+@property (nonatomic, assign)  uploadFileType curUploadFileType;
+@property (nonatomic, assign)  long didUploadBytes;//已经上传的字节数
+@property (nonatomic, assign)  long totalBytes;//总字节数
+@property (nonatomic, assign) NSTimeInterval  preTimeInterval;//计算速度用
+@property (nonatomic, assign) NSTimeInterval  curTimeInterval;//计算速度用
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 18 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/model/photosBackupsTaskModel.m

@@ -0,0 +1,18 @@
+//
+//  photosBackupsTaskModel.m
+//  隐私保护
+//
+//  Created by xd h on 2024/1/3.
+//
+
+#import "photosBackupsTaskModel.h"
+
+@implementation photosBackupsTaskModel
+/**
+ 设置不需要存储的属性, 在模型.m文件中实现该函数.
+ */
++(NSArray *)bg_ignoreKeys{
+   return @[@"LocalIdentifierArr",@"filename",@"imageData",
+            @"curUploadStateType",@"curUploadFileType",@"didUploadBytes",@"totalBytes",@"preTimeInterval",@"curTimeInterval",@"didBackupsOneFileType"];
+}
+@end

+ 2 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/model/uploadFileDataModel.h

@@ -22,6 +22,8 @@ typedef enum{
     uploadFileTypeImage = 0,
     uploadFileTypeVideo,
     uploadFileTypeUnkonw,
+    DownLoadThumbnail,//下载缩略图
+    DownLoadFileType,//下载文件
 }uploadFileType;
 
 //self.fileName = [assetModel.asset valueForKey:@"filename"];

+ 0 - 299
创维盒子/双子星云手机/Class/Set/uploadFile/photoView/uploadFileRecordTableView.m

@@ -1,299 +0,0 @@
-//
-//  uploadFileRecordTableView.m
-//  隐私保护
-//
-//  Created by xd h on 2023/11/22.
-//
-
-#import "uploadFileRecordTableView.h"
-#import "uploadFileRecordCell.h"
-#import "UIScrollView+EmptyDataSet.h"
-#import "uploadFileManager.h"
-
-@interface uploadFileRecordTableView()<UITableViewDataSource,UITableViewDelegate,DZNEmptyDataSetSource, DZNEmptyDataSetDelegate>
-
-@end
-
-@implementation uploadFileRecordTableView
-
-- (id)initWithFrame:(CGRect)frame {
-    self = [super initWithFrame:frame];
-    if (self) {
-        [self initCommon];
-        _selectModelArr = [NSMutableArray new];
-        _curDataArr = [NSMutableArray new];
-    }
-    return self;
-}
-
-- (void)initCommon {
-    self.delegate = self;
-    self.dataSource = self;
-    self.showsVerticalScrollIndicator = NO;
-    self.showsHorizontalScrollIndicator = NO;
-    [self setSeparatorStyle:(UITableViewCellSeparatorStyleNone)];
-    [self setSeparatorColor:[UIColor clearColor]];
-    [self setBackgroundColor:[UIColor clearColor]];
-    [self setTableFooterView:[UIView new]];
-    [self setBounces:YES];
-    if (@available(iOS 15.0, *)) {
-        self.sectionHeaderTopPadding = 0;
-    }
-    
-    //空数据引入第三方开源处理
-    self.emptyDataSetSource = self;
-    self.emptyDataSetDelegate = self;
-}
-
-
-#pragma mark - 列表委托
-- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
-    return 1;
-}
-
-- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
-    
-    if(_curDataArr){
-        return _curDataArr.count;
-    }
-    
-    return 0;
-    
-}
-
-- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
-    
-    NSInteger row = indexPath.row;
-    static NSString *identifier = @"uploadFileRecordCell";
-    
-    uploadFileRecordCell * cell =  [tableView dequeueReusableCellWithIdentifier:identifier];
-    cell.selectionStyle = UITableViewCellSelectionStyleNone;
-    if (!cell){
-        cell = [[uploadFileRecordCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier];
-        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
-        [cell setBackgroundColor:[UIColor clearColor]];
-        [cell setAccessoryType:(UITableViewCellAccessoryNone)];
-    }
-    
-    
-    NSMutableArray *curArr = _curDataArr;
-    
-    if(row < curArr.count){
-        uploadFileDataModel *model = curArr[row];
-        cell.curUploadFileDataModel = model;
-        cell.isEditType = _isEditType;
-
-        if(_isEditType){
-            if([_selectModelArr containsObject:model]){
-                cell.isSelectType = YES;
-            }
-            else{
-                cell.isSelectType = NO;
-            }
-        }
-        
-        KWeakSelf
-        cell.didLongPressClick = ^{
-            [weakSelf didLongPressClickFun];
-        };
-
-        cell.didClckSelectBut = ^(BOOL isSelect) {
-            [weakSelf selectModelOneByOne:model BySelect:isSelect];
-        };
-
-        cell.didTapPressClick = ^{
-            if(model.curUploadStateType == uploadStateUploading){
-                [weakSelf handleUploadingStateTapFunBy:YES with:model];
-            }
-            else if(model.curUploadStateType == uploadStateSuspend){
-                [weakSelf handleUploadingStateTapFunBy:NO with:model];
-            }
-            else if(model.curUploadStateType == uploadStateFail){
-                [weakSelf handleUploadFailStateWith:model];
-            }
-        };
-    }
-    
-    
-
-    return cell;
-}
-
-- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
-    return 70;
-}
-
-
-- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
-    [tableView deselectRowAtIndexPath:indexPath animated:YES];
-    
-}
-
-#pragma mark 空数据
-- (UIImage *)imageForEmptyDataSet:(UIScrollView *)scrollView {
-    
-    return [UIImage imageNamed:@"uploadFile_noData"];
-}
-
-- (NSAttributedString *)titleForEmptyDataSet:(UIScrollView *)scrollView {
-    NSString *text = NSLocalizedString(@"File_upload_Record_no_data",nil);
-    
-    NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:16.0f],
-                                 NSForegroundColorAttributeName: HW999999Color};
-    
-    return [[NSAttributedString alloc] initWithString:text attributes:attributes];
-}
-
-//调整图片位置
-- (CGFloat)verticalOffsetForEmptyDataSet:(UIScrollView *)scrollView {
-    return -150;
-}
-
--(void)reloadDataFun{
-    mainBlock(^{
-        [self RefresHeadUIFun];
-        [self reloadData];
-    });
-}
-
-#pragma mark 熟悉头部数据
--(void)RefresHeadUIFun
-{
-    uploadFileRecordTableViewHeadView *headView = (uploadFileRecordTableViewHeadView *)self.tableHeaderView;
-    
-    if(!headView || ![headView isKindOfClass:[uploadFileRecordTableViewHeadView class]]){
-        return;
-    }
-    
-    if(!_curDataArr ||_curDataArr.count ==0){
-        headView.hidden = YES;
-        return;
-    }
-   
-    headView.hidden = NO;
-
-    NSInteger tag = self.tag;
-    
-    if(tag == 100){
-        NSString *leftStr =  NSLocalizedString(@"File_upload_Record_uploading",nil);
-        NSString *rightStr =  NSLocalizedString(@"File_upload_Record_all_suspend",nil);
-        NSString *rightSelectStr =  NSLocalizedString(@"File_upload_Record_all_open",nil);
-        NSString *titleStr = [[NSString alloc] initWithFormat:@"%@ (%ld)",leftStr,_curDataArr.count];
-
-        headView.titleLabel.text = titleStr;
-        [headView.rightButton setTitle:rightStr forState:UIControlStateNormal];
-        [headView.rightButton setTitle:rightSelectStr forState:UIControlStateSelected];
-        
-    }
-    else if(tag == 101){
-        NSString *leftStr =  NSLocalizedString(@"File_upload_Record_did_upload",nil);
-        NSString *rightStr =  NSLocalizedString(@"File_upload_Record_clear_Record",nil);
-        NSString *titleStr = [[NSString alloc] initWithFormat:@"%@ (%ld)",leftStr,_curDataArr.count];
-
-        headView.titleLabel.text = titleStr;
-        [headView.rightButton setTitle:rightStr forState:UIControlStateNormal];
-    }
-    else if(tag == 102){
-        NSString *leftStr =  NSLocalizedString(@"File_upload_Record_did_upload",nil);
-        NSString *rightStr =  NSLocalizedString(@"File_upload_Record_clear_Record",nil);
-        NSString *titleStr = [[NSString alloc] initWithFormat:@"%@ (%ld)",leftStr,_curDataArr.count];
-
-        headView.titleLabel.text = titleStr;
-        [headView.rightButton setTitle:rightStr forState:UIControlStateNormal];
-    }
-}
-
-#pragma mark  点击全选
-- (void)setIsSelectAllType:(BOOL)isSelectAllType
-{
-    _selectModelArr = [NSMutableArray arrayWithArray:_curDataArr];
-    [self reloadDataFun];
-}
-
--(void)setIsEditType:(BOOL)isEditType
-{
-    _isEditType = isEditType;
-    
-    if(_isEditType){
-        //_bgScrollV.scrollEnabled = NO;
-    }
-    else{
-        //_bgScrollV.scrollEnabled = YES;
-        [_selectModelArr removeAllObjects];
-        
-    }
-    
-    [self reloadDataFun];
-}
-
-#pragma mark cell长按时间
-- (void)didLongPressClickFun{
-        self.isEditType = YES;
-        if(self->_didLongPressClick){
-            self->_didLongPressClick();
-        }
-}
-
-#pragma mark 单个点击选中 取消
-- (void)selectModelOneByOne:(uploadFileDataModel*)model BySelect:(BOOL)isSelcet
-{
-    if(isSelcet){
-        [_selectModelArr addObject:model];
-    }
-    else{
-        [_selectModelArr removeObject:model];
-    }
-}
-
-#pragma mark 单个点击选中后删除
-- (void)deleteModelOneByOneFun{
-    if(!_selectModelArr || _selectModelArr.count==0){
-        
-        return;
-    }
-    
-    KWeakSelf
-    [[uploadFileManager shareInstance] deleteUploadFileRecordBy:_selectModelArr withDelCache:YES complete:^(BOOL isSuccess) {
-        HLog(@"isSuccess:%d",isSuccess);
-        
-        if(isSuccess){
-            NSMutableArray *curArr = self->_curDataArr;
-            [curArr removeObjectsInArray:self->_selectModelArr];
-            [weakSelf reloadDataFun];
-            self->_selectModelArr = [NSMutableArray new];
-        }
-    }];
-}
-
-
-#pragma mark 处理上传中的 状态点击事件
-- (void)handleUploadingStateTapFunBy:(BOOL)isSuspendType with:(uploadFileDataModel*)model
-{
-    if (isSuspendType) {
-        [[uploadFileManager shareInstance] suspendUploadFileFun:NO];
-    }
-    else{
-        NSMutableArray*arr = [NSMutableArray new];
-        [arr addObject:model];
-        [[uploadFileManager shareInstance] reUploadFileFunBy:arr];
-    }
-    
-}
-
-#pragma mark 处理上传中的 状态点击事件
-- (void)handleUploadFailStateWith:(uploadFileDataModel*)model{
-    
-    [_curDataArr removeObject:model];
-    [self reloadDataFun];
-    
-    if(_didClickReUploadBlock){
-        _didClickReUploadBlock(model);
-    }
-    
-    NSMutableArray*arr = [NSMutableArray new];
-    model.curUploadStateType = uploadStateWait;
-    [arr addObject:model];
-    [[uploadFileManager shareInstance] reUploadFileFunBy:arr];
-    
-}
-@end

+ 4 - 4
创维盒子/双子星云手机/Class/Set/uploadFile/photoView/uploadFileRecordheadView.m

@@ -24,10 +24,10 @@
 - (void)drawAnyView{
     [self setBackgroundColor:[UIColor hwColor:@"#F9F9F9" alpha:1.0]];
     self.layer.cornerRadius = 8;
-    
-    NSString *leftStr =  NSLocalizedString(@"File_upload_Record_uploading",nil);
-    NSString *midStr =  NSLocalizedString(@"File_upload_Record_upload_suc",nil);
-    NSString *rightStr =  NSLocalizedString(@"File_upload_Record_upload_fail",nil);
+
+    NSString *leftStr =  NSLocalizedString(@"my_set_no_File_upload",nil);
+    NSString *midStr =  NSLocalizedString(@"my_set_no_File_download",nil);
+    NSString *rightStr =  NSLocalizedString(@"my_set_no_File_backups",nil);
     NSArray *titleArr =  @[leftStr,midStr,rightStr];
     
     _butWidth = (SCREEN_W - 30)/3.0;

+ 42 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/backupsFileManager.h

@@ -0,0 +1,42 @@
+//
+//  backupsFileManager.h
+//  隐私保护
+//
+//  Created by xd h on 2024/1/3.
+//
+
+#import <Foundation/Foundation.h>
+#import "connectDeviceManager.h"
+#import "TZImageManager.h"
+#import "photosBackupsTaskModel.h"
+
+#define backups_photos_tableName [[NSString alloc] initWithFormat:@"backups_photos_tableName_%@",[connectDeviceManager shareInstance].DeviceThirdIdMod.data.sn]
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface backupsFileManager : NSObject
+@property (nonatomic,strong) photosBackupsTaskModel* curPhotosBackupsTaskMod;
+
+
++(backupsFileManager *)shareInstance;
+
+
+//处理备份消息
+- (void)handlePhotosBackupsFun;
+- (void)getDataWrongToChangeFailFun;
+
+//文件备份完成
+- (void)backupsFileDoneFun;
+
+//修改文件上传的状态
+- (void)changeBackupsFileStateWithSpeedFun;
+
+- (void)suspendBackupsFileFun;
+//文件重新备份
+- (void)reBackupsFileFunBy:(photosBackupsTaskModel*)model;
+
+//检查是否需要重新备份
+- (void)checkReBackupsFileFun;
+@end
+
+NS_ASSUME_NONNULL_END

+ 348 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/backupsFileManager.m

@@ -0,0 +1,348 @@
+//
+//  backupsFileManager.m
+//  隐私保护
+//
+//  Created by xd h on 2024/1/3.
+//
+
+#import "backupsFileManager.h"
+#import "cachesFileManager.h"
+
+@implementation backupsFileManager
+static backupsFileManager * cur_backupsFileShareInstance = nil;
++(backupsFileManager *)shareInstance;
+{
+    static dispatch_once_t onceToken;
+    
+    dispatch_once(&onceToken, ^{
+        cur_backupsFileShareInstance = [[backupsFileManager alloc] init];
+        
+    });
+    
+    return cur_backupsFileShareInstance;
+}
+
+- (id)init
+{
+    self = [super init];
+    
+    if (self) {
+        //[self initManager];
+    }
+    
+    return self;
+}
+
+- (void)handlePhotosBackupsFun
+{
+    //return;
+    
+    BOOL haveOpenBackups = [HWDataManager getBoolWithKey:Const_photo_backups_state];
+    
+    if(!haveOpenBackups){
+        return;
+    }
+    
+    //相册权限
+    if (![[TZImageManager manager] authorizationStatusAuthorized]){
+        [HWDataManager setBoolWithKey:Const_photo_backups_state value:NO];
+        return;
+    }
+    
+    
+    [photosBackupsTaskModel bg_findAsync:backups_photos_tableName limit:0 orderBy:nil desc:YES complete:^(NSArray * _Nullable array) {
+        if(!array || array.count == 0){
+            [self getAllAlbumsFun];
+            return;
+        }
+        
+        if(array.count >1){
+            [self keepDatabaseOneDataFun];
+        }
+        
+        photosBackupsTaskModel *lastModel = array.firstObject;
+        
+        HLog(@"1 bg_id:%@",lastModel.bg_id);
+        
+        if(lastModel.isBackupsSuspendType == backupsSuspendByUser){
+            return;
+        }
+        
+        if(lastModel.curBackupsState == backupsStateFail
+           ||lastModel.curBackupsState == backupsStateDone){//上次备份完成
+            [self getAllAlbumsFun];
+        }
+        else{//继续上次的备份任务
+            [self handelBackupsModelFun:lastModel];
+        }
+    }];
+    
+}
+
+- (void)keepDatabaseOneDataFun
+{
+    [photosBackupsTaskModel bg_deleteFirstObject:backups_photos_tableName];
+    //[photosBackupsTaskModel bg_findAsync:backups_photos_tableName
+}
+
+//备份开始查询相册
+- (void)getAllAlbumsFun
+{
+    //
+    [[TZImageManager manager] getAllAlbums:YES allowPickingImage:YES needFetchAssets:NO completion:^(NSArray<TZAlbumModel *> *models) {
+        
+        if(models.count >= 1){
+            TZAlbumModel *curAlbumModel= models.firstObject;
+            
+            photosBackupsTaskModel * taskModel = [photosBackupsTaskModel new];
+            taskModel.count = curAlbumModel.count;
+            //taskModel.result = curAlbumModel.result;
+            
+            taskModel.failCount = 0;
+            taskModel.didBackupsCount = 0;
+            taskModel.bg_tableName = backups_photos_tableName;
+            
+            NSMutableString *allLocalIdentifier= [NSMutableString new];
+            
+            for (PHAsset *asset in curAlbumModel.result) {
+                if (asset.localIdentifier) {
+                    if(allLocalIdentifier.length >0){
+                        [allLocalIdentifier appendString:@"&"];
+                    }
+                    [allLocalIdentifier appendString:asset.localIdentifier];
+                }
+            }
+            
+            taskModel.totalLocalIdentifier = allLocalIdentifier;
+            
+            HLog(@"2 bg_id:%@",taskModel.bg_id);
+            
+            [taskModel bg_saveAsync:^(BOOL isSuccess) {
+                if(!isSuccess){
+                    HLog(@"\n\nError!!!\n\n");
+                }
+                else{
+                    //[self handelBackupsModelFun:taskModel];
+                    [self handlePhotosBackupsFun];
+                }
+            }];
+        }
+    }];
+}
+
+- (void)handelBackupsModelFun:(photosBackupsTaskModel*)backupsTaskModel
+{
+    _curPhotosBackupsTaskMod = backupsTaskModel;
+    _curPhotosBackupsTaskMod.isBackupsSuspendType = backupsSuspendNone;
+    _curPhotosBackupsTaskMod.curBackupsState = backupsStateUploading;
+    
+    _curPhotosBackupsTaskMod.LocalIdentifierArr = [backupsTaskModel.totalLocalIdentifier componentsSeparatedByString:@"&"];
+    
+    if(_curPhotosBackupsTaskMod.LocalIdentifierArr.count
+       <= (_curPhotosBackupsTaskMod.didBackupsCount + _curPhotosBackupsTaskMod.failCount))
+    {
+        _curPhotosBackupsTaskMod.curBackupsState = backupsStateDone;
+        [self RefreshDatabaseFun];
+        [self changeBackupsFileStateWithSpeedFun];
+        return;
+    }
+    
+    [self beginBackupsFileFun];
+}
+
+- (void)beginBackupsFileFun
+{
+    NSInteger index = _curPhotosBackupsTaskMod.didBackupsCount + _curPhotosBackupsTaskMod.failCount;
+    
+    if(index >= _curPhotosBackupsTaskMod.LocalIdentifierArr.count){
+        _curPhotosBackupsTaskMod.curBackupsState = backupsStateDone;
+        [self RefreshDatabaseFun];
+        [self changeBackupsFileStateWithSpeedFun];
+        return;
+    }
+    
+    NSString *curLocalIdentifier = _curPhotosBackupsTaskMod.LocalIdentifierArr[index];
+    
+    if(!curLocalIdentifier || curLocalIdentifier.length == 0)
+    {
+        [self getDataWrongToChangeFailFun];
+        return;
+    }
+        
+    PHFetchResult *fetchResult = [PHAsset fetchAssetsWithLocalIdentifiers:@[curLocalIdentifier] options:nil];
+    PHAsset *curAsset = fetchResult.firstObject;
+    
+    _curPhotosBackupsTaskMod.filename = [curAsset valueForKey:@"filename"];
+    
+    
+    KWeakSelf
+    if(curAsset.mediaType == PHAssetMediaTypeImage){
+        _curPhotosBackupsTaskMod.curUploadFileType = uploadFileTypeImage;
+        [[PHImageManager defaultManager] requestImageDataForAsset:curAsset options:nil resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
+                // 直接得到最终的 NSData 数据
+                if (imageData) {
+                    [weakSelf  afterGetImageDataFun:imageData];
+                }
+                else{
+                    [weakSelf getDataWrongToChangeFailFun];
+                }
+        }];
+    }
+    else{
+        _curPhotosBackupsTaskMod.curUploadFileType = uploadFileTypeVideo;
+        
+        //判断文件是否在app内
+       BOOL didSaveFile = [cachesFileManager  checkFileIsSaveState:_curPhotosBackupsTaskMod.filename withType:uploadFileTypeVideo];
+        
+        if(didSaveFile){
+            [self afterGetVideoDataFun];
+            return;
+        }
+        
+        //真正的视频数据
+        PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
+        options.version = PHVideoRequestOptionsVersionOriginal;
+        [[PHImageManager defaultManager] requestAVAssetForVideo:curAsset options:options resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
+            if ([asset isKindOfClass:[AVURLAsset class]]) {
+                
+                AVURLAsset* urlAsset = (AVURLAsset*)asset;
+                
+                BOOL isSuc = [cachesFileManager copyVideoItemAtPath:[urlAsset.URL path] fileName:self->_curPhotosBackupsTaskMod.filename error:nil];
+        
+                if (isSuc) {
+                    [weakSelf  afterGetVideoDataFun];
+                }
+                else{
+                    [weakSelf getDataWrongToChangeFailFun];
+                }
+         }
+        }];
+    }
+    
+}
+
+- (void)getDataWrongToChangeFailFun
+{
+    [self deleteVideoFun];
+    _curPhotosBackupsTaskMod.failCount += 1;
+    
+    [self RefreshDatabaseFun];
+    [self beginBackupsFileFun];
+}
+
+- (void)RefreshDatabaseFun
+{
+    HLog(@"3 bg_id:%@",_curPhotosBackupsTaskMod.bg_id);
+    [_curPhotosBackupsTaskMod bg_saveOrUpdateAsync:^(BOOL isSuccess) {
+                if(isSuccess){
+                }
+    }];
+}
+
+- (void)afterGetImageDataFun:(NSData*)imageData
+{
+    _curPhotosBackupsTaskMod.imageData = imageData;
+    _curPhotosBackupsTaskMod.totalBytes = [imageData length];
+    [[NSNotificationCenter defaultCenter] postNotificationName:backupsFileBeginNotification object:_curPhotosBackupsTaskMod];
+}
+
+- (void)deleteVideoFun
+{
+    if(_curPhotosBackupsTaskMod.curUploadFileType == uploadFileTypeVideo){
+        [cachesFileManager removeItemAtPath:_curPhotosBackupsTaskMod.filename type:uploadFileTypeVideo error:nil];
+    }
+}
+
+- (void)afterGetVideoDataFun
+{
+    [[NSNotificationCenter defaultCenter] postNotificationName:backupsFileBeginNotification object:_curPhotosBackupsTaskMod];
+}
+
+- (void)backupsFileDoneFun
+{
+    [self deleteVideoFun];
+    _curPhotosBackupsTaskMod.didBackupsCount += 1;
+    [self RefreshDatabaseFun];
+    [self changeBackupsFileStateWithSpeedFun];
+    [self beginBackupsFileFun];
+    
+}
+
+//修改文件上传的状态
+- (void)changeBackupsFileStateWithSpeedFun
+{
+    [[NSNotificationCenter defaultCenter] postNotificationName:backupsFileRefreshNotification object:_curPhotosBackupsTaskMod];
+}
+
+- (void)suspendBackupsFileFun
+{
+    if(!_curPhotosBackupsTaskMod){
+        return;
+    }
+    
+    _curPhotosBackupsTaskMod.curBackupsState = backupsStateSuspend;
+    _curPhotosBackupsTaskMod.backupsTipMsg = NSLocalizedString(@"File_backups_Record_tip_Suspend",nil);
+    
+    [_curPhotosBackupsTaskMod bg_saveOrUpdateAsync:^(BOOL isSuccess) {
+        if(isSuccess){
+            [self changeBackupsFileStateWithSpeedFun];
+        }
+    }];
+    
+}
+
+//文件重新备份
+- (void)reBackupsFileFunBy:(photosBackupsTaskModel*)model
+{
+    model.isBackupsSuspendType = backupsSuspendNone;
+    model.curBackupsState = backupsStateUploading;
+    _curPhotosBackupsTaskMod = model;
+    
+    [_curPhotosBackupsTaskMod bg_saveOrUpdateAsync:^(BOOL isSuccess) {
+        if(isSuccess){
+            [self beginBackupsFileFun];
+        }
+    }];
+    
+}
+
+//检查是否需要重新备份
+- (void)checkReBackupsFileFun
+{
+    BOOL haveOpenBackups = [HWDataManager getBoolWithKey:Const_photo_backups_state];
+    
+    if(!haveOpenBackups){
+        return;
+    }
+    
+    //相册权限
+    if (![[TZImageManager manager] authorizationStatusAuthorized]){
+        [HWDataManager setBoolWithKey:Const_photo_backups_state value:NO];
+        return;
+    }
+    
+    
+    [photosBackupsTaskModel bg_findAsync:backups_photos_tableName limit:1 orderBy:nil desc:YES complete:^(NSArray * _Nullable array) {
+        if(!array || array.count == 0){
+            return;
+        }
+        
+        photosBackupsTaskModel *lastModel = array.firstObject;
+        
+        HLog(@"1 bg_id:%@",lastModel.bg_id);
+        
+        if(lastModel.isBackupsSuspendType == backupsSuspendByUser){
+            return;
+        }
+        
+        if(lastModel.curBackupsState == backupsStateFail
+           ||lastModel.curBackupsState == backupsStateDone){//上次备份完成
+            
+        }
+        else{//继续上次的备份任务
+            [self handelBackupsModelFun:lastModel];
+        }
+    }];
+    
+}
+@end

+ 6 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/cachesFileManager.h

@@ -13,6 +13,12 @@
 #define kSHPath_image [cachesFileManager getCreateFilePath:[NSString stringWithFormat:@"%@/Image",CachesPatch]]
 //视频路径
 #define kSHPath_video [cachesFileManager getCreateFilePath:[NSString stringWithFormat:@"%@/Video",CachesPatch]]
+//下载缩略图 图片 DownLoadThumbnail
+#define kSHPath_DownLoadThumbnail [cachesFileManager getCreateFilePath:[NSString stringWithFormat:@"%@/DownLoadThumbnail",CachesPatch]]
+
+//下载文件 图片 DownLoadFile
+#define kSHPath_DownLoadFlie [cachesFileManager getCreateFilePath:[NSString stringWithFormat:@"%@/DownLoadFlie",CachesPatch]]
+
 
 NS_ASSUME_NONNULL_BEGIN
 

+ 31 - 3
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/cachesFileManager.m

@@ -21,10 +21,9 @@
 }
 
 
-#pragma mark - 获取文件夹(没有的话创建)
+#pragma mark - 获取文件夹
 + (BOOL)checkFileIsSaveState:(NSString *)fileName withType:(uploadFileType)type
 {
-    
     NSString * path = [cachesFileManager getFilePathWithName:fileName type:type];
     return [[NSFileManager defaultManager] fileExistsAtPath:path];
 }
@@ -70,6 +69,26 @@
         }
             break;
         
+        case DownLoadThumbnail://image
+        {
+            filePath = [NSString stringWithFormat:@"%@/%@",kSHPath_DownLoadThumbnail,fileName];
+            
+            if ([content isKindOfClass:[NSData class]]) {
+                data = content;
+            }
+        }
+            break;
+            
+        case DownLoadFileType://
+        {
+            filePath = [NSString stringWithFormat:@"%@/%@",kSHPath_DownLoadFlie,fileName];
+            
+            if ([content isKindOfClass:[NSData class]]) {
+                data = content;
+            }
+        }
+            break;
+            
         default:
             break;
     }
@@ -113,7 +132,16 @@
             name = [NSString stringWithFormat:@"%@/%@",kSHPath_video,name];
         }
             break;
-
+        case DownLoadThumbnail://image
+        {
+            name = [NSString stringWithFormat:@"%@/%@",kSHPath_DownLoadThumbnail,name];
+        }
+            break;
+        case DownLoadFileType://
+        {
+            name = [NSString stringWithFormat:@"%@/%@",kSHPath_DownLoadFlie,name];
+        }
+            break;
         default:
             break;
     }

+ 43 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/downloadManager.h

@@ -0,0 +1,43 @@
+//
+//  downloadManager.h
+//  隐私保护
+//
+//  Created by xd h on 2024/1/9.
+//
+
+#import <Foundation/Foundation.h>
+//#import "couldPhoneFileModel.h"
+#import "couldPhoneFileListModel.h"
+#import "uploadFileManager.h"
+
+#define download_tableName [[NSString alloc] initWithFormat:@"download_tableName_%@",[connectDeviceManager shareInstance].DeviceThirdIdMod.data.sn]
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface downloadManager : NSObject
+
+//数据库数据
+@property (nonatomic, strong) NSMutableArray * _Nullable databaseArr;
+@property (nonatomic, strong) NSMutableArray * _Nullable downLoadFileModelDataArr;
+@property (nonatomic, strong) couldPhoneFileModel *  curDownloadFileModel;
+@property (nonatomic, assign) BOOL  isSuspendType;
+@property (nonatomic, assign) BOOL  isDownloadIngType;
+@property (nonatomic, assign) NSInteger  reDownloadIngSelectIndex;
+
++(downloadManager *)shareInstance;
+#pragma mark 读取数据库数据
+- (void)getDataInDatabaseFun:(BOOL)isReGet complete:(custom_complete_Arr)complete;
+
+-(void)handleCouldPhoneFileModelToDownloadFileDataFunBy:(NSMutableArray*)indexPathsForSelectedItems complete:(custom_complete_Arr)complete;
+
+- (void)DownloadFileDoneOneFileFun;
+
+- (void)DownloadFileChangeingOneFileFun;
+- (void)suspendDownloadFileFun:(BOOL)isSuspendAll;
+- (void)reDownloadFileFunBy:(NSMutableArray*)arr;
+
+//删除本地数据库记录
+- (void)deleteDownloadFileRecordBy:(NSMutableArray *)delArr withDelCache:(BOOL)isDelCache;
+@end
+
+NS_ASSUME_NONNULL_END

+ 367 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/downloadManager.m

@@ -0,0 +1,367 @@
+//
+//  downloadManager.m
+//  隐私保护
+//
+//  Created by xd h on 2024/1/9.
+//
+
+#import "downloadManager.h"
+#import "cachesFileManager.h"
+
+@implementation downloadManager
+static downloadManager * cur_downloadManager = nil;
++(downloadManager *)shareInstance;
+{
+    static dispatch_once_t onceToken;
+    
+    dispatch_once(&onceToken, ^{
+        cur_downloadManager = [[downloadManager alloc] init];
+        
+    });
+    
+    return cur_downloadManager;
+}
+
+- (id)init
+{
+    self = [super init];
+    
+    if (self) {
+        //[self initManager];
+    }
+    
+    return self;
+}
+
+
+#pragma mark 读取数据库数据
+- (void)getDataInDatabaseFun:(BOOL)isReGet complete:(custom_complete_Arr)complete
+{
+    if(_databaseArr && _databaseArr.count == 3 && !isReGet){
+        complete(_databaseArr);
+        return;
+    }
+    
+    if(!_databaseArr)
+    {
+        _databaseArr = [NSMutableArray new];
+    }
+    
+    //KWeakSelf
+    //dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
+        [couldPhoneFileModel bg_findAsync:download_tableName limit:0 orderBy:nil desc:NO complete:^(NSArray * _Nullable array) {
+            NSMutableArray *failArr = [NSMutableArray new];
+            NSMutableArray *doneArr = [NSMutableArray new];
+            NSMutableArray *otherArr = [NSMutableArray new];
+            
+                for (couldPhoneFileModel * curModel in array) {
+                
+                    if(curModel.curDownloadStateType == downloadStateFail){
+                        [failArr addObject:curModel];
+                    }
+                    else if(curModel.curDownloadStateType == downloadStateDone){
+                        [doneArr addObject:curModel];
+                    }
+                    else{
+                        [otherArr addObject:curModel];
+                    }
+                }
+            
+            NSLock *lock = [NSLock new];
+            [lock lock];
+            
+            NSMutableArray *newArr = [NSMutableArray new];
+            [newArr addObject:otherArr];
+            [newArr addObject:doneArr];
+            [newArr addObject:failArr];
+            self->_databaseArr = newArr;
+            
+            [lock unlock];
+            
+            complete(self->_databaseArr);
+        }];
+    //});
+
+}
+
+-(void)handleCouldPhoneFileModelToDownloadFileDataFunBy:(NSMutableArray*)indexPathsForSelectedItems complete:(custom_complete_Arr)complete
+{
+    if(!indexPathsForSelectedItems && indexPathsForSelectedItems.count == 0){
+        complete(nil);
+        return;
+    }
+    
+    for (couldPhoneFileModel*model in indexPathsForSelectedItems) {
+        model.bg_tableName = download_tableName;
+    }
+    
+    KWeakSelf
+    //查
+    [self getDataInDatabaseFun:YES complete:^(NSMutableArray * _Nonnull Arr) {
+        //排重
+        NSMutableArray *newDownArr = [weakSelf  checkDownloadTaskRepeatFun:indexPathsForSelectedItems];
+        
+        if(newDownArr.count>0){
+            //存
+            [couldPhoneFileModel bg_saveOrUpdateArrayAsync:newDownArr complete:^(BOOL isSuccess) {
+                //再查
+                [weakSelf getDataInDatabaseFun:YES complete:^(NSMutableArray * _Nonnull Arr) {
+                    complete(Arr);
+                    [weakSelf planToDownloadFileFun];
+                }];
+            }];
+        }
+        else{
+            complete(Arr);
+            [weakSelf planToDownloadFileFun];
+        }
+        
+    }];
+}
+
+#pragma mark 检测是否有下载任务重复
+- (NSMutableArray*)checkDownloadTaskRepeatFun:(NSMutableArray*)indexPathsForSelectedItems
+{
+    if(!_databaseArr || _databaseArr.count != 3){
+        return indexPathsForSelectedItems;
+    }
+    
+    NSMutableArray *downloadArr = _databaseArr[0];
+    NSMutableArray *newTaskArr = [NSMutableArray new];
+    
+    for (couldPhoneFileModel*model in indexPathsForSelectedItems) {
+       NSString *fileName = [model getFileNameFun];
+        
+        BOOL isNeedAddType = YES;
+        for (couldPhoneFileModel* hadModel in downloadArr) {
+            NSString *hadFileName = [hadModel getFileNameFun];
+            if([fileName isEqualToString:hadFileName]){
+                isNeedAddType = NO;
+                break;
+            }
+        }
+        
+        if(isNeedAddType){
+            [newTaskArr addObject:model];
+        }
+    }
+    
+    return newTaskArr;
+}
+
+- (void)planToDownloadFileFun
+{
+    if(!_databaseArr || _databaseArr.count != 3){
+        return;
+    }
+    
+    _downLoadFileModelDataArr = _databaseArr[0];
+    
+    [self beginDownloadFileFun];
+}
+
+- (void)beginDownloadFileFun
+{
+    if(_downLoadFileModelDataArr.count == 0)
+    {
+        return;
+    }
+    
+    _isSuspendType = NO;
+    _isDownloadIngType = YES;
+    
+    if(_reDownloadIngSelectIndex > 0
+       && _reDownloadIngSelectIndex < _downLoadFileModelDataArr.count){
+        _curDownloadFileModel = _downLoadFileModelDataArr[_reDownloadIngSelectIndex];
+    }
+    else
+    {
+        _curDownloadFileModel = _downLoadFileModelDataArr.firstObject;
+    }
+    
+    
+    if(!_curDownloadFileModel){
+        return;
+    }
+    
+    _curDownloadFileModel.curDownloadStateType = downloadStateUploading;
+    
+    [[NSNotificationCenter defaultCenter] postNotificationName:downloadFileBeginNotification object:_curDownloadFileModel];
+}
+
+- (void)DownloadFileDoneOneFileFun
+{
+    _curDownloadFileModel.curDownloadStateType = downloadStateDone;
+//    NSString *fileName = [_curDownloadFileModel getFileNameFun];
+//    [cachesFileManager removeItemAtPath:fileName type:DownLoadFileType error:nil];
+    
+   
+    [self DownloadFileChangeingOneFileFun];
+    
+    if(_isSuspendType){
+        return;
+    }
+    [self beginDownloadFileFun];
+}
+
+- (void)DownloadFileChangeingOneFileFun
+{
+    if(_curDownloadFileModel.curDownloadStateType == downloadStateDone){
+        [_downLoadFileModelDataArr removeObject:_curDownloadFileModel];
+        [self handleDatabaseArrAddObjectInDone:_curDownloadFileModel];
+    }
+    else if(_curDownloadFileModel.curDownloadStateType == uploadStateFail){
+        [self handleDatabaseArrDeleteObjectInDownloading:_curDownloadFileModel];
+        [self handleDatabaseArrAddObjectInFail:_curDownloadFileModel];
+    }
+
+    [_curDownloadFileModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
+        //HLog(@"%@ 写入 %@", model.filename, isSuccess ? @"成功":@"失败");
+    }];
+        
+    
+    if(!_isSuspendType || _curDownloadFileModel.curDownloadStateType != uploadStateSuspend){
+        [[NSNotificationCenter defaultCenter] postNotificationName:downloadFileRefreshNotification object:_curDownloadFileModel];
+    }
+    
+}
+
+
+
+- (void)handleDatabaseArrDeleteObjectInDownloading:(couldPhoneFileModel*)model
+{
+    if(_databaseArr && _databaseArr.count == 3 ){
+        NSMutableArray *ingArr = _databaseArr[0];
+        [ingArr removeObject:model];
+    }
+}
+
+- (void)handleDatabaseArrAddObjectInDone:(couldPhoneFileModel*)model
+{
+    if(_databaseArr && _databaseArr.count == 3 ){
+        NSMutableArray *doneArr = _databaseArr[1];
+        [doneArr insertObject:model atIndex:0];
+    }
+}
+
+- (void)handleDatabaseArrAddObjectInFail:(couldPhoneFileModel*)model
+{
+    if(_databaseArr && _databaseArr.count == 3 ){
+        NSMutableArray *failArr = _databaseArr[2];
+        [failArr insertObject:model atIndex:0];
+    }
+}
+
+- (void)suspendDownloadFileFun:(BOOL)isSuspendAll
+{
+    _isSuspendType = YES;
+    
+    if(isSuspendAll){
+        for (couldPhoneFileModel *couldPhoneFileMod in _downLoadFileModelDataArr) {
+            couldPhoneFileMod.curDownloadStateType = downloadStateSuspend;
+        }
+    }
+}
+
+- (void)reDownloadFileFunBy:(NSMutableArray*)Arr
+{
+    if(!_downLoadFileModelDataArr){
+        _downLoadFileModelDataArr = [NSMutableArray new];
+    }
+    
+    _reDownloadIngSelectIndex = 0;
+    
+    for (uploadFileDataModel*addModel in Arr) {
+        
+        BOOL needAddModel = YES;
+        
+        for (int i=0;i< _downLoadFileModelDataArr.count;i++)
+        {
+            couldPhoneFileModel*preModel = _downLoadFileModelDataArr[i];
+            
+            if(addModel.bg_id.integerValue == preModel.bg_id.integerValue)
+            {
+                needAddModel = NO;
+                
+                if(_reDownloadIngSelectIndex == 0){
+                    _reDownloadIngSelectIndex = i;
+                    
+                    if(i==0){
+                        _reDownloadIngSelectIndex = -1;
+                    }
+                }
+                
+                break;
+            }
+        }
+        
+        if(needAddModel){
+            [_downLoadFileModelDataArr addObject:addModel];
+            _reDownloadIngSelectIndex = _downLoadFileModelDataArr.count -1;
+        }
+    }
+    
+    [self beginDownloadFileFun];
+}
+
+- (void)handleDatabaseArrByDelete:(couldPhoneFileModel*)delModel
+{
+    if(_databaseArr && _databaseArr.count == 3 ){
+        
+        if(delModel.curDownloadStateType == downloadStateDone)
+        {
+            NSMutableArray *arr = _databaseArr[1];
+            [arr removeObject:delModel];
+        }
+        else if(delModel.curDownloadStateType == downloadStateFail){
+            NSMutableArray *arr = _databaseArr[2];
+            [arr removeObject:delModel];
+        }
+        else{
+            NSMutableArray *arr = _databaseArr[0];
+            [arr removeObject:delModel];
+        }
+    }
+}
+
+
+- (void)deleteDownloadFileRecordBy:(NSMutableArray *)delArr withDelCache:(BOOL)isDelCache
+{
+    //逻辑待优化
+    BOOL isSuc = false;
+    
+    BOOL isDelUploadingModel = false;
+    
+    NSMutableArray *curDelArr = [NSMutableArray arrayWithArray:delArr];
+    for (couldPhoneFileModel *couldPhoneFileMod in curDelArr) {
+        
+        NSMutableString* where = [[NSMutableString alloc] initWithString:@"where "];
+        
+        NSString *curStr =  [NSString stringWithFormat:@"%@=%@ ",bg_sqlKey(@"bg_id"),bg_sqlValue(couldPhoneFileMod.bg_id)];
+        [where appendString:curStr];
+        
+        [couldPhoneFileModel bg_deleteAsync:download_tableName where:where complete:^(BOOL isSuccess) {
+        }];
+       
+       //isSuc =  [couldPhoneFileModel bg_delete:download_tableName where:where];
+        
+        [self handleDatabaseArrByDelete:couldPhoneFileMod];
+        
+        if(couldPhoneFileMod.bg_id.integerValue == _curDownloadFileModel.bg_id.integerValue){
+            isDelUploadingModel = YES;
+            [self suspendDownloadFileFun:NO];
+        }
+
+    }
+    
+    if(isDelUploadingModel){
+        _isDownloadIngType = NO;
+        if(_downLoadFileModelDataArr > 0){
+            [self beginDownloadFileFun];
+        }
+    }
+    
+    [[NSNotificationCenter defaultCenter] postNotificationName:downloadFileRefreshNotification object:_curDownloadFileModel];
+    
+}
+@end

+ 26 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/downloadThumbnailManager.h

@@ -0,0 +1,26 @@
+//
+//  downloadThumbnailManager.h
+//  隐私保护
+//
+//  Created by xd h on 2024/1/8.
+//
+
+#import <Foundation/Foundation.h>
+//#import "couldPhoneFileModel.h"
+#import "couldPhoneFileListModel.h"
+
+#define downloadThumbnail_tableName @"downloadThumbnail_tableName"
+//[[NSString alloc] initWithFormat:@"downloadThumbnail_tableName_%@",[connectDeviceManager shareInstance].DeviceThirdIdMod.data.sn]
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface downloadThumbnailManager : NSObject
++(downloadThumbnailManager *)shareInstance;
+
+@property(nonatomic,strong)NSMutableArray *totalTaskArr;
+@property(nonatomic,strong)couldPhoneFileModel *curDownloadFileModel;
+
+- (void)handlToDownloadThumbnailWith:(NSArray*)Arr;
+@end
+
+NS_ASSUME_NONNULL_END

+ 113 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/downloadThumbnailManager.m

@@ -0,0 +1,113 @@
+//
+//  downloadThumbnailManager.m
+//  隐私保护
+//
+//  Created by xd h on 2024/1/8.
+//
+
+#import "downloadThumbnailManager.h"
+
+@implementation downloadThumbnailManager
+static downloadThumbnailManager * cur_downloadFileShareInstance = nil;
++(downloadThumbnailManager *)shareInstance;
+{
+    static dispatch_once_t onceToken;
+    
+    dispatch_once(&onceToken, ^{
+        cur_downloadFileShareInstance = [[downloadThumbnailManager alloc] init];
+        
+    });
+    
+    return cur_downloadFileShareInstance;
+}
+
+- (id)init
+{
+    self = [super init];
+    
+    if (self) {
+        //[self initManager];
+    }
+    
+    return self;
+}
+
+- (void)handlToDownloadThumbnailWith:(NSArray*)Arr
+{
+    KWeakSelf
+    //dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
+        [couldPhoneFileModel bg_findAsync:downloadThumbnail_tableName limit:0 orderBy:nil desc:NO complete:^(NSArray * _Nullable array) {
+            [weakSelf checkTaskRepeatWithHadTask:array withNewTask:Arr];
+        }];
+    //});
+}
+
+-(void)checkTaskRepeatWithHadTask:(NSArray*)hadTaskArr withNewTask:(NSArray*)newTaskArr
+{
+    NSMutableArray *curTaskArr = [NSMutableArray arrayWithArray:hadTaskArr];
+    
+    //for (couldPhoneFileModel *addModel in newTask)
+    
+    //倒序遍历
+    [newTaskArr enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
+        //NSLog(@"%ld----",idx);
+        
+        couldPhoneFileModel *addModel = newTaskArr[idx];
+        addModel.bg_tableName = downloadThumbnail_tableName;
+        
+        NSString *newFileName =  [addModel getFileNameFun];
+        BOOL isNeedAdd = YES;
+        
+        for (couldPhoneFileModel *hadModel in hadTaskArr) {
+            NSString *hadFileName =  [addModel getFileNameFun];
+            
+            if([newFileName isEqualToString:hadFileName]){
+                isNeedAdd = NO;
+                break;
+            }
+        }
+        
+        [curTaskArr addObject:addModel];
+    }];
+   
+    
+    KWeakSelf
+    [couldPhoneFileModel bg_saveOrUpdateArrayAsync:curTaskArr complete:^(BOOL isSuccess) {
+        [weakSelf planToDownloadThumbnailFun];
+    }];
+}
+
+- (void)planToDownloadThumbnailFun
+{
+    KWeakSelf
+    [couldPhoneFileModel bg_findAsync:downloadThumbnail_tableName limit:0 orderBy:nil desc:NO complete:^(NSArray * _Nullable array) {
+        [weakSelf checkCouldPhoneFileModelTaskStateBy:array];
+    }];
+}
+
+- (void)checkCouldPhoneFileModelTaskStateBy:(NSArray*)array
+{
+    NSMutableArray *taskArr = [NSMutableArray new];
+    
+    for (couldPhoneFileModel*curModel in array) {
+        if(curModel.curDownloadStateType != downloadStateDone){
+            [taskArr addObject:curModel];
+        }
+    }
+    
+    _totalTaskArr = taskArr;
+}
+
+- (void)beginDownloadThumbnailFun
+{
+    if (_totalTaskArr.count >0) {
+        _curDownloadFileModel = _totalTaskArr.firstObject;
+    }
+    else{
+        return;
+    }
+    
+    [[NSNotificationCenter defaultCenter] postNotificationName:downloadThumbnailBeginNotification object:_curDownloadFileModel];
+}
+
+@end

+ 105 - 115
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/uploadFileManager.m

@@ -7,6 +7,7 @@
 
 #import "uploadFileManager.h"
 #import <AssetsLibrary/AssetsLibrary.h>
+#import "photosBackupsTaskModel.h"
 
 @implementation uploadFileManager
 static uploadFileManager * cur_uploadFileShareInstance = nil;
@@ -57,16 +58,12 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
                     
                     //图片 和视频 还原
                     if(curModel.curUploadFileType == uploadFileTypeImage){
-//                        NSString*pathStr = [cachesFileManager getFilePathWithName:curModel.filename type:uploadFileTypeImage];
-//                        curModel.imageData = [NSData dataWithContentsOfFile:pathStr];
+
                     }
                     else if(curModel.curUploadFileType == uploadFileTypeVideo){
-//                        NSString*pathStr = [cachesFileManager getFilePathWithName:curModel.videoFirstImageName type:uploadFileTypeImage];
-//                        curModel.imageData = [NSData dataWithContentsOfFile:pathStr];
-                        
+
                         if(curModel.curUploadStateType != uploadStateDone){
-                            //NSString*videoPathStr = [cachesFileManager getFilePathWithName:curModel.filename type:uploadFileTypeVideo];
-                            //curModel.videoData = [NSData dataWithContentsOfFile:videoPathStr];
+                    
                         }
                     }
                     
@@ -113,8 +110,9 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
     
     self.curUploadModelNumbers = indexPathsForSelectedItems.count;
     
-    NSLock *lock = [NSLock new];
+    NSMutableArray *newUploadTaskArr = [NSMutableArray new];
     
+    NSLock *lock = [NSLock new];
     
     for (TZAssetModel * model in indexPathsForSelectedItems) {
         uploadFileDataModel * curModel = [uploadFileDataModel new];
@@ -187,25 +185,27 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
            
         }
         
-        
-        //[_fileModelDataArr addObject:curModel];
-        
         //保存到数据库
         curModel.bg_tableName = upLoadFile_image_tableName;
-        
-        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
-            [curModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
-                //HLog(@"%@ 写入 %@", curModel.filename, isSuccess ? @"成功":@"失败");
-            }];
-        });
+        [newUploadTaskArr addObject:curModel];
         
     }
     
     KWeakSelf
-    [self getDataInDatabaseFun:YES complete:^(NSMutableArray * _Nonnull Arr) {
-        complete(Arr);
-        [weakSelf handleUploadFileModelBg_idFun:Arr];
-    }];
+    if(newUploadTaskArr.count == 0){
+        [self getDataInDatabaseFun:YES complete:^(NSMutableArray * _Nonnull Arr) {
+            complete(Arr);
+            [weakSelf handleUploadFileModelBg_idFun:Arr];
+        }];
+    }
+    else{
+        [uploadFileDataModel bg_saveOrUpdateArrayAsync:newUploadTaskArr complete:^(BOOL isSuccess) {
+            [weakSelf getDataInDatabaseFun:YES complete:^(NSMutableArray * _Nonnull Arr) {
+                complete(Arr);
+                [weakSelf handleUploadFileModelBg_idFun:Arr];
+            }];
+        }];
+    }
 }
 
 #pragma mark 处理当前的model 加上bg_id
@@ -215,30 +215,7 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
         return;
     }
     
-    NSMutableArray *curArr = totalArr[0];
-    
-    //for (int i=0; i<_curUploadModelNumbers; i++)
-    NSLock *lock = [NSLock new];
-    [lock lock];
-    [_fileModelDataArr removeAllObjects];
-    for (int i=0; i<curArr.count; i++)
-    {
-       uploadFileDataModel *bg_mod  = curArr[i];
-       [_fileModelDataArr addObject:bg_mod];
-    }
-    [lock unlock];
-    
-//    for (int i=0; i<_fileModelDataArr.count; i++) {
-//       uploadFileDataModel *bg_mod  = _fileModelDataArr[i];
-//
-//       for (uploadFileDataModel *data_mod in curArr) {
-//           if([data_mod.filename isEqualToString:bg_mod.filename]){
-//               bg_mod.bg_id = data_mod.bg_id;
-//               //HLog(@"bg_id:%@",data_mod.bg_id);
-//               break;
-//           }
-//       }
-//   }
+    _fileModelDataArr = totalArr[0];
     
     [self beginUploadFileFun];
 }
@@ -387,72 +364,78 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
 //修改文件上传的状态
 - (void)changeUploadFileState:(uploadStateType)curUploadStateType withDidUploadBytes:(long)didUpLoadBytes withModel:(uploadFileDataModel*)model  complete:(custom_complete_B)complete
 {
-    if(model.bg_id.integerValue == _curUploadFileDataModel.bg_id.integerValue){
-        _curUploadFileDataModel.curUploadStateType = curUploadStateType;
-        _curUploadFileDataModel.didUploadBytes = didUpLoadBytes;
+    if(model.bg_id.integerValue != _curUploadFileDataModel.bg_id.integerValue){
+        return;
     }
-    model.curUploadStateType = curUploadStateType;
-    model.didUploadBytes = didUpLoadBytes;
     
+    _curUploadFileDataModel.curUploadStateType = curUploadStateType;
+    _curUploadFileDataModel.didUploadBytes = didUpLoadBytes;
     
-    if(!_isSuspendType || curUploadStateType == uploadStateSuspend){
-        [[NSNotificationCenter defaultCenter] postNotificationName:uploadFileRefreshNotification object:model];
+    if(curUploadStateType == uploadStateDone){
+        _curUploadFileDataModel.videoData = [NSData new];
+        
+        if(_curUploadFileDataModel.curUploadFileType == uploadFileTypeVideo){
+            [cachesFileManager removeItemAtPath:_curUploadFileDataModel.filename type:uploadFileTypeVideo error:nil];
+        }
+        
+        [self handleDatabaseArrByDelete:_curUploadFileDataModel];
+        [self handleDatabaseArrByInDone:_curUploadFileDataModel];
     }
-    
-    if(curUploadStateType == uploadStateUploading){
-        return;
+    else if(curUploadStateType == uploadStateFail){
+        [self handleDatabaseArrByDelete:_curUploadFileDataModel];
+        [self handleDatabaseArrByInFail:_curUploadFileDataModel];
     }
-   
-    
-    //NSNumber * numberUploadState = nil;
-    NSString* where = nil;
-    
-//    if(curUploadStateType == uploadStateDone)
-//    {//只有上传中的才可能是完成的
-//        numberUploadState =  [NSNumber numberWithInt:uploadStateUploading];
-//        where = [NSString stringWithFormat:@"where %@=%@ and %@=%@ ",bg_sqlKey(@"filename"),bg_sqlValue(_curUploadFileDataModel.filename),bg_sqlKey(@"curUploadStateType"),bg_sqlValue(numberUploadState)];
-//    }
-//    else
-//    {//查找非上传完成的
-//        numberUploadState =  [NSNumber numberWithInt:uploadStateDone];
-//        where = [NSString stringWithFormat:@"where %@=%@ and %@!=%@ ",bg_sqlKey(@"filename"),bg_sqlValue(_curUploadFileDataModel.filename),bg_sqlKey(@"curUploadStateType"),bg_sqlValue(numberUploadState)];
-//    }
+
+    [_curUploadFileDataModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
+        //HLog(@"%@ 写入 %@", model.filename, isSuccess ? @"成功":@"失败");
+    }];
+        
     
-    where = [NSString stringWithFormat:@"where %@=%@ ",bg_sqlKey(@"bg_id"),bg_sqlValue(model.bg_id)];
-    //HLog(@"ffff:%@",_curUploadFileDataModel.bg_id);
+    if(!_isSuspendType || curUploadStateType == uploadStateSuspend){
+        [[NSNotificationCenter defaultCenter] postNotificationName:uploadFileRefreshNotification object:model];
+    }
     
-    KWeakSelf
-    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
-            [uploadFileDataModel bg_findAsync:upLoadFile_image_tableName where:where complete:^(NSArray * _Nullable array) {
-                for (uploadFileDataModel * curModel in array) {
-                    curModel.curUploadStateType = curUploadStateType;
-                    curModel.didUploadBytes = didUpLoadBytes;
-                    
-                    if(curUploadStateType == uploadStateDone){
-                        curModel.videoData = [NSData new];
-                        
-                        if(curModel.curUploadFileType == uploadFileTypeVideo){
-                            [cachesFileManager removeItemAtPath:curModel.filename type:uploadFileTypeVideo error:nil];
-                        }
-                        
-                        [weakSelf handleDatabaseArrByDelete:curModel];
-                        [weakSelf handleDatabaseArrByInDone:curModel];
-                    }
-                    else if(curUploadStateType == uploadStateFail){
-                        [weakSelf handleDatabaseArrByDelete:curModel];
-                        [weakSelf handleDatabaseArrByInFail:curModel];
-                    }
-                    
-                    [curModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
-                        //HLog(@"%@ 写入 %@", model.filename, isSuccess ? @"成功":@"失败");
-                    }];
-                    
-                }
-                
-                complete(YES);
-            }];
-        });
+    complete(YES);
     
+    return;
+
+//    NSString* where = nil;
+//
+//    where = [NSString stringWithFormat:@"where %@=%@ ",bg_sqlKey(@"bg_id"),bg_sqlValue(model.bg_id)];
+//    //HLog(@"ffff:%@",_curUploadFileDataModel.bg_id);
+//
+//    KWeakSelf
+//    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
+//            [uploadFileDataModel bg_findAsync:upLoadFile_image_tableName where:where complete:^(NSArray * _Nullable array) {
+//                for (uploadFileDataModel * curModel in array) {
+//                    curModel.curUploadStateType = curUploadStateType;
+//                    curModel.didUploadBytes = didUpLoadBytes;
+//
+//                    if(curUploadStateType == uploadStateDone){
+//                        curModel.videoData = [NSData new];
+//
+//                        if(curModel.curUploadFileType == uploadFileTypeVideo){
+//                            [cachesFileManager removeItemAtPath:curModel.filename type:uploadFileTypeVideo error:nil];
+//                        }
+//
+//                        [weakSelf handleDatabaseArrByDelete:curModel];
+//                        [weakSelf handleDatabaseArrByInDone:curModel];
+//                    }
+//                    else if(curUploadStateType == uploadStateFail){
+//                        [weakSelf handleDatabaseArrByDelete:curModel];
+//                        [weakSelf handleDatabaseArrByInFail:curModel];
+//                    }
+//
+//                    [curModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
+//                        //HLog(@"%@ 写入 %@", model.filename, isSuccess ? @"成功":@"失败");
+//                    }];
+//
+//                }
+//
+//                complete(YES);
+//            }];
+//        });
+//
 
 }
 
@@ -460,7 +443,20 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
 - (void)handleDatabaseArrByDelete:(uploadFileDataModel*)delModel
 {
     if(_databaseArr && _databaseArr.count == 3 ){
-        NSMutableArray *uploadingArr = _databaseArr[0];
+        
+        NSMutableArray *uploadingArr = nil;
+        
+        if(delModel.curUploadStateType == uploadStateUploading
+           ||delModel.curUploadStateType == uploadStateSuspend){
+            uploadingArr = _databaseArr[0];
+        }
+        else if(delModel.curUploadStateType == uploadStateDone)
+        {
+            uploadingArr = _databaseArr[1];
+        }
+        else{
+            uploadingArr = _databaseArr[2];
+        }
         
         for (uploadFileDataModel *baseUploadFileDataMod in uploadingArr) {
             if(delModel.bg_id.integerValue == baseUploadFileDataMod.bg_id.integerValue){
@@ -475,7 +471,7 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
 {
     if(_databaseArr && _databaseArr.count == 3 ){
         NSMutableArray *uploadDoneArr = _databaseArr[1];
-        [uploadDoneArr addObject:uploadmodel];
+        [uploadDoneArr insertObject:uploadmodel atIndex:0];
     }
 }
 
@@ -483,7 +479,7 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
 {
     if(_databaseArr && _databaseArr.count == 3 ){
         NSMutableArray *uploadFailArr = _databaseArr[2];
-        [uploadFailArr addObject:uploadmodel];
+        [uploadFailArr insertObject:uploadmodel atIndex:0];
     }
 }
 
@@ -607,6 +603,7 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
         isSuc = [uploadFileDataModel bg_delete:upLoadFile_image_tableName where:where];
         
         [self handleDatabaseArrByDelete:uploadFileDataMod];
+
         //删除本地图片
         if(isSuc && isDelCache){
             //判断是否可以删除本地缓存
@@ -686,15 +683,8 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
             [self beginUploadFileFun];
         }
     }
-    
-    //继续下一个
-//    if(_fileModelDataArr){
-//        [_fileModelDataArr removeObject:_curUploadFileDataModel];
-//        _isUploadIngType = NO;
-//        if(_fileModelDataArr.count >=1){
-//            [self beginUploadFileFun];
-//        }
-//    }
+        
+    [[NSNotificationCenter defaultCenter] postNotificationName:uploadFileRefreshNotification object:nil];
     
     complete(isSuc);
     

+ 4 - 1
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileRecordViewController.h

@@ -13,8 +13,11 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface uploadFileRecordViewController : BaseViewController
 //
-@property (nonatomic, assign) BOOL isNotUploadingType;//上传页面进入
+@property (nonatomic, assign) BOOL isUploadingType;//上传页面进入
 -(void)gotoUploadFile:(NSMutableArray*)indexPathsForSelectedItems;
+
+@property (nonatomic, assign) BOOL isDownloadingType;//下载页面进入
+-(void)gotoDownloadFile:(NSMutableArray*)selectedItems;
 @end
 
 NS_ASSUME_NONNULL_END

+ 317 - 312
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileRecordViewController.m

@@ -15,22 +15,25 @@
 #import "uploadFileRecordTableView.h"
 #import "uploadFileRecordTableViewHeadView.h"
 #import "ComontAlretViewController.h"
+#import "backupsFilerecordTableView.h"
+#import "backupsFileManager.h"
+#import "photosBackupsTaskModel.h"
+#import "downloadManager.h"
+#import "downloadFileRecordTableView.h"
 
 @interface uploadFileRecordViewController ()<UIScrollViewDelegate>
 
 //选中的项
 @property (nonatomic, strong) NSMutableArray *indexPathsForSelectedItems;
 @property (nonatomic, strong) uploadFileRecordheadView *uploadFileRecordheadV;
-//@property (nonatomic, strong) uploadFileRecordBodyView *uploadFileRecordBodyV;
 
 @property (nonatomic, strong) uploadFileRecordBgScorllView *uploadFileRecordBgScorllV;
 @property (nonatomic, strong) uploadFileRecordTableView *leftTableView;
-@property (nonatomic, strong) uploadFileRecordTableView *midTableView;
-@property (nonatomic, strong) uploadFileRecordTableView *rightTableView;
+@property (nonatomic, strong) downloadFileRecordTableView *midTableView;
+@property (nonatomic, strong) backupsFilerecordTableView *rightTableView;
 
-@property (nonatomic,strong) uploadFileRecordTableViewHeadView *leftHeadView;
-@property (nonatomic,strong) uploadFileRecordTableViewHeadView *midHeadView;
-@property (nonatomic,strong) uploadFileRecordTableViewHeadView *rightHeadView;
+//@property (nonatomic,strong) uploadFileRecordTableViewHeadView *leftHeadView;
+//@property (nonatomic,strong) uploadFileRecordTableViewHeadView *midHeadView;
 
 
 //@property (nonatomic, strong) NSMutableArray *allDataArr;
@@ -52,29 +55,55 @@
     
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(uploadFileRefreshFun:)  name:uploadFileRefreshNotification  object:nil];
     
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(uploadFileDeteleFun:)  name:uploadFileDeteleNotification  object:nil];
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(backupsFileRefreshFun:)  name:backupsFileRefreshNotification  object:nil];
+    
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(downloadFileRefreshFun:)  name:downloadFileRefreshNotification  object:nil];
     
     [self.view setBackgroundColor:[UIColor whiteColor]];
     
-    self.titleLabel.text = NSLocalizedString(@"my_set_no_File_upload_record",nil) ;
+    self.titleLabel.text = NSLocalizedString(@"my_set_no_File_Transfer_List",nil) ;
     
     [self.toolBar setHidden:YES];
     [self.navigationBar setHidden:YES];
     [self.navBarBGView setHidden:NO];
     self.navBarBGView.backgroundColor = [UIColor whiteColor];
     
-    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
-        [self initbaseUIFun];
-        [self getDataInDatabaseFun];
-    });
+    [self initbaseUIFun];
 }
 
 - (void)viewWillAppear:(BOOL)animated
 {
     [super viewWillAppear:animated];
     
+    [self getAllDataFun];
 }
 
+#pragma mark 获取数据
+- (void)getAllDataFun
+{
+    if(!_isUploadingType){
+        [self getUploadDataInDatabaseFun];
+    }
+    
+    if(!_isDownloadingType){
+        [self getDownloadDataInDatabaseFun:YES];
+    }
+    else{
+        KWeakSelf
+        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+            [weakSelf delayChangeUIFun];
+        });
+    }
+    
+    [self getBackupsDatabaseFun];
+}
+
+- (void)delayChangeUIFun
+{
+    _selectIndex = 2;
+    [self didClickHeadFun:_selectIndex];
+    [self didScorllBodyFun:_selectIndex];
+}
 
 #pragma mark UI
 - (void)initbaseUIFun
@@ -95,9 +124,8 @@
         [weakSelf didClickHeadFun: index];
     };
     
-//    CGRect rrr2= self.navBarBGView.frame;
-//    CGRect rrr= _uploadFileRecordheadV.frame;
-    CGFloat curHeight = SCREEN_H - CGRectGetMaxY(self.navBarBGView.frame) - 50 - 15;
+    //CGFloat curHeight = SCREEN_H - CGRectGetMaxY(self.navBarBGView.frame) - 50 - 15;
+    CGFloat curHeight = SCREEN_H - (H_STATE_BAR + 64.f) - 50 - 15;
     
     
     _uploadFileRecordBgScorllV= [[uploadFileRecordBgScorllView alloc] init];
@@ -125,8 +153,16 @@
     _leftTableView.didLongPressClick = ^{
         weakSelf.isEditType = YES;
     };
+    
+    _leftTableView.didClickSectionHeadViewRightButton = ^(NSInteger section) {
+        [weakSelf didClikRightButInUploadTableVieFunBy:section];
+    };
 
-    _midTableView = [[uploadFileRecordTableView alloc] init];
+    _leftTableView.didNeedRefreshGetDatabaseFun = ^{
+        [weakSelf RefreshUploadViewFun];
+    };
+    
+    _midTableView = [[downloadFileRecordTableView alloc] init];
     _midTableView.tag = 101;
     [_uploadFileRecordBgScorllV addSubview:_midTableView];
 
@@ -141,7 +177,15 @@
         weakSelf.isEditType = YES;
     };
     
-    _rightTableView = [[uploadFileRecordTableView alloc] init];
+    _midTableView.didClickSectionHeadViewRightButton = ^(NSInteger section) {
+        [weakSelf didClikRightButInDownloadTableVieFunBy:section];
+    };
+
+    _midTableView.didNeedRefreshGetDatabaseFun = ^{
+        [weakSelf getDownloadDataInDatabaseFun:NO];
+    };
+    
+    _rightTableView = [[backupsFilerecordTableView alloc] init];
     _rightTableView.tag = 102;
     [_uploadFileRecordBgScorllV addSubview:_rightTableView];
 
@@ -153,55 +197,26 @@
     }];
 
     _rightTableView.didLongPressClick = ^{
-        weakSelf.isEditType = YES;
-    };
-    
-    _rightTableView.didClickReUploadBlock = ^(uploadFileDataModel * _Nonnull model) {
-        [weakSelf didClickReUploadFun:model];
+       // weakSelf.isEditType = YES;
     };
     
+ 
     _uploadFileRecordBgScorllV.contentSize = CGSizeMake(SCREEN_W*3.0, curHeight);
     
-    _leftHeadView =  [[uploadFileRecordTableViewHeadView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, 40)];
-    _leftTableView.tableHeaderView = _leftHeadView;
-    _leftHeadView.didClickButFun = ^{
-        [weakSelf didClickAllSuspendInLoadingFun];
-    };
-    
-    _midHeadView =  [[uploadFileRecordTableViewHeadView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, 40)];
-    _midTableView.tableHeaderView = _midHeadView;
-    _midHeadView.didClickButFun = ^{
-        [weakSelf didClickClearRecordInDoneFun];
-    };
-    
-    _rightHeadView =  [[uploadFileRecordTableViewHeadView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, 40)];
-    _rightTableView.tableHeaderView = _rightHeadView;
-    _rightHeadView.didClickButFun = ^{
-        [weakSelf didClickClearRecordInFailFun];
-    };
-    
-    
-    
-    
-//    _uploadFileRecordBodyV = [[uploadFileRecordBodyView alloc] init];
-//
-//    [self.view addSubview:_uploadFileRecordBodyV];
-//
-//    [_uploadFileRecordBodyV mas_makeConstraints:^(MASConstraintMaker *make) {
-//        make.left.mas_equalTo(0);
-//        make.right.mas_equalTo(0);
-//        make.top.mas_equalTo(_uploadFileRecordheadV.mas_bottom).offset(0.0);
-//        make.bottom.mas_equalTo(0);
-//    }];
-//
-    
-//    _uploadFileRecordBodyV.didScrollFun = ^(NSInteger index) {
-//        [weakSelf didScorllBodyFun:index];
+//    _leftHeadView =  [[uploadFileRecordTableViewHeadView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, 40)];
+//    _leftTableView.tableHeaderView = _leftHeadView;
+//    _leftHeadView.didClickButFun = ^{
+//        [weakSelf didClickAllSuspendInLoadingFun];
 //    };
 //
-//    _uploadFileRecordBodyV.didLongPressClick = ^{
-//        weakSelf.isEditType = YES;
+//    _midHeadView =  [[uploadFileRecordTableViewHeadView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, 40)];
+//    _midTableView.tableHeaderView = _midHeadView;
+//    _midHeadView.didClickButFun = ^{
+//        [weakSelf didClickClearRecordInDoneFun];
 //    };
+    
+
+
   
     _leftButton = [[UIButton alloc] init];
     [_leftButton setTitleColor:[UIColor hwColor:@"#01B7EA" alpha:1.0] forState:UIControlStateNormal];
@@ -258,16 +273,16 @@
 #pragma mark 底部删除点击
 -(void)didClickBottomDeleteFun
 {
-    NSMutableArray *selectModelArr = nil;
+    NSMutableArray *selectModelArr ;//= _leftTableView.selectModelArr;
+    
     if(_selectIndex == 1){
         selectModelArr = _leftTableView.selectModelArr;
     }
     else if(_selectIndex == 2){
         selectModelArr = _midTableView.selectModelArr;
-       // [_midTableView deleteModelOneByOneFun];
     }
     else if(_selectIndex == 3){
-        selectModelArr = _rightTableView.selectModelArr;
+        return;
     }
     
     if(!selectModelArr || selectModelArr.count== 0){
@@ -299,7 +314,7 @@
                                                                               didClickOk:^{
         [weakSelf didClickBottomDeleteFunAfterAleartFun];
     } didClickCancel:^{
-        //HLog(@"333");
+        
     }];
     nextVC.modalPresentationStyle = UIModalPresentationCustom;
   
@@ -311,6 +326,7 @@
 
 -(void)didClickBottomDeleteFunAfterAleartFun
 {
+
     if(_selectIndex == 1){
         [_leftTableView deleteModelOneByOneFun];
     }
@@ -318,7 +334,7 @@
         [_midTableView deleteModelOneByOneFun];
     }
     else if(_selectIndex == 3){
-        [_rightTableView deleteModelOneByOneFun];
+        //没有操作
     }
 }
 
@@ -338,6 +354,20 @@
     _selectIndex = index;
 }
 
+#pragma mark 1.3版本UI修改后 上传文件列表的内容点击时间
+- (void)didClikRightButInUploadTableVieFunBy:(NSInteger)section
+{
+    if(section == 0){
+        [self didClickAllSuspendInLoadingFun];
+    }
+    else if(section == 1){//成功
+        [self didClickClearRecordInDoneFun];
+    }
+    else if(section == 2){//失败
+        [self didClickClearRecordInFailFun];
+    }
+}
+
 #pragma mark  背景滚动代理
 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
 {
@@ -356,12 +386,6 @@
 {
     
     [self realGotoUploadFile:indexPathsForSelectedItems];
-//    KWeakSelf
-//    [[uploadFileManager shareInstance] getDataInDatabaseFun:YES complete:^(NSMutableArray * _Nonnull Arr) {
-//
-//        [weakSelf realGotoUploadFile:indexPathsForSelectedItems];
-//    }];
-    
 }
 
 - (void)realGotoUploadFile:(NSMutableArray *)indexPathsForSelectedItems
@@ -371,23 +395,19 @@
         //NSMutableArray *arr1 = Arr;
         //[weakSelf setRecordBodyDataFunBy:arr1];
         
-        weakSelf.leftTableView.curDataArr = Arr[0];
+        //weakSelf.leftTableView.curDataArr = Arr[0];
+        weakSelf.leftTableView.outSideDataArr = Arr;
         [weakSelf.leftTableView reloadDataFun];
         
-        weakSelf.midTableView.curDataArr = Arr[1];
-        [weakSelf.midTableView reloadDataFun];
-        
-        weakSelf.rightTableView.curDataArr = Arr[2];
-        [weakSelf.rightTableView reloadDataFun];
     }];
 }
 
 #pragma mark 读取数据库数据
-- (void)getDataInDatabaseFun
+- (void)getUploadDataInDatabaseFun
 {
     
     KWeakSelf
-    [[uploadFileManager shareInstance] getDataInDatabaseFun:_isNotUploadingType complete:^(NSMutableArray * _Nonnull Arr) {
+    [[uploadFileManager shareInstance] getDataInDatabaseFun:YES complete:^(NSMutableArray * _Nonnull Arr) {
         //[weakSelf setRecordBodyDataFunBy:Arr];
         
         if(!Arr ||Arr.count != 3){
@@ -397,118 +417,87 @@
         
         NSMutableArray *curLoadIngArr = Arr[0];
         //不是上传视频和进来的  所以上传状态(上传中和等待)改为暂停
-        if(self->_isNotUploadingType && ![uploadFileManager shareInstance].isUploadIngType){
+        if(![uploadFileManager shareInstance].isUploadIngType){
             for (uploadFileDataModel * curModel in curLoadIngArr) {
                 curModel.curUploadStateType = uploadStateSuspend;
             }
         }
         
         mainBlock(^{
-            weakSelf.leftTableView.curDataArr = curLoadIngArr;
+            weakSelf.leftTableView.outSideDataArr = Arr;
             [weakSelf.leftTableView reloadDataFun];
             
-            weakSelf.midTableView.curDataArr = Arr[1];
-            [weakSelf.midTableView reloadDataFun];
-            
-            weakSelf.rightTableView.curDataArr = Arr[2];
-            [weakSelf.rightTableView reloadDataFun];
+//            weakSelf.midTableView.curDataArr = Arr[1];
+//            [weakSelf.midTableView reloadDataFun];
             
             [weakSelf handleUploadingRightButFun];
         });
     }];
     
-    
-    
-//    _allDataArr = [NSMutableArray new];
-//
-//    KWeakSelf
-//    [uploadFileDataModel bg_findAllAsync:upLoadFile_image_tableName complete:^(NSArray * _Nullable array) {
-//        NSMutableArray *failArr = [NSMutableArray new];
-//        NSMutableArray *doneArr = [NSMutableArray new];
-//        NSMutableArray *otherArr = [NSMutableArray new];
-//
-//            for (uploadFileDataModel * curModel in array) {
-//
-//                //图片 和视频 还原
-//                if(curModel.curUploadFileType == uploadFileTypeImage){
-//                    NSString*pathStr = [cachesFileManager getFilePathWithName:curModel.filename type:uploadFileTypeImage];
-//                    curModel.imageData = [NSData dataWithContentsOfFile:pathStr];
-//                }
-//                else if(curModel.curUploadFileType == uploadFileTypeVideo){
-//                    NSString*pathStr = [cachesFileManager getFilePathWithName:curModel.videoFirstImageName type:uploadFileTypeImage];
-//                    curModel.imageData = [NSData dataWithContentsOfFile:pathStr];
-//
-//                    if(curModel.curUploadStateType != uploadStateDone){
-//                        NSString*videoPathStr = [cachesFileManager getFilePathWithName:curModel.filename type:uploadFileTypeVideo];
-//                        curModel.videoData = [NSData dataWithContentsOfFile:videoPathStr];
-//                    }
-//                }
-//
-//                if(curModel.curUploadStateType == uploadStateFail){
-//                    [failArr addObject:curModel];
-//                }
-//                else if(curModel.curUploadStateType == uploadStateDone){
-//                    [doneArr addObject:curModel];
-//                }
-//                else{
-//                    //不是上传视频和进来的  所以上传状态(上传中和等待)改为暂停
-//                    if(self->_isNotUploadingType && ![uploadFileManager shareInstance].isUploadIngType){
-//                        curModel.curUploadStateType = uploadStateSuspend;
-//                    }
-//
-//                    [otherArr addObject:curModel];
-//                }
-//            }
-//
-//        [self->_allDataArr addObject:otherArr];
-//        [self->_allDataArr addObject:doneArr];
-//        [self->_allDataArr addObject:failArr];
-//
-//        self->_uploadFileRecordBodyV.allDataArr = self->_allDataArr;
-//    }];
+}
 
+- (void)getBackupsDatabaseFun
+{
+    KWeakSelf
+    [photosBackupsTaskModel bg_findAsync:backups_photos_tableName limit:1 orderBy:nil desc:YES complete:^(NSArray * _Nullable array) {
+        mainBlock(^{
+            weakSelf.rightTableView.curDataArr = array;
+        });
+            
+    }];
 }
 
-#pragma mark 处理上传中的 全部暂停等
-- (void)handleUploadingRightButFun
+#pragma mark 读取数据库数据
+- (void)getDownloadDataInDatabaseFun:(BOOL)isRegetType
 {
-    if(_leftTableView.curDataArr.count ==0){
-        //不处理
-    }
-    else{
-        NSMutableArray *upLoadingArr = [uploadFileManager shareInstance].fileModelDataArr;
-        BOOL isUploadIngType = [uploadFileManager shareInstance].isUploadIngType;
-        
-        if(!upLoadingArr ||upLoadingArr.count == 0 || !isUploadIngType){//不是上传状态
-            _leftHeadView.rightButton.selected = YES;
-        }
-        else if(upLoadingArr.count == _leftTableView.curDataArr.count){
-            _leftHeadView.rightButton.selected = NO;
+    KWeakSelf
+    [[downloadManager shareInstance] getDataInDatabaseFun:isRegetType complete:^(NSMutableArray * _Nonnull Arr) {
+      
+        if(!Arr ||Arr.count != 3){
+            HLog(@"数据库出错\n\n\n");
+            return;
         }
-        else{
-            _leftHeadView.rightButton.selected = YES;
+        
+        NSMutableArray *curLoadIngArr = Arr[0];
+        //不是上传视频和进来的  所以上传状态(上传中和等待)改为暂停
+        if(![downloadManager shareInstance].isDownloadIngType){
+            for (couldPhoneFileModel * curModel in curLoadIngArr) {
+                curModel.curDownloadStateType = downloadStateSuspend;
+            }
         }
-    }
+        
+        mainBlock(^{
+            weakSelf.midTableView.outSideDataArr = Arr;
+            [weakSelf.midTableView reloadDataFun];
+        });
+    }];
+    
 }
 
 
-#pragma mark 给RecordBody 设置数据
-//- (void)setRecordBodyDataFunBy:(NSMutableArray*)arr
-//{
-//    if(!arr || ![arr isKindOfClass:[NSMutableArray class]] || arr.count !=3){
-//        return;
+#pragma mark 处理上传中的 全部暂停等
+- (void)handleUploadingRightButFun
+{
+//    if(_leftTableView.curDataArr.count ==0){
+//        //不处理
 //    }
-//    //不是上传视频和进来的  所以上传状态(上传中和等待)改为暂停
-//    if(self->_isNotUploadingType && ![uploadFileManager shareInstance].isUploadIngType){
-//        NSMutableArray *otherArr = arr[0];
-//        for (uploadFileDataModel * curModel in otherArr) {
-//            curModel.curUploadStateType = uploadStateSuspend;
-//        }
+//    else{
+//        NSMutableArray *upLoadingArr = [uploadFileManager shareInstance].fileModelDataArr;
+//        BOOL isUploadIngType = [uploadFileManager shareInstance].isUploadIngType;
 //
+//        if(!upLoadingArr ||upLoadingArr.count == 0 || !isUploadIngType){//不是上传状态
+//            _leftHeadView.rightButton.selected = YES;
+//        }
+//        else if(upLoadingArr.count == _leftTableView.curDataArr.count){
+//            _leftHeadView.rightButton.selected = NO;
+//        }
+//        else{
+//            _leftHeadView.rightButton.selected = YES;
+//        }
 //    }
-//
-//    //_uploadFileRecordBodyV.allDataArr = arr;
-//}
+}
+
+
 
 - (void)uploadFileRefreshFun:(NSNotification*)not
 {
@@ -517,134 +506,34 @@
     
     uploadFileDataMod.curTimeInterval = [[NSDate date] timeIntervalSince1970];
     
-    //UI和数据还没准备好
-    if(!_leftTableView
-       && (uploadFileDataMod.curUploadStateType == uploadStateFail
-           ||uploadFileDataMod.curUploadStateType == uploadStateDone)){
-        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
-            [[NSNotificationCenter defaultCenter] postNotificationName:uploadFileRefreshNotification object:uploadFileDataMod];
-        });
-        
-        return;
+    if(uploadFileDataMod.curUploadStateType == uploadStateDone){
+        [self RefreshUploadViewFun];
     }
-    
-    if(_leftTableView && [uploadFileDataMod isKindOfClass:[uploadFileDataModel class]] ){
-        
-        NSMutableArray *curArr = _leftTableView.curDataArr;
-        
-        NSInteger index = 0;
-        for (uploadFileDataModel*mod in curArr) {
-            //HLog(@"%@ bg_id:%@ ?=? %@",mod.filename,mod.bg_id,uploadFileDataMod.bg_id);
-            
-            if(mod.bg_id.integerValue == uploadFileDataMod.bg_id.integerValue){
-                
-                if(uploadFileDataMod.curUploadStateType == uploadStateDone){
-                    [curArr removeObject:mod];
-                    
-//                    NSMutableArray *doneArr = _midTableView.curDataArr;
-//                    [doneArr insertObject:uploadFileDataMod atIndex:0];
-                    
-                    //全部上传了
-                    if(curArr.count == 0){
-                        
-                    }
-                }
-                else if(uploadFileDataMod.curUploadStateType == uploadStateFail){
-                    [curArr removeObject:mod];
-                    
-//                    NSMutableArray *failArr = _rightTableView.curDataArr;
-//                    [failArr insertObject:uploadFileDataMod atIndex:0];
-                }
-                else{
-                    [curArr replaceObjectAtIndex:index withObject:uploadFileDataMod];
-                }
-                
-                break;
-            }
-            
-            index++;
-        }
-        
-        //精准刷新
-        if(uploadFileDataMod.curUploadStateType == uploadStateDone){
-            //[self.uploadFileRecordBodyV RefreshDataWithUploadingArr:_allDataArr[0] withDoneArr:_allDataArr[1] withfailArr:nil];
-            
-            [self.leftTableView reloadDataFun];
-            
-            [self.midTableView reloadDataFun];
-        }
-        else if(uploadFileDataMod.curUploadStateType == uploadStateFail){
-            //[self.uploadFileRecordBodyV RefreshDataWithUploadingArr:_allDataArr[0] withDoneArr:nil withfailArr:_allDataArr[2]];
-            
-            [self.leftTableView reloadDataFun];
-            
-            [self.rightTableView reloadDataFun];
-        }
-        else{
-            //[self.uploadFileRecordBodyV RefreshDataWithUploadingArr:_allDataArr[0] withDoneArr:nil withfailArr:nil];
-            
-            [self.leftTableView reloadDataFun];
-            
-        }
+    else{
+        [_leftTableView RefreshAllDataFun];
     }
-    
 }
 
-- (void)uploadFileDeteleFun:(NSNotification*)not
+#pragma mark 那上传那边的数据来更新页面
+- (void)RefreshUploadViewFun
 {
-    uploadFileDataModel *uploadFileDataMod = [not object];
-    //HLog(@"%@",uploadFileDataMod);
-    
-    //UI和数据还没准备好
-    if(!_leftTableView){
-        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
-            [[NSNotificationCenter defaultCenter] postNotificationName:uploadFileDeteleNotification object:uploadFileDataMod];
-        });
-        
-        return;
-    }
-    
     KWeakSelf
     [[uploadFileManager shareInstance] getDataInDatabaseFun:NO complete:^(NSMutableArray * _Nonnull Arr) {
+        //[weakSelf setRecordBodyDataFunBy:Arr];
         
         if(!Arr ||Arr.count != 3){
             HLog(@"数据库出错\n\n\n");
             return;
         }
         
-        NSMutableArray *curLoadIngArr = Arr[0];
-        
         mainBlock(^{
-            weakSelf.leftTableView.curDataArr = curLoadIngArr;
-            [weakSelf.leftTableView reloadDataFun];
+            weakSelf.leftTableView.outSideDataArr = Arr;
+            [weakSelf.leftTableView RefreshAllDataFun];
+
         });
     }];
-    
-//    if([uploadFileDataMod isKindOfClass:[uploadFileDataModel class]] ){
-//
-//        NSMutableArray *curArr = _leftTableView.curDataArr;
-//
-//        NSInteger index = 0;
-//        for (uploadFileDataModel*mod in curArr) {
-//            HLog(@"bg_id:%@ ?=? %@",mod.bg_id,uploadFileDataMod.bg_id);
-//
-//            if(mod.bg_id.integerValue == uploadFileDataMod.bg_id.integerValue){
-//                [curArr removeObject:mod];
-//                break;
-//            }
-//
-//            index++;
-//        }
-//
-//        //精准刷新
-//        //[self.uploadFileRecordBodyV RefreshDataWithUploadingArr:_allDataArr[0] withDoneArr:nil withfailArr:nil];
-//        [self.leftTableView reloadDataFun];
-//    }
-    
 }
 
-
-
 #pragma mark 按钮点击
 - (void)didClickButFun:(UIButton*)but
 {
@@ -660,7 +549,7 @@
             self.midTableView.isEditType = NO;
         }
         else if(_selectIndex == 3){
-            self.rightTableView.isEditType = NO;
+            //self.rightTableView.isEditType = NO;
         }
         
     }
@@ -674,7 +563,7 @@
             self.midTableView.isSelectAllType = YES;
         }
         else if(_selectIndex == 3){
-            self.rightTableView.isSelectAllType = YES;
+            //self.rightTableView.isSelectAllType = YES;
         }
     }
 }
@@ -691,7 +580,7 @@
     _uploadFileRecordheadV.userInteractionEnabled = !isEditType;
     _uploadFileRecordBgScorllV.scrollEnabled = !isEditType;
     
-    _leftHeadView.rightButton.userInteractionEnabled = !isEditType;
+    //_leftHeadView.rightButton.userInteractionEnabled = !isEditType;
     
     if(_isEditType){
        
@@ -763,13 +652,13 @@
 #pragma mark 点击上传中的全部暂停
 - (void)didClickAllSuspendInLoadingFun
 {
-    _leftHeadView.rightButton.selected = !_leftHeadView.rightButton.selected;
+    _leftTableView.uploadingHeadView.rightButton.selected = !_leftTableView.uploadingHeadView.rightButton.selected;
     
-    if(_leftHeadView.rightButton.selected){
+    if(_leftTableView.uploadingHeadView.rightButton.selected){
         [[uploadFileManager shareInstance] suspendUploadFileFun:YES];
     }
     else{
-        NSMutableArray *leftArr = _leftTableView.curDataArr;
+        NSMutableArray *leftArr = _leftTableView.uploadingArr;
         [[uploadFileManager shareInstance] reUploadFileFunBy:leftArr];
     }
 }
@@ -798,12 +687,12 @@
 
 - (void)ClearAllRecordInDoneFun
 {
-    [[uploadFileManager shareInstance] deleteUploadFileRecordBy:_midTableView.curDataArr withDelCache:YES complete:^(BOOL isSuccess) {
+    [[uploadFileManager shareInstance] deleteUploadFileRecordBy:_leftTableView.uploadDoneArr withDelCache:YES complete:^(BOOL isSuccess) {
         HLog(@"isSuccess:%d",isSuccess);
-        
+
         if(isSuccess){
-            [self->_midTableView.curDataArr removeAllObjects];
-            [self->_midTableView reloadDataFun];
+            [self->_leftTableView.uploadDoneArr removeAllObjects];
+            [self->_leftTableView reloadDataFun];
         }
     }];
 }
@@ -833,40 +722,17 @@
 
 - (void)ClearAllRecordInFailFun
 {
-    [[uploadFileManager shareInstance] deleteUploadFileRecordBy:_rightTableView.curDataArr withDelCache:YES complete:^(BOOL isSuccess) {
+    [[uploadFileManager shareInstance] deleteUploadFileRecordBy:_leftTableView.uploadfailArr withDelCache:YES complete:^(BOOL isSuccess) {
         HLog(@"isSuccess:%d",isSuccess);
         
         if(isSuccess){
-            [self->_rightTableView.curDataArr removeAllObjects];
-            [self->_rightTableView reloadDataFun];
+            [self->_leftTableView.uploadfailArr removeAllObjects];
+            [self->_leftTableView reloadDataFun];
         }
     }];
 }
 
-#pragma mark 失败重传
-- (void)didClickReUploadFun:(uploadFileDataModel*)model{
-    
-    if(![model isKindOfClass:[uploadFileDataModel class]]){
-        return;
-    }
-    
-    NSMutableArray *curArr = _leftTableView.curDataArr;
-    
-    BOOL isNeedToAdd = YES;
-    
-    for (uploadFileDataModel*mod in curArr) {
-        if(mod.bg_id.integerValue == model.bg_id.integerValue){
-            isNeedToAdd = NO;
-            break;
-        }
-    }
-    
-    if(isNeedToAdd){
-        [curArr addObject:model];
-    }
-    
-    [_leftTableView reloadDataFun];
-}
+
 
 //-(void)backBtnPressed{
 //    [super backBtnPressed];
@@ -878,4 +744,143 @@
 //    _uploadFileRecordEditBottomV = nil;
 //
 //}
+
+- (void)backupsFileRefreshFun:(NSNotification*)not
+{
+    photosBackupsTaskModel *photosBackupsTaskMod = [not object];
+    //HLog(@"%@",uploadFileDataMod);
+    
+    if(photosBackupsTaskMod.didBackupsOneFileType){
+        photosBackupsTaskMod.curTimeInterval = 0;
+        photosBackupsTaskMod.preTimeInterval = 0;
+    }
+    else{
+        photosBackupsTaskMod.curTimeInterval = [[NSDate date] timeIntervalSince1970];
+    }
+   
+    _rightTableView.photosBackupsIngTaskModel = photosBackupsTaskMod;
+}
+
+-(void)gotoDownloadFile:(NSMutableArray*)selectedItems
+{
+    KWeakSelf
+    [[downloadManager shareInstance] handleCouldPhoneFileModelToDownloadFileDataFunBy:selectedItems complete:^(NSMutableArray * _Nonnull Arr) {
+        
+        if(!Arr ||Arr.count != 3){
+            HLog(@"数据库出错\n\n\n");
+            return;
+        }
+        
+        NSMutableArray *curLoadIngArr = Arr[0];
+        
+        mainBlock(^{
+            weakSelf.midTableView.outSideDataArr = Arr;
+            [weakSelf.midTableView reloadDataFun];
+            //[weakSelf handleUploadingRightButFun];
+        });
+    }];
+}
+
+- (void)downloadFileRefreshFun:(NSNotification*)not
+{
+    couldPhoneFileModel *downloadTaskMod = [not object];
+    HLog(@"hhhhhhh1 %@ didDownloadBytes:%ld",downloadTaskMod.name,downloadTaskMod.didDownloadBytes);
+    
+    downloadTaskMod.curTimeInterval = [[NSDate date] timeIntervalSince1970];
+    
+    if(downloadTaskMod.curDownloadStateType == downloadStateDone){
+        [self getDownloadDataInDatabaseFun:NO];
+    }
+    else{
+        [_midTableView RefreshAllDataFun];
+    }
+}
+
+#pragma mark 1.3版本UI修改后 下载文件列表的头部点击事件
+- (void)didClikRightButInDownloadTableVieFunBy:(NSInteger)section
+{
+    if(section == 0){
+        [self didClickAllSuspendInDownLoadingFun];
+    }
+    else if(section == 1){//成功
+        [self didClickClearDownLoadRecordInDoneFun];
+    }
+    else if(section == 2){//失败
+        [self didClickClearRecordInDownLoadFailFun];
+    }
+}
+
+#pragma mark 点击下载中的全部暂停
+- (void)didClickAllSuspendInDownLoadingFun
+{
+    _midTableView.downloadingHeadView.rightButton.selected = !_midTableView.downloadingHeadView.rightButton.selected;
+    
+    if(_midTableView.downloadingHeadView.rightButton.selected){
+        [[downloadManager shareInstance] suspendDownloadFileFun:YES];
+    }
+    else{
+        NSMutableArray *leftArr = _midTableView.downloadingArr;
+        [[downloadManager shareInstance] reDownloadFileFunBy:leftArr];
+    }
+}
+
+
+#pragma mark 点击下载成功的清空记录
+- (void)didClickClearDownLoadRecordInDoneFun
+{
+    /*弹窗提示二次确认*/
+    KWeakSelf
+    ComontAlretViewController *nextVC = [[ComontAlretViewController alloc] initWithTiTle:NSLocalizedString(@"File_upload_Record_clear_Tip_title",nil)
+                                                                                     msg:NSLocalizedString(@"File_upload_Record_clear_done_Tip_msg",nil)
+                                                                                imageStr:nil
+                                                                             cancelTitle:NSLocalizedString(@"other_cancel",nil)
+                                                                                 okTitle:NSLocalizedString(@"other_comment_ok",nil) isOkBtnHighlight:YES
+                                                                              didClickOk:^{
+        [weakSelf ClearAllRecordInDownloadDoneFun];
+    } didClickCancel:^{
+        
+    }];
+    nextVC.modalPresentationStyle = UIModalPresentationCustom;
+  
+    [self presentViewController:nextVC animated:YES completion:^{
+        nextVC.view.superview.backgroundColor = [UIColor clearColor];
+    }];
+
+}
+
+- (void)ClearAllRecordInDownloadDoneFun
+{
+    [[downloadManager shareInstance] deleteDownloadFileRecordBy:_midTableView.downloadDoneArr withDelCache:YES];
+}
+
+
+#pragma mark 点击上传失败的清空记录
+- (void)didClickClearRecordInDownLoadFailFun
+{
+    /*弹窗提示二次确认*/
+    KWeakSelf
+    ComontAlretViewController *nextVC = [[ComontAlretViewController alloc] initWithTiTle:NSLocalizedString(@"File_upload_Record_clear_Tip_title",nil)
+                                                                                     msg:NSLocalizedString(@"File_upload_Record_clear_fail_Tip_msg",nil)
+                                                                                imageStr:nil
+                                                                             cancelTitle:NSLocalizedString(@"other_cancel",nil)
+                                                                                 okTitle:NSLocalizedString(@"other_comment_ok",nil) isOkBtnHighlight:YES
+                                                                              didClickOk:^{
+        [weakSelf ClearAllRecordInDownloadFailFun];
+    } didClickCancel:^{
+        
+    }];
+    nextVC.modalPresentationStyle = UIModalPresentationCustom;
+  
+    [self presentViewController:nextVC animated:YES completion:^{
+        nextVC.view.superview.backgroundColor = [UIColor clearColor];
+    }];
+
+}
+
+- (void)ClearAllRecordInDownloadFailFun
+{
+    [[downloadManager shareInstance] deleteDownloadFileRecordBy:_midTableView.downloadfailArr withDelCache:YES];
+}
+
+
 @end

+ 24 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileView/backupsFileRecordCell.h

@@ -0,0 +1,24 @@
+//
+//  backupsFileRecordCell.h
+//  隐私保护
+//
+//  Created by xd h on 2024/1/4.
+//
+
+#import <UIKit/UIKit.h>
+#import "photosBackupsTaskModel.h"
+NS_ASSUME_NONNULL_BEGIN
+
+@interface backupsFileRecordCell : UITableViewCell
+@property(nonatomic,strong)photosBackupsTaskModel * curPhotosBackupsTaskModel;
+@property (nonatomic,assign) BOOL isEditType;
+@property (nonatomic,assign) BOOL isSelectType;
+
+@property (nonatomic,copy) void (^didLongPressClick)(void);
+//点击按钮
+@property (nonatomic,copy) void (^didClckSelectBut)(BOOL isSelect);
+//手势点击
+@property (nonatomic,copy) void (^didTapPressClick)(void);
+@end
+
+NS_ASSUME_NONNULL_END

+ 393 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileView/backupsFileRecordCell.m

@@ -0,0 +1,393 @@
+//
+//  backupsFileRecordCell.m
+//  隐私保护
+//
+//  Created by xd h on 2024/1/4.
+//
+
+#import "backupsFileRecordCell.h"
+
+#import "cachesFileManager.h"
+#import <SDWebImage/SDWebImage.h>
+
+@interface backupsFileRecordCell ()
+@property(nonatomic,strong) UIImageView *fileImageView;
+@property(nonatomic,strong) UIButton *upLoadStateButton;
+
+@property (nonatomic, strong) UIButton *selectButton;
+
+@property(nonatomic,strong) UIView *progressBgView;
+@property(nonatomic,strong) UIView *progressSelectView;
+@property(nonatomic,strong) CAGradientLayer *glayer;
+
+@property(nonatomic,strong) UILabel *fileNamelabel;
+@property(nonatomic,strong) UILabel *fileProgresslabel;
+@property(nonatomic,strong) UILabel *fileSpeedlabel;
+
+@property(nonatomic,strong) UILabel *rightTiplabel;
+
+@end
+
+@implementation backupsFileRecordCell
+
+- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
+{
+    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+    
+    if (self)
+    {
+        [self drawView];
+    }
+    
+    return self;
+}
+
+- (void)drawView
+{
+    _fileImageView = [[UIImageView alloc] init];
+    //_fileImageView.backgroundColor = [UIColor greenColor];
+    [self.contentView addSubview:_fileImageView];
+    
+    [_fileImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(15);
+        make.width.mas_equalTo(34);
+        make.height.mas_equalTo(34);
+        make.bottom.mas_equalTo(-18);
+    }];
+    
+    _upLoadStateButton = [[UIButton alloc] init];
+    //_upLoadStateButton.backgroundColor = [UIColor redColor];
+    [self.contentView addSubview:_upLoadStateButton];
+    [_upLoadStateButton addTarget:self action:@selector(tapClick:) forControlEvents:UIControlEventTouchUpInside];
+    
+    [_upLoadStateButton mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-5);
+        make.width.mas_equalTo(50);
+        make.height.mas_equalTo(50);
+        make.bottom.mas_equalTo(-18);
+    }];
+    
+    if (self.selectButton == nil) {
+        UIButton *but = [[UIButton alloc] init];
+        [but setImage:[UIImage imageNamed:@"upload_file_uncheck"] forState:UIControlStateNormal];
+        [but setImage:[UIImage imageNamed:@"upload_file_check"] forState:UIControlStateSelected];
+        [self.contentView addSubview:but];
+        [but addTarget:self action:@selector(didClickSelectButFun:) forControlEvents:UIControlEventTouchUpInside];
+        but.hidden = YES;
+        //but.backgroundColor = [UIColor greenColor];
+        //but.frame = CGRectMake([UIScreen mainScreen].bounds.size.width -10 - 25, 0, 25, 25);
+        [but mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.width.mas_equalTo(30);
+            make.height.mas_equalTo(30);
+            make.centerX.mas_equalTo(_upLoadStateButton.mas_centerX);
+            make.centerY.mas_equalTo(_upLoadStateButton.mas_centerY);
+        }];
+        
+        self.selectButton = but;
+    }
+    
+    _progressBgView = [[UIView alloc] init];
+    _progressBgView.backgroundColor = [UIColor hwColor:@"#F9F9F9" alpha:1.0];
+    _progressBgView.layer.cornerRadius = 1.5;
+    _progressBgView.layer.masksToBounds = YES;
+    [self.contentView addSubview:_progressBgView];
+    
+    [_progressBgView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(_fileImageView.mas_right).offset(10);
+        make.right.mas_equalTo(_upLoadStateButton.mas_left).offset(-10);
+        make.height.mas_equalTo(2);
+        make.centerY.mas_equalTo(0);
+    }];
+    
+    _progressSelectView = [[UIView alloc] init];
+    //_progressSelectView.backgroundColor = [UIColor hwColor:@"#F9F9F9" alpha:1.0];
+    _progressSelectView.layer.cornerRadius = 1.5;
+    _progressSelectView.layer.masksToBounds = YES;
+    [_progressBgView addSubview:_progressSelectView];
+    
+//    [_progressSelectView mas_makeConstraints:^(MASConstraintMaker *make) {
+//        make.left.mas_equalTo(0);
+//        make.right.mas_equalTo(-100);
+//        make.height.mas_equalTo(3);
+//        make.centerY.mas_equalTo(0);
+//    }];
+    
+    // gradient
+    _glayer = [CAGradientLayer layer];
+    _glayer.startPoint = CGPointMake(0, 0.5);
+    _glayer.endPoint = CGPointMake(1, 0.5);
+    _glayer.colors = @[(__bridge id)[UIColor hwColor:@"#0BDDFD" alpha:1.0].CGColor, (__bridge id)[UIColor hwColor:@"#048CFB" alpha:1.0].CGColor];
+    _glayer.locations = @[@(0), @(1.0f)];
+    [_progressSelectView.layer addSublayer:_glayer];
+    
+    CGRect frame = CGRectMake(0, 0, SCREEN_W, 2);
+    //_progressSelectView.frame = frame;
+    _glayer.frame = frame;
+    
+    _fileNamelabel = [[UILabel alloc] init];
+    _fileNamelabel.font = [UIFont boldSystemFontOfSize:16.0];
+    //_fileNamelabel.backgroundColor = [UIColor greenColor];
+    [self.contentView addSubview:_fileNamelabel];
+    
+    [_fileNamelabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(_fileImageView.mas_right).offset(10);
+        make.right.mas_equalTo(_upLoadStateButton.mas_left).offset(-10);
+        make.height.mas_equalTo(19);
+        make.bottom.mas_equalTo(_progressBgView.mas_top).offset(-3);
+    }];
+    
+    _fileProgresslabel = [[UILabel alloc] init];
+    _fileProgresslabel.font = [UIFont systemFontOfSize:12.0];
+    _fileProgresslabel.textColor = [UIColor hwColor:@"#959799" alpha:1.0];
+    //_fileProgresslabel.backgroundColor = [UIColor greenColor];
+    [self.contentView addSubview:_fileProgresslabel];
+    
+    [_fileProgresslabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(_fileImageView.mas_right).offset(10);
+        make.right.mas_equalTo(_progressBgView.mas_centerX).offset(100);
+        make.height.mas_equalTo(15);
+        make.top.mas_equalTo(_progressBgView.mas_bottom).offset(3);
+    }];
+    
+    _fileSpeedlabel = [[UILabel alloc] init];
+    _fileSpeedlabel.font = [UIFont systemFontOfSize:12.0];
+    _fileSpeedlabel.textColor = [UIColor hwColor:@"#959799" alpha:1.0];
+    _fileSpeedlabel.textAlignment = NSTextAlignmentRight;
+    //_fileSpeedlabel.backgroundColor = [UIColor blackColor];
+    [self.contentView addSubview:_fileSpeedlabel];
+    
+    [_fileSpeedlabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(_upLoadStateButton.mas_left).offset(-10);
+        make.left.mas_equalTo(_progressBgView.mas_centerX);
+        make.height.mas_equalTo(15);
+        make.top.mas_equalTo(_progressBgView.mas_bottom).offset(3);
+    }];
+    
+    
+    _rightTiplabel = [[UILabel alloc] init];
+    _rightTiplabel.font = [UIFont systemFontOfSize:12.0];
+    _rightTiplabel.textColor = [UIColor hwColor:@"#959799" alpha:1.0];
+    _rightTiplabel.textAlignment = NSTextAlignmentRight;
+    _rightTiplabel.numberOfLines = 0;
+    //_fileSpeedlabel.backgroundColor = [UIColor blackColor];
+    [self.contentView addSubview:_rightTiplabel];
+    
+    [_rightTiplabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-15.0);
+        make.left.mas_equalTo(_progressBgView.mas_centerX);
+        make.height.mas_equalTo(30);
+        make.centerY.mas_equalTo(0);
+    }];
+    
+    //长按手势
+    UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressClick:)];
+    //用几个手指触屏,默认1
+    longPressGesture.numberOfTouchesRequired = 1;
+    //设置最短长按时间,单位为秒(默认0.5)
+    longPressGesture.minimumPressDuration = 1;
+    //设置手势识别期间所允许的手势可移动范围
+    longPressGesture.allowableMovement = 10;
+    [self.contentView addGestureRecognizer:longPressGesture];
+
+}
+
+- (void)setIsEditType:(BOOL)isEditType
+{
+    _isEditType = isEditType;
+    
+    if(isEditType){
+        self.selectButton.hidden = NO;
+        
+//        if(_curUploadFileDataModel.curUploadStateType == uploadStateWait
+//           ||_curUploadFileDataModel.curUploadStateType == uploadStateUploading
+//           ||_curUploadFileDataModel.curUploadStateType == uploadStateSuspend){
+            _upLoadStateButton.hidden = YES;
+        //}
+    }
+    else{
+        self.selectButton.hidden = YES;
+        
+//        if(_curUploadFileDataModel.curUploadStateType == uploadStateWait
+//           ||_curUploadFileDataModel.curUploadStateType == uploadStateUploading
+//           ||_curUploadFileDataModel.curUploadStateType == uploadStateSuspend){
+            _upLoadStateButton.hidden = NO;
+        //}
+    }
+}
+
+- (void)setIsSelectType:(BOOL)isSelectType
+{
+    _isSelectType = isSelectType;
+    
+    if(isSelectType){
+        self.selectButton.selected = YES;
+    }
+    else{
+        self.selectButton.selected = NO;
+    }
+}
+
+- (void)setCurPhotosBackupsTaskModel:(photosBackupsTaskModel *)curPhotosBackupsTaskModel
+{
+    _curPhotosBackupsTaskModel = curPhotosBackupsTaskModel;
+    
+    //test code
+    //_curPhotosBackupsTaskModel.curBackupsState = backupsStateUploading;
+    
+    _fileImageView.image = [UIImage imageNamed:@"uploadFile_image"];
+    
+    _fileSpeedlabel.hidden = YES;
+    _rightTiplabel.hidden = YES;
+    _progressBgView.hidden = NO;
+    
+    if(_curPhotosBackupsTaskModel.curBackupsState == backupsStateUploading){
+       
+        _upLoadStateButton.hidden = NO;
+        
+        [_upLoadStateButton setImage:[UIImage imageNamed:@"uploadFile_suspend"] forState:UIControlStateNormal];
+        _fileSpeedlabel.hidden = NO;
+        
+        //
+        _fileSpeedlabel.text = @"";
+        
+        if(_curPhotosBackupsTaskModel.preTimeInterval <= 0){
+            _fileSpeedlabel.text = @"--";
+        }
+        else{
+            NSTimeInterval  timers = _curPhotosBackupsTaskModel.curTimeInterval - _curPhotosBackupsTaskModel.preTimeInterval;
+            
+            if(timers > 0){
+                long speed= 1*1024*1024 / timers;
+                NSString * speedStr = nil;
+                NSInteger speed_k = speed / (1024);
+                if(speed_k < 1024){
+                    speedStr = [[NSString alloc] initWithFormat:@"%ldKB/s",speed_k];
+                }
+                else {
+                    speedStr = [[NSString alloc] initWithFormat:@"%.1fMB/s",speed_k/1024.0];
+                }
+                
+                _fileSpeedlabel.text = speedStr;
+            }
+        }
+        
+        _curPhotosBackupsTaskModel.preTimeInterval = _curPhotosBackupsTaskModel.curTimeInterval;
+    }
+    else if(_curPhotosBackupsTaskModel.curBackupsState == backupsStateSuspend){
+        
+        [_upLoadStateButton setImage:[UIImage imageNamed:@"uploadFile_start"] forState:UIControlStateNormal];
+        _fileSpeedlabel.text = _curPhotosBackupsTaskModel.backupsTipMsg;
+        _fileSpeedlabel.hidden = NO;
+        
+        _upLoadStateButton.hidden = NO;
+    }
+    else if(_curPhotosBackupsTaskModel.curBackupsState == backupsStateFail){
+        _upLoadStateButton.hidden = YES;
+        _progressBgView.hidden = YES;
+    }
+    else{
+        _upLoadStateButton.hidden = YES;
+        _progressBgView.hidden = YES;
+    }
+    
+    _fileNamelabel.text = NSLocalizedString(@"set_Privacy_title_image",nil);
+    
+    
+    if(_curPhotosBackupsTaskModel.curBackupsState == backupsStateDone){
+        
+        NSString * curTimerStr = _curPhotosBackupsTaskModel.bg_updateTime;
+        if(!curTimerStr){
+            curTimerStr = _curPhotosBackupsTaskModel.bg_createTime;
+        }
+        
+        if(curTimerStr){
+            curTimerStr = [curTimerStr substringToIndex:(curTimerStr.length -4)];
+        }
+        
+        _fileProgresslabel.text = curTimerStr;
+        
+        _rightTiplabel.hidden = NO;
+        
+        _rightTiplabel.text = [[NSString alloc] initWithFormat:@"%@:%ld",NSLocalizedString(@"File_Transfer_List_head_title_done",nil),_curPhotosBackupsTaskModel.didBackupsCount];
+    }
+    else if(_curPhotosBackupsTaskModel.curBackupsState == backupsStateFail){
+        
+        _fileProgresslabel.text = [[NSString alloc] initWithFormat:@"%ld/%ld",_curPhotosBackupsTaskModel.didBackupsCount,_curPhotosBackupsTaskModel.count];
+        
+        //_curPhotosBackupsTaskModel.backupsTipMsg = @"备份失败,备份路径不存在";
+        _rightTiplabel.hidden = NO;
+        _rightTiplabel.textColor = [UIColor hwColor:@"#DD4E4E" alpha:1.0];
+        _rightTiplabel.text = _curPhotosBackupsTaskModel.backupsTipMsg;
+    }
+    else{
+        _fileProgresslabel.text = [[NSString alloc] initWithFormat:@"%ld/%ld",_curPhotosBackupsTaskModel.didBackupsCount,_curPhotosBackupsTaskModel.count - _curPhotosBackupsTaskModel.failCount];
+        
+        //进度设置
+        CGRect frame = CGRectMake(0, 0, SCREEN_W - 15*2 - 34*2, 2);
+        
+        CGFloat curProgress = _curPhotosBackupsTaskModel.didBackupsCount/((_curPhotosBackupsTaskModel.count - _curPhotosBackupsTaskModel.failCount)*1.0);
+
+        if(curProgress > 1){
+            curProgress = 1;
+        }
+
+        frame.size.width =  frame.size.width * curProgress;
+        
+        if (isnan(frame.size.width))
+        {
+            return;
+        }
+        
+        _progressSelectView.frame = frame;
+        //_glayer.frame = frame;
+    }
+    
+}
+
+
+-(void)longPressClick:(UILongPressGestureRecognizer *)press{
+    //state属性是所有手势父类提供的方法,用于记录手势的状态
+    if(press.state == UIGestureRecognizerStateBegan){
+        //NSLog(@"长按手势开始响应!");
+        
+        if(_didLongPressClick){
+            _didLongPressClick();
+        }
+        
+    }else if (press.state == UIGestureRecognizerStateChanged){
+        //NSLog(@"长按手势状态发生改变!");
+    }else{
+        //NSLog(@"长按手势结束!");
+    }
+
+}
+
+- (void)didClickSelectButFun:(UIButton*)but
+{
+    but.selected = !but.selected;
+    if(_didClckSelectBut){
+        _didClckSelectBut(but.selected);
+    }
+}
+
+- (void)tapClick:(UIButton*)but{
+    if(_didTapPressClick){
+        _didTapPressClick();
+    }
+    
+    if(_curPhotosBackupsTaskModel.curBackupsState == backupsStateUploading){
+        [_upLoadStateButton setImage:[UIImage imageNamed:@"uploadFile_start"] forState:UIControlStateNormal];
+    }
+    else if(_curPhotosBackupsTaskModel.curBackupsState == backupsStateSuspend){
+       
+        [_upLoadStateButton setImage:[UIImage imageNamed:@"uploadFile_suspend"] forState:UIControlStateNormal];
+    }
+    
+    
+    but.userInteractionEnabled = NO;
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+        but.userInteractionEnabled = YES;
+    });
+}
+
+@end

+ 30 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileView/backupsFilerecordTableView.h

@@ -0,0 +1,30 @@
+//
+//  backupsFilerecordTableView.h
+//  隐私保护
+//
+//  Created by xd h on 2024/1/4.
+//
+
+#import <UIKit/UIKit.h>
+#import "uploadFileRecordTableViewHeadView.h"
+#import "photosBackupsTaskModel.h"
+NS_ASSUME_NONNULL_BEGIN
+
+@interface backupsFilerecordTableView : UITableView
+
+//正在上传的任务
+@property (nonatomic,strong) photosBackupsTaskModel *photosBackupsIngTaskModel;
+
+@property (nonatomic, strong) NSArray *curDataArr;
+
+
+@property (nonatomic,copy) void (^didLongPressClick)(void);
+@property (nonatomic,copy) void (^didClickReUploadBlock)(photosBackupsTaskModel* model);
+
+-(void)reloadDataFun;
+#pragma mark 单个点击选中后删除
+//- (void)deleteModelOneByOneFun;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 267 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileView/backupsFilerecordTableView.m

@@ -0,0 +1,267 @@
+//
+//  backupsFilerecordTableView.m
+//  隐私保护
+//
+//  Created by xd h on 2024/1/4.
+//
+
+#import "backupsFilerecordTableView.h"
+
+#import "UIScrollView+EmptyDataSet.h"
+#import "backupsFileManager.h"
+#import "backupsFileRecordCell.h"
+
+@interface backupsFilerecordTableView()<UITableViewDataSource,UITableViewDelegate,DZNEmptyDataSetSource, DZNEmptyDataSetDelegate>
+{
+    UIView* curTableHeadView;
+    UILabel *titleHeadLabel;
+}
+
+
+@end
+
+@implementation backupsFilerecordTableView
+
+- (id)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self initCommon];
+    
+    }
+    return self;
+}
+
+- (void)initCommon {
+    self.delegate = self;
+    self.dataSource = self;
+    self.showsVerticalScrollIndicator = NO;
+    self.showsHorizontalScrollIndicator = NO;
+    [self setSeparatorStyle:(UITableViewCellSeparatorStyleNone)];
+    [self setSeparatorColor:[UIColor clearColor]];
+    [self setBackgroundColor:[UIColor clearColor]];
+    [self setTableFooterView:[UIView new]];
+    [self setBounces:YES];
+    if (@available(iOS 15.0, *)) {
+        self.sectionHeaderTopPadding = 0;
+    }
+    
+    self.scrollEnabled = NO;
+    
+    //空数据引入第三方开源处理
+    self.emptyDataSetSource = self;
+    self.emptyDataSetDelegate = self;
+}
+
+
+- (void)setPhotosBackupsIngTaskModel:(photosBackupsTaskModel *)photosBackupsIngTaskModel
+{
+    _photosBackupsIngTaskModel = photosBackupsIngTaskModel;
+    NSArray *curArr = @[_photosBackupsIngTaskModel];
+    _curDataArr = curArr;
+    [self reloadDataFun];
+}
+
+- (void)setTableViewHeadTitleFun
+{
+    if(_curDataArr.count == 0){
+        titleHeadLabel.text = @"";
+        return;
+    }
+    
+    photosBackupsTaskModel *model = _curDataArr.firstObject;
+    
+    NSString *text = @"";
+    if(model.curBackupsState == backupsStateUploading
+       ||model.curBackupsState == backupsStateSuspend){
+        text = NSLocalizedString(@"File_Transfer_List_head_title_ing",nil);
+        text = [[NSString alloc] initWithFormat:@"%@(%ld)",text,model.count - model.didBackupsCount - model.failCount];
+    }
+    else if(model.curBackupsState == backupsStateFail){
+        text = NSLocalizedString(@"File_Transfer_List_head_title_fail",nil);
+        text = [[NSString alloc] initWithFormat:@"%@(%ld)",text,model.didBackupsCount];
+    }
+    else{
+        text = NSLocalizedString(@"File_Transfer_List_head_title_done",nil);
+        text = [[NSString alloc] initWithFormat:@"%@(%ld)",text,model.didBackupsCount];
+    }
+
+    titleHeadLabel.text = text;
+}
+
+- (void)setCurDataArr:(NSArray *)curDataArr
+{
+    _curDataArr = curDataArr;
+    [self reloadDataFun];
+}
+
+#pragma mark - 列表委托
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
+    return 1;//_curDataArr.count;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    
+//    if(_curDataArr.count > section){
+//        NSArray *curArr = _curDataArr[section];
+//        return curArr.count;
+//    }
+    
+    return _curDataArr.count;
+    
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
+    
+    NSInteger row = indexPath.row;
+    //NSInteger section = indexPath.section;
+    static NSString *identifier = @"backupsFileRecordCell";
+    
+    backupsFileRecordCell * cell =  [tableView dequeueReusableCellWithIdentifier:identifier];
+    cell.selectionStyle = UITableViewCellSelectionStyleNone;
+    if (!cell){
+        cell = [[backupsFileRecordCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier];
+        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
+        [cell setBackgroundColor:[UIColor clearColor]];
+        [cell setAccessoryType:(UITableViewCellAccessoryNone)];
+    }
+    
+    if(row < _curDataArr.count){
+        photosBackupsTaskModel *model = _curDataArr[row];
+        cell.curPhotosBackupsTaskModel = model;
+
+        
+        KWeakSelf
+        cell.didLongPressClick = ^{
+            //[weakSelf didLongPressClickFun];
+        };
+
+        cell.didClckSelectBut = ^(BOOL isSelect) {
+            //[weakSelf selectModelOneByOne:model BySelect:isSelect];
+        };
+
+        cell.didTapPressClick = ^{
+            if(model.curBackupsState == backupsStateUploading){
+                [weakSelf handleBackupsingStateTapFunBy:YES with:model];
+            }
+            else if(model.curBackupsState == backupsStateSuspend){
+                [weakSelf handleBackupsingStateTapFunBy:NO with:model];
+            }
+            
+        };
+    }
+    
+    return cell;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
+    return 70;
+}
+
+- (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
+{
+
+    UIView* headView = [UIView new];
+    headView.backgroundColor = [UIColor whiteColor];
+    titleHeadLabel = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, SCREEN_W -15, 50)];
+    titleHeadLabel.font = [UIFont systemFontOfSize:12.0];
+    titleHeadLabel.textColor = [UIColor hwColor:@"#666666" alpha:1.0];
+    [headView addSubview:titleHeadLabel];
+    
+    [self setTableViewHeadTitleFun];
+    
+    return headView;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
+{
+    return 50;
+}
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
+    [tableView deselectRowAtIndexPath:indexPath animated:YES];
+    
+}
+
+#pragma mark 空数据
+- (UIImage *)imageForEmptyDataSet:(UIScrollView *)scrollView {
+    
+    NSString *imageName = @"uploadFile_noData";
+    
+    if(self.tag == 101){
+        imageName = @"uploadFile_noData";
+    }
+    else if(self.tag == 102){
+        imageName = @"uploadFile_noData";
+    }
+    
+    return [UIImage imageNamed:imageName];
+}
+
+- (NSAttributedString *)titleForEmptyDataSet:(UIScrollView *)scrollView {
+    NSString *text = NSLocalizedString(@"File_upload_Record_no_data",nil);
+    
+    if(self.tag == 101){
+        text = NSLocalizedString(@"File_download_Record_no_data",nil);
+    }
+    else if(self.tag == 102){
+        text = NSLocalizedString(@"File_backups_Record_no_data",nil);
+    }
+    
+    NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:16.0f],
+                                 NSForegroundColorAttributeName: HW999999Color};
+    
+    return [[NSAttributedString alloc] initWithString:text attributes:attributes];
+}
+
+//调整图片位置
+- (CGFloat)verticalOffsetForEmptyDataSet:(UIScrollView *)scrollView {
+    return -150;
+}
+
+-(void)reloadDataFun{
+    mainBlock(^{
+        [self setTableViewHeadTitleFun];
+        [self reloadData];
+    });
+}
+
+#pragma mark cell长按时间
+- (void)didLongPressClickFun{
+        if(self->_didLongPressClick){
+            self->_didLongPressClick();
+        }
+}
+
+
+#pragma mark 处理上传中的 状态点击事件
+- (void)handleBackupsingStateTapFunBy:(BOOL)isSuspendType  with:(photosBackupsTaskModel*)model
+{
+    if (isSuspendType) {
+        model.isBackupsSuspendType = backupsSuspendByUser;
+        model.curBackupsState = backupsStateSuspend;
+        
+        [[backupsFileManager shareInstance] suspendBackupsFileFun];
+    }
+    else{
+        [[backupsFileManager shareInstance] reBackupsFileFunBy:model];
+    }
+    
+}
+
+#pragma mark 处理上传中的 状态点击事件
+- (void)handleUploadFailStateWith:(uploadFileDataModel*)model{
+    
+//    [_curDataArr removeObject:model];
+//    [self reloadDataFun];
+//
+//    if(_didClickReUploadBlock){
+//        _didClickReUploadBlock(model);
+//    }
+//
+//    NSMutableArray*arr = [NSMutableArray new];
+//    model.curUploadStateType = uploadStateWait;
+//    [arr addObject:model];
+//    [[uploadFileManager shareInstance] reUploadFileFunBy:arr];
+    
+}
+@end

+ 0 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileView/downloadFileRecordCell.h


Some files were not shown because too many files changed in this diff