JXGroupMessagesSelectFriendVC.m 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657
  1. //
  2. // JXGroupMessagesSelectFriendVC.m
  3. // shiku_im
  4. //
  5. // Created by p on 2018/5/25.
  6. // Copyright © 2018年 Reese. All rights reserved.
  7. //
  8. #import "JXGroupMessagesSelectFriendVC.h"
  9. #import "JXCell.h"
  10. #import "UIImage+Color.h"
  11. #import "QCheckBox.h"
  12. #import "JXChatViewController.h"
  13. #import "JXSelectLabelsVC.h"
  14. #import "JXLabelObject.h"
  15. #import "BMChineseSort.h"
  16. #import "JXSelectGroupSendVC.h"
  17. #import "OrganizeSelectVC.h"
  18. #import "EmployeObject.h"
  19. @interface JXGroupMessagesSelectFriendVC () <UITextFieldDelegate, JXSelectLabelsVCDelegate, JXSelectGroupSendVCDelegate, OrganizeSelectVCDelegate>
  20. @property (nonatomic, strong) NSMutableArray *array;
  21. @property (nonatomic, strong) UITextField *seekTextField;
  22. @property (nonatomic, strong) NSMutableArray *searchArray;
  23. @property (nonatomic, strong) NSSet * existSet;
  24. @property (nonatomic, strong) NSMutableArray *selUserIdArray;
  25. @property (nonatomic, strong) NSMutableArray *selUserNameArray;
  26. @property (nonatomic, strong) UIButton *nextBtn;
  27. @property (nonatomic, strong) UIView *tableHeadView;
  28. @property (nonatomic, strong) UILabel *selectLabelTip;
  29. @property (nonatomic, strong) UILabel *selectGroupTip;
  30. @property (nonatomic, strong) UILabel *selectColleagueTip;
  31. @property (nonatomic, strong) UILabel *selectMaillistTip;
  32. @property (nonatomic, strong) UILabel *selectLabels;
  33. @property (nonatomic, strong) UILabel *selectGroups;
  34. @property (nonatomic, strong) UILabel *selectColleagues;
  35. @property (nonatomic, strong) UILabel *selectMaillists;
  36. @property (nonatomic, strong) NSMutableArray *selLabelsArr;
  37. @property (nonatomic, strong) NSMutableArray *selGroupsArr;
  38. @property (nonatomic, strong) NSMutableArray *selColleaguesArr;
  39. @property (nonatomic, strong) NSMutableArray *selMailistArr;
  40. //排序后的出现过的拼音首字母数组
  41. @property(nonatomic,strong)NSMutableArray *indexArray;
  42. //排序好的结果数组
  43. @property(nonatomic,strong)NSMutableArray *letterResultArr;
  44. @property (nonatomic, strong) NSMutableArray *checkBoxArr;
  45. @end
  46. @implementation JXGroupMessagesSelectFriendVC
  47. - (void)viewDidLoad {
  48. [super viewDidLoad];
  49. // Do any additional setup after loading the view.
  50. self.heightHeader = JX_SCREEN_TOP;
  51. self.heightFooter = JX_SCREEN_BOTTOM;
  52. self.isGotoBack = YES;
  53. //self.view.frame = g_window.bounds;
  54. self.isShowFooterPull = NO;
  55. [self createHeadAndFoot];
  56. _array = [NSMutableArray array];
  57. _searchArray = [NSMutableArray array];
  58. _selUserIdArray = [NSMutableArray array];
  59. _selUserNameArray = [NSMutableArray array];
  60. _selLabelsArr = [NSMutableArray array];
  61. _checkBoxArr = [NSMutableArray array];
  62. self.title = Localized(@"JX_SelectReceiver");
  63. UIButton *allSelect = [[UIButton alloc] init];
  64. [allSelect setTitle:Localized(@"JX_CheckAll") forState:UIControlStateNormal];
  65. [allSelect setTitle:Localized(@"JX_Cencal") forState:UIControlStateSelected];
  66. [allSelect setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
  67. [allSelect.titleLabel setFont:SYSFONT(15)];
  68. allSelect.frame = CGRectMake(JX_SCREEN_WIDTH - 60, JX_SCREEN_TOP - 33, 60, 24);
  69. [allSelect addTarget:self action:@selector(allSelect:) forControlEvents:UIControlEventTouchUpInside];
  70. [self.tableHeader addSubview:allSelect];
  71. self.nextBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, self.tableFooter.frame.size.width, 48)];
  72. self.nextBtn.titleLabel.font = [UIFont systemFontOfSize:15.0];
  73. [self.nextBtn setTitle:Localized(@"JX_NextStep") forState:UIControlStateNormal];
  74. [self.nextBtn setTitleColor:THEMECOLOR forState:UIControlStateNormal];
  75. [self.nextBtn addTarget:self action:@selector(nextBtnAction:) forControlEvents:UIControlEventTouchUpInside];
  76. [self.tableFooter addSubview:self.nextBtn];
  77. //搜索输入框
  78. _tableHeadView = [[UIView alloc] initWithFrame:CGRectMake(0, JX_SCREEN_TOP, JX_SCREEN_WIDTH, 55)];
  79. // backView.backgroundColor = HEXCOLOR(0xf0f0f0);
  80. [self.view addSubview:_tableHeadView];
  81. // UIButton *cancelBtn = [[UIButton alloc] initWithFrame:CGRectMake(backView.frame.size.width-5-45, 5, 45, 30)];
  82. // [cancelBtn setTitle:Localized(@"JX_Cencal") forState:UIControlStateNormal];
  83. // [cancelBtn setTitleColor:THEMECOLOR forState:UIControlStateNormal];
  84. // [cancelBtn addTarget:self action:@selector(cancelBtnAction) forControlEvents:UIControlEventTouchUpInside];
  85. // cancelBtn.titleLabel.font = SYSFONT(14);
  86. // [backView addSubview:cancelBtn];
  87. _seekTextField = [[UITextField alloc] initWithFrame:CGRectMake(15, 10, _tableHeadView.frame.size.width - 30, 35)];
  88. _seekTextField.placeholder = Localized(@"JX_EnterKeyword");
  89. _seekTextField.textColor = [UIColor blackColor];
  90. [_seekTextField setFont:SYSFONT(14)];
  91. _seekTextField.backgroundColor = HEXCOLOR(0xf0f0f0);
  92. UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"card_search"]];
  93. UIView *leftView = [[UIView alloc ]initWithFrame:CGRectMake(0, 0, 30, 30)];
  94. // imageView.center = CGPointMake(leftView.frame.size.width/2, leftView.frame.size.height/2);
  95. imageView.center = leftView.center;
  96. [leftView addSubview:imageView];
  97. _seekTextField.leftView = leftView;
  98. _seekTextField.leftViewMode = UITextFieldViewModeAlways;
  99. _seekTextField.borderStyle = UITextBorderStyleNone;
  100. _seekTextField.layer.masksToBounds = YES;
  101. _seekTextField.layer.cornerRadius = 5;
  102. _seekTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
  103. _seekTextField.delegate = self;
  104. _seekTextField.returnKeyType = UIReturnKeyGoogle;
  105. [_tableHeadView addSubview:_seekTextField];
  106. [_seekTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
  107. UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, 49.5, JX_SCREEN_WIDTH, .5)];
  108. lineView.backgroundColor = HEXCOLOR(0xdcdcdc);
  109. [_tableHeadView addSubview:lineView];
  110. //选择标签群发
  111. UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(_seekTextField.frame)+8, JX_SCREEN_WIDTH, 54)];
  112. [btn addTarget:self action:@selector(selectLabels:) forControlEvents:UIControlEventTouchUpInside];
  113. [_tableHeadView addSubview:btn];
  114. _selectLabelTip = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, btn.frame.size.width, btn.frame.size.height)];
  115. _selectLabelTip.font = [UIFont systemFontOfSize:16.0];
  116. _selectLabelTip.text = Localized(@"JX_SelectTagGroup");
  117. [btn addSubview:_selectLabelTip];
  118. _selectLabels = [[UILabel alloc] initWithFrame:CGRectMake(15, CGRectGetMaxY(_selectLabelTip.frame), btn.frame.size.width, btn.frame.size.height - CGRectGetMaxY(_selectLabelTip.frame))];
  119. _selectLabels.font = [UIFont systemFontOfSize:15.0];
  120. _selectLabels.text = @"[标签1,标签2]";
  121. _selectLabels.textColor = [UIColor lightGrayColor];
  122. [btn addSubview:_selectLabels];
  123. lineView = [[UIView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(btn.frame) + 4.5, JX_SCREEN_WIDTH, .5)];
  124. lineView.backgroundColor = HEXCOLOR(0xdcdcdc);
  125. [_tableHeadView addSubview:lineView];
  126. //选择群组群发
  127. UIButton *btn2 = [[UIButton alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(lineView.frame), JX_SCREEN_WIDTH, 54)];
  128. [_tableHeadView addSubview:btn2];
  129. [btn2 addTarget:self action:@selector(selectorGroup:) forControlEvents:UIControlEventTouchUpInside];
  130. _selectGroupTip = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, btn2.frame.size.width, btn2.frame.size.height)];
  131. _selectGroupTip.font = [UIFont systemFontOfSize:16.0];
  132. _selectGroupTip.text = Localized(@"JX_SelectGroupGroupSending");
  133. [btn2 addSubview:_selectGroupTip];
  134. _selectGroups = [[UILabel alloc] initWithFrame:CGRectMake(15, CGRectGetMaxY(_selectGroupTip.frame), btn2.frame.size.width, btn2.frame.size.height - CGRectGetMaxY(_selectGroupTip.frame))];
  135. _selectGroups.font = [UIFont systemFontOfSize:15.0];
  136. _selectGroups.text = @"[群组1,群组2]";
  137. _selectGroups.textColor = [UIColor lightGrayColor];
  138. [btn2 addSubview:_selectGroups];
  139. lineView = [[UIView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(btn2.frame) + 4.5, JX_SCREEN_WIDTH, .5)];
  140. lineView.backgroundColor = HEXCOLOR(0xdcdcdc);
  141. [_tableHeadView addSubview:lineView];
  142. //选择同事群发
  143. UIButton *btn3 = [[UIButton alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(lineView.frame), JX_SCREEN_WIDTH, 54)];
  144. // [_tableHeadView addSubview:btn3];
  145. [btn3 addTarget:self action:@selector(selectorColleague:) forControlEvents:UIControlEventTouchUpInside];
  146. _selectColleagueTip = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, btn3.frame.size.width, btn3.frame.size.height)];
  147. _selectColleagueTip.font = [UIFont systemFontOfSize:16.0];
  148. _selectColleagueTip.text = Localized(@"JX_SelectAGroupOfColleagues");
  149. [btn3 addSubview:_selectColleagueTip];
  150. _selectColleagues = [[UILabel alloc] initWithFrame:CGRectMake(15, CGRectGetMaxY(_selectColleagueTip.frame), btn3.frame.size.width, btn3.frame.size.height - CGRectGetMaxY(_selectColleagueTip.frame))];
  151. _selectColleagues.font = [UIFont systemFontOfSize:15.0];
  152. _selectColleagues.text = @"[同事1,同事2]";
  153. _selectColleagues.textColor = [UIColor lightGrayColor];
  154. [btn3 addSubview:_selectColleagues];
  155. lineView = [[UIView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(btn3.frame) + 4.5, JX_SCREEN_WIDTH, .5)];
  156. lineView.backgroundColor = HEXCOLOR(0xdcdcdc);
  157. // [_tableHeadView addSubview:lineView];
  158. //选择通讯录群发
  159. UIButton *btn4 = [[UIButton alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(lineView.frame), JX_SCREEN_WIDTH, 54)];
  160. // [_tableHeadView addSubview:btn4];
  161. [btn4 addTarget:self action:@selector(selectorMaillist:) forControlEvents:UIControlEventTouchUpInside];
  162. _selectMaillistTip = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, btn4.frame.size.width, btn4.frame.size.height)];
  163. _selectMaillistTip.font = [UIFont systemFontOfSize:16.0];
  164. _selectMaillistTip.text = Localized(@"JX_SelectMobilePhoneToContactTheCrowd");
  165. [btn4 addSubview:_selectMaillistTip];
  166. _selectMaillists = [[UILabel alloc] initWithFrame:CGRectMake(15, CGRectGetMaxY(_selectMaillistTip.frame), btn4.frame.size.width, btn4.frame.size.height - CGRectGetMaxY(_selectMaillistTip.frame))];
  167. _selectMaillists.font = [UIFont systemFontOfSize:15.0];
  168. _selectMaillists.text = @"[通讯录]";
  169. _selectMaillists.textColor = [UIColor lightGrayColor];
  170. [btn4 addSubview:_selectMaillists];
  171. _tableHeadView.frame = CGRectMake(_tableHeadView.frame.origin.x, _tableHeadView.frame.origin.y, _tableHeadView.frame.size.width, CGRectGetMaxY(btn3.frame));
  172. self.tableView.tableHeaderView = _tableHeadView;
  173. // [self getArrayData];
  174. }
  175. - (void)selectLabels:(UIButton *)btn {
  176. JXSelectLabelsVC *vc = [[JXSelectLabelsVC alloc] init];
  177. vc.delegate = self;
  178. vc.selLabels = [NSMutableArray arrayWithArray:_selLabelsArr];
  179. [g_navigation pushViewController:vc animated:YES];
  180. }
  181. - (void)selectorGroup:(UIButton *)btn{
  182. JXSelectGroupSendVC *vc = [[JXSelectGroupSendVC alloc] initWithTitle:SELECTGroup];
  183. vc.delegate = self;
  184. vc.seletedArray = [NSMutableArray arrayWithArray:_selGroupsArr];
  185. [g_navigation pushViewController:vc animated:YES];
  186. }
  187. - (void)selectorColleague:(UIButton *)btn{
  188. OrganizeSelectVC *vc = [[OrganizeSelectVC alloc] init];
  189. vc.delegate = self;
  190. vc.seletedArray = [NSMutableArray arrayWithArray:_selColleaguesArr];
  191. [g_navigation pushViewController:vc animated:YES];
  192. }
  193. - (void)selectorMaillist:(UIButton *)btn{
  194. JXSelectGroupSendVC *vc = [[JXSelectGroupSendVC alloc] initWithTitle:SELECTMaillist];
  195. vc.delegate = self;
  196. vc.seletedArray = [NSMutableArray arrayWithArray:_selMailistArr];
  197. [g_navigation pushViewController:vc animated:YES];
  198. }
  199. - (void)selectLabelsVC:(JXSelectLabelsVC *)selectLabelsVC selectLabelsArray:(NSMutableArray *)array {
  200. _selLabelsArr = [NSMutableArray arrayWithArray:array];
  201. NSMutableString *nameStr = [NSMutableString string];
  202. for (NSInteger i = 0; i < array.count; i ++) {
  203. JXLabelObject *labelObj = array[i];
  204. if (i == 0) {
  205. [nameStr appendFormat:@"[\"%@",labelObj.groupName];
  206. }else if (i == array.count - 1) {
  207. [nameStr appendFormat:@",%@\"]",labelObj.groupName];
  208. }else {
  209. [nameStr appendFormat:@",%@",labelObj.groupName];
  210. }
  211. if (array.count == 1) {
  212. [nameStr appendString:@"\"]"];
  213. }
  214. }
  215. self.selectLabels.text = nameStr;
  216. if (nameStr.length > 0) {
  217. self.selectLabelTip.frame = CGRectMake(self.selectLabelTip.frame.origin.x, self.selectLabelTip.frame.origin.y, self.selectLabelTip.frame.size.width, 27);
  218. self.selectLabels.frame = CGRectMake(self.selectLabels.frame.origin.x, CGRectGetMaxY(_selectLabelTip.frame), self.selectLabels.frame.size.width, 27);
  219. }else {
  220. self.selectLabelTip.frame = CGRectMake(self.selectLabelTip.frame.origin.x, self.selectLabelTip.frame.origin.y, self.selectLabelTip.frame.size.width, 54);
  221. self.selectLabels.frame = CGRectMake(self.selectLabels.frame.origin.x, CGRectGetMaxY(_selectLabelTip.frame), self.selectLabels.frame.size.width, 0);
  222. }
  223. }
  224. - (void)selectVC:(JXSelectGroupSendVC *)selectLabelsVC selectArray:(NSMutableArray *)array{
  225. if ([selectLabelsVC.titleString isEqualToString:SELECTGroup]) {
  226. _selGroupsArr = [NSMutableArray arrayWithArray:array];
  227. NSMutableString *groupsName = [NSMutableString string];
  228. for (NSInteger i = 0; i < array.count; i++) {
  229. JXUserObject *user = array[i];
  230. if (i == 0) {
  231. [groupsName appendFormat:@"[\"%@",user.userNickname];
  232. }else if (i == array.count - 1){
  233. [groupsName appendFormat:@",%@\"]",user.userNickname];
  234. }else{
  235. [groupsName appendFormat:@",%@",user.userNickname];
  236. }
  237. if (array.count == 1) {
  238. [groupsName appendString:@"\"]"];
  239. }
  240. }
  241. self.selectGroups.text = groupsName;
  242. if (groupsName.length > 0) {
  243. self.selectGroupTip.frame = CGRectMake(self.selectGroupTip.frame.origin.x, self.selectGroupTip.frame.origin.y, self.selectGroupTip.frame.size.width, 27);
  244. self.selectGroups.frame = CGRectMake(self.selectGroups.frame.origin.x, CGRectGetMaxY(_selectGroupTip.frame), self.selectGroups.frame.size.width, 27);
  245. }else {
  246. self.selectGroupTip.frame = CGRectMake(self.selectGroupTip.frame.origin.x, self.selectGroupTip.frame.origin.y, self.selectGroupTip.frame.size.width, 54);
  247. self.selectGroups.frame = CGRectMake(self.selectGroups.frame.origin.x, CGRectGetMaxY(_selectGroupTip.frame), self.selectGroups.frame.size.width, 0);
  248. }
  249. }
  250. if ([selectLabelsVC.titleString isEqualToString:SELECTMaillist]) {
  251. {
  252. _selMailistArr = [NSMutableArray arrayWithArray:array];
  253. NSMutableString *groupsName = [NSMutableString string];
  254. for (NSInteger i = 0; i < array.count; i++) {
  255. JXUserObject *user = array[i];
  256. if (i == 0) {
  257. [groupsName appendFormat:@"[\"%@",user.userNickname];
  258. }else if (i == array.count - 1){
  259. [groupsName appendFormat:@",%@\"]",user.userNickname];
  260. }else{
  261. [groupsName appendFormat:@",%@",user.userNickname];
  262. }
  263. if (array.count == 1) {
  264. [groupsName appendString:@"\"]"];
  265. }
  266. }
  267. self.selectMaillists.text = groupsName;
  268. if (groupsName.length > 0) {
  269. self.selectMaillistTip.frame = CGRectMake(self.selectMaillistTip.frame.origin.x, self.selectMaillistTip.frame.origin.y, self.selectMaillistTip.frame.size.width, 27);
  270. self.selectMaillists.frame = CGRectMake(self.selectMaillists.frame.origin.x, CGRectGetMaxY(_selectMaillistTip.frame), self.selectMaillists.frame.size.width, 27);
  271. }else {
  272. self.selectMaillistTip.frame = CGRectMake(self.selectMaillistTip.frame.origin.x, self.selectMaillistTip.frame.origin.y, self.selectMaillistTip.frame.size.width, 54);
  273. self.selectMaillists.frame = CGRectMake(self.selectMaillists.frame.origin.x, CGRectGetMaxY(_selectMaillistTip.frame), self.selectMaillists.frame.size.width, 0);
  274. }
  275. }
  276. }
  277. }
  278. - (void)selectOrganizeVC:(OrganizeSelectVC *)selectVC selectArray:(NSMutableArray *)array{
  279. _selColleaguesArr = [NSMutableArray arrayWithArray:array];
  280. NSMutableString *colleaguesName = [NSMutableString string];
  281. for (NSInteger i = 0; i < array.count; i++) {
  282. EmployeObject *employe = array[i];
  283. if (i == 0) {
  284. [colleaguesName appendFormat:@"[\"%@",employe.nickName];
  285. }else if (i == array.count - 1){
  286. [colleaguesName appendFormat:@",%@\"]",employe.nickName];
  287. }else{
  288. [colleaguesName appendFormat:@",%@",employe.nickName];
  289. }
  290. if (array.count == 1) {
  291. [colleaguesName appendString:@"\"]"];
  292. }
  293. }
  294. self.selectColleagues.text = colleaguesName;
  295. if (colleaguesName.length > 0) {
  296. self.selectColleagueTip.frame = CGRectMake( self.selectColleagueTip.frame.origin.x, self.selectColleagueTip.frame.origin.y, self.selectMaillistTip.frame.size.width, 27);
  297. self.selectColleagues.frame = CGRectMake( self.selectColleagueTip.frame.origin.x, CGRectGetMaxY(_selectColleagueTip.frame), self.selectColleagues.frame.size.width, 27);
  298. }else {
  299. self.selectColleagueTip.frame = CGRectMake( self.selectColleagueTip.frame.origin.x, self.selectColleagueTip.frame.origin.y, self.selectColleagueTip.frame.size.width, 54);
  300. self.selectColleagues.frame = CGRectMake(self.selectColleagues.frame.origin.x, CGRectGetMaxY(_selectColleagueTip.frame), self.selectColleagues.frame.size.width, 0);
  301. }
  302. }
  303. - (void)allSelect:(UIButton *)btn {
  304. btn.selected = !btn.selected;
  305. [_selUserIdArray removeAllObjects];
  306. [_selUserNameArray removeAllObjects];
  307. if (btn.selected) {
  308. NSArray *array;
  309. if (_seekTextField.text.length > 0) {
  310. array = _searchArray;
  311. }else {
  312. array = _array;
  313. }
  314. for (JXUserObject *user in array) {
  315. [_selUserIdArray addObject:user.userId];
  316. [_selUserNameArray addObject:user.userNickname];
  317. }
  318. }
  319. [self.nextBtn setTitle:[NSString stringWithFormat:@"%@(%ld)",Localized(@"JX_NextStep"),_selUserIdArray.count] forState:UIControlStateNormal];
  320. [_checkBoxArr removeAllObjects];
  321. [self.tableView reloadData];
  322. }
  323. - (void)nextBtnAction:(UIButton *)btn {
  324. NSMutableArray *selUserIdArray = [NSMutableArray array];
  325. NSMutableArray *selUserNameArray = [NSMutableArray array];
  326. [selUserIdArray addObjectsFromArray:_selUserIdArray];
  327. [selUserNameArray addObjectsFromArray:_selUserNameArray];
  328. for (NSInteger i = 0; i < self.selLabelsArr.count; i ++) {
  329. JXLabelObject *labelObj = self.selLabelsArr[i];
  330. NSArray *labelUserIds = [labelObj.userIdList componentsSeparatedByString:@","];
  331. for (NSInteger j = 0; j < labelUserIds.count; j ++) {
  332. NSString *labelUserId = labelUserIds[j];
  333. NSString *labelUserName = [JXUserObject getUserNameWithUserId:labelUserId];
  334. BOOL flag = NO;
  335. NSMutableArray *array = [NSMutableArray arrayWithArray:selUserIdArray];
  336. for (NSInteger m = 0; m < array.count; m ++) {
  337. NSString *selUserId = array[m];
  338. if ([labelUserId isEqualToString:selUserId]) {
  339. flag = YES;
  340. break;
  341. }
  342. }
  343. if (!flag) {
  344. [selUserIdArray addObject:labelUserId];
  345. [selUserNameArray addObject:labelUserName];
  346. }
  347. }
  348. }
  349. for (NSInteger i = 0; i < self.selGroupsArr.count; i++) {
  350. JXUserObject *group = self.selGroupsArr[i];
  351. [selUserIdArray addObject:group.userId];
  352. [selUserNameArray addObject:group.userNickname];
  353. }
  354. for (NSInteger i = 0; i < self.selMailistArr.count; i++) {
  355. JXUserObject *user = self.selMailistArr[i];
  356. [selUserIdArray addObject:user.userId];
  357. [selUserNameArray addObject:user.userNickname];
  358. }
  359. for (NSInteger i = 0; i < self.selColleaguesArr.count; i++) {
  360. EmployeObject *employe = self.selColleaguesArr[i];
  361. [selUserIdArray addObject:employe.userId];
  362. [selUserNameArray addObject:employe.nickName];
  363. }
  364. if (!selUserIdArray.count) {
  365. [g_App showAlert:Localized(@"JX_SelectGroupUsers")];
  366. return;
  367. }
  368. JXChatViewController *vc = [[JXChatViewController alloc] init];
  369. vc.userIds = selUserIdArray;
  370. vc.userNames = selUserNameArray;
  371. vc.isGroupMessages = YES;
  372. vc.userNmaesWithFriend = selUserNameArray;
  373. vc.isCYMSGgroupANDFriendy = YES;
  374. [g_navigation pushViewController:vc animated:YES];
  375. }
  376. - (void) cancelBtnAction {
  377. _seekTextField.text = nil;
  378. [_seekTextField resignFirstResponder];
  379. [self getArrayData];
  380. }
  381. - (void)didSelectedCheckBox:(QCheckBox *)checkbox checked:(BOOL)checked{
  382. JXUserObject *user;
  383. if (_seekTextField.text.length > 0) {
  384. user = _searchArray[checkbox.tag % 100000-1];
  385. }else{
  386. user = [[self.letterResultArr objectAtIndex:checkbox.tag / 100000-1] objectAtIndex:checkbox.tag % 100000-1];
  387. }
  388. if(checked){
  389. BOOL flag = NO;
  390. for (NSInteger i = 0; i < _selUserIdArray.count; i ++) {
  391. NSString *selUserId = _selUserIdArray[i];
  392. if ([selUserId isEqualToString:user.userId]) {
  393. flag = YES;
  394. return;
  395. }
  396. }
  397. [_selUserIdArray addObject:user.userId];
  398. [_selUserNameArray addObject:user.userNickname];
  399. }
  400. else{
  401. [_selUserIdArray removeObject:user.userId];
  402. [_selUserNameArray removeObject:user.userNickname];
  403. }
  404. if (_selUserIdArray.count <= 0) {
  405. [self.nextBtn setTitle:[NSString stringWithFormat:@"%@",Localized(@"JX_NextStep")] forState:UIControlStateNormal];
  406. }else {
  407. [self.nextBtn setTitle:[NSString stringWithFormat:@"%@(%ld)",Localized(@"JX_NextStep"),_selUserIdArray.count] forState:UIControlStateNormal];
  408. }
  409. }
  410. - (void) textFieldDidChange:(UITextField *)textField {
  411. if (textField.text.length <= 0) {
  412. [self getArrayData];
  413. return;
  414. }
  415. [_searchArray removeAllObjects];
  416. for (NSInteger i = 0; i < _array.count; i ++) {
  417. JXUserObject * user = _array[i];
  418. NSString *userStr = [user.userNickname lowercaseString];
  419. NSString *textStr = [textField.text lowercaseString];
  420. if ([userStr rangeOfString:textStr].location != NSNotFound) {
  421. [_searchArray addObject:user];
  422. }
  423. }
  424. [_checkBoxArr removeAllObjects];
  425. [self.tableView reloadData];
  426. }
  427. -(void)getArrayData{
  428. _array=[[JXUserObject sharedInstance] fetchAllUserFromLocal];
  429. //选择拼音 转换的 方法
  430. BMChineseSortSetting.share.sortMode = 2; // 1或2
  431. //排序 Person对象
  432. [BMChineseSort sortAndGroup:_array key:@"userNickname" finish:^(bool isSuccess, NSMutableArray *unGroupArr, NSMutableArray *sectionTitleArr, NSMutableArray<NSMutableArray *> *sortedObjArr) {
  433. if (isSuccess) {
  434. self.indexArray = sectionTitleArr;
  435. self.letterResultArr = sortedObjArr;
  436. [_checkBoxArr removeAllObjects];
  437. [self.tableView reloadData];
  438. }
  439. }];
  440. // //根据Person对象的 name 属性 按中文 对 Person数组 排序
  441. // self.indexArray = [BMChineseSort IndexWithArray:_array Key:@"userNickname"];
  442. // self.letterResultArr = [BMChineseSort sortObjectArray:_array Key:@"userNickname"];
  443. // [self.tableView reloadData];
  444. }
  445. #pragma mark ---------tableView协议----------------
  446. -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
  447. {
  448. // if (_seekTextField.text.length > 0) {
  449. // return 1;
  450. // }
  451. // return [self.indexArray count];
  452. return 0;
  453. }
  454. - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
  455. if (_seekTextField.text.length > 0) {
  456. return Localized(@"JXFriend_searchTitle");
  457. }
  458. return [self.indexArray objectAtIndex:section];
  459. }
  460. -(void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section{
  461. UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
  462. header.tintColor = HEXCOLOR(0xF2F2F2);
  463. [header.textLabel setTextColor:HEXCOLOR(0x999999)];
  464. [header.textLabel setFont:SYSFONT(15)];
  465. }
  466. -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  467. {
  468. if (_seekTextField.text.length > 0) {
  469. return _searchArray.count;
  470. }
  471. return [(NSArray *)[self.letterResultArr objectAtIndex:section] count];
  472. }
  473. -(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{
  474. // if (_seekTextField.text.length > 0) {
  475. // return nil;
  476. // }
  477. // return self.indexArray;
  478. return nil;
  479. }
  480. - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index{
  481. return index;
  482. }
  483. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  484. {
  485. NSArray * tempArray;
  486. if (_seekTextField.text.length > 0) {
  487. tempArray = _searchArray;
  488. }else{
  489. tempArray = [self.letterResultArr objectAtIndex:indexPath.section];
  490. }
  491. JXCell *cell=nil;
  492. NSString* cellName = [NSString stringWithFormat:@"selVC_%d",(int)indexPath.row];
  493. // cell = [tableView dequeueReusableCellWithIdentifier:cellName];
  494. // QCheckBox* btn;
  495. // if (!cell) {
  496. cell = [[JXCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellName];
  497. cell.selectionStyle = UITableViewCellSelectionStyleNone;
  498. QCheckBox* btn = [[QCheckBox alloc] initWithDelegate:self];
  499. btn.frame = CGRectMake(13, 18.5, 22, 22);
  500. [cell addSubview:btn];
  501. // }
  502. JXUserObject *user=tempArray[indexPath.row];
  503. btn.tag = (indexPath.section + 1) * 100000 + (indexPath.row + 1);
  504. BOOL flag = NO;
  505. for (NSInteger i = 0; i < _selUserIdArray.count; i ++) {
  506. NSString *selUserId = _selUserIdArray [i];
  507. if ([user.userId isEqualToString:selUserId]) {
  508. flag = YES;
  509. break;
  510. }
  511. }
  512. btn.checked = flag;
  513. [_checkBoxArr addObject:btn];
  514. // cell = [[JXCell alloc] init];
  515. [_table addToPool:cell];
  516. cell.title = user.userNickname;
  517. // cell.subtitle = user.userId;
  518. cell.bottomTitle = [TimeUtil formatDate:user.timeCreate format:@"MM-dd HH:mm"];
  519. cell.userId = user.userId;
  520. cell.isSmall = YES;
  521. [cell headImageViewImageWithUserId:nil roomId:nil];
  522. CGFloat headX = 13*2+22;
  523. cell.headImageView.frame = CGRectMake(headX,9.5,40,40);
  524. cell.headImageView.layer.cornerRadius = cell.headImageView.frame.size.width / 2;
  525. cell.lbTitle.frame = CGRectMake(CGRectGetMaxX(cell.headImageView.frame)+15, 21.5, JX_SCREEN_WIDTH - 115 -CGRectGetMaxX(cell.headImageView.frame)-14, 16);
  526. cell.lbSubTitle.frame = CGRectMake(CGRectGetMaxX(cell.headImageView.frame)+15, cell.lbSubTitle.frame.origin.y, JX_SCREEN_WIDTH - 55 -CGRectGetMaxX(cell.headImageView.frame)-14, cell.lbSubTitle.frame.size.height);
  527. cell.lineView.frame = CGRectMake(CGRectGetMaxX(cell.headImageView.frame)+15,59-LINE_WH,JX_SCREEN_WIDTH,LINE_WH);
  528. if (indexPath.row == [(NSArray *)[self.letterResultArr objectAtIndex:indexPath.section] count]-1) {
  529. cell.lineView.frame = CGRectMake(cell.lineView.frame.origin.x, cell.lineView.frame.origin.y, cell.lineView.frame.size.width,0);
  530. }else {
  531. cell.lineView.frame = CGRectMake(cell.lineView.frame.origin.x, cell.lineView.frame.origin.y, cell.lineView.frame.size.width,LINE_WH);
  532. }
  533. // cell.headImageView.frame = CGRectMake(cell.headImageView.frame.origin.x + 50, cell.headImageView.frame.origin.y, cell.headImageView.frame.size.width, cell.headImageView.frame.size.height);
  534. // cell.lbTitle.frame = CGRectMake(cell.lbTitle.frame.origin.x + 50, cell.lbTitle.frame.origin.y, cell.lbTitle.frame.size.width, cell.lbTitle.frame.size.height);
  535. return cell;
  536. }
  537. -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  538. {
  539. // QCheckBox *checkBox = nil;
  540. // for (NSInteger i = 0; i < _checkBoxArr.count; i ++) {
  541. // QCheckBox *btn = _checkBoxArr[i];
  542. // if (btn.tag / 10000 == indexPath.section && btn.tag % 10000 == indexPath.row) {
  543. // checkBox = btn;
  544. // break;
  545. // }
  546. // }
  547. JXCell *cell = [tableView cellForRowAtIndexPath:indexPath];
  548. QCheckBox *checkBox = [cell viewWithTag:(indexPath.section + 1) * 100000 + (indexPath.row + 1)];
  549. checkBox.selected = !checkBox.selected;
  550. [self didSelectedCheckBox:checkBox checked:checkBox.selected];
  551. }
  552. -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
  553. {
  554. return 59;
  555. }
  556. - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
  557. [self.view endEditing:YES];
  558. }
  559. - (void)didReceiveMemoryWarning {
  560. [super didReceiveMemoryWarning];
  561. // Dispose of any resources that can be recreated.
  562. }
  563. /*
  564. #pragma mark - Navigation
  565. // In a storyboard-based application, you will often want to do a little preparation before navigation
  566. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  567. // Get the new view controller using [segue destinationViewController].
  568. // Pass the selected object to the new view controller.
  569. }
  570. */
  571. @end