Ejemplo n.º 1
0
        private void vTreeChating_NodeMouseDoubleClick(object sender, VirtualTreeEventArgs e)
        {
            //保存当前聊天内容到本地
            SaveChatContentToLocal();
            //替换聊天对象
            ToUserInfo = vTreeChating.SelectedNode.Tag as UserInfo;
            if (ToUserInfo == null)
            {
                return;
            }
            vTreeChating.SuspendLayout();
            vTreeChating.SelectedNode.SubItems[0].Text = "";
            vTreeChating.PerformLayout();
            //加载本地已有聊天记录
            LoadChatContent();
            //获取节点用户发送过来的未读消息
            List <MessageInfo> lstInfo = new List <MessageInfo>();

            lstInfo = ListMessageInfo.FindAll(i => i.MessageFrom.USER_ID == ToUserInfo.USER_ID);
            foreach (MessageInfo item in lstInfo)
            {
                if (item.MessageAction == (int)ActionType.SendMessage)
                {
                    ShowMessageText(item);
                }
                else if (item.MessageAction == (int)ActionType.SendPIc)
                {
                    ShowMessagePic(item, null);
                }
                //从缓存list中移除
                ListMessageInfo.Remove(item);
                //设置消息已读
                UpdateChatLog(item);
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 接收聊天数据
 /// </summary>
 /// <param name="info"></param>
 private void HandleSendMessage(MessageInfo info)
 {
     if (info == null)
     {
         return;
     }
     //接收到的消息缓存至ht内容中
     ListMessageInfo.Add(info);
     //更新对应节点显示信息
     UpdateChatingTreeMessage(info);
     //跳图标
     TrayIconHandler.Instance.StartTrayBlink();
 }
Ejemplo n.º 3
0
        private void vTreeAlluser_NodeMouseDoubleClick(object sender, VirtualTreeEventArgs e)
        {
            if (CurrentUser == null)
            {
                return;
            }
            UserInfo userInfo = vTreeAlluser.SelectedNode.Tag as UserInfo;

            if (userInfo == null || userInfo.USER_ID == CurrentUser.USER_ID)
            {
                return;
            }

            //保存当前聊天内容到本地
            SaveChatContentToLocal();
            ToUserInfo = userInfo;
            //加载本地已有聊天记录
            LoadChatContent();
            if (!htChating.ContainsKey(ToUserInfo.USER_ID))
            {
                return;
            }
            //获取节点用户发送过来的未读消息
            List <MessageInfo> lstInfo = new List <MessageInfo>();

            lstInfo = ListMessageInfo.FindAll(i => i.MessageFrom.USER_ID == ToUserInfo.USER_ID);
            foreach (MessageInfo item in lstInfo)
            {
                if (item.MessageAction == (int)ActionType.SendMessage)
                {
                    ShowMessageText(item);
                }
                else if (item.MessageAction == (int)ActionType.SendPIc)
                {
                    ShowMessagePic(item, null);
                }
                //从缓存list中移除
                ListMessageInfo.Remove(item);
                //设置消息已读
                UpdateChatLog(item);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 窗体激活时显示将正在聊天的新内容展示到显示框中
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ChatClient_Activated(object sender, EventArgs e)
        {
            if (ToUserInfo == null)
            {
                return;
            }
            if (vTreeChating.SelectedNode == null)
            {
                return;
            }
            //获取节点用户发送过来的未读消息
            List <MessageInfo> lstInfo = new List <MessageInfo>();

            lstInfo = ListMessageInfo.FindAll(i => i.MessageFrom.USER_ID == ToUserInfo.USER_ID);
            if (lstInfo == null || lstInfo.Count == 0)
            {
                return;
            }
            foreach (MessageInfo item in lstInfo)
            {
                if (item.MessageAction == (int)ActionType.SendMessage)
                {
                    ShowMessageText(item);
                }
                else if (item.MessageAction == (int)ActionType.SendPIc)
                {
                    ShowMessagePic(item, null);
                }
                //从缓存list中移除
                ListMessageInfo.Remove(item);
                //设置消息已读
                UpdateChatLog(item);
            }
            //更新当前聊天对象信息
            vTreeChating.SuspendLayout();
            VirtualNode node = vTreeChating.SelectedNode;

            node.SubItems[0].Text = "";
            vTreeChating.PerformLayout();
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 更新消息对应的用户节点显示信息
        /// </summary>
        /// <param name="info"></param>
        private void UpdateChatingTreeMessage(MessageInfo info)
        {
            if (info == null)
            {
                return;
            }
            //找到消息对应节点
            VirtualNode userNode = null;
            UserInfo    userInfo = null;

            foreach (VirtualNode item in vTreeChating.Nodes)
            {
                userInfo = item.Tag as UserInfo;
                if (userInfo != null && userInfo.USER_ID == info.MessageFrom.USER_ID)
                {
                    userNode = item;
                    break;
                }
            }
            if (userNode == null)//添加离线节点
            {
                userInfo = SystemCache.LstUserInfo.Find(i => i.USER_ID == info.MessageFrom.USER_ID);
                userNode = AddChatingTreeNode(userInfo, 0);
            }
            if (userNode == null || userInfo == null || string.IsNullOrEmpty(userInfo.USER_ID))
            {
                return;
            }
            //获取发送用户的消息
            List <MessageInfo> lstInfo = new List <MessageInfo>();

            lstInfo = ListMessageInfo.FindAll(i => i.MessageFrom.USER_ID == userInfo.USER_ID);
            vTreeChating.SuspendLayout();
            userNode.SubItems[0].Text = string.Format("{0}", lstInfo.Count == 0 ? "" : string.Format("{0}", lstInfo.Count));
            vTreeChating.PerformLayout();
        }