// // boxReceiveFileRecordCell.m // 双子星云手机 // // Created by xd h on 2024/5/24. // #import "boxReceiveFileRecordCell.h" #import "cachesFileManager.h" #import #import "downloadThumbnailManager.h" @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; @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]; [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.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(30); 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]; //_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(_upLoadStateButton.mas_left).offset(-10); make.height.mas_equalTo(15); make.top.mas_equalTo(_fileNamelabel.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; } } //@所有人 文件格式需要支持以下内容预览/播放 //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 { _upLoadStateButton.hidden = NO; _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 ([lastName rangeOfString:@"mp3"].location != NSNotFound ||[lastName rangeOfString:@"wav"].location != NSNotFound ||[lastName rangeOfString:@"flac"].location != NSNotFound ||[lastName rangeOfString:@"aac"].location != NSNotFound ||[lastName rangeOfString:@"ogg"].location != NSNotFound ) { _fileImageView.image = [UIImage imageNamed:@"uploadFile_audio"]; } else if ([lastName rangeOfString:@"jpg"].location != NSNotFound ||[lastName rangeOfString:@"jpeg"].location != NSNotFound ||[lastName rangeOfString:@"png"].location != NSNotFound ||[lastName rangeOfString:@"gif"].location != NSNotFound ||[lastName rangeOfString:@"bmp"].location != NSNotFound ||[lastName rangeOfString:@"svg"].location != NSNotFound ||[lastName rangeOfString:@"tiff"].location != NSNotFound ||[lastName rangeOfString:@"heic"].location != NSNotFound ) {//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 ([lastName rangeOfString:@"mp4"].location != NSNotFound ||[lastName rangeOfString:@"avi"].location != NSNotFound ||[lastName rangeOfString:@"flv"].location != NSNotFound ||[lastName rangeOfString:@"wmv"].location != NSNotFound ||[lastName rangeOfString:@"wkm"].location != NSNotFound ||[lastName rangeOfString:@"ts"].location != NSNotFound ||[lastName rangeOfString:@"mov"].location != NSNotFound ||[lastName rangeOfString:@"rmvb"].location != NSNotFound ) {//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"]; } } _fileNamelabel.text = curShareFileDataModel.fileName; _fileStatelabel.textColor = [UIColor hwColor:@"#959799" alpha:1.0]; if(curShareFileDataModel.saveboxStateType == saveBoxStateBegin){ _fileStatelabel.text = NSLocalizedString(@"box_receive_file_ing",nil); } else if(curShareFileDataModel.saveboxStateType == saveBoxStateDone){ _fileStatelabel.text = NSLocalizedString(@"box_receive_file_suc",nil); } else if(curShareFileDataModel.saveboxStateType == saveBoxStateFail){ _fileStatelabel.text = NSLocalizedString(@"box_receive_file_fail",nil); _fileStatelabel.textColor = [UIColor hwColor:@"#DD4E4E" alpha:1.0]; } } -(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