1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438 |
- //
- // JXSelectFriendsVC.m
- // shiku_im
- //
- // Created by p on 2018/7/2.
- // Copyright © 2018年 Reese. All rights reserved.
- //
- #import "JXSelectFriendsVC.h"
- #import "JXChatViewController.h"
- #import "AppDelegate.h"
- #import "JXLabel.h"
- #import "JXImageView.h"
- #import "JXCell.h"
- #import "JXRoomPool.h"
- #import "JXTableView.h"
- #import "JXNewFriendViewController.h"
- #import "menuImageView.h"
- #import "QCheckBox.h"
- #import "JXRoomObject.h"
- #import "NSString+ContainStr.h"
- #import "JXMessageObject.h"
- #import "BMChineseSort.h"
- #import "JXGroupViewController.h"
- #import "JXFaceCreateRoomVC.h"
- #import "JXSelectFriendBottomView.h"
- #import "JXChatViewC.h"
- #define HEIGHT 55
- @interface JXSelectFriendsVC ()<UITextFieldDelegate, UIAlertViewDelegate,JXRoomObjectDelegate>
- @property (nonatomic, strong) UIButton* finishBtn;
- @property (nonatomic, strong) NSMutableArray *checkBoxArr;
- @property (nonatomic, strong) UIView *backView;
- @property (nonatomic,strong) NSMutableArray *checkUserArr;
- @end
- @implementation JXSelectFriendsVC
- @synthesize chatRoom,room,isNewRoom,set,array=_array;
- - (id)init
- {
- self = [super init];
- if (self) {
-
- self.heightHeader = JX_SCREEN_TOP;
- self.heightFooter = 50+JX_SCREEN_BOTTOM_SAFE_AREA;
- self.isGotoBack = YES;
- //self.view.frame = g_window.bounds;
- self.isShowFooterPull = NO;
- _searchArray = [NSMutableArray array];
- _checkUserArr = [NSMutableArray array];
- _userIds = [NSMutableArray array];
- _userNames = [NSMutableArray array];
- set = [[NSMutableSet alloc] init];
- _indexArray = [NSMutableArray array];
- _letterResultArr = [NSMutableArray array];
- _checkBoxArr = [NSMutableArray array];
- _selMenu = 0;
-
-
- [g_notify addObserver:self selector:@selector(newReceipt:) name:kXMPPReceiptNotifaction object:nil];
- [g_notify addObserver:self selector:@selector(onSendTimeout:) name:kXMPPSendTimeOutNotifaction object:nil];
-
- [g_notify addObserver:self selector:@selector(refreshNotif:) name:kLabelVCRefreshNotif object:nil];
- [g_notify addObserver:self selector:@selector(disSelectUserChange:) name:@"disselectuserchange" object:nil];
- [g_notify addObserver:self selector:@selector(onInsert) name:@"nextAction" object:nil];
- }
- return self;
- }
- - (void)refreshNotif:(NSNotification *)notif {
- [self actionQuit];
- }
- -(void)dealloc{
- //移除监听
- [g_notify removeObserver:self];
- [set removeAllObjects];
- [_array removeAllObjects];
- }
- - (void)viewDidLoad
- {
- [super viewDidLoad];
-
- [self createHeadAndFoot];
- if (_type == JXSelectFriendTypeGroupAT ||_type == JXSelectFriendTypeSpecifyAdmin) {
-
- }else{
-
- _finishBtn = [UIButton buttonWithType:UIButtonTypeSystem];
- [_finishBtn setTitle:Localized(@"JX_Confirm") forState:UIControlStateNormal];
- [_finishBtn setTitle:Localized(@"JX_Confirm") forState:UIControlStateHighlighted];
- [_finishBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
- _finishBtn.layer.masksToBounds = YES;
- _finishBtn.layer.cornerRadius = 3.f;
- [_finishBtn setBackgroundColor:THEMECOLOR];
- [_finishBtn.titleLabel setFont:SYSFONT(15)];
- _finishBtn.frame = CGRectMake(JX_SCREEN_WIDTH - 51 - 15, JX_SCREEN_TOP - 8 - 29, 51, 29);
- [_finishBtn addTarget:self action:@selector(onAdd) forControlEvents:UIControlEventTouchUpInside];
- // [self.tableHeader addSubview:_finishBtn];
- JXSelectFriendBottomView *view = [[JXSelectFriendBottomView alloc] initWithFrame:CGRectMake(0, JX_SCREEN_HEIGHT - JX_SCREEN_BOTTOM_SAFE_AREA - 50, JX_SCREEN_WIDTH, 50)];
- //view.backgroundColor=[UIColor yellowColor];
-
- [self.view addSubview:view];
- }
- [self customSearchTextField];
-
- [self getDataArrayByType];
- }
- -(void)getDataArrayByType{
- self.isShowFooterPull = NO;
- self.isShowHeaderPull = NO;
-
- if (_type == JXSelectFriendTypeGroupAT || _type == JXSelectFriendTypeSelMembers) {
- if(_type == JXSelectFriendTypeSelMembers){
- self.title = Localized(@"JXSip_invite");
- [self getSelUserTypeSelMembersArray];
- }else{
- self.title = Localized(@"JX_GroupAtMember");
- [self getGroupATRoomMembersArray];
- }
- [_table reloadData];
- }else if(_type == JXSelectFriendTypeSpecifyAdmin){
- self.title = Localized(@"JXRoomMemberVC_SetAdministrator");
- [self getRoomMembersArray];
- [_table reloadData];
- }else if (_type == JXSelectFriendTypeCustomArray) {
- // self.title
- //选择拼音 转换的 方法
- BMChineseSortSetting.share.sortMode = 2; // 1或2
- //排序 Person对象
- [BMChineseSort sortAndGroup:_array key:@"userNickname" finish:^(bool isSuccess, NSMutableArray *unGroupArr, NSMutableArray *sectionTitleArr, NSMutableArray<NSMutableArray *> *sortedObjArr) {
- if (isSuccess) {
- self.indexArray = sectionTitleArr;
- self.letterResultArr = sortedObjArr;
- [_table reloadData];
- }
- }];
- }
- else{
- if (_isPlusButtonComming) {
- self.title = @"选择群成员";
- }else {
- self.title = Localized(@"JXSelFriendVC_SelFriend");
- }
- _array=[[NSMutableArray alloc] init];
- [self refresh];
- }
- }
- - (void)viewWillAppear:(BOOL)animated
- {
- [super viewWillAppear:animated];
- }
- - (void)customSearchTextField{
-
- int height = 55;
- if (_isPlusButtonComming) {
- height = 55 * 3;
- }
- //搜索输入框
- UIView *backView = [[UIView alloc] initWithFrame:CGRectMake(0, JX_SCREEN_TOP, JX_SCREEN_WIDTH, 55)];
- // backView.backgroundColor = HEXCOLOR(0xf0f0f0);
- // [self.view addSubview:backView];
- self.tableView.tableHeaderView=backView;
- _backView = backView;
- // UIButton *cancelBtn = [[UIButton alloc] initWithFrame:CGRectMake(backView.frame.size.width-5-45, 5, 45, 30)];
- // [cancelBtn setTitle:Localized(@"JX_Cencal") forState:UIControlStateNormal];
- // [cancelBtn setTitleColor:THEMECOLOR forState:UIControlStateNormal];
- // [cancelBtn addTarget:self action:@selector(cancelBtnAction) forControlEvents:UIControlEventTouchUpInside];
- // cancelBtn.titleLabel.font = SYSFONT(14);
- // [backView addSubview:cancelBtn];
-
- _seekTextField = [[UITextField alloc] initWithFrame:CGRectMake(15, 10, backView.frame.size.width - 30, 35)];
- _seekTextField.placeholder =@"搜索"; Localized(@"JX_EnterKeyword");
- _seekTextField.textColor = [UIColor blackColor];
- [_seekTextField setFont:SYSFONT(14)];
- _seekTextField.backgroundColor = HEXCOLOR(0xf0f0f0);
- UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"card_search"]];
- UIView *leftView = [[UIView alloc ]initWithFrame:CGRectMake(0, 0, 30, 30)];
- // imageView.center = CGPointMake(leftView.frame.size.width/2, leftView.frame.size.height/2);
- imageView.center = leftView.center;
- [leftView addSubview:imageView];
- _seekTextField.leftView = leftView;
- _seekTextField.leftViewMode = UITextFieldViewModeAlways;
- _seekTextField.borderStyle = UITextBorderStyleNone;
- _seekTextField.layer.masksToBounds = YES;
- _seekTextField.layer.cornerRadius = 3.f;
- _seekTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
- _seekTextField.delegate = self;
- _seekTextField.returnKeyType = UIReturnKeyGoogle;
- [backView addSubview:_seekTextField];
- [_seekTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
-
- if (_isPlusButtonComming) {
- return;
- // 选择一个群
- int h=45;
- int w=JX_SCREEN_WIDTH;
- JXImageView* iv;
- iv = [self createButton:@"选择一个群" drawTop:YES drawBottom:YES icon:nil click:@selector(onSelectAgroup)];
- iv.frame = CGRectMake(0,h, w, HEIGHT);
- h+=iv.frame.size.height;
- // 面对面建群
- iv = [self createButton:Localized(@"JX_FaceToFaceGroup") drawTop:YES drawBottom:NO icon:nil click:@selector(onFaceCreateRoom)];
- iv.frame = CGRectMake(0,h, w, HEIGHT);
- }
-
- self.tableView.tableHeaderView = backView;
-
- }
- - (void)onSelectAgroup {
- JXGroupViewController *vc = [[JXGroupViewController alloc] init];
- [g_navigation pushViewController:vc animated:YES];
- }
- - (void)onFaceCreateRoom {
- JXFaceCreateRoomVC *vc = [[JXFaceCreateRoomVC alloc] init];
- [g_navigation pushViewController:vc animated:YES];
- }
- -(JXImageView*)createButton:(NSString*)title drawTop:(BOOL)drawTop drawBottom:(BOOL)drawBottom icon:(NSString*)icon click:(SEL)click{
- JXImageView* btn = [[JXImageView alloc] init];
- btn.backgroundColor = [UIColor whiteColor];
- btn.userInteractionEnabled = YES;
- btn.didTouch = click;
- btn.delegate = self;
- [self.backView addSubview:btn];
-
- JXLabel* p = [[JXLabel alloc] initWithFrame:CGRectMake(15, 0, JX_SCREEN_WIDTH-100, HEIGHT)];
- p.text = title;
- p.font = g_factory.font16;
- p.backgroundColor = [UIColor clearColor];
- p.textColor = [UIColor blackColor];
- p.delegate = self;
- p.didTouch = click;
- [btn addSubview:p];
-
- if(icon){
- UIImageView* iv = [[UIImageView alloc] initWithFrame:CGRectMake(10, (HEIGHT-20)/2, 20, 20)];
- iv.image = [UIImage imageNamed:icon];
- [btn addSubview:iv];
- }
-
- if(drawTop){
- UIView* line = [[UIView alloc] initWithFrame:CGRectMake(15,0,JX_SCREEN_WIDTH-15,LINE_WH)];
- line.backgroundColor = THE_LINE_COLOR;
- [btn addSubview:line];
- }
-
- if(drawBottom){
- UIView* line = [[UIView alloc] initWithFrame:CGRectMake(15,HEIGHT-LINE_WH,JX_SCREEN_WIDTH-15,LINE_WH)];
- line.backgroundColor = THE_LINE_COLOR;
- [btn addSubview:line];
- }
-
- if(click){
- UIImageView* iv;
- iv = [[UIImageView alloc] initWithFrame:CGRectMake(JX_SCREEN_WIDTH-15-7, (HEIGHT-13)/2, 7, 13)];
- iv.image = [UIImage imageNamed:@"new_icon_>"];
- [btn addSubview:iv];
- }
-
- return btn;
- }
- - (void) textFieldDidChange:(UITextField *)textField {
-
- if (textField.text.length <= 0) {
- [self getDataArrayByType];
- return;
- }
-
- [_searchArray removeAllObjects];
- // NSMutableArray *arr = [_array mutableCopy];
- // for (NSInteger i = 0; i < arr.count; i ++) {
- //
- // NSString * nameStr = nil;
- // NSString * cardNameStr = nil;
- // NSString * nickNameStr = nil;
- // if ([arr[i] isMemberOfClass:[memberData class]]) {
- // memberData *obj = arr[i];
- // nameStr = obj.userName;
- // cardNameStr = obj.cardName;
- // nickNameStr = obj.userNickName;
- // }else if ([arr[i] isMemberOfClass:[JXUserObject class]]) {
- // JXUserObject * obj = arr[i];
- // nameStr = obj.userNickname;
- // }
- // nameStr = !nameStr ? @"" : nameStr;
- // cardNameStr = !cardNameStr ? @"" : cardNameStr;
- // nickNameStr = !nickNameStr ? @"" : nickNameStr;
- // NSString * allStr = [NSString stringWithFormat:@"%@%@%@",nameStr,cardNameStr,nickNameStr];
- // if ([[allStr lowercaseString] containsMyString:[textField.text lowercaseString]]) {
- // [_searchArray addObject:arr[i]];
- // }
- //
- // }
-
- if (_type == JXSelectFriendTypeGroupAT || _type == JXSelectFriendTypeSelMembers || _type == JXSelectFriendTypeSpecifyAdmin) {
-
- // _searchArray = [memberData searchMemberByFilter:textField.text room:room.roomId];
- for (NSInteger i = 0; i < _array.count; i ++) {
- memberData *data = _array[i];
- memberData *data1 = [self.room getMember:g_myself.userId];
- JXUserObject *allUser = [[JXUserObject alloc] init];
- allUser = [allUser getUserById:[NSString stringWithFormat:@"%ld",data.userId]];
- NSString *name = [NSString string];
- if ([data1.role intValue] == 1) {
- name = data.lordRemarkName ? data.lordRemarkName : allUser.remarkName.length > 0 ? allUser.remarkName : data.userNickName;
- }else {
- name = allUser.remarkName.length > 0 ? allUser.remarkName : data.userNickName;
- }
-
- NSString *userStr = [name lowercaseString];
- NSString *textStr = [textField.text lowercaseString];
- if ([userStr rangeOfString:textStr].location != NSNotFound) {
- [_searchArray addObject:data];
- }
- }
- }else{
- // 搜索手机号,昵称,备注名
- _array = [[JXUserObject sharedInstance] fetchFriendsFromLocalWhereLikeNickNameOrRemarkNameOrTelephone:textField.text];
- for (NSInteger i = 0; i < _array.count; i ++) {
- JXUserObject * user = _array[i];
- NSString *userStr = [user.userNickname lowercaseString];
- NSString *remarkNameStr = [user.remarkName lowercaseString];
- NSString *telephoneStr = [user.telephone lowercaseString];
- NSString *textStr = [textField.text lowercaseString];
- if ([userStr rangeOfString:textStr].location != NSNotFound || [remarkNameStr rangeOfString:textStr].location != NSNotFound || [telephoneStr rangeOfString:textStr].location != NSNotFound) {
- [_searchArray addObject:user];
- }
- }
- }
-
- // _searchArray = [memberData searchMemberByFilter:textField.text room:room.roomId];
-
- [self.tableView reloadData];
- }
- - (void) cancelBtnAction {
- _seekTextField.text = nil;
- [_seekTextField resignFirstResponder];
- [self getDataArrayByType];
- }
- - (void)didReceiveMemoryWarning
- {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
- }
- #pragma mark ---------tableView协议----------------
- -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
- {
- if (_seekTextField.text.length > 0) {
- return 1;
- }
- return [self.indexArray count];
- }
- - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
- if (_seekTextField.text.length > 0) {
- return Localized(@"JXFriend_searchTitle");
- }
- return [self.indexArray objectAtIndex:section];
- }
- -(void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section{
- UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
- header.tintColor = HEXCOLOR(0xF2F2F2);
- [header.textLabel setTextColor:HEXCOLOR(0x999999)];
- [header.textLabel setFont:SYSFONT(15)];
- }
- -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- {
- if (_seekTextField.text.length > 0) {
- return _searchArray.count;
- }
- return [(NSArray *)[self.letterResultArr objectAtIndex:section] count];
- }
- -(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{
- if (_seekTextField.text.length > 0) {
- return nil;
- }
- return self.indexArray;
- }
- - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index{
- return index;
- }
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
-
- JXCell *cell=nil;
- NSString* cellName = [NSString stringWithFormat:@"selVC_%ld_%ld",indexPath.section,indexPath.row];
- cell = [tableView dequeueReusableCellWithIdentifier:cellName];
-
- // if(cell==nil){
- memberData *data = [self.room getMember:g_myself.userId];
-
- if (_type == JXSelectFriendTypeGroupAT || _type == JXSelectFriendTypeSpecifyAdmin || _type == JXSelectFriendTypeSelMembers) {
-
- if (!cell) {
- cell = [[JXCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellName];
- }
- cell.selectionStyle = UITableViewCellSelectionStyleNone;
-
- memberData * member;
- if (_seekTextField.text.length > 0) {
- member = _searchArray[indexPath.row];
- }else{
- member = [[self.letterResultArr objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
- }
- // cell = [[JXCell alloc] init];
- [_table addToPool:cell];
- NSString *name = [NSString string];
- JXUserObject *allUser = [[JXUserObject alloc] init];
- allUser = [allUser getUserById:[NSString stringWithFormat:@"%ld",member.userId]];
- if (_type == JXSelectFriendTypeSelMembers) {
- if ([data.role intValue] == 1) {
- name = member.lordRemarkName ? member.lordRemarkName : allUser.remarkName.length > 0 ? allUser.remarkName : member.userNickName;
- }else {
- name = allUser.remarkName.length > 0 ? allUser.remarkName : member.userNickName;
- }
- }else {
- name = member.userNickName;
- }
- if (!self.room.allowSendCard && [data.role intValue] != 1 && [data.role intValue] != 2 && member.userId > 0) {
- name = [name substringToIndex:[name length]-1];
- name = [name stringByAppendingString:@"*"];
- }
- cell.title = name;
- cell.positionTitle = [self positionStrRole:[member.role integerValue]];
- if(!member.idStr){//所有人不显示
- // cell.subtitle = [NSString stringWithFormat:@"%ld",member.userId];
- }else{
- cell.headImage = @"groupImage";
- }
- // cell.bottomTitle = [TimeUtil formatDate:user.timeCreate format:@"MM-dd HH:mm"];
- cell.userId = [NSString stringWithFormat:@"%ld",member.userId];
- // [cell initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellName];
- cell.isSmall = YES;
- [cell headImageViewImageWithUserId:nil roomId:nil];
-
- if (_type == JXSelectFriendTypeGroupAT) {
- if(member.idStr){
- if (room.roomId != nil) {
- // NSString *groupImagePath = [NSString stringWithFormat:@"%@%@/%@.%@",NSTemporaryDirectory(),g_myself.userId,room.roomId,@"jpg"];
- // if (groupImagePath && [[NSFileManager defaultManager] fileExistsAtPath:groupImagePath]) {
- // cell.headImageView.image = [UIImage imageWithContentsOfFile:groupImagePath];
- // }else{
- // [roomData roomHeadImageRoomId:room.roomId toView:cell.headImageView];
- // }
- [g_server getRoomHeadImageSmall:room.roomJid roomId:room.roomId imageView:cell.headImageView];
- }
- }
- }
-
- if(_type == JXSelectFriendTypeSelMembers){
- QCheckBox* btn = [[QCheckBox alloc] initWithDelegate:self];
- btn.frame = CGRectMake(13, 18.5, 22, 22);
- btn.tag = (indexPath.section+1) * 100000 + (indexPath.row+1);
- BOOL b = NO;
- NSString* s = [NSString stringWithFormat:@"%ld",member.userId];
- b = [_existSet containsObject:s];
- btn.selected = b;
- btn.userInteractionEnabled = !b;
- [cell addSubview:btn];
-
- [_checkBoxArr addObject:btn];
- }
-
- }else if (_type == JXSelectFriendTypeCustomArray || _type == JXSelectFriendTypeDisAble) {
-
- if (!cell) {
- cell = [[JXCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellName];
- }
- cell.selectionStyle = UITableViewCellSelectionStyleNone;
-
- JXUserObject *user;
- if (_seekTextField.text.length > 0) {
- user = _searchArray[indexPath.row];
- }else{
- user = [[self.letterResultArr objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
- }
- [_table addToPool:cell];
- cell.title = user.remarkName.length > 0 ? user.remarkName : user.userNickname;
- // cell.subtitle = user.userId;
- // cell.bottomTitle = [TimeUtil formatDate:user.timeCreate format:@"MM-dd HH:mm"];
- cell.userId = user.userId;
- cell.isSmall = YES;
- [cell headImageViewImageWithUserId:nil roomId:nil];
- // cell.headImage = user.userHead;
- // [cell initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellName];
-
- QCheckBox* btn = [[QCheckBox alloc] initWithDelegate:self];
- btn.frame = CGRectMake(13, 18.5, 22, 22);
- btn.tag = (indexPath.section+1) * 100000 + (indexPath.row+1);
-
- if (self.disableSet) {
- btn.enabled = ![_disableSet containsObject:user.userId];
- }else{
- btn.enabled = YES;
- }
-
- [_checkBoxArr addObject:btn];
-
- [cell addSubview:btn];
- }else{ // 创建新群 &&
- JXUserObject *user;
- if (_seekTextField.text.length > 0) {
- user = _searchArray[indexPath.row];
- }else{
- user = [[self.letterResultArr objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
- }
- // cell = [[JXCell alloc] init];
-
- // if (!cell) {
- cell = [[JXCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellName];
- cell.isShowNicknameRemarkNameTelphoneNumber = YES;
-
-
- //user.phone;// 服务器接口不返回电话,数据库未存储
- NSString *telephone = user.telephone;
- if (telephone.length>2) {
- if ([[telephone substringWithRange:NSMakeRange(0,2)] isEqualToString:@"86"]) {
- telephone = [telephone substringFromIndex:2];
- }
- }
- [cell setSubtitle:[NSString stringWithFormat:@"手机号: %@",telephone]];
- QCheckBox* btn = [[QCheckBox alloc] initWithDelegate:self];
- btn.userInteractionEnabled = NO;
- btn.frame = CGRectMake(JX_SCREEN_WIDTH - 22 - 20, 18.5, 22, 22);
- btn.tag = (indexPath.section+1) * 100000 + (indexPath.row+1);
- BOOL b = NO;
- if (self.addressBookArr.count > 0) {
- if ([_existSet containsObject:user.userId]) {
- btn.selected = [_existSet containsObject:user.userId];
- [self didSelectedCheckBox:btn checked:btn.selected];
- }
- }else {
- if (room){
- b = [room isMember:user.userId];
- BOOL flag = NO;
- for (NSInteger i = 0; i < _userIds.count; i ++) {
- NSString *selUserId = _userIds [i];
- if ([user.userId isEqualToString:selUserId]) {
- flag = YES;
- break;
- }
- }
- btn.selected = flag;
- // btn.userInteractionEnabled = !flag;
- btn.userInteractionEnabled = NO;
- // btn.selected = b;
- // btn.userInteractionEnabled = !b;
- }else{
-
- b = [_existSet containsObject:user.userId];
- BOOL flag = NO;
- for (NSInteger i = 0; i < _userIds.count; i ++) {
- NSString *selUserId = _userIds [i];
- if ([user.userId isEqualToString:selUserId]) {
- flag = YES;
- break;
- }
- }
- if (b) {
- if (_type == JXSelectFriendTypeSelFriends) {
- btn.selected = b;
- }else {
- btn.enabled = !b;
- }
- }else {
- if (_type == JXSelectFriendTypeSelFriends) {
- btn.selected = flag;
- }else {
- btn.enabled = !b;
- btn.selected = flag;
- }
- }
- [self didSelectedCheckBox:btn checked:btn.selected];
- }
- }
-
- [_checkBoxArr addObject:btn];
- [cell addSubview:btn];
- // }
- cell.selectionStyle = UITableViewCellSelectionStyleNone;
-
- [_table addToPool:cell];
-
- // cell.title = user.remarkName.length > 0 ? user.remarkName : user.userNickname;
- NSString *remarkName = user.remarkName.length>0 ? [NSString stringWithFormat:@"(%@)", user.remarkName] : @"";
- NSLog(@"-----------%@\n", user.userNickname);
- cell.title = [NSString stringWithFormat:@"%@ %@", user.userNickname, remarkName];
- // cell.subtitle = user.userId;
- cell.bottomTitle = [TimeUtil formatDate:user.timeCreate format:@"MM-dd HH:mm"];
- cell.userId = user.userId;
- cell.isSmall = YES;
-
- [cell headImageViewImageWithUserId:nil roomId:nil];
-
- }
-
-
- // CGFloat headX = 13*2+22;
- CGFloat headX = 22;
-
- cell.headImageView.frame = CGRectMake(headX+30,9.5,40,40);
- cell.headImageView.layer.cornerRadius = cell.headImageView.frame.size.width / 2;
- cell.lbTitle.frame = CGRectMake(CGRectGetMaxX(cell.headImageView.frame)+15, 12, JX_SCREEN_WIDTH - 115 -CGRectGetMaxX(cell.headImageView.frame)-14, 18);
- 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);
- cell.lineView.frame = CGRectMake(CGRectGetMaxX(cell.headImageView.frame)+15,59-LINE_WH,JX_SCREEN_WIDTH,LINE_WH);
- if (indexPath.row == [(NSArray *)[self.letterResultArr objectAtIndex:indexPath.section] count]-1) {
- cell.lineView.frame = CGRectMake(cell.lineView.frame.origin.x, cell.lineView.frame.origin.y, cell.lineView.frame.size.width,0);
- }else {
- cell.lineView.frame = CGRectMake(cell.lineView.frame.origin.x, cell.lineView.frame.origin.y, cell.lineView.frame.size.width,LINE_WH);
- }
- // 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);
- // 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);
-
- // }
- // else{
- //
- // NSLog(cellName);
- // }
- return cell;
- }
- -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
- {
- if (_type == JXSelectFriendTypeGroupAT) {
- memberData * member;
- if (_seekTextField.text.length > 0) {
- member = _searchArray[indexPath.row];
- }else{
- member = [[self.letterResultArr objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
- }
- if(self.delegate != nil && [self.delegate respondsToSelector:self.didSelect])
- [self.delegate performSelectorOnMainThread:self.didSelect withObject:member waitUntilDone:YES];
-
- [self actionQuit];
- // _pSelf = nil;
- }else if (_type == JXSelectFriendTypeSpecifyAdmin) {
-
- memberData * member;
- if (_seekTextField.text.length > 0) {
- member = _searchArray[indexPath.row];
- }else{
- member = [[self.letterResultArr objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
- }
- if ([member.role intValue] == 1) {
- [g_App showAlert:Localized(@"JXGroup_CantSetSelf")];
- return;
- }
- if(self.delegate != nil && [self.delegate respondsToSelector:self.didSelect])
- [self.delegate performSelectorOnMainThread:self.didSelect withObject:member waitUntilDone:YES];
-
- [self actionQuit];
- // _pSelf = nil;
- }else {
- if (_type == JXSelectFriendTypeSelMembers) {
- memberData *user;
-
- if (_seekTextField.text.length > 0) {
- user = _searchArray[indexPath.row];
- }else{
- user = [[self.letterResultArr objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
- }
- if (![_existSet containsObject:[NSString stringWithFormat:@"%ld",user.userId]]) {
- QCheckBox *checkBox = nil;
- // for (NSInteger i = 0; i < _checkBoxArr.count; i ++) {
- // QCheckBox *btn = _checkBoxArr[i];
- // if (btn.tag / 1000 == indexPath.section && btn.tag % 1000 == indexPath.row) {
- // checkBox = btn;
- // break;
- // }
- // }
- JXCell *cell = [tableView cellForRowAtIndexPath:indexPath];
- checkBox = [cell viewWithTag:(indexPath.section+1) * 100000 + (indexPath.row+1)];
-
- checkBox.selected = !checkBox.selected;
-
- // user.isSelected = checkBox.selected;
- // user.checkBox = checkBox;
-
- [self didSelectedCheckBox:checkBox checked:checkBox.selected];
- [[NSNotificationCenter defaultCenter] postNotificationName:@"selectuserchangeUser" object:_checkUserArr];
- }
- }else {
- JXUserObject *user;
- if (_seekTextField.text.length > 0) {
- user = _searchArray[indexPath.row];
- }else{
- user = [[self.letterResultArr objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
- }
- // if (![_existSet containsObject:user.userId]) {
- QCheckBox *checkBox = nil;
- // for (NSInteger i = 0; i < _checkBoxArr.count; i ++) {
- // QCheckBox *btn = _checkBoxArr[i];
- // if (btn.tag / 1000 == indexPath.section && btn.tag % 1000 == indexPath.row) {
- // checkBox = btn;
- // break;
- // }
- // }
- JXCell *cell = [tableView cellForRowAtIndexPath:indexPath];
- checkBox = [cell viewWithTag:(indexPath.section+1) * 100000 + (indexPath.row+1)];
-
- if (!checkBox.enabled) {
- return;
- }
- checkBox.selected = !checkBox.selected;
- [self didSelectedCheckBox:checkBox checked:checkBox.selected];
- NSLog(@"----------------------%d", checkBox.selected);
- user.isSelected = checkBox.selected;
- user.checkBox = checkBox;
- // 发送通知给bottomCell
- [[NSNotificationCenter defaultCenter] postNotificationName:@"selectuserchange" object:user];
-
- //[[NSNotificationCenter defaultCenter] postNotificationName:@"selectuserchange" object:user];
-
- // }
- }
-
- }
- }
- - (void)disSelectUserChange:(NSNotification *)note {
- JXUserObject *user = note.object;
- [self didSelectedCheckBox:user.checkBox checked:user.isSelected];
- }
- -(void)getGroupATRoomMembersArray{
- _array = (NSMutableArray *)[memberData fetchAllMembers:room.roomId sortByName:YES];
-
- memberData * mem = [[memberData alloc] init];
- mem.userId = 0;
- mem.idStr = room.roomJid;
- mem.roomId = room.roomId;
- mem.userNickName = Localized(@"JX_AtALL");
- mem.cardName = Localized(@"JX_AtALL");
- mem.role = [NSNumber numberWithInt:10];
- // mem.createTime = [[rs objectForColumnName:@"createTime"] longLongValue];
-
- [_array insertObject:mem atIndex:0];
- [self reomveExistsSet];
-
- //选择拼音 转换的 方法
- BMChineseSortSetting.share.sortMode = 2; // 1或2
- //排序 Person对象
- [BMChineseSort sortAndGroup:_array key:@"userNickName" finish:^(bool isSuccess, NSMutableArray *unGroupArr, NSMutableArray *sectionTitleArr, NSMutableArray<NSMutableArray *> *sortedObjArr) {
- if (isSuccess) {
- self.indexArray = sectionTitleArr;
- self.letterResultArr = sortedObjArr;
- [_table reloadData];
- }
- }];
- // //根据Person对象的 name 属性 按中文 对 Person数组 排序
- // self.indexArray = [BMChineseSort IndexWithArray:_array Key:@"userNickName"];
- // self.letterResultArr = [BMChineseSort sortObjectArray:_array Key:@"userNickName"];
- }
- -(void)getSelUserTypeSelMembersArray{
- _array = (NSMutableArray *)[memberData fetchAllMembers:room.roomId sortByName:YES];
- [self reomveExistsSet];
- //选择拼音 转换的 方法
- BMChineseSortSetting.share.sortMode = 2; // 1或2
- //排序 Person对象
- [BMChineseSort sortAndGroup:_array key:@"userNickName" finish:^(bool isSuccess, NSMutableArray *unGroupArr, NSMutableArray *sectionTitleArr, NSMutableArray<NSMutableArray *> *sortedObjArr) {
- if (isSuccess) {
- self.indexArray = sectionTitleArr;
- self.letterResultArr = sortedObjArr;
- [_table reloadData];
- }
- }];
- // //根据Person对象的 name 属性 按中文 对 Person数组 排序
- // self.indexArray = [BMChineseSort IndexWithArray:_array Key:@"userNickName"];
- // self.letterResultArr = [BMChineseSort sortObjectArray:_array Key:@"userNickName"];
- }
- -(void)getRoomMembersArray{
- _array = (NSMutableArray *)[memberData fetchAllMembers:room.roomId sortByName:NO];
- [self reomveExistsSet];
- //选择拼音 转换的 方法
- BMChineseSortSetting.share.sortMode = 2; // 1或2
- //排序 Person对象
- [BMChineseSort sortAndGroup:_array key:@"userNickName" finish:^(bool isSuccess, NSMutableArray *unGroupArr, NSMutableArray *sectionTitleArr, NSMutableArray<NSMutableArray *> *sortedObjArr) {
- if (isSuccess) {
- self.indexArray = sectionTitleArr;
- self.letterResultArr = sortedObjArr;
- [_table reloadData];
- }
- }];
- // //根据Person对象的 name 属性 按中文 对 Person数组 排序
- // self.indexArray = [BMChineseSort IndexWithArray:_array Key:@"userNickName"];
- // self.letterResultArr = [BMChineseSort sortObjectArray:_array Key:@"userNickName"];
- }
- -(void)reomveExistsSet{
- for(NSInteger i=[_array count]-1;i>=0;i--){
- memberData* p = [_array objectAtIndex:i];
- if([self.existSet containsObject:[NSString stringWithFormat:@"%ld",p.userId]]>0)
- [_array removeObjectAtIndex:i];
- }
- }
- -(void)getArrayData{
- if (self.addressBookArr.count > 0) {
- [_userIds removeAllObjects];
- _array = [NSMutableArray arrayWithArray:self.addressBookArr];
- }else {
- _array=[[JXUserObject sharedInstance] fetchAllFriendsFromLocal];
- }
- if (self.isShowMySelf) {
- JXUserObject *mySelf = [[JXUserObject alloc] init];
- mySelf.userId = g_myself.userId;
- mySelf.userNickname = g_myself.userNickname;
- [_array insertObject:mySelf atIndex:0];
- }
-
- for(NSInteger i=[_array count]-1;i>=0;i--){
- JXUserObject* u = [_array objectAtIndex:i];
- for (int j=0; j<[room.members count]; j++) {
- memberData* p = [room.members objectAtIndex:j];
- if(p.userId == [u.userId intValue]){
- [_array removeObjectAtIndex:i];
- break;
- }
- }
-
- if (self.isForRoom) {
- if([self.forRoomUser.userId isEqualToString:u.userId]){
- [_array removeObjectAtIndex:i];
- }
- }
-
- if (self.addressBookArr.count > 0) {
- if (![_userIds containsObject:u.userId]) {
- [_userIds addObject:u.userId];
- [_userNames addObject:u.userNickname];
- }
- }
- }
- //选择拼音 转换的 方法
- BMChineseSortSetting.share.sortMode = 2; // 1或2
- //排序 Person对象
- [BMChineseSort sortAndGroup:_array key:@"userNickname" finish:^(bool isSuccess, NSMutableArray *unGroupArr, NSMutableArray *sectionTitleArr, NSMutableArray<NSMutableArray *> *sortedObjArr) {
- if (isSuccess) {
- self.indexArray = sectionTitleArr;
- self.letterResultArr = sortedObjArr;
- [_table reloadData];
- }
- }];
- // NSLog(@"------- indexArray start");
- // //根据Person对象的 name 属性 按中文 对 Person数组 排序
- // self.indexArray = [BMChineseSort IndexWithArray:_array Key:@"userNickname"];
- // NSLog(@"------- letterResultArr start");
- //
- // self.letterResultArr = [BMChineseSort sortObjectArray:_array Key:@"userNickname"];
- // NSLog(@"------- letterResultArr stop");
- if(isNewRoom && [_array count]<=0)//没有好友时
- [self performSelector:@selector(onAdd) withObject:nil afterDelay:0.1];
- }
- -(void)refresh{
- [self stopLoading];
- _refreshCount++;
- [_array removeAllObjects];
-
- [self getArrayData];
- for (NSString *userId in _existSet) {
-
- NSString *userName = [JXUserObject getUserNameWithUserId:userId];
-
- if (!userName) {
- userName = @"";
- }
- if (![_userIds containsObject:userId]) {
- [_userIds addObject:userId];
- [_userNames addObject:userName];
- }
- }
- [_table reloadData];
- }
- - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
- [_seekTextField resignFirstResponder];
- }
- -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- return 59;
- }
- -(void)scrollToPageUp{
- [self refresh];
- }
- - (void)didSelectedCheckBox:(QCheckBox *)checkbox checked:(BOOL)checked{
- // if (self.addressBookArr.count > 0) {
-
- if (!checkbox.enabled) {
- return;
- }
- if (self.type == 0 && checked && self.maxSize > 0 && _userIds.count == self.maxSize) {
-
- checkbox.selected = NO;
- [JXMyTools showTipView:@"群成员已达上限"];
- return;
- }
- id user;
- if (_seekTextField.text.length > 0) {
- user = _searchArray[checkbox.tag % 100000-1];
- }else{
- user = [[self.letterResultArr objectAtIndex:checkbox.tag / 100000-1] objectAtIndex:checkbox.tag % 100000-1];
- }
-
- NSString *userId;
- NSString *userNickname;
- if ([user isKindOfClass:[JXUserObject class]]) {
- JXUserObject *userO = (JXUserObject *)user;
- if (self.room.isSecretGroup) {
- if (!userO.publicKeyRSARoom || userO.publicKeyRSARoom.length <= 0) {
- checkbox.selected = NO;
- [JXMyTools showTipView:@"此用户不能进入私密群组"];
- return;
- }
- }
-
- userId = [NSString stringWithFormat:@"%@",userO.userId];
- userNickname = [NSString stringWithFormat:@"%@",userO.userNickname];
- }else if ([user isKindOfClass:[memberData class]]) {
- memberData *member = (memberData *)user;
- userId = [NSString stringWithFormat:@"%ld",member.userId];
- userNickname = [NSString stringWithFormat:@"%@",member.userNickName];
- }
- if(checked){ // 选定
- if (![_userIds containsObject:userId]) { // 所有id包含选择id
- [_userIds addObject:userId];
- [_userNames addObject:userNickname];
-
- [_checkUserArr addObject:user];
- }
- if (![set containsObject:[NSNumber numberWithInteger:checkbox.tag]]) {
- [set addObject:[NSNumber numberWithInteger:checkbox.tag]];
- }
-
- }
- else{ // 取消选定
- if ([_userIds containsObject:userId]) {
- NSInteger index = [_userIds indexOfObject:userId];
- [_userIds removeObject:userId];
- [_userNames removeObjectAtIndex:index];
- [set removeObject:[NSNumber numberWithInteger:checkbox.tag]];
- [_checkUserArr removeObject:user];
- }
- }
-
- // }else {
- // if(checked){
- // [set addObject:[NSNumber numberWithInteger:checkbox.tag]];
- // }
- // else{
- // [set removeObject:[NSNumber numberWithInteger:checkbox.tag]];
- // }
- // }
-
- }
- -(void)onInsert{
-
- if (_isPlusButtonComming) {
- NSString* s = [NSUUID UUID].UUIDString;
- s = [[s stringByReplacingOccurrencesOfString:@"-" withString:@""] lowercaseString];
- _room = [[roomData alloc] init];
- _room.maxCount = 10000;
- _room.roomJid= s;
- _room.name = @"群聊";
- _room.desc = @"他们很懒,什么都没写.";
- _room.userId = [g_myself.userId longLongValue];
- _room.userNickName = g_myself.userNickname;
- _room.showRead = NO;
- _room.showMember = YES;
- _room.allowSendCard = YES;
- _room.isNeedVerify = NO;
- _room.allowInviteFriend = YES;
- _room.allowUploadFile = YES;
- _room.allowConference = YES;
- _room.allowSpeakCourse = YES;
- _room.isSecretGroup = NO;
-
- NSInteger category = 510;
-
- _chatRoom = [[JXXMPP sharedInstance].roomPool createRoom:s title:_room.name];
- _chatRoom.delegate = self;
-
- [g_server addRoom:_room isPublic:YES isNeedVerify:_room.isNeedVerify category:category toView:self];
-
- [_wait start:Localized(@"JXAlert_CreatRoomIng") delay:30];
- } else {
- [self onAdd];
- }
-
-
-
- }
- -(void)xmppRoomDidCreate{
-
- if (_isPlusButtonComming) {
- NSInteger category = 510;
-
-
- if (_room.isSecretGroup) {
-
- NSString *g = [NSUUID UUID].UUIDString;
- g = [[g stringByReplacingOccurrencesOfString:@"-" withString:@""] lowercaseString];
- _room.chatKeyGroup = g;
- }
-
- [g_server addRoom:_room isPublic:YES isNeedVerify:_room.isNeedVerify category:category toView:self];
- _chatRoom.delegate = nil;
- } else {
- [g_server addRoom:room isPublic:YES isNeedVerify:NO category:0 toView:self];
- chatRoom.delegate = nil;
-
- }
- }
- -(void)insertRoom{
-
- if (_isPlusButtonComming) {
- JXUserObject* user = [[JXUserObject alloc]init];
- user.userNickname = _room.name;
- user.userId = _room.roomJid;
- user.userDescription = _room.desc;
- user.roomId = _room.roomId;
- user.content = Localized(@"JX_WelcomeGroupChat");
- user.showRead = [NSNumber numberWithBool:_room.showRead];
- user.showMember = [NSNumber numberWithBool:_room.showMember];
- user.allowSendCard = [NSNumber numberWithBool:_room.allowSendCard];
- user.allowInviteFriend = [NSNumber numberWithBool:_room.allowInviteFriend];
- user.allowUploadFile = [NSNumber numberWithBool:_room.allowUploadFile];
- user.allowSpeakCourse = [NSNumber numberWithBool:_room.allowSpeakCourse];
- user.isNeedVerify = [NSNumber numberWithBool:_room.isNeedVerify];
- user.createUserId = [NSString stringWithFormat:@"%ld",_room.userId];
- user.category = [NSNumber numberWithInteger:510];
- #ifdef IS_MsgEncrypt
- user.chatKeyGroup = [g_msgUtil encryptRoomMsgKey:_room.roomId randomKey:_room.chatKeyGroup];
- #endif
- [user insertRoom];
- } else {
- JXUserObject* user = [[JXUserObject alloc]init];
- user.userNickname = room.name;
- user.userId = room.roomJid;
- user.userDescription = room.desc;
- user.roomId = room.roomId;
- user.content = Localized(@"JX_WelcomeGroupChat");
- user.showRead = [NSNumber numberWithBool:room.showRead];
- user.showMember = [NSNumber numberWithBool:room.showMember];
- user.allowSendCard = [NSNumber numberWithBool:room.allowSendCard];
- user.chatRecordTimeOut = room.chatRecordTimeOut;
- user.talkTime = [NSNumber numberWithLong:room.talkTime];
- user.allowInviteFriend = [NSNumber numberWithBool:room.allowInviteFriend];
- user.allowUploadFile = [NSNumber numberWithBool:room.allowUploadFile];
- user.allowConference = [NSNumber numberWithBool:room.allowConference];
- user.allowSpeakCourse = [NSNumber numberWithBool:room.allowSpeakCourse];
- user.isNeedVerify = [NSNumber numberWithBool:room.isNeedVerify];
- [user insertRoom];
- }
-
-
-
-
- }
- -(void)onAdd {
- // btn.enabled = NO;
- // dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- // btn.enabled = YES;
- // });
-
- if(_type == JXSelectFriendTypeSelFriends || chatRoom || self.isForRoom){
-
- if (!self.addressBookArr || self.addressBookArr.count <= 0) {
- // [_userIds removeAllObjects];
- // [_userNames removeAllObjects];
-
- if (self.isForRoom) {
- if (![_userIds containsObject:self.forRoomUser.userId]) {
- [_userIds addObject:self.forRoomUser.userId];
- [_userNames addObject:self.forRoomUser.userNickname];
- }
- }
-
- // for(NSNumber* n in set){
- //获取选中的好友
-
- // JXUserObject *user;
- // if (_seekTextField.text.length > 0) {
- // user = _searchArray[[n intValue] % 1000];
- // }else{
- // user = [[self.letterResultArr objectAtIndex:[n intValue] / 1000] objectAtIndex:[n intValue] % 1000];
- // }
- // [_userIds addObject:user.userId];
- // [_userNames addObject:user.userNickname];
-
- /*
- JXMessageObject* m = [[JXMessageObject alloc] init];
- m.messageId = [[[XMPPStream generateUUID] stringByReplacingOccurrencesOfString:@"-" withString:@""] lowercaseString];
- m.fromUserId = MY_USER_ID;
- m.fromUserName = kMY_USER_NICKNAME;
- m.toUserId = user.userId;
- m.toUserName = user.userNickname;
- m.type = [NSNumber numberWithInt:kWCMessageTypeInvite];
- m.isRead = [NSNumber numberWithBool:NO];
- m.isSend = [NSNumber numberWithBool:NO];
- m.timeSend = [NSDate date];
- m.content = [room roomDataToNSString];
- m.isGroup = 0;
- [g_xmpp sendMessageInvite:m];
-
- //xmpp邀请加入房间,取消调用此协议
- NSString* to = [NSString stringWithFormat:@"%@@%@",user.userId,g_config.XMPPDomain];
- [chatRoom.xmppRoom inviteUser:[XMPPJID jidWithString:to] withMessage:[room roomDataToNSString] msgId:m.messageId];
- */
-
- /*邀请协议DEMO:
- <message to="3029b12761bb4476bd06f801f51e9f5d@muc.192.168.0.168" id="12348c13c51d0925b4815678" xmlns="jabber:client" from="10005629@192.168.0.168/youjob">
- <x xmlns="http://jabber.org/protocol/muc#user">
- <invite to="10005598@192.168.0.168"><reason>{"desc":"","id":"59858c13c51d0925b481ce1a","jid":"3029b12761bb4476bd06f801f51e9f5d","name":"陈叔叔","timeSend":1501925454,"userId":"10005629"}</reason></invite>
- </x></message>
- */
-
- // user = nil;
- // }
- }
-
- if(self.isForRoom){
-
- NSString* s = [NSUUID UUID].UUIDString;
- s = [[s stringByReplacingOccurrencesOfString:@"-" withString:@""] lowercaseString];
-
- NSString *roomName = [NSString stringWithFormat:@"%@、%@",MY_USER_NAME,[_userNames componentsJoinedByString:@"、"]];
-
- room.roomJid= s;
- room.name = roomName;
- room.desc = nil;
- room.userId = [g_myself.userId longLongValue];
- room.userNickName = MY_USER_NAME;
- room.showRead = NO;
- room.showMember = YES;
- room.allowSendCard = YES;
- room.isLook = YES;
- room.isNeedVerify = NO;
- room.allowInviteFriend = YES;
- room.allowUploadFile = YES;
- room.allowConference = YES;
- room.allowSpeakCourse = YES;
-
- [g_server addRoom:room isPublic:YES isNeedVerify:NO category:0 toView:self];
- // chatRoom = [[JXXMPP sharedInstance].roomPool createRoom:s title:roomName];
- // chatRoom.delegate = self;
-
- [_wait start:Localized(@"JXAlert_CreatRoomIng") delay:30];
- return;
- }
- if ((self.room.isNeedVerify && self.room.userId != [g_myself.userId longLongValue]) || _type == JXSelectFriendTypeSelFriends) {
-
- if (self.isShowAlert) {
- UIAlertView *alert = [[UIAlertView alloc] initWithTitle:Localized(@"JX_SaveLabelNextTime") message:nil delegate:self cancelButtonTitle:Localized(@"JX_DepositAsLabel") otherButtonTitles:Localized(@"JX_Ignore"), nil];
- alert.tag = 2457;
- [alert show];
- return;
- }
-
-
- if(self.delegate != nil && [self.delegate respondsToSelector:self.didSelect])
- [self.delegate performSelectorOnMainThread:self.didSelect withObject:self waitUntilDone:YES];
- [self actionQuit];
- }else {
- [g_server addRoomMember:room.roomId userArray:_userIds toView:self];//用接口即可
- }
- if(isNewRoom){
- [self onNewRoom];
- [self actionQuit];
- }
- return;
- }
- if (_type == JXSelectFriendTypeGroupAT)
- return;
- if (_type == JXSelectFriendTypeSpecifyAdmin)
- return;
- if (_type == JXSelectFriendTypeSelMembers){
- }
- if(self.delegate != nil && [self.delegate respondsToSelector:self.didSelect])
- [self.delegate performSelectorOnMainThread:self.didSelect withObject:self waitUntilDone:YES];
-
- [self actionQuit];
- }
- - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
- if (alertView.tag == 2457) {
- if (buttonIndex == 0) {
- if ([self.delegate respondsToSelector:self.alertAction]) {
- [self.delegate performSelectorOnMainThread:self.alertAction withObject:self waitUntilDone:YES];
- }
- }else {
- if(self.delegate != nil && [self.delegate respondsToSelector:self.didSelect])
- [self.delegate performSelectorOnMainThread:self.didSelect withObject:self waitUntilDone:YES];
- [self actionQuit];
- }
- }
-
- }
- //-(void)xmppRoomDidCreate{
- // [g_server addRoom:room isPublic:YES isNeedVerify:NO category:0 toView:self];
- // chatRoom.delegate = nil;
- //}
- -(void)onNewRoom{
- JXChatViewC *sendView=[JXChatViewC alloc];
- sendView.title = chatRoom.roomTitle;
- sendView.roomJid = chatRoom.roomJid;
- sendView.roomId = room.roomId;
- sendView.chatRoom = chatRoom;
- sendView.room = self.room;
-
- JXUserObject * user = [[JXUserObject alloc]init];
- user = [user getUserById:chatRoom.roomJid];
- sendView.chatPerson = user;
-
- sendView = [sendView init];
- // [g_App.window addSubview:sendView.view];
- [g_navigation pushViewController:sendView animated:YES];
- }
- -(NSString *)positionStrRole:(NSInteger)role{
- if (_type == JXSelectFriendTypeSpecifyAdmin) {
- NSString * roleStr = nil;
- switch (role) {
- case 1://创建者
- roleStr = Localized(@"JXGroup_Owner");
- break;
- case 2://管理员
- roleStr = Localized(@"JXGroup_Admin");
- break;
- case 3://普通成员
- roleStr = Localized(@"JXGroup_RoleNormal");
- break;
- default:
- roleStr = Localized(@"JXGroup_RoleNormal");
- break;
- }
- return roleStr;
- }
- return nil;
- }
- -(void)onSendTimeout:(NSNotification *)notifacation//超时未收到回执
- {
- // [_wait stop];
- // JXMessageObject *msg = (JXMessageObject *)notifacation.object;
- // if([msg.type intValue] == kWCMessageTypeInvite)
- // [g_App showAlert:[NSString stringWithFormat:@"邀请:%@失败,请重新邀请",msg.toUserName]];
- }
- -(void)newReceipt:(NSNotification *)notifacation{//新回执
- // [_wait stop];
- // JXMessageObject *msg = (JXMessageObject *)notifacation.object;
- // if([msg.type intValue] == kWCMessageTypeInvite)
- // [g_server addRoomMember:room.roomId userId:msg.toUserId nickName:msg.toUserName toView:self];
- }
- -(void) didServerResultSucces:(JXConnection*)aDownload dict:(NSDictionary*)dict array:(NSArray*)array1{
- [_wait stop];
- if( [aDownload.action isEqualToString:act_roomMemberSet] ){
- for (int i=0;i<[_userIds count];i++) {
- NSString *userId=[_userIds objectAtIndex:i];
-
- memberData* p = [[memberData alloc] init];
- p.userId = [userId intValue];
- p.userNickName = [_userNames objectAtIndex:i];
- p.role = [NSNumber numberWithInt:3];
- [room.members addObject:p];
- }
- if(self.delegate != nil && [self.delegate respondsToSelector:self.didSelect])
- [self.delegate performSelectorOnMainThread:self.didSelect withObject:self waitUntilDone:YES];
-
- [_userIds removeAllObjects];
- [_userNames removeAllObjects];
- [self actionQuit];
- // _pSelf = nil;
- }
-
- if( [aDownload.action isEqualToString:act_roomAdd] ){
-
- if (_isPlusButtonComming) {
-
- _chatRoom = [[JXXMPP sharedInstance].roomPool createRoom:_room.roomJid title:_room.name];
- _chatRoom.delegate = self;
- _room.roomId = [dict objectForKey:@"id"];
- [self insertRoom];
-
- memberData *member = [[memberData alloc] init];
- member.userId = [g_myself.userId longLongValue];
- member.userNickName = MY_USER_NAME;
- member.role = @1;
- [_room.members addObject:member];
- self.chatRoom = _chatRoom;
- self.room = _room;
- self.isNewRoom = YES;
- self.maxSize = [[dict objectForKey:@"maxUserSize"] intValue] - 1;
- [self onAdd];
- } else {
- room.roomId = [dict objectForKey:@"id"];
- // _room.call = [NSString stringWithFormat:@"%@",[dict objectForKey:@"call"]];
- chatRoom = [[JXXMPP sharedInstance].roomPool createRoom:room.roomJid title:room.name];
- chatRoom.delegate = self;
- [self insertRoom];
- [g_notify postNotificationName:kUpdateUserNotifaction object:nil];
- [g_notify postNotificationName:kActionRelayQuitVC object:nil];
- // [g_server addRoomMember:room.roomId userArray:_userIds toView:self];//用接口即可
- if(isNewRoom){
- [self onNewRoom];
- }
- int maxUser = [[dict objectForKey:@"maxUserSize"] intValue];
- if (_userIds.count > maxUser) {
- [JXMyTools showTipView:@"群成员超过上限"];
- [_userIds removeAllObjects];
- [_userNames removeAllObjects];
- [self actionQuit];
- }else {
- [g_server addRoomMember:room.roomId userArray:_userIds toView:self];//用接口即可
- }
- }
- }
-
- // if( [aDownload.action isEqualToString:act_roomAdd] ){
- // room.roomId = [dict objectForKey:@"id"];
- // // _room.call = [NSString stringWithFormat:@"%@",[dict objectForKey:@"call"]];
- // chatRoom = [[JXXMPP sharedInstance].roomPool createRoom:room.roomJid title:room.name];
- // chatRoom.delegate = self;
- // [self insertRoom];
- // [g_notify postNotificationName:kUpdateUserNotifaction object:nil];
- // [g_notify postNotificationName:kActionRelayQuitVC object:nil];
- //// [g_server addRoomMember:room.roomId userArray:_userIds toView:self];//用接口即可
- // if(isNewRoom){
- // [self onNewRoom];
- // }
- //
- // int maxUser = [[dict objectForKey:@"maxUserSize"] intValue];
- // if (_userIds.count > maxUser) {
- // [JXMyTools showTipView:@"群成员超过上限"];
- // [_userIds removeAllObjects];
- // [_userNames removeAllObjects];
- // [self actionQuit];
- // }else {
- //
- // [g_server addRoomMember:room.roomId userArray:_userIds toView:self];//用接口即可
- // }
- //
- // }
- }
- //-(void)insertRoom{
- // JXUserObject* user = [[JXUserObject alloc]init];
- // user.userNickname = room.name;
- // user.userId = room.roomJid;
- // user.userDescription = room.desc;
- // user.roomId = room.roomId;
- // user.content = Localized(@"JX_WelcomeGroupChat");
- // user.showRead = [NSNumber numberWithBool:room.showRead];
- // user.showMember = [NSNumber numberWithBool:room.showMember];
- // user.allowSendCard = [NSNumber numberWithBool:room.allowSendCard];
- // user.chatRecordTimeOut = room.chatRecordTimeOut;
- // user.talkTime = [NSNumber numberWithLong:room.talkTime];
- // user.allowInviteFriend = [NSNumber numberWithBool:room.allowInviteFriend];
- // user.allowUploadFile = [NSNumber numberWithBool:room.allowUploadFile];
- // user.allowConference = [NSNumber numberWithBool:room.allowConference];
- // user.allowSpeakCourse = [NSNumber numberWithBool:room.allowSpeakCourse];
- // user.isNeedVerify = [NSNumber numberWithBool:room.isNeedVerify];
- // [user insertRoom];
- //}
- -(int) didServerResultFailed:(JXConnection*)aDownload dict:(NSDictionary*)dict{
- [_wait stop];
- return show_error;
- }
- -(int) didServerConnectError:(JXConnection*)aDownload error:(NSError *)error{//error为空时,代表超时
- [_wait stop];
- return show_error;
- }
- -(void) didServerConnectStart:(JXConnection*)aDownload{
- [_wait start];
- }
- - (void)actionQuit {
- if (self.isAddWindow) {
- [self.view removeFromSuperview];
- self.view = nil;
- }else{
- [super actionQuit];
- }
- }
- @end
|