Ejemplo n.º 1
0
        /// <summary>
        /// 私聊消息处理
        /// </summary>
        /// <param name="type"></param>
        /// <param name="source"></param>
        /// <param name="content"></param>
        private static void SingleMessage(string type, string source, string content)
        {
            lock (countersLock)
            {
                if (MainWindow.mw.messageList.Items.IndexOf(source) == 0)      //若来源客户端的聊天项已存在
                {
                    //对象的未读消息+1
                    messageCounters[source] += 1;
                    MainWindow.mw.ItemCountAdd(source, messageCounters[source]);
                }
                else
                {
                    messageCounters.Add(source, 1);
                    MainWindow.mw.NewItemAdd(source);
                }
            }


            //将消息加入页面类对象中的消息队列
            asdasdasd.Receive receive = new asdasdasd.Receive();
            receive.Type = type;

            if (type.Equals("Text"))               //判断消息类型,如果是Text则直接保存入Receive结构中
            {
                receive.Content = content;
                receive.Source  = source;
            }
            else                                   //如果消息不是Text,则将其保存在本地硬盘中,并将其地址存入Receive结构
            {
                receive.Content = SaveToLocal(content, type);
            }

            MainWindow.mw.navigateTableUpdate(receive, source);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 在主线程同步页面导航表的数据
 /// </summary>
 /// <param name="receive"></param>
 /// <param name="source"></param>
 public void navigateTableUpdate(asdasdasd.Receive receive, string source)
 {
     mw.Dispatcher.Invoke(() =>
     {
         if (navigateTable.ContainsKey(source))
         {
             navigateTable[source].Add(receive);
         }
         else
         {
             List <asdasdasd.Receive> li = new List <asdasdasd.Receive>();
             li.Add(receive);
             navigateTable.Add(source, li);
         }
     });
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 群组消息处理
        /// </summary>
        /// <param name="type"></param>
        /// <param name="source"></param>
        /// <param name="content"></param>
        /// <param name="target"></param>
        private static void GroupMessage(string type, string source, string content, string target)
        {
            //对象群组的未读消息+1
            lock (countersLock)
            {
                messageCounters[target] += 1;
            }
            MainWindow.mw.ItemCountAdd(target, messageCounters[target]);

            //新消息内容封装入链表
            asdasdasd.Receive r = new asdasdasd.Receive();
            r.Source = source;

            if (type.Equals("Text"))
            {
                r.Content = content;
            }
            else
            {
                r.Content = SaveToLocal(content, type);
            }
            r.Type = type;
            MainWindow.mw.navigateTableUpdate(r, target);
        }