NIMSessionFileTransContentView.m 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. //
  2. // NIMSessionFileTransContentView.m
  3. // NIM
  4. //
  5. // Created by chris on 15/4/21.
  6. // Copyright (c) 2015年 Netease. All rights reserved.
  7. //
  8. #import "NIMSessionFileTransContentView.h"
  9. #import "UIView+NIM.h"
  10. #import "NIMMessageModel.h"
  11. #import "UIImage+NIMKit.h"
  12. #import "NIMKit.h"
  13. @interface NIMSessionFileTransContentView()
  14. @property (nonatomic,strong) UIImageView *imageView;
  15. @property (nonatomic,strong) UILabel *titleLabel;
  16. @property (nonatomic,strong) UILabel *sizeLabel;
  17. @property (nonatomic,strong) UIProgressView *progressView;
  18. @property (nonatomic,strong) UIView *bkgView;
  19. @end
  20. @implementation NIMSessionFileTransContentView
  21. - (instancetype)initSessionMessageContentView{
  22. self = [super initSessionMessageContentView];
  23. if (self) {
  24. self.opaque = YES;
  25. _bkgView = [[UIView alloc]initWithFrame:CGRectZero];
  26. _bkgView.userInteractionEnabled = NO;
  27. _bkgView.backgroundColor = [UIColor whiteColor];
  28. [self addSubview:_bkgView];
  29. _imageView = [[UIImageView alloc] initWithFrame:CGRectZero];
  30. UIImage * image = [UIImage nim_imageInKit:@"icon_file"];
  31. _imageView.image = image;
  32. [_imageView sizeToFit];
  33. [self addSubview:_imageView];
  34. _titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
  35. _titleLabel.lineBreakMode = NSLineBreakByTruncatingMiddle;
  36. [self addSubview:_titleLabel];
  37. _sizeLabel = [[UILabel alloc] initWithFrame:CGRectZero];
  38. _sizeLabel.textColor = [UIColor lightGrayColor];
  39. [self addSubview:_sizeLabel];
  40. _progressView = [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleDefault];
  41. _progressView.progress = 0.0f;
  42. [self addSubview:_progressView];
  43. }
  44. return self;
  45. }
  46. - (void)refresh:(NIMMessageModel *)data{
  47. [super refresh:data];
  48. NIMFileObject *fileObject = (NIMFileObject *)self.model.message.messageObject;
  49. self.titleLabel.font = [[NIMKit sharedKit].config setting:data.message].font;
  50. self.titleLabel.text = fileObject.displayName;
  51. [self.titleLabel sizeToFit];
  52. self.sizeLabel.font = [[NIMKit sharedKit].config setting:data.message].font;
  53. long long size = fileObject.fileLength/1024;
  54. self.sizeLabel.text = [NSString stringWithFormat:@"%lldKB",size?: 1LL];
  55. [self.sizeLabel sizeToFit];
  56. if (self.model.message.deliveryState == NIMMessageDeliveryStateDelivering) {
  57. self.progressView.hidden = NO;
  58. self.progressView.progress = [[NIMSDK sharedSDK].chatManager messageTransportProgress:self.model.message];
  59. }else{
  60. self.progressView.hidden = YES;
  61. }
  62. }
  63. - (void)layoutSubviews{
  64. [super layoutSubviews];
  65. UIEdgeInsets contentInsets = self.model.contentViewInsets;
  66. CGFloat tableViewWidth = self.superview.nim_width;
  67. CGSize contentSize = [self.model contentSize:tableViewWidth];
  68. CGRect bkgViewFrame = CGRectMake(contentInsets.left, contentInsets.top, contentSize.width, contentSize.height);
  69. self.bkgView.frame = bkgViewFrame;
  70. CGFloat fileTransMessageIconLeft = 15.f;
  71. CGFloat fileTransMessageSizeTitleRight = 15.f;
  72. CGFloat fileTransMessageTitleLeft = 90.f;
  73. CGFloat fileTransMessageTitleTop = 25.f;
  74. CGFloat fileTransMessageSizeTitleBottom = 15.f;
  75. CGFloat fileTransMessageProgressTop = 75.f;
  76. CGFloat fileTransMessageProgressLeft = 90.f;
  77. CGFloat fileTransMessageProgressRight = 20.f;
  78. self.imageView.nim_left = fileTransMessageIconLeft;
  79. self.imageView.nim_centerY = self.nim_height * .5f;
  80. if (self.nim_width < fileTransMessageTitleLeft + self.titleLabel.nim_width + fileTransMessageSizeTitleRight) {
  81. self.titleLabel.nim_width = self.nim_width - fileTransMessageTitleLeft - fileTransMessageSizeTitleRight;
  82. }
  83. self.titleLabel.nim_left = fileTransMessageTitleLeft;
  84. self.titleLabel.nim_top = fileTransMessageTitleTop;
  85. self.sizeLabel.nim_right = self.nim_width - fileTransMessageSizeTitleRight;
  86. self.sizeLabel.nim_bottom = self.nim_height - fileTransMessageSizeTitleBottom;
  87. self.progressView.nim_top = fileTransMessageProgressTop;
  88. self.progressView.nim_width = self.nim_width - fileTransMessageProgressLeft - fileTransMessageProgressRight;
  89. self.progressView.nim_left = fileTransMessageProgressLeft;
  90. CALayer *maskLayer = [CALayer layer];
  91. maskLayer.cornerRadius = 13.0;
  92. maskLayer.backgroundColor = [UIColor blackColor].CGColor;
  93. maskLayer.frame = self.bkgView.bounds;
  94. self.bkgView.layer.mask = maskLayer;
  95. }
  96. - (void)onTouchUpInside:(id)sender
  97. {
  98. NIMKitEvent *event = [[NIMKitEvent alloc] init];
  99. event.eventName = NIMKitEventNameTapContent;
  100. event.messageModel = self.model;
  101. [self.delegate onCatchEvent:event];
  102. }
  103. - (void)updateProgress:(float)progress
  104. {
  105. if (progress > 1.0) {
  106. progress = 1.0;
  107. }
  108. self.progressView.progress = progress;
  109. }
  110. @end