// // boxReceiveFileRecordCell.m // Private-X // // Created by xd h on 2024/5/24. // #import "boxReceiveFileRecordCell.h" #import "cachesFileManager.h" #import @interface boxReceiveFileRecordCell () @property(nonatomic,strong) UIImageView *fileImageView; @property(nonatomic,strong) UIButton *upLoadStateButton; @property (nonatomic, strong) UIButton *selectButton; @property(nonatomic,strong) UILabel *fileNamelabel; @property(nonatomic,strong) UILabel *fileStatelabel; @property(nonatomic,strong) UILabel *fileSaveDatalabel;//已保存了多少 @end @implementation boxReceiveFileRecordCell - (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]; [_fileImageView setContentMode:(UIViewContentModeScaleAspectFit)]; [self.contentView addSubview:_fileImageView]; [_fileImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(15); make.width.mas_equalTo(36); make.height.mas_equalTo(36); make.bottom.mas_equalTo(-18); }]; _upLoadStateButton = [[UIButton alloc] init]; //_upLoadStateButton.backgroundColor = [UIColor redColor]; [_upLoadStateButton setImage:[UIImage imageNamed:@"uploadFile_reStart"] forState:UIControlStateNormal]; [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; } _fileNamelabel = [[UILabel alloc] init]; _fileNamelabel.font = [UIFont systemFontOfSize:14.0]; _fileNamelabel.textColor = [UIColor blackColor]; _fileNamelabel.numberOfLines = 0; _fileNamelabel.lineBreakMode = NSLineBreakByTruncatingMiddle; //_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(35); make.bottom.equalTo(_fileImageView.mas_centerY).offset(0); }]; _fileStatelabel = [[UILabel alloc] init]; _fileStatelabel.font = [UIFont systemFontOfSize:12.0]; _fileStatelabel.textColor = [UIColor hwColor:@"#959799" alpha:1.0]; _fileStatelabel.lineBreakMode = NSLineBreakByTruncatingMiddle; //_fileProgresslabel.backgroundColor = [UIColor greenColor]; [self.contentView addSubview:_fileStatelabel]; [_fileStatelabel mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(_fileImageView.mas_right).offset(10); //make.right.mas_equalTo(self.contentView.mas_centerX).offset(-5); make.right.mas_equalTo(self.contentView.mas_right).offset(-5); make.height.mas_equalTo(15); make.top.mas_equalTo(_fileNamelabel.mas_bottom).offset(0); }]; _fileSaveDatalabel = [[UILabel alloc] init]; _fileSaveDatalabel.font = [UIFont systemFontOfSize:12.0]; _fileSaveDatalabel.textColor = [UIColor hwColor:@"#959799" alpha:1.0]; _fileSaveDatalabel.lineBreakMode = NSLineBreakByTruncatingMiddle; _fileSaveDatalabel.textAlignment = NSTextAlignmentRight; [self.contentView addSubview:_fileSaveDatalabel]; [_fileSaveDatalabel mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(self.contentView .mas_centerX).offset(5); make.right.mas_equalTo(_upLoadStateButton.mas_left).offset(-10); make.height.mas_equalTo(15); make.top.mas_equalTo(_fileNamelabel.mas_bottom).offset(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(_curShareFileDataModel.saveboxStateType == saveBoxStateFail ||_curShareFileDataModel.downloadStatus == -1){ _upLoadStateButton.hidden = NO; } } } - (void)setIsSelectType:(BOOL)isSelectType { _isSelectType = isSelectType; if(isSelectType){ self.selectButton.selected = YES; } else{ self.selectButton.selected = NO; } } //@所有人 文件格式需要支持以下内容预览/播放 //1. 图片格式:JPG、JPEG、PNG、GIF、BMP、SVG、TIFF、HEIC。 //2. 音频格式:MP3、WAV、FLAC、AAC、OGG。 //3. 视频格式:MP4、AVI、FLV、WMV、MKV、TS、MOV、RMVB。 - (void)setCurShareFileDataModel:(ShareFileDataModel *)curShareFileDataModel { _curShareFileDataModel = curShareFileDataModel; NSArray *nameArr= [curShareFileDataModel.fileName componentsSeparatedByString:@"."]; //HLog(@"fileName: %@",curShareFileDataModel.fileName); if (nameArr.count >= 2) { NSString *lastName = nameArr.lastObject; lastName = [lastName lowercaseString]; //HLog(@"lastName: %@",lastName); if ([lastName rangeOfString:@"txt"].location != NSNotFound) { _fileImageView.image = [UIImage imageNamed:@"uploadFile_TXT"]; } else if ([lastName rangeOfString:@"pdf"].location != NSNotFound) { _fileImageView.image = [UIImage imageNamed:@"uploadFile_pdf"]; } else if ([lastName rangeOfString:@"xlsx"].location != NSNotFound) { _fileImageView.image = [UIImage imageNamed:@"uploadFile_xlsx"]; } else if ([lastName rangeOfString:@"doc"].location != NSNotFound ||[lastName rangeOfString:@"docx"].location != NSNotFound) { _fileImageView.image = [UIImage imageNamed:@"uploadFile_doc"]; } else if ([iTools isAudioFilewithName:lastName]) { _fileImageView.image = [UIImage imageNamed:@"uploadFile_audio"]; } else if ([iTools isPhotoFilewithName:lastName]) {//JPG、JPEG、PNG、GIF、BMP、SVG、TIFF、HEIC。 //MP4、AVI、FLV、WMV、MKV、TS、MOV、RMVB。 NSString *fileUrl = curShareFileDataModel.headUrl; fileUrl = [fileUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; UIImage * defaultImage = [UIImage imageNamed:@"uploadFile_image"]; [_fileImageView sd_setImageWithURL:[NSURL URLWithString:fileUrl] placeholderImage:defaultImage completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) { if(image){ //HLog(@"11图片1:%@",imageURL.absoluteString); } else{ //HLog(@"11图片0:%@",imageURL.absoluteString); } }]; } else if ([iTools isVideoFilewithName:lastName]) {//JPG、JPEG、PNG、GIF、BMP、SVG、TIFF、HEIC。 //MP4、AVI、FLV、WMV、MKV、TS、MOV、RMVB。 NSString *fileUrl = curShareFileDataModel.headUrl; fileUrl = [fileUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; UIImage * defaultImage = [UIImage imageNamed:@"uploadFile_Video"]; [_fileImageView sd_setImageWithURL:[NSURL URLWithString:fileUrl] placeholderImage:defaultImage completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) { if(image){ //HLog(@"11图片1:%@",imageURL.absoluteString); } else{ //HLog(@"11图片0:%@",imageURL.absoluteString); } }]; } else{ _fileImageView.image = [UIImage imageNamed:@"uploadFile_other"]; } } _fileSaveDatalabel.hidden = YES; _fileNamelabel.text = curShareFileDataModel.fileName; _fileStatelabel.textColor = [UIColor hwColor:@"#959799" alpha:1.0]; if(curShareFileDataModel.saveboxStateType == saveBoxStateBegin){ if(curShareFileDataModel.downloadStatus == 0){ _fileStatelabel.text = NSLocalizedString(@"box_receive_file_ing",nil); } else if(curShareFileDataModel.downloadStatus == 3){ NSString *leftStr = NSLocalizedString(@"box_receive_file_did_saveing",nil); NSString*rightStr = [[NSString alloc] initWithFormat:@"%d%%", (int)(curShareFileDataModel.saveProgress*100)]; _fileStatelabel.text = [[NSString alloc] initWithFormat:@"%@%@",leftStr,rightStr]; _fileSaveDatalabel.hidden = NO; NSInteger totalSize = curShareFileDataModel.fileSize.longLongValue; if(totalSize == 0.0){ _fileSaveDatalabel.hidden = YES; } CGFloat curProgress = curShareFileDataModel.saveProgress; if(curProgress > 1){ curProgress = 1; } NSString * totalSizeStr = nil; NSString * didDownloadStr = nil; NSInteger totalSize_k = totalSize / 1024; if(totalSize_k < 1024){ totalSizeStr = [[NSString alloc] initWithFormat:@"%ldKB",totalSize_k]; didDownloadStr = [[NSString alloc] initWithFormat:@"%ldKB",(long)(totalSize_k*curProgress)]; } else if( totalSize_k >= 1024 && totalSize_k < 1024*1024){ totalSizeStr = [[NSString alloc] initWithFormat:@"%.2fMB",totalSize_k/1024.0]; didDownloadStr = [[NSString alloc] initWithFormat:@"%.2fMB",totalSize_k/1024.0*curProgress]; } else{ totalSizeStr = [[NSString alloc] initWithFormat:@"%.2fG",totalSize_k/1024.0/1024.0]; didDownloadStr = [[NSString alloc] initWithFormat:@"%.2fG",totalSize_k/1024.0/1024.0*curProgress]; } if(totalSizeStr && didDownloadStr){ _fileSaveDatalabel.text = [[NSString alloc] initWithFormat:@"%@/%@",didDownloadStr,totalSizeStr]; } } self.selectButton.selected = NO; _upLoadStateButton.hidden = YES; } else if(curShareFileDataModel.saveboxStateType == saveBoxStateDone){ NSString *str1 = NSLocalizedString(@"box_receive_Record_suc",nil); NSString *str2 = curShareFileDataModel.boxSavePath; str2 = [iTools changePathToShowPathBy:str2]; _fileStatelabel.text = [[NSString alloc] initWithFormat:@"%@ %@",str1,str2]; _upLoadStateButton.hidden = YES; } else if(curShareFileDataModel.saveboxStateType == saveBoxStateFail ||curShareFileDataModel.downloadStatus == -1){ //_fileStatelabel.text = NSLocalizedString(@"box_receive_Record_fail",nil); _fileStatelabel.text = NSLocalizedString(@"File_download_error_404",nil); _fileStatelabel.textColor = [UIColor hwColor:@"#DD4E4E" alpha:1.0]; _upLoadStateButton.hidden = NO; } } -(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(); } 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