void Client_GetFriendsCompleted(object sender, GetFriendsCompletedEventArgs e) { DataUtil.UserGroups = e.Result.ToList<UserGroup>(); Dispatcher.Invoke(new Action(() => { try { ///分组列表 userGroupTabItem = new MyTabItem(MyType.UserGroup); userGroupTabItem.Tag = "UserGroup"; this.Items.Add(userGroupTabItem); foreach (UserGroup userGroup in DataUtil.UserGroups) { MyTabItem tabItem = new MyTabItem(MyType.User, userGroup.userGroupId); this.Items.Add(tabItem); DataUtil.FriendTabItems.Add(userGroup.userGroupId, tabItem); } } catch (Exception ex) { MyLogger.Logger.Error("获取朋友列表出错",ex); } })); DataUtil.Client.GetGroupsCompleted += Client_GetGroupsCompleted; DataUtil.Client.GetGroupsAsync(DataUtil.Member.id); }
/// <summary> /// 处理服务器发过来的请求 /// </summary> /// <param name="mesg"></param> public void RequestToTargetClient(Message mesg) { switch (mesg.type) { ///添加好友请求 case MessageType.AddFriend: { Member friend = mesg.from as Member; MessageStatus status = MessageStatus.Refuse; ///判断是否为好友 if (DataUtil.IsFriend(friend.id)) { this.OnLogin(friend.id); new Thread( new ThreadStart( () => { DataUtil.Client.ResponseToRequest(new Result() { Member = friend, UserGroup = mesg.to as UserGroup, Status = MessageStatus.Accept, Type = MessageType.AddFriend }); })).Start(); return; } MessageBoxResult mbr = MessageBox.Show(friend.id + friend.nickName + "请求添加好友", "请求", MessageBoxButton.YesNoCancel); if (mbr == MessageBoxResult.Yes) { status = MessageStatus.Accept; } else if (mbr == MessageBoxResult.No) { status = MessageStatus.Refuse; } else { return; } ///注册添加好友成功事件 DataUtil.Client.ResponseToRequestCompleted += Client_ResponseToAddFriendCompleted; Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() => { DataUtil.Client.ResponseToRequestAsync(new Result() { Type = MessageType.AddFriend, Member = friend, UserGroup = mesg.to as UserGroup, Status = status }); })); break; } ///添加好友到群组请求 case MessageType.AddFriend2Group: { Group group = mesg.from as Group; Dispatcher.CurrentDispatcher.Invoke(new Action(() => { MyTabItem groupTabItem = DataUtil.TabControl.groupTabItem as MyTabItem; ///在界面上添加组 groupTabItem.myGrid.AddButton(MyType.Group, group); ///添加组内成员的TabItem MyTabItem tabItem = new MyTabItem(MyType.UserInGroup, group.GroupId); DataUtil.TabControl.Items.Add(tabItem); DataUtil.GroupMemberTabItems.Add(group.GroupId, tabItem); var groupMesgTabItem = new MyMessageTabItem(MyType.Group, group); DataUtil.MessageTabControl.Items.Add(groupMesgTabItem); DataUtil.GroupMessageTabItems.Add(group.GroupId, groupMesgTabItem); })); ///接收群消息 P2PClient.GetP2PClient(group.GroupId); break; } } }
void Client_GetGroupsCompleted(object sender, GetGroupsCompletedEventArgs e) { try { if (e.Result != null) { DataUtil.Groups = e.Result.ToList<Group>(); DataUtil.GetP2PClient(); } Dispatcher.Invoke(new Action(() => { ///群组 groupTabItem = new MyTabItem(MyType.Group); groupTabItem.Tag = "Group"; foreach (Group group in DataUtil.Groups) { MyTabItem tabItem = new MyTabItem(MyType.UserInGroup, group.GroupId); this.Items.Add(tabItem); DataUtil.GroupMemberTabItems.Add(group.GroupId, tabItem); } })); } catch (Exception ex) { MyLogger.Logger.Error("获取群列表出错",ex); } this.Items.Add(groupTabItem); recentFriendTabItem = new TabItem(); settingTabItem = new TabItem(); this.Items.Add(recentFriendTabItem); this.Items.Add(settingTabItem); }
/// <summary> /// 添加分组回调函数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void client_AddUserGroupCompleted(object sender, AddUserGroupCompletedEventArgs e) { try { ///判断是否有异常 if (e.Error != null) throw e.Error; ///判断添加分组是否成功 if (e.Result.Status == MessageStatus.Failed) { MessageBox.Show("添加失败"); } else { ///读取添加的分组名和ID string userGroupId = e.Result.UserGroup.userGroupId; string userGroupName = e.Result.UserGroup.userGroupName; UserGroup ug = new UserGroup() { userGroupId = userGroupId, userGroupName = userGroupName, members = new Member[0] { } }; ///在界面上添加分组 myGrid.AddButton(MyType.UserGroup, ug); TabControl tabControl = this.Parent as TabControl; ///添加分组对应的好友的TabItem MyTabItem tabItem= new MyTabItem(MyType.User, ug.userGroupId); tabControl.Items.Add(tabItem); DataUtil.FriendTabItems.Add(ug.userGroupId,tabItem); ///将分组添加到记录里面 // DataUtil.UserGroups.Add(ug); } } catch (Exception ex) { MessageBox.Show("网络出现异常,请检查网络连接"); return; } }
void Client_AddGroupCompleted(object sender, AddGroupCompletedEventArgs e) { try { ///判断是否有异常 if (e.Error != null) throw e.Error; ///判断添加分组是否成功 if (e.Result.Status == MessageStatus.Failed) { MessageBox.Show("建立群组失败"); } else { ///在界面上添加组 myGrid.AddButton(MyType.Group, e.Result.Group); TabControl tabControl = this.Parent as TabControl; ///添加组内成员的TabItem MyTabItem tabItem = new MyTabItem(MyType.UserInGroup,e.Result.Group.GroupId); tabControl.Items.Add(tabItem); DataUtil.GroupMemberTabItems.Add(e.Result.Group.GroupId, tabItem); ///添加group messageTabItem var msgTabItem = new MyMessageTabItem(MyType.Group, e.Result.Group); DataUtil.MessageTabControl.Items.Add(msgTabItem); DataUtil.GroupMessageTabItems.Add(e.Result.Group.GroupId, msgTabItem); ///群组udpclinet DataUtil.P2PClients.Add(e.Result.Group.GroupId, P2PClient.GetP2PClient(e.Result.Group.GroupId)); } } catch (Exception ex) { MessageBox.Show("网络出现异常,请检查网络连接"); return; } }