|
@@ -0,0 +1,398 @@
|
|
|
+//
|
|
|
+// downloadFileRecordCell.m
|
|
|
+// 隐私保护
|
|
|
+//
|
|
|
+// Created by xd h on 2024/1/10.
|
|
|
+//
|
|
|
+
|
|
|
+#import "downloadFileRecordCell.h"
|
|
|
+
|
|
|
+#import "cachesFileManager.h"
|
|
|
+#import <SDWebImage/SDWebImage.h>
|
|
|
+
|
|
|
+@interface downloadFileRecordCell ()
|
|
|
+@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;
|
|
|
+@end
|
|
|
+
|
|
|
+@implementation downloadFileRecordCell
|
|
|
+
|
|
|
+- (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);
|
|
|
+ }];
|
|
|
+
|
|
|
+ //长按手势
|
|
|
+ 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(_curCouldPhoneFileModel.curDownloadStateType == downloadStateWait
|
|
|
+ ||_curCouldPhoneFileModel.curDownloadStateType == downloadStateUploading
|
|
|
+ ||_curCouldPhoneFileModel.curDownloadStateType == downloadStateSuspend){
|
|
|
+ _upLoadStateButton.hidden = NO;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+- (void)setIsSelectType:(BOOL)isSelectType
|
|
|
+{
|
|
|
+ _isSelectType = isSelectType;
|
|
|
+
|
|
|
+ if(isSelectType){
|
|
|
+ self.selectButton.selected = YES;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ self.selectButton.selected = NO;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+- (void)setCurCouldPhoneFileModel:(couldPhoneFileModel *)curCouldPhoneFileModel
|
|
|
+{
|
|
|
+
|
|
|
+ _fileSpeedlabel.hidden = YES;
|
|
|
+ _progressBgView.hidden = NO;
|
|
|
+ _upLoadStateButton.hidden = NO;
|
|
|
+
|
|
|
+ _curCouldPhoneFileModel = curCouldPhoneFileModel;
|
|
|
+
|
|
|
+ if(_curCouldPhoneFileModel.curDownloadStateType != downloadStateDone){
|
|
|
+ //HLog(@"hhhhhhh2 %@ %ld ",_curCouldPhoneFileModel.name,_curCouldPhoneFileModel.didDownloadBytes);
|
|
|
+ }
|
|
|
+
|
|
|
+// NSString*pathStr = [cachesFileManager getFilePathWithName:curUploadFileDataModel.filename type:curUploadFileDataModel.curUploadFileType];
|
|
|
+// UIImage *image = [UIImage imageWithContentsOfFile:pathStr];
|
|
|
+//
|
|
|
+// if(image){
|
|
|
+// _fileImageView.image = image;
|
|
|
+// }
|
|
|
+// else
|
|
|
+ {
|
|
|
+ _fileImageView.image = [UIImage imageNamed:@"uploadFile_image"];
|
|
|
+ }
|
|
|
+
|
|
|
+ _fileNamelabel.text = curCouldPhoneFileModel.name;
|
|
|
+
|
|
|
+ //进度设置
|
|
|
+ CGRect frame = CGRectMake(0, 0, SCREEN_W - 15*2 - 34*2, 2);
|
|
|
+
|
|
|
+ NSInteger totalSize = curCouldPhoneFileModel.length;
|
|
|
+ if(totalSize == 0.0){
|
|
|
+ totalSize += 0.0001;
|
|
|
+ }
|
|
|
+
|
|
|
+ CGFloat curProgress = curCouldPhoneFileModel.didDownloadBytes/(totalSize*1.0);
|
|
|
+
|
|
|
+ if(curProgress > 1){
|
|
|
+ curProgress = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ frame.size.width = frame.size.width * curProgress;
|
|
|
+
|
|
|
+ if (isnan(frame.size.width))
|
|
|
+ {
|
|
|
+ HLog(@"计算出错了");
|
|
|
+ frame.size.width = 10.0;
|
|
|
+ }
|
|
|
+
|
|
|
+// HLog(@"%f, %f, %f, %f,",frame.origin.x,frame.origin.y,frame.size.width,frame.size.height);
|
|
|
+// HLog(@"%@",_progressSelectView);
|
|
|
+
|
|
|
+ _progressSelectView.frame = frame;
|
|
|
+ //_glayer.frame = frame;
|
|
|
+
|
|
|
+ NSString * totalSizeStr = nil;
|
|
|
+ NSInteger totalSize_k = totalSize / 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 * didUploadStr = nil;
|
|
|
+ NSInteger didUploadSize_k = curCouldPhoneFileModel.didDownloadBytes / 1024;
|
|
|
+ if(didUploadSize_k < 1024){
|
|
|
+ didUploadStr = [[NSString alloc] initWithFormat:@"%ldKB",didUploadSize_k];
|
|
|
+ }
|
|
|
+ else if( didUploadSize_k >= 1024 && didUploadSize_k < 1024*1024){
|
|
|
+ didUploadStr = [[NSString alloc] initWithFormat:@"%.1fMB",didUploadSize_k/1024.0];
|
|
|
+
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ didUploadStr = [[NSString alloc] initWithFormat:@"%.2fG",didUploadSize_k/1024.0/1024.0];
|
|
|
+ }
|
|
|
+
|
|
|
+ if(curCouldPhoneFileModel.curDownloadStateType == downloadStateWait){
|
|
|
+ [_upLoadStateButton setImage:[UIImage imageNamed:@"uploadFile_wait"] forState:UIControlStateNormal];
|
|
|
+ }
|
|
|
+ else if(curCouldPhoneFileModel.curDownloadStateType == downloadStateUploading){
|
|
|
+ [_upLoadStateButton setImage:[UIImage imageNamed:@"uploadFile_suspend"] forState:UIControlStateNormal];
|
|
|
+ _fileSpeedlabel.hidden = NO;
|
|
|
+
|
|
|
+ //
|
|
|
+ _fileSpeedlabel.text = @"";
|
|
|
+
|
|
|
+ if(curCouldPhoneFileModel.preTimeInterval <= 0){
|
|
|
+ _fileSpeedlabel.text = @"--";
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ NSTimeInterval timers = curCouldPhoneFileModel.curTimeInterval - curCouldPhoneFileModel.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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ curCouldPhoneFileModel.preTimeInterval = curCouldPhoneFileModel.curTimeInterval;
|
|
|
+ }
|
|
|
+ else if(curCouldPhoneFileModel.curDownloadStateType == downloadStateSuspend){
|
|
|
+ [_upLoadStateButton setImage:[UIImage imageNamed:@"uploadFile_start"] forState:UIControlStateNormal];
|
|
|
+ }
|
|
|
+ else if(curCouldPhoneFileModel.curDownloadStateType == downloadStateFail){
|
|
|
+ [_upLoadStateButton setImage:[UIImage imageNamed:@"uploadFile_reStart"] forState:UIControlStateNormal];
|
|
|
+ _progressBgView.hidden = YES;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ _upLoadStateButton.hidden = YES;
|
|
|
+ _progressBgView.hidden = YES;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if(curCouldPhoneFileModel.curDownloadStateType == downloadStateDone){
|
|
|
+ NSString*tipStr = NSLocalizedString(@"File_download_Path_default_done",nil);
|
|
|
+ _fileProgresslabel.text = [[NSString alloc] initWithFormat:@"%@ %@",totalSizeStr,tipStr];
|
|
|
+ }
|
|
|
+ else if(curCouldPhoneFileModel.curDownloadStateType == downloadStateFail){
|
|
|
+ _fileProgresslabel.text = [[NSString alloc] initWithFormat:@"%@",totalSizeStr];
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ _fileProgresslabel.text = [[NSString alloc] initWithFormat:@"%@/%@",didUploadStr,totalSizeStr];
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+-(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(_curCouldPhoneFileModel.curDownloadStateType == downloadStateUploading){
|
|
|
+ [_upLoadStateButton setImage:[UIImage imageNamed:@"uploadFile_start"] forState:UIControlStateNormal];
|
|
|
+
|
|
|
+ }
|
|
|
+ else if(_curCouldPhoneFileModel.curDownloadStateType == downloadStateSuspend){
|
|
|
+
|
|
|
+ [_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
|
|
|
+
|