Ejemplo n.º 1
0
        public void Add(LanUser user)
        {
            UserListItem item = new UserListItem();

            item.User = user;
            this.Items.Add(item);
        }
Ejemplo n.º 2
0
        public void AddReceivedTextMessage(LanUser from, long id, string message)
        {
            Store.Models.Message m = new Store.Models.Message(MessageType.Text);
            m.FromUserId = from.ID;
            m.ToUserId   = this.OwnerUser.ID;
            m.Content    = message;
            m.Flag       = true; //默认成功,后面按照失败结果设定为false

            MessageListItem item = new MessageListItem();

            item.State   = MessageState.Received;
            item.ID      = id;
            item.Message = m;
            item.User    = from;

            item.Save();

            AddMessageListItem(from, item);
        }
Ejemplo n.º 3
0
        public void AddReceivedImageMessage(LanUser from, long id, Image image)
        {
            //保存记录
            Store.Models.ImageMessage m = new Store.Models.ImageMessage(image);
            m.FromUserId = from.ID;
            m.ToUserId   = this.OwnerUser.ID;
            m.OriginPath = "";
            m.Flag       = true; //默认成功,后面按照失败结果设定为false

            MessageListItem item = new MessageListItem();

            item.ID      = id;
            item.State   = MessageState.Received;
            item.Message = m;
            item.User    = from;

            item.Save();

            AddMessageListItem(from, item);
        }
Ejemplo n.º 4
0
        private void AddMessageListItem(LanUser from, MessageListItem item)
        {
            UserListItem userItem = this[from.ID];

            bool bRefresh = false;

            if (this.SelectedUser == null || from.ID != this.SelectedUser.ID)
            {
                //不是当前用户则增加未读数
                userItem.UnreadMessageCount++;
                bRefresh = true;
            }

            //移动到第一个
            if (this.Items[0] != userItem)
            {
                this.Items.Remove(userItem);
                this.Items.Insert(0, userItem);
                bRefresh = true;
            }

            if (bRefresh)
            {
                this.Invalidate(userItem.Bounds);
            }

            UserChatControl chatCtrl = userItem.ChatControl;

            if (chatCtrl == null)
            {
                //如果还没表示则先缓存一下
                userItem.WaitDisplayMessages.Add(item);
            }
            else
            {
                chatCtrl.AddMessageItem(item, userItem.UserID == from.ID);
            }
        }
Ejemplo n.º 5
0
        public void AddFileReceivingMessage(LanUser from, TransportFile file)
        {
            //保存记录
            Store.Models.FileMessage m = new Store.Models.FileMessage();
            m.FromUserId     = from.ID;
            m.ToUserId       = this.OwnerUser.ID;
            m.OriginFilePath = file.SavePath;
            m.FileName       = Path.GetFileName(file.SavePath);
            m.FileLength     = file.File.Length;
            m.Flag           = true; //默认成功,后面按照失败结果设定为false

            MessageListItem item = new MessageListItem();

            item.ID      = file.ID;
            item.Message = m;
            item.User    = from;
            item.State   = MessageState.Receiving;

            //保存到数据库
            item.Save();

            AddMessageListItem(from, item);
        }
Ejemplo n.º 6
0
        public void AddOrUpdateUser(LanUser user, UpdateState updateState)
        {
            if (this.ContainsUser(user))
            {
                UserListItem item = this[user.ID];

                if ((updateState & UpdateState.NickName) != 0)
                {
                    item.Update();
                }

                this.Invalidate(item.Bounds);

                UserChatControl chatControl = item.ChatControl;
                if (chatControl != null)
                {
                    chatControl.Contacter          = user;
                    chatControl.SendMessageEnabled = (user.Status != UserStatus.Offline);
                }

                if (this.SelectedUser != null && this.SelectedUser.ID == user.ID)
                {
                    //当前刚好表示着聊天记录则更新
                    if (chatControl != null)
                    {
                        chatControl.RefreshMessageList(null);
                    }
                }
            }
            else
            {
                UserListItem item = new UserListItem(user);
                item.Save();

                this.Items.Add(item);
            }
        }
Ejemplo n.º 7
0
 public UserListItem(LanUser user)
 {
     this.User = user;
 }
Ejemplo n.º 8
0
 public bool ContainsUser(LanUser user)
 {
     return(this[user.ID] != null);
 }