ChatAtMemberView.m 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. //
  2. // ChatAtMemberView.m
  3. // AIIM
  4. //
  5. // Created by qitewei on 2025/5/29.
  6. //
  7. #import "ChatAtMemberView.h"
  8. #import "ChatAtMemberCell.h"
  9. #import "UDManager.h"
  10. @interface ChatAtMemberView()<UITableViewDelegate,UITableViewDataSource>
  11. @property (nonatomic, strong) UIButton * leftBtn;
  12. @property (nonatomic, strong) UIButton * rightBtn;
  13. @property (nonatomic, strong) UILabel * titleLbl;
  14. @property (nonatomic, strong) UITableView * tableView;
  15. @property (nonatomic, assign) BOOL isBatchMode;
  16. @property (nonatomic, strong) NSMutableArray * selectedMemberArray;
  17. @end
  18. @implementation ChatAtMemberView
  19. - (instancetype)initWithFrame:(CGRect)frame{
  20. if (self = [super initWithFrame:frame]) {
  21. self.backgroundColor = UIColor.whiteColor;
  22. self.isBatchMode = NO;
  23. [self configUI];
  24. [self configContrains];
  25. }
  26. return self;
  27. }
  28. - (void)configUI{
  29. [self addSubview:self.leftBtn];
  30. [self addSubview:self.rightBtn];
  31. [self addSubview:self.titleLbl];
  32. [self addSubview:self.tableView];
  33. }
  34. - (void)configContrains{
  35. [self.leftBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  36. make.height.mas_equalTo(16);
  37. make.left.mas_equalTo(20);
  38. make.top.mas_equalTo(20);
  39. }];
  40. [self.rightBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  41. make.height.mas_equalTo(16);
  42. make.right.mas_equalTo(-20);
  43. make.top.mas_equalTo(20);
  44. }];
  45. [self.titleLbl mas_makeConstraints:^(MASConstraintMaker *make) {
  46. make.height.mas_equalTo(14);
  47. make.centerX.mas_equalTo(self.mas_centerX);
  48. make.centerY.mas_equalTo(self.leftBtn.mas_centerY);
  49. }];
  50. [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
  51. make.top.mas_equalTo(self.leftBtn.mas_bottom).offset(20);
  52. make.left.right.bottom.mas_equalTo(0);
  53. }];
  54. }
  55. #pragma mark setter
  56. - (void)setMemberArray:(NSArray *)memberArray{
  57. NSDictionary *userinfo = [UDManager.shareInstance getDDManager:dkuserinfo];
  58. NSMutableArray * tempArr = [NSMutableArray arrayWithArray:memberArray];
  59. for (NSDictionary * member in memberArray) {
  60. if ([member[@"id"] isEqualToString:userinfo[@"id"]]) {
  61. [tempArr removeObjectAtIndex:[memberArray indexOfObject:member]];
  62. break;
  63. }
  64. }
  65. _memberArray = tempArr;
  66. [self.tableView reloadData];
  67. }
  68. #pragma mark event
  69. - (void)leftButtonClicked{
  70. if (self.isBatchMode) {
  71. //取消多选
  72. self.isBatchMode = NO;
  73. [_rightBtn setTitle:NSLocalizedString(@"Common_multi", @"") forState:UIControlStateNormal];
  74. [_leftBtn setTitle:NSLocalizedString(@"Common_close", @"") forState:UIControlStateNormal];
  75. [self.tableView reloadData];
  76. }else{
  77. //关闭窗口
  78. !self.closeAtViewBlock ?:self.closeAtViewBlock();
  79. }
  80. }
  81. - (void)rightButtonClicked{
  82. if (self.isBatchMode) {
  83. //@多人
  84. if (self.selectedMemberArray.count == 0) {
  85. [MBProgressHUD showWithText:NSLocalizedString(@"At_alter", @"")];
  86. return;
  87. }
  88. !self.atMembersBlock ?: self.atMembersBlock(self.selectedMemberArray);
  89. }else{
  90. //@多人模式
  91. _isBatchMode = YES;
  92. [_rightBtn setTitle:NSLocalizedString(@"Common_done", @"") forState:UIControlStateNormal];
  93. [_leftBtn setTitle:NSLocalizedString(@"Common_cancel", @"") forState:UIControlStateNormal];
  94. [self.tableView reloadData];
  95. }
  96. }
  97. #pragma mark tableView delegate
  98. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
  99. if (self.memberArray) {
  100. return self.isGroupMaster ?self.memberArray.count+1 :self.memberArray.count;
  101. }
  102. return 0;
  103. }
  104. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
  105. if (self.isGroupMaster && indexPath.row == 0) {
  106. ChatAtMemberCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass(ChatAtMemberCell.class) forIndexPath:indexPath];
  107. cell.avatar.image = kImageMake(@"at_everyone");
  108. cell.nickNameLbl.text = NSLocalizedString(@"At_everyone", @"");
  109. return cell;
  110. }
  111. ChatAtMemberCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass(ChatAtMemberCell.class) forIndexPath:indexPath];
  112. cell.memberDict = self.isGroupMaster ?self.memberArray[indexPath.row-1] :self.memberArray[indexPath.row];
  113. cell.isBatchMode = self.isBatchMode;
  114. return cell;
  115. }
  116. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
  117. if (self.isGroupMaster && indexPath.row == 0) {
  118. !self.atEveryoneBlock ?: self.atEveryoneBlock();
  119. return;
  120. }
  121. if (!self.isBatchMode) {
  122. //@单人
  123. NSDictionary * member;
  124. if (self.isGroupMaster) {
  125. member = self.memberArray[indexPath.row-1];
  126. }else{
  127. member = self.memberArray[indexPath.row];
  128. }
  129. !self.atSingleMemberBlock ?: self.atSingleMemberBlock(member);
  130. }else{
  131. ChatAtMemberCell * cell = [tableView cellForRowAtIndexPath:indexPath];
  132. cell.selectedStateBtn.selected = !cell.selectedStateBtn.isSelected;
  133. if (cell.selectedStateBtn.isSelected) {
  134. if (self.isGroupMaster) {
  135. [self.selectedMemberArray addObject:self.memberArray[indexPath.row-1]];
  136. }else{
  137. [self.selectedMemberArray addObject:self.memberArray[indexPath.row]];
  138. }
  139. }else{
  140. if (self.isGroupMaster) {
  141. [self.selectedMemberArray removeObject:self.memberArray[indexPath.row-1]];
  142. }else{
  143. [self.selectedMemberArray removeObject:self.memberArray[indexPath.row]];
  144. }
  145. }
  146. }
  147. }
  148. #pragma mark lazy
  149. - (UIButton *)leftBtn{
  150. if (!_leftBtn) {
  151. _leftBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  152. [_leftBtn setTitle:NSLocalizedString(@"Common_close", @"") forState:UIControlStateNormal];
  153. [_leftBtn setTitleColor:globalColor(GCTypeBlack) forState:UIControlStateNormal];
  154. _leftBtn.titleLabel.font = SYSFONT(16);
  155. [_leftBtn addTarget:self action:@selector(leftButtonClicked) forControlEvents:UIControlEventTouchUpInside];
  156. }
  157. return _leftBtn;
  158. }
  159. - (UIButton *)rightBtn{
  160. if (!_rightBtn) {
  161. _rightBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  162. [_rightBtn setTitle:NSLocalizedString(@"Common_multi", @"") forState:UIControlStateNormal];
  163. [_rightBtn setTitleColor:globalColor(GCTypeBlack) forState:UIControlStateNormal];
  164. _rightBtn.titleLabel.font = SYSFONT(16);
  165. [_rightBtn addTarget:self action:@selector(rightButtonClicked) forControlEvents:UIControlEventTouchUpInside];
  166. }
  167. return _rightBtn;
  168. }
  169. - (UILabel *)titleLbl{
  170. if (!_titleLbl) {
  171. _titleLbl = [[UILabel alloc] init];
  172. _titleLbl.text = NSLocalizedString(@"At_title", @"");
  173. _titleLbl.font = SYSBFONT(14);
  174. _titleLbl.textAlignment = NSTextAlignmentCenter;
  175. _titleLbl.textColor = globalColor(GCTypeBlack);
  176. }
  177. return _titleLbl;
  178. }
  179. - (UITableView *)tableView{
  180. if (!_tableView) {
  181. _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
  182. _tableView.delegate = self;
  183. _tableView.dataSource = self;
  184. _tableView.backgroundColor = UIColor.whiteColor;
  185. [_tableView registerClass:ChatAtMemberCell.class forCellReuseIdentifier:NSStringFromClass(ChatAtMemberCell.class)];
  186. }
  187. return _tableView;
  188. }
  189. - (NSMutableArray *)selectedMemberArray{
  190. if (!_selectedMemberArray) {
  191. _selectedMemberArray = [NSMutableArray array];
  192. }
  193. return _selectedMemberArray;
  194. }
  195. @end