Example #1
0
        void addItem(object state)
        {
            MyGroupModel model = (MyGroupModel)state;

            foreach (var item in this.flowLayoutPanel.Controls)
            {
                if (item is GroupItem)
                {
                    var oldItem = (GroupItem)item;
                    if (oldItem.m_myGroupModel.GroupID == model.GroupID)
                    {//已经存在这个item
                        Debug.Print("已经存在这个群组的item");
                        return;
                    }
                }
            }
            GroupItem groupItem = new GroupItem(model);

            if (groupItem != null && groupItem.IsDisposed == false)
            {
                this.flowLayoutPanel.Controls.Add(groupItem);
                amount++;
                this.buttonGroup.Text = "我的群 " + amount;
            }
        }
Example #2
0
        public GroupItem(MyGroupModel myGroupModel)
        {
            if (myGroupModel.GroupID == 0)
            {
                Debug.Print("groupID=0这不该发生" + m_myGroupModel.GroupID);
                Dispose();
                return;
            }

            InitializeComponent();
            m_myGroupModel = myGroupModel;
            DataMgr.Instance.updateGroupInfoEvent += this.onGroupModelUpdated;
            FaceMgr.Instance.modifyFaceEvent      += this.onGroupFaceModify;
        }
Example #3
0
 //添加item
 public void addItemSafePost(MyGroupModel model)
 {
     m_SyncContext.Post(addItem, model);
 }
