コード例 #1
0
ファイル: ChatterCallback.cs プロジェクト: ITPuppy/myRepo
        /// <summary>
        /// 收到服务器响应消息
        /// </summary>
        /// <param name="result"></param>
        public void ReponseToSouceClient(Result result)
        {


            try
            {
                ///响应添加好友消息
                if (result.Type == MessageType.AddFriend)
                {

                    if (result.Status == MessageStatus.Accept)
                    {
                        MessageBox.Show("您已经与" + result.Member.nickName + "成为好友");

                        MyTabItem tabItem = DataUtil.FriendTabItems[result.UserGroup.userGroupId];
                        result.Member.status = MemberStatus.Online;
                        tabItem.myGrid.AddButton(MyType.User, result.Member);

                        MyMessageTabItem item = new MyMessageTabItem(MyType.User, result.Member);
                        DataUtil.FriendMessageTabItems.Add(result.Member.id, item);
                        DataUtil.MessageTabControl.Items.Add(item);

                    }
                    else
                    {
                        MessageBox.Show(result.Mesg);
                    }
                }
                ///响应发送文件请求消息
                else if (result.Type == MessageType.File)
                {

                    if (DataUtil.HasTransfer())
                    {
                        if (DataUtil.Transfer.transferTask.ContainsKey(result.Guid))
                        {
                            if (result.Status == MessageStatus.Accept)
                            {

                                DataUtil.Transfer.transferTask[result.Guid].BeginSendFile(result.EndPoint);
                            }
                            else
                            {
                                DataUtil.Transfer.transferTask[result.Guid].TheOtherCancel(true);

                            }
                        }
                    }
                }
                    ///响应语音请求消息
                else if (result.Type == MessageType.Audio)
                {
                    if (result.Status == MessageStatus.Accept)
                    {

                        DataUtil.AudioForms[result.Member.id].InitSend(result.EndPoint);


                    }
                    else if (result.Status == MessageStatus.Refuse)
                    {
                        DataUtil.AudioForms[result.Member.id].Close();
                    }
                }

            }
            catch (Exception ex)
            {
                MyLogger.Logger.Error("接收服务器回应消息出错", ex);
            }


        }
コード例 #2
0
ファイル: ChatterCallback.cs プロジェクト: ITPuppy/myRepo
        void Client_ResponseToAddFriendCompleted(object sender, ResponseToRequestCompletedEventArgs e)
        {
            try
            {
                if (e.Result.Status == MessageStatus.Refuse)
                {

                    return;
                }
                else if (e.Result.Status == MessageStatus.Failed)
                {
                    MessageBox.Show(e.Result.Mesg);
                    return;
                }
                else if (e.Result.Status == MessageStatus.OK)
                {
                    MyTabItem tabItem = DataUtil.FriendTabItems["0"];
                    tabItem.myGrid.AddButton(MyType.User, e.Result.Member);


                    MyMessageTabItem item = new MyMessageTabItem(MyType.User, e.Result.Member);
                    DataUtil.FriendMessageTabItems.Add(e.Result.Member.id, item);
                    DataUtil.MessageTabControl.Items.Add(item);

                }
            }
            catch (Exception ex)
            {
                //  Logger.Error("在响应添加好友时候出错"+ex.Message);
            }
            finally
            {
                DataUtil.Client.ResponseToRequestCompleted -= Client_ResponseToAddFriendCompleted;
            }
        }
コード例 #3
0
ファイル: ChatterCallback.cs プロジェクト: ITPuppy/myRepo
        /// <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;
                    }
            }


        }
コード例 #4
0
ファイル: MyGrid.cs プロジェクト: ITPuppy/myRepo
        public MyGrid(MyType type, string baseRoleuserGroupId = "-1")
            : base()
        {

            this.baseRoleId = baseRoleuserGroupId;

            int i = 0;
            Random random = new Random((int)DateTime.Now.Ticks);

            switch (type)
            {
                case MyType.User:
                    {


                        List<Member> friends = DataUtil.GetMemberList(baseRoleuserGroupId);
                        rowCount = friends.Count / columnCount + 1;
                        InitRowAndColumn();



                        for (i = 0; i < friends.Count; i++)
                        {

                            MyButton button = new MyButton(MyType.User, friends[i], imageSouce, baseRoleuserGroupId);
                            Grid.SetColumn(button, i % columnCount);
                            Grid.SetRow(button, i / columnCount);
                            this.Children.Add(button);


                            var tabItem = new MyMessageTabItem(MyType.User, friends[i]);
                            DataUtil.MessageTabControl.Items.Add(tabItem);
                            DataUtil.FriendMessageTabItems.Add(friends[i].id, tabItem);
                        }



                        break;

                    }
                case MyType.UserGroup:
                    {

                        List<UserGroup> userGroups = DataUtil.UserGroups;
                        rowCount = userGroups.Count / columnCount + 1;
                        InitRowAndColumn();




                        for (i = 0; i < userGroups.Count; i++)
                        {

                            MyButton button = new MyButton(MyType.UserGroup, userGroups[i], null);
                            Grid.SetColumn(button, i % columnCount);
                            Grid.SetRow(button, i / columnCount);
                            this.Children.Add(button);

                        }
                        break;
                    }

                case MyType.UserInGroup:
                    {
                        List<Member> friends = DataUtil.GetGroupMemberList(baseRoleuserGroupId);
                        rowCount = friends.Count / columnCount + 1;
                        InitRowAndColumn();



                        for (i = 0; i < friends.Count; i++)
                        {

                            MyButton button = new MyButton(MyType.UserInGroup, friends[i], imageSouce, baseRoleuserGroupId);
                            Grid.SetColumn(button, i % columnCount);
                            Grid.SetRow(button, i / columnCount);
                            this.Children.Add(button);


                            //var tabItem = new MyMessageTabItem(MyType.UserInGroup, friends[i]);
                            //DataUtil.MessageTabControl.Items.Add(tabItem);
                            //DataUtil.MessageTabItems.Add(friends[i].id, tabItem);
                        }

                        break;

                    }

                case MyType.Group:
                    {
                        List<Group> groups = DataUtil.Groups;
                        rowCount = groups.Count / columnCount + 1;
                        InitRowAndColumn();




                        for (i = 0; i < groups.Count; i++)
                        {

                            MyButton button = new MyButton(MyType.Group, groups[i], null);
                            Grid.SetColumn(button, i % columnCount);
                            Grid.SetRow(button, i / columnCount);
                            this.Children.Add(button);


                            var tabItem = new MyMessageTabItem(MyType.Group, groups[i]);
                            DataUtil.MessageTabControl.Items.Add(tabItem);
                            DataUtil.GroupMessageTabItems.Add(groups[i].GroupId, tabItem);

                        }

                        break;
                    }
            }




        }
コード例 #5
0
ファイル: DataUtil.cs プロジェクト: ITPuppy/myRepo
 public static void SetCurrentMessageWindow(BaseRole baseRole)
 {
     
     if(baseRole is Member)
     {
         Member member=baseRole as Member;
         MessageTabControl.SelectedItem = FriendMessageTabItems[member.id];
         CurrentMessageTabItem=FriendMessageTabItems[member.id];   
     }
     else if (baseRole is Group)
     {
         Group group = baseRole as Group;
         MessageTabControl.SelectedItem=GroupMessageTabItems[group.GroupId];
         CurrentMessageTabItem = GroupMessageTabItems[group.GroupId];
       
     }
 }
コード例 #6
0
ファイル: MyTabItem.cs プロジェクト: ITPuppy/myRepo
        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;
            }
        }