Exemplo n.º 1
0
        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);
           
        }
Exemplo n.º 2
0
        /// <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;
                    }
            }


        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        /// <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;
            }
        }
Exemplo n.º 5
0
        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;
            }
        }