Example #4
0
        public void onNewMessage(MsgModel mModel)
        {
            switch (mModel.MsgType)
            {
            case MessageProtocol.ADD_FRIEND_SRES:    //我添加好友的响应  (《《《无需闪烁》》》)
                MainMgr.Instance.formMain.FormAddFriend.showOpreationResultSafePost("好友申请已经发出,请等待对方处理。");
                //验证消息窗体加入这条信息
                VerifyMsgMgr.Instance.addOneVerifyMsg(mModel);
                break;

            case MessageProtocol.ONE_ADD_YOU_SRES:    //有人添加你      (闪烁~~~)      (需要操作。点击同意按钮)
                VerifyMsgMgr.Instance.addOneVerifyMsg(mModel);
                msgTip(mModel);
                break;

            case MessageProtocol.AGREE_ADD_FRIEND_SRES:    //我同意别人的加好友申请的响应,删除mlist ,并添加好友 (《《《无需闪烁》》》)
                VerifyMsgMgr.Instance.formMessageVerify.showOpreationResultSafePost(mModel.To + "是你的好友了");
                MainMgr.Instance.formMain.flowLayoutPanelFriendList.addFriendItemSafePost(mModel.To);
                //把验证消息里的这条消息标记为已处理
                VerifyMsgMgr.Instance.markProcessed(mModel);
                break;

            case MessageProtocol.ONE_AGREED_YOU:                                                        //别人同意了你的申请   (闪烁~~~)
                MainMgr.Instance.formMain.flowLayoutPanelFriendList.addFriendItemSafePost(mModel.From); //添加好友
                msgTip(mModel);
                break;

            case MessageProtocol.DELETE_FRIEND_SRES:    //删除好友的响应,删除好友item及好友列表  (《《《无需闪烁》》》)
                MainMgr.Instance.formMain.flowLayoutPanelFriendList.removeFriendItemSafePost(mModel.To);
                //MessageBox.Show("好友删除完毕。");
                break;

            case MessageProtocol.YOU_BE_DELETED:    //你被别人删除好友了,删除item、list、添加消息列表     (闪烁~~~)
                MainMgr.Instance.formMain.flowLayoutPanelFriendList.removeFriendItemSafePost(mModel.From);
                //  msgTip(mModel);
                break;


            ////群组相关
            case MessageProtocol.CREATE_GROUP_SRES:    //建群的响应       (《《《无需闪烁》》》)
                MyGroupModel myGroupModel = Coding <MyGroupModel> .decode(mModel.Content);

                Debug.Print("我新建的群号是:" + myGroupModel.GroupID);
                MainMgr.Instance.formMain.flowLayoutPanelGroupList.addItemSafePost(myGroupModel);
                //更新提示文字
                MainMgr.Instance.formMain.flowLayoutPanelGroupList.formCreateGroup.showOpreationResultSafePost("创建成功!,群号是:" + myGroupModel.GroupID);
                break;

            case MessageProtocol.ADD_GROUP_SRES:    //加群的响应 (《《《无需闪烁》》》)
                Debug.Print("申请加群的响应" + mModel.Content);
                if (mModel.Content == "too many member")
                {    //群员太多
                    MainMgr.Instance.formMain.FormAddFriend.showOpreationResultSafePost("此群员已满,加入失败!");
                    return;
                }
                if (mModel.Content == "申请已经发出,请等待群主审核。")
                {
                    MainMgr.Instance.formMain.FormAddFriend.showOpreationResultSafePost(mModel.Content);
                    //验证消息窗体加入这条信息
                    VerifyMsgMgr.Instance.addOneVerifyMsg(mModel);
                    return;
                }
                MyGroupModel myAddGroupModel = Coding <MyGroupModel> .decode(mModel.Content);

                Debug.Print("我加入的群号是:" + myAddGroupModel.GroupID);
                //增加item
                MainMgr.Instance.formMain.flowLayoutPanelGroupList.addItemSafePost(myAddGroupModel);
                //更新提示文字
                MainMgr.Instance.formMain.FormAddFriend.showOpreationResultSafePost("成功加入!");
                break;

            case MessageProtocol.ONE_WANT_ADD_GROUP_SRES:    //有人想申请入群       (闪烁~~~)          (需要操作。点击同意入群按钮)
                VerifyMsgMgr.Instance.addOneVerifyMsg(mModel);
                msgTip(mModel);
                break;

            case MessageProtocol.AGREE_ADD_GROUP_SRES:    //群主同意申请入群的响应  (《《《无需闪烁》》》)
                VerifyMsgMgr.Instance.formMessageVerify.showOpreationResultSafePost(mModel.From + "加入成功!");
                //把验证消息里的这条消息标记为已处理
                VerifyMsgMgr.Instance.markAddGroupProcessed(mModel);
                break;

            case MessageProtocol.YOU_BE_AGREED_ENTER_GROUP:    //你被同意入群             (闪烁~~~)
                msgTip(mModel);
                //增加item
                MyGroupModel beAgreedEnterGroupModel = new MyGroupModel();
                beAgreedEnterGroupModel.GroupID      = int.Parse(mModel.To);
                beAgreedEnterGroupModel.ReceiveModel = 0;
                MainMgr.Instance.formMain.flowLayoutPanelGroupList.addItemSafePost(beAgreedEnterGroupModel);
                break;

            case MessageProtocol.QUIT_GROUP_SRES:    //退群响应  (《《《无需闪烁》》》)
                MainMgr.Instance.formMain.flowLayoutPanelGroupList.removeItemSafePost(int.Parse(mModel.To));
                break;

            case MessageProtocol.FORCE_REMOVE_GROUP_SRES: //把一个人移除出群的响应
                if (onRemoveMemberProcessed != null)      //这个事件为了销毁那个item
                {
                    onRemoveMemberProcessed(mModel.To);
                }
                break;

            case MessageProtocol.BE_REMOVE_GROUP_SRES:    //被移除出群      (闪烁~~~)
                //TODO:如果这个人还打开着这个群的资料,那么又可以进群聊天。应该规避一下。
                //验证消息窗体加入这条信息
                VerifyMsgMgr.Instance.addOneVerifyMsg(mModel);
                msgTip(mModel);
                //删除item
                MainMgr.Instance.formMain.flowLayoutPanelGroupList.removeItemSafePost(int.Parse(mModel.From));
                break;

            case MessageProtocol.INVITE_TO_GROUP_SRES:    //申请邀请一个人入群的响应
                if (onInviteProcessedEvent != null)
                {
                    onInviteProcessedEvent(mModel.To);
                }
                break;

            case MessageProtocol.BE_INVITE_TO_GROUP_SRES:    //被邀请加入一个群  (闪烁~~~)
                //验证消息窗体加入这条信息
                VerifyMsgMgr.Instance.addOneVerifyMsg(mModel);
                msgTip(mModel);
                break;

            case MessageProtocol.INVITE_PROCESS_SRES:    //被邀请入群的人的操作的响应
                //如果之前是同意的操作,则进入一个群
                if (mModel.Content == "yes")
                {
                    msgTip(mModel);
                    //增加群item
                    MyGroupModel enterGroupModel = new MyGroupModel();
                    enterGroupModel.GroupID      = int.Parse(mModel.To);
                    enterGroupModel.ReceiveModel = 0;
                    MainMgr.Instance.formMain.flowLayoutPanelGroupList.addItemSafePost(enterGroupModel);
                    //把验证消息里的这条消息标记为已处理
                    VerifyMsgMgr.Instance.markInviteGroupProcessed(mModel);
                }
                if (mModel.Content == "no")
                {    //如果决绝操作则什么也不做
                    return;
                }
                break;

            case MessageProtocol.OTHER_PROCESS_OF_INVITE_SRES:    //我邀请别人后,被邀请人的操作结果
                //验证消息窗体加入这条信息
                VerifyMsgMgr.Instance.addOneVerifyMsg(mModel);
                Debug.Print("我的邀请有结果了" + mModel.Content);
                break;



            ////聊天相关
            case MessageProtocol.CHAT_ME_TO_FRIEND_SRES:    //我和别人聊天的响应
                                                            // Debug.Print("我和别人聊天的响应" + mModel.From + mModel.To+mModel.Content);
                FormDialogManager.Instance.onChatMsg(mModel);
                //更新对话item
                MainMgr.Instance.formMain.flowLayoutPanelDialogueList.reFreshContent("friend" + mModel.To, mModel.Content);
                break;

            case MessageProtocol.CHAT_FRIEND_TO_ME_SRES:    //别人和我聊天,聊天框已经打开则直接显示气泡,否则进入消息提示窗
                if (FormDialogManager.Instance.isDialogOpend("friend" + mModel.From) == false)
                {
                    //     Debug.Print("弹出提示");
                    msgTip(mModel);
                }
                else
                {
                    //    Debug.Print("直接显示气泡");
                    FormDialogManager.Instance.onChatMsg(mModel);
                }
                //更新对话item
                MainMgr.Instance.formMain.flowLayoutPanelDialogueList.reFreshContent("friend" + mModel.From, mModel.Content);
                break;

            //群聊相关
            case MessageProtocol.CHAT_ME_TO_GROUP_SRES:    //我发群聊的响应
                break;

            case MessageProtocol.CHAT_GROUP_TO_ME_SRES:    //收到群聊
                                                           // Debug.Print("收到群聊消息" + mModel.Content);
                if (FormDialogManager.Instance.isDialogOpend("group" + mModel.To) == false)
                {
                    //   Debug.Print("弹出提示");
                    msgTip(mModel);
                }
                else
                {
                    // Debug.Print("直接显示气泡");
                    FormDialogManager.Instance.onChatMsg(mModel);
                }
                //更新对话item
                MainMgr.Instance.formMain.flowLayoutPanelDialogueList.reFreshContent("group" + mModel.To, mModel.Content);
                break;

            case MessageProtocol.CHAT_GROUP_HAS_HISTORY_SRES:    //某群有离线历史消息
                Debug.Print("某群有离线消息:" + mModel.From + mModel.To + mModel.Content);
                //拉取群离线消息
                pullGroupOfflineMsg(mModel.To);
                break;

            default:
                Debug.Print("未知消息协议类型" + mModel.MsgType + " " + mModel.Content);
                break;
            }
        }