WFCUFileCell.m 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. //
  2. // FileCell.m
  3. // WFChat UIKit
  4. //
  5. // Created by WF Chat on 2017/9/9.
  6. // Copyright © 2017年 WildFireChat. All rights reserved.
  7. //
  8. #import "WFCUFileCell.h"
  9. #import <WFChatClient/WFCChatClient.h>
  10. @implementation WFCUFileCell
  11. + (CGSize)sizeForClientArea:(WFCUMessageModel *)msgModel withViewWidth:(CGFloat)width {
  12. return CGSizeMake(width*4/5, 50);
  13. }
  14. - (void)setModel:(WFCUMessageModel *)model {
  15. [super setModel:model];
  16. WFCCFileMessageContent *fileContent = (WFCCFileMessageContent *)model.message.content;
  17. NSString *ext = [[fileContent.name pathExtension] lowercaseString];
  18. NSString *fileImage = nil;
  19. if ([ext isEqualToString:@"doc"] || [ext isEqualToString:@"docx"] || [ext isEqualToString:@"pages"]) {
  20. fileImage = @"doc_image";
  21. } else if ([ext isEqualToString:@"xls"] || [ext isEqualToString:@"xlsx"] || [ext isEqualToString:@"numbers"]) {
  22. fileImage = @"xls_image";
  23. } else if ([ext isEqualToString:@"ppt"] || [ext isEqualToString:@"pptx"] || [ext isEqualToString:@"keynote"]) {
  24. fileImage = @"ppt_image";
  25. } else if ([ext isEqualToString:@"pdf"]) {
  26. fileImage = @"pdf_image";
  27. } else if([ext isEqualToString:@"html"] || [ext isEqualToString:@"htm"]) {
  28. fileImage = @"html_image";
  29. } else if([ext isEqualToString:@"txt"]) {
  30. fileImage = @"txt_image";
  31. } else if([ext isEqualToString:@"jpg"] || [ext isEqualToString:@"png"]) {
  32. fileImage = @"img_image";
  33. }
  34. fileImage = @"file";
  35. CGRect bounds = self.contentArea.bounds;
  36. if (model.message.direction == MessageDirection_Send) {
  37. self.fileImageView.frame = CGRectMake(bounds.size.width - 40, 4, 36, 42);
  38. self.fileNameLabel.frame = CGRectMake(4, 4, bounds.size.width - 48, 22);
  39. self.sizeLabel.frame = CGRectMake(4, 30, bounds.size.width - 48, 15);
  40. self.sizeLabel.textAlignment = NSTextAlignmentLeft;
  41. } else {
  42. self.fileImageView.frame = CGRectMake(4, 4, 36, 42);
  43. self.fileNameLabel.frame = CGRectMake(44, 4, bounds.size.width - 48, 22);
  44. self.sizeLabel.frame = CGRectMake(44, 30, bounds.size.width - 48, 15);
  45. self.sizeLabel.textAlignment = NSTextAlignmentRight;
  46. }
  47. self.fileImageView.image = [UIImage imageNamed:fileImage];
  48. self.fileNameLabel.text = fileContent.name;
  49. if (fileContent.size < 1024) {
  50. self.sizeLabel.text = [NSString stringWithFormat:@"%ldB", fileContent.size];
  51. } else if(fileContent.size < 1024*1024) {
  52. self.sizeLabel.text = [NSString stringWithFormat:@"%ldK", fileContent.size/1024];
  53. } else {
  54. self.sizeLabel.text = [NSString stringWithFormat:@"%.2fM", fileContent.size/1024.f/1024];
  55. }
  56. }
  57. - (UIImageView *)fileImageView {
  58. if (!_fileImageView) {
  59. _fileImageView = [[UIImageView alloc] init];
  60. [self.contentArea addSubview:_fileImageView];
  61. }
  62. return _fileImageView;
  63. }
  64. - (UILabel *)fileNameLabel {
  65. if (!_fileNameLabel) {
  66. _fileNameLabel = [[UILabel alloc] init];
  67. _fileNameLabel.font = [UIFont systemFontOfSize:20];
  68. [_fileNameLabel setTextColor:[UIColor blackColor]];
  69. [self.contentArea addSubview:_fileNameLabel];
  70. }
  71. return _fileNameLabel;
  72. }
  73. - (UILabel *)sizeLabel {
  74. if (!_sizeLabel) {
  75. _sizeLabel = [[UILabel alloc] init];
  76. _sizeLabel.font = [UIFont systemFontOfSize:15];
  77. [self.contentArea addSubview:_sizeLabel];
  78. }
  79. return _sizeLabel;
  80. }
  81. @end