EMMsgExtSmartBubbleView.m 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. //
  2. // EMMsgExtSmartBubbleView.m
  3. // smartRhino
  4. //
  5. // Created by niuzhen on 2020/4/7.
  6. // Copyright © 2020 tederen. All rights reserved.
  7. //
  8. #import "EMMsgExtSmartBubbleView.h"
  9. @implementation EMMsgExtSmartBubbleView
  10. - (instancetype)initWithDirection:(EMMessageDirection)aDirection
  11. type:(EMMessageType)aType
  12. {
  13. self = [super initWithDirection:aDirection type:aType];
  14. if (self) {
  15. [self _setupSubviews];
  16. }
  17. return self;
  18. }
  19. #pragma mark - Subviews
  20. - (void)_setupSubviews
  21. {
  22. [self setupAppBackgroundImage];
  23. self.iconView = [[UIImageView alloc] init];
  24. self.iconView.contentMode = UIViewContentModeScaleAspectFill;
  25. self.iconView.layer.cornerRadius = 4.f;
  26. self.iconView.layer.masksToBounds = YES;
  27. self.iconView.clipsToBounds = YES;
  28. [self addSubview:self.iconView];
  29. self.textLabel = [[UILabel alloc] init];
  30. self.textLabel.font = [UIFont systemFontOfSize:18];
  31. self.textLabel.numberOfLines = 1;
  32. self.textLabel.textColor = UIColorHex(0x0A0A0A);
  33. [self addSubview:self.textLabel];
  34. self.detailLabel = [[UILabel alloc] init];
  35. self.detailLabel.font = [UIFont systemFontOfSize:12];
  36. self.detailLabel.numberOfLines = 2;
  37. self.detailLabel.textColor = UIColorHex(0x999999);
  38. [self addSubview:self.detailLabel];
  39. [self.detailLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  40. make.top.equalTo(self.textLabel.mas_bottom).offset(5);
  41. make.bottom.equalTo(self).offset(-10);
  42. make.left.equalTo(self.textLabel);
  43. make.right.equalTo(self.textLabel);
  44. }];
  45. if (self.direction == EMMessageDirectionSend) {
  46. [self.iconView mas_makeConstraints:^(MASConstraintMaker *make) {
  47. make.left.equalTo(self).offset(10);
  48. make.centerY.equalTo(self);
  49. make.width.equalTo(@40);
  50. make.height.equalTo(@40);
  51. }];
  52. [self.textLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  53. make.top.equalTo(self).offset(10);
  54. make.left.equalTo(self.iconView.mas_right).offset(5);
  55. make.right.equalTo(self).offset(-15);
  56. }];
  57. } else {
  58. [self.iconView mas_makeConstraints:^(MASConstraintMaker *make) {
  59. make.left.equalTo(self).offset(13);
  60. make.centerY.equalTo(self);
  61. make.width.equalTo(@40);
  62. make.height.equalTo(@40);
  63. }];
  64. [self.textLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  65. make.top.equalTo(self).offset(10);
  66. make.left.equalTo(self.iconView.mas_right).offset(5);
  67. make.right.equalTo(self).offset(-10);
  68. }];
  69. }
  70. }
  71. #pragma mark - Setter
  72. - (void)setModel:(EMMessageModel *)model
  73. {
  74. if (model.type != EMMessageTypeExtApp) {
  75. return;
  76. }
  77. WS(weakSelf);
  78. NSDictionary * extDcit = model.emModel.ext;
  79. NSString * imageStr = [ZYCTool getFileNameImage:[extDcit objectForKey:@"app_title"]];
  80. self.textLabel.text = [extDcit objectForKey:@"app_title"];
  81. NSString * detail = [extDcit objectForKey:@"app_content"];
  82. self.detailLabel.text = detail;
  83. [self.iconView removeAllSubviews];
  84. switch ([[extDcit objectForKey:@"app_type"] integerValue]) {
  85. case CollectModel_Aritle:
  86. {
  87. self.iconView.image = IMG(@"文章");
  88. }
  89. break;
  90. case CollectModel_Text:
  91. {
  92. self.iconView.image = IMG(@"文章");
  93. }
  94. break;
  95. case CollectModel_Notice:
  96. {
  97. self.iconView.image = IMG(@"通知图标");
  98. }
  99. break;
  100. case CollectModel_NoteBook:
  101. {
  102. self.iconView.image = IMG(@"noteBook_icon");
  103. }
  104. break;
  105. case CollectModel_NewTopic:
  106. {
  107. self.iconView.image = IMG(@"话题");
  108. }
  109. break;
  110. case CollectModel_Toipc:
  111. {
  112. detail = [NSString stringWithFormat:@"%@ 来自-%@",[extDcit objectForKey:@"app_content"],[extDcit objectForKey:@"app_groupname"]];
  113. self.detailLabel.attributedText = [ZYCTool checkOfString:detail withSearchText:[extDcit objectForKey:@"app_groupname"] withColor:UIColorHex(0x1F87DB)];
  114. self.iconView.image = IMG(@"话题");
  115. }
  116. break;
  117. case CollectModel_InterMail:
  118. {
  119. self.iconView.image = IMG(@"站内信");
  120. }
  121. break;
  122. case CollectModel_NoSignMail:
  123. {
  124. self.iconView.image = IMG(@"站内信");
  125. }
  126. break;
  127. case CollectModel_CollectFile:
  128. {
  129. self.iconView.image = IMG(@"find_1");
  130. }
  131. break;
  132. case CollectModel_NoteFile:
  133. {
  134. self.iconView.image = IMG(@"find_1");
  135. }
  136. break;
  137. case CollectModel_meetMian:
  138. {
  139. self.iconView.image = IMG(@"会议纪要");
  140. }
  141. break;
  142. case CollectModel_meetDetail:
  143. {
  144. self.iconView.image = IMG(@"会议");
  145. }
  146. break;
  147. case CollectModel_Image:
  148. {
  149. [self.iconView setImageWithURL:[NSURL URLWithString:[extDcit objectForKey:@"app_min_url"]] placeholder:nil];
  150. }
  151. break;
  152. case CollectModel_file:
  153. {
  154. if(imageStr.length > 0){
  155. self.iconView.image = IMG(imageStr);
  156. }else{
  157. [self.iconView setImageWithURL:[NSURL URLWithString:[extDcit objectForKey:@"app_min_url"]] placeholder:nil];
  158. }
  159. }
  160. break;
  161. case CollectModel_work:
  162. {
  163. self.iconView.image = IMG(@"审批");
  164. }
  165. break;
  166. case CollectModel_StoreBook:
  167. {
  168. [self.iconView sd_setImageWithURL:[NSURL URLWithString:[extDcit objectForKey:@"app_min_url"]] placeholderImage:IMG(@"default_audio")];
  169. }
  170. break;
  171. case CollectModel_StoreSound:
  172. {
  173. [self.iconView sd_setImageWithURL:[NSURL URLWithString:[extDcit objectForKey:@"app_min_url"]] placeholderImage:IMG(@"default_audio")];
  174. if ([[extDcit objectForKey:@"app_min_url"] length] > 0) {
  175. UIImageView * clearV = [UIImageView new];
  176. [self.iconView addSubview:clearV];
  177. clearV.image = IMG(@"clear_audio");
  178. [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
  179. make.edges.mas_equalTo(self.iconView);
  180. }];
  181. }
  182. }
  183. break;
  184. case CollectModel_StoreVideo:
  185. {
  186. [self.iconView sd_setImageWithURL:[NSURL URLWithString:[extDcit objectForKey:@"app_min_url"]] placeholderImage:IMG(@"default_video")];
  187. if ([[extDcit objectForKey:@"app_min_url"] length] > 0) {
  188. UIImageView * clearV = [UIImageView new];
  189. [self.iconView addSubview:clearV];
  190. clearV.image = IMG(@"clear_video");
  191. [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
  192. make.edges.mas_equalTo(self.iconView);
  193. }];
  194. }
  195. }
  196. break;
  197. case CollectModel_StoreCousre:
  198. {
  199. [self.iconView sd_setImageWithURL:[NSURL URLWithString:[extDcit objectForKey:@"app_min_url"]] placeholderImage:IMG(@"icon_weizhiwenjian")];
  200. }
  201. break;
  202. case CollectModel_MediaAritle:
  203. {
  204. [self.iconView sd_setImageWithURL:[NSURL URLWithString:[extDcit objectForKey:@"app_min_url"]] placeholderImage:IMG(@"文章")];
  205. }
  206. break;
  207. case CollectModel_financeCount:
  208. {
  209. self.iconView.image = IMG(@"报表");
  210. }
  211. break;
  212. case CollectModel_affairsCount:
  213. {
  214. self.iconView.image = IMG(@"报表");
  215. }
  216. break;
  217. case CollectModel_publishCount:
  218. {
  219. self.iconView.image = IMG(@"报表");
  220. }
  221. break;
  222. case CollectModel_TopicBooK:
  223. {
  224. self.iconView.image = IMG(@"topicBook");
  225. }
  226. break;
  227. case CollectModel_TopicSubBooK:
  228. {
  229. self.iconView.image = IMG(@"find_1");
  230. }
  231. break;
  232. default:
  233. break;
  234. }
  235. }
  236. @end