示例#1
0
        /// <summary>
        /// Retrieves list of ChatMessage objects from SqlCommand, after database query
        /// number of rows retrieved and returned depends upon the rows field value
        /// </summary>
        /// <param name="cmd">The command object to use for query</param>
        /// <param name="rows">Number of rows to process</param>
        /// <returns>A list of ChatMessage objects</returns>
        private ChatMessageList GetList(SqlCommand cmd, long rows)
        {
            // Select multiple records
            SqlDataReader reader;
            long          result = SelectRecords(cmd, out reader);

            //ChatMessage list
            ChatMessageList list = new ChatMessageList();

            using ( reader )
            {
                // Read rows until end of result or number of rows specified is reached
                while (reader.Read() && rows-- != 0)
                {
                    ChatMessage chatMessageObject = new ChatMessage();
                    FillObject(chatMessageObject, reader);

                    list.Add(chatMessageObject);
                }

                // Close the reader in order to receive output parameters
                // Output parameters are not available until reader is closed.
                reader.Close();
            }

            return(list);
        }
示例#2
0
        /// <summary>
        /// 收到消息
        /// </summary>
        /// <param name="msg">Message</param>
        public void ProcessNewMessage(Messageobject msg)
        {
            //处理撤回消息
            switch (msg.type)
            {
            case kWCMessageType.RoomMemberNameChange:
                UpdateGroupMemberRemark(new MessageListItem {
                    Jid = msg.fromUserId, ShowTitle = msg.content, Avator = Applicate.LocalConfigData.GetDisplayAvatorPath(msg.fromUserId)
                });
                break;

            case kWCMessageType.Withdraw:
                var withdraw = ChatMessageList.FirstOrDefault(m => m.messageId == msg.content);
                if (withdraw != null)
                {
                    ChatMessageList.Remove(withdraw);    //移除对应消息
                }
                break;

            case kWCMessageType.PokeMessage:    //戳一戳
                break;

            case kWCMessageType.RoomFileDelete:    //文件删除
                break;

            default:
                break;
            }
        }
示例#3
0
 private void InsertSingleChatMessage(Messageobject msg)
 {
     App.Current.Dispatcher.Invoke(() =>
     {
         ChatMessageList.Insert(0, msg.MessageObjectToBubbleItem());
     });
 }
示例#4
0
        public ServerTab()
        {
            // Generate the chat and user list
            chatMessageList = new ChatMessageList();
            userList        = new UserList(() => userSearch);
            messageBox      = new TextFieldWidget(
                initialText: message,
                onChange: newMessage => message = newMessage
                );

            // Create a tab container to hold the chat and trade list
            contents = new TabsContainer();

            // Create a flex container to hold the chat tab content
            HorizontalFlexContainer chatRow = new HorizontalFlexContainer(DEFAULT_SPACING);

            // Chat container
            chatRow.Add(
                GenerateChat()
                );

            // Right column (settings and user list) container
            chatRow.Add(
                new Container(
                    GenerateRightColumn(),
                    width: RIGHT_COLUMN_CONTAINER_WIDTH
                    )
                );

            // Add the chat row as a tab
            contents.AddTab("Phinix_tabs_chat".Translate(), chatRow);

            // Add the active trades tab
            contents.AddTab("Phinix_tabs_trades".Translate(), new TradeList());
        }
示例#5
0
 private void _UpdateChatMessageList()
 {
     if (ChatMessageList.Items.Count != m_chat.Messages.Count)
     {
         ChatMessageList.DataSource = m_chat.Messages;
         ChatMessageList.DataBind();
     }
 }
示例#6
0
        /// <summary>
        /// 删除消息
        /// </summary>
        /// <param name="msg">需要删除的消息</param>
        private void RemoveMessage(Messageobject msg)
        {
            var msgItem = ChatMessageList.FirstOrDefault(m => m.messageId == msg.messageId);//获取

            if (msgItem != null)
            {
                ChatMessageList.Remove(msgItem);//删除
            }
        }
        void ReleaseDesignerOutlets()
        {
            if (BufferSizeInput != null)
            {
                BufferSizeInput.Dispose();
                BufferSizeInput = null;
            }

            if (BufferSizeSlider != null)
            {
                BufferSizeSlider.Dispose();
                BufferSizeSlider = null;
            }

            if (ChatMessageInput != null)
            {
                ChatMessageInput.Dispose();
                ChatMessageInput = null;
            }

            if (ChatMessageList != null)
            {
                ChatMessageList.Dispose();
                ChatMessageList = null;
            }

            if (ConnectButton != null)
            {
                ConnectButton.Dispose();
                ConnectButton = null;
            }

            if (IPAddressInput != null)
            {
                IPAddressInput.Dispose();
                IPAddressInput = null;
            }

            if (NameInput != null)
            {
                NameInput.Dispose();
                NameInput = null;
            }

            if (PortInput != null)
            {
                PortInput.Dispose();
                PortInput = null;
            }

            if (SendButton != null)
            {
                SendButton.Dispose();
                SendButton = null;
            }
        }
示例#8
0
        /// <summary>
        /// 根据MessageId设置消息的
        /// </summary>
        /// <param name="msgId"></param>
        private void UpdateMessageSended(string msgId)
        {
            var existsItem = ChatMessageList.FirstOrDefault(m => m.messageId == msgId);

            if (existsItem != null)
            {
                existsItem.messageState = 1;                  //设为送达
                existsItem.StateIcon    = PackIconKind.Check; //设为送达
                existsItem.MsgStateText = "送达";
                existsItem.ReadToolTip  = "送达";
            }
        }
示例#9
0
 /// <summary>
 /// 显示单个消息气泡
 /// </summary>
 /// <param name="message"></param>
 public void AddSingleChatMessage(Messageobject message)
 {
     if (ServiceLocator.Current.GetInstance <MainViewModel>().Sess.Jid == message.jid)
     {
         //Add the single to ChatMessageList
         ChatMessageList.Add(message.MessageObjectToBubbleItem());
         Messenger.Default.Send(true, ChatBubbleListControl.ScrollChatBubbleMessageToBottom);//自动滚动
         SendReadMsgAsync(new List <Messageobject> {
             message
         });                                                   //发送已读
     }
 }
示例#10
0
        public void MsgReceipt(Messageobject msg)
        {
            var existsItem = ChatMessageList.FirstOrDefault(m => m.messageId == msg.messageId);//获取对应消息

            if (existsItem != null)
            {
                existsItem.messageState = 1;                  //设为送达
                existsItem.StateIcon    = PackIconKind.Check; //设为送达
                existsItem.MsgStateText = "送达";
                existsItem.ReadToolTip  = "送达";
            }
        }
示例#11
0
        void IChatCallbacks.ChatChannelMessageCallback(ChatMessageList messageList)
        {
            for (int i = 0; i < messageList.Messages.Length; ++i)
            {
                m_Messages.AddLast(messageList.Messages[i]);
            }

            try
            {
                if (m_UseEmoticons)
                {
                    if (TokenizedMessagesReceived != null)
                    {
                        List <ChatTokenizedMessage> list = new List <ChatTokenizedMessage>();
                        for (int i = 0; i < messageList.Messages.Length; ++i)
                        {
                            ChatTokenizedMessage tokenized = null;
                            ErrorCode            ret       = m_Chat.TokenizeMessage(messageList.Messages[i], out tokenized);
                            if (Error.Failed(ret) || tokenized == null)
                            {
                                string err = Error.GetString(ret);
                                ReportError(string.Format("Error disconnecting: {0}", err));
                            }
                            else
                            {
                                list.Add(tokenized);
                            }
                        }

                        ChatTokenizedMessage[] arr = list.ToArray();

                        this.TokenizedMessagesReceived(arr);
                    }
                }
                else
                {
                    if (RawMessagesReceived != null)
                    {
                        this.RawMessagesReceived(messageList.Messages);
                    }
                }
            }
            catch
            {
            }

            // cap the number of messages cached
            while (m_Messages.Count > m_MessageHistorySize)
            {
                m_Messages.RemoveFirst();
            }
        }
示例#12
0
        public void SendTimeout(Messageobject msg)
        {
            var target = ChatMessageList.FirstOrDefault(m => m.messageId == msg.messageId);

            if (target != null)
            {
                target.messageState = -1;
                //target.StateIcon = PackIconKind.AlertCircle;

                target.UpdateMessageState();
                //target = target;
            }
        }
示例#13
0
 /// <summary>
 /// 撤回消息
 /// </summary>
 /// <param name="msg">需要撤回的消息</param>
 private void WithDrawMessage(Messageobject msg)
 {
     if (ChatMessageList.Count(c => c.messageId == msg.messageId) > 0)
     {
         var cmsg = ChatMessageList.FirstOrDefault(c => c.messageId == msg.messageId);
         cmsg.content = msg.content; //内容
         cmsg.type    = msg.type;    //更新为撤回消息
         #region 移除并添加
         int index = ChatMessageList.IndexOf(cmsg);
         ChatMessageList.Remove(cmsg);
         ChatMessageList.Insert(index, cmsg);
         #endregion
     }
 }
示例#14
0
        /// <summary>
        /// 显示默认聊天信息(15条)
        /// </summary>
        public Messageobject ShowDefaultMessage()
        {
            var main = ServiceLocator.Current.GetInstance <MainViewModel>();

            ChatMessageList.Clear();
            var tmpMsg = new Messageobject()
            {
                FromId = Applicate.MyAccount.userId,
                ToId   = main.Sess.Jid
            };
            List <Messageobject> msgList = tmpMsg.GetPageList(0);

            ShowChatMessage(msgList);  //显示消息气泡
            SendReadMsgAsync(msgList); //发送已读
            return(msgList.LastOrDefault());
        }
示例#15
0
        /// <summary>
        /// Retrieves all ChatMessage objects by PageRequest
        /// </summary>
        /// <returns>A list of ChatMessage objects</returns>
        public ChatMessageList GetPaged(PagedRequest request)
        {
            using (SqlCommand cmd = GetSPCommand(GETPAGEDCHATMESSAGE))
            {
                AddParameter(cmd, pInt32Out("TotalRows"));
                AddParameter(cmd, pInt32("PageIndex", request.PageIndex));
                AddParameter(cmd, pInt32("RowPerPage", request.RowPerPage));
                AddParameter(cmd, pNVarChar("WhereClause", 4000, request.WhereClause));
                AddParameter(cmd, pNVarChar("SortColumn", 128, request.SortColumn));
                AddParameter(cmd, pNVarChar("SortOrder", 4, request.SortOrder));

                ChatMessageList _ChatMessageList = GetList(cmd, ALL_AVAILABLE_RECORDS);
                request.TotalRows = Convert.ToInt32(GetOutParameter(cmd, "TotalRows"));
                return(_ChatMessageList);
            }
        }
示例#16
0
        /// <summary>
        /// Retrieve list of ChatMessage.
        /// </summary>
        /// <param name="fillChild"></param>
        /// <returns>List of ChatMessage</returns>
        public ChatMessageList GetAll(bool fillChild)
        {
            ChatMessageList chatMessageList = new ChatMessageList();

            using (ChatMessageDataAccess data = new ChatMessageDataAccess(ClientContext))
            {
                chatMessageList = data.GetAll();
            }
            if (fillChild)
            {
                foreach (ChatMessage chatMessageObject in chatMessageList)
                {
                    FillChatMessageWithChilds(chatMessageObject, fillChild);
                }
            }
            return(chatMessageList);
        }
示例#17
0
 /// <summary>
 /// 显示消息气泡
 /// </summary>
 /// <param name="messageList"></param>
 public void ShowChatMessage(List <Messageobject> messageList)
 {
     App.Current.Dispatcher.Invoke(() =>
     {
         //First Clean the entire ChatMessageList
         ChatMessageList.Clear();
         //Add to the ChatMessageList
         ChatMessageList.AddRange(messageList.MsgListToObservableMsgList());
         Task.Run(() =>
         {
             App.Current.Dispatcher.Invoke(() =>
             {
                 Messenger.Default.Send(true, ChatBubbleListControl.ScrollChatBubbleMessageToBottom);//自动滚动
             });
         });
     });
 }
示例#18
0
        public async Task PerformTextChat(INetworkPlayer player, IShard shard, ulong EntityID, Packets.GamePacket packet)
        {
            var pkt = packet.Read <PerformTextChat>();

            Program.Logger.Information("[{2}] {0}: {1}", player.CharacterEntity.CharData.Name, pkt.Message, pkt.Channel);

            var msgs = new ChatMessageList();

            msgs.Messages.Add(new ChatMessage {
                SenderID   = player.EntityID,
                SenderName = player.CharacterEntity.CharData.Name,
                Message    = pkt.Message,
                Channel    = pkt.Channel == 0 ? ChatChannel.Zone : pkt.Channel
            });

            _ = await shard.SendGSSAll(ChannelType.UnreliableGss, msgs, shard.InstanceID);
        }
示例#19
0
        /// <summary>
        /// 更新群昵称
        /// </summary>
        /// <param name="item">更新项</param>
        private void UpdateGroupMemberRemark(MessageListItem item)
        {
            var lists = ChatMessageList.Where(c => c.fromUserId == item.Jid).ToList();

            if (lists.Count > 0)
            {
                for (int i = 0; i < lists.Count; i++)
                {
                    lists[i].fromUserName = item.ShowTitle;//设置修改后的昵称
                }
                Task.Run(() =>
                {
                    //for (int i = 0; i < lists.Count; i++)
                    //{
                    lists[0].UpdateNicknameByUserId(lists[0].jid, item.Jid, item.ShowTitle); //更新数据库
                                                                                             //}
                });
            }
        }
示例#20
0
        /// <summary>
        /// 显示默认消息
        /// </summary>
        /// <param name="jid"></param>
        /// <returns></returns>
        public void ShowDefaultMessage(string jid)
        {
            App.Current.Dispatcher.Invoke(() =>
            {
                ChatMessageList.Clear();//
            });
            var tmpMsg = new Messageobject()
            {
                FromId = Applicate.MyAccount.userId,
                ToId   = jid
            };
            List <Messageobject> msgList = tmpMsg.GetPageList(0);

            ShowChatMessage(msgList);  //显示消息气泡
            SendReadMsgAsync(msgList); //发送已读
            if (msgList.Count < 15)    //如果消息数量不足15条则拉取100条存入数据库并显示15条
            {
                GetMoreMessage();
            }
        }
 private void _UpdateChatMessageList()
 {
     ChatMessageList.DataSource = m_chat.Messages;
     ChatMessageList.DataBind();
 }
示例#22
0
        void ReleaseDesignerOutlets()
        {
            if (BufferSizeInput != null)
            {
                BufferSizeInput.Dispose();
                BufferSizeInput = null;
            }

            if (BufferSizeSlider != null)
            {
                BufferSizeSlider.Dispose();
                BufferSizeSlider = null;
            }

            if (ChatMessageInput != null)
            {
                ChatMessageInput.Dispose();
                ChatMessageInput = null;
            }

            if (ChatMessageList != null)
            {
                ChatMessageList.Dispose();
                ChatMessageList = null;
            }

            if (ClientList != null)
            {
                ClientList.Dispose();
                ClientList = null;
            }

            if (ClientTable != null)
            {
                ClientTable.Dispose();
                ClientTable = null;
            }

            if (ClientColumn != null)
            {
                ClientColumn.Dispose();
                ClientColumn = null;
            }

            if (NameInput != null)
            {
                NameInput.Dispose();
                NameInput = null;
            }

            if (PortInput != null)
            {
                PortInput.Dispose();
                PortInput = null;
            }

            if (SendButton != null)
            {
                SendButton.Dispose();
                SendButton = null;
            }

            if (StartButton != null)
            {
                StartButton.Dispose();
                StartButton = null;
            }

            if (StatusIndicator != null)
            {
                StatusIndicator.Dispose();
                StatusIndicator = null;
            }

            if (StatusIndicatorText != null)
            {
                StatusIndicatorText.Dispose();
                StatusIndicatorText = null;
            }
        }
示例#23
0
        void IChatCallbacks.ChatChannelMessageCallback(ChatMessageList messageList)
        {
            for (int i = 0; i < messageList.Messages.Length; ++i)
            {
                m_Messages.AddLast(messageList.Messages[i]);
            }

            try
            {
                if (m_UseEmoticons)
                {
                    if (TokenizedMessagesReceived != null)
                    {
                        List<ChatTokenizedMessage> list = new List<ChatTokenizedMessage>();
                        for (int i = 0; i < messageList.Messages.Length; ++i)
                        {
                            ChatTokenizedMessage tokenized = null;
                            ErrorCode ret = m_Chat.TokenizeMessage(messageList.Messages[i], out tokenized);
                            if (Error.Failed(ret) || tokenized == null)
                            {
                                string err = Error.GetString(ret);
                                ReportError(string.Format("Error disconnecting: {0}", err));
                            }
                            else
                            {
                                list.Add(tokenized);
                            }
                        }

                        ChatTokenizedMessage[] arr = list.ToArray();

                        this.TokenizedMessagesReceived(arr);
                    }
                }
                else
                {
                    if (RawMessagesReceived != null)
                    {
                        this.RawMessagesReceived(messageList.Messages);
                    }
                }
            }
            catch
            {
            }

            // cap the number of messages cached
            while (m_Messages.Count > m_MessageHistorySize)
            {
                m_Messages.RemoveFirst();
            }
        }
示例#24
0
        void IChatCallbacks.ChatChannelMessageCallback(ChatMessageList messageList)
        {
            for (int i = 0; i < messageList.Messages.Length; ++i)
            {
                m_RawMessages.AddLast(messageList.Messages[i]);
            }

            try
            {
                if (RawMessagesReceived != null)
                {
                    this.RawMessagesReceived(messageList.Messages);
                }
            }
            catch (Exception x)
            {
                ReportError(string.Format("Error in ChatChannelMessageCallback: {0}", x.ToString()));
            }

            // cap the number of messages cached
            while (m_RawMessages.Count > m_MessageHistorySize)
            {
                m_RawMessages.RemoveFirst();
            }
        }
示例#25
0
 /// <summary>
 /// 插入顶部消息
 /// </summary>
 /// <param name="msgList">需要插入的消息集合</param>
 /// <param name="offset">排除的偏移量</param>
 public void InsertChatMessage(List <Messageobject> msgList, int offset = 0)
 {
     ChatMessageList.InsertRange(msgList.MsgListToObservableMsgList()); //倒叙插入
     SendReadMsgAsync(msgList);                                         //发送已读
 }
示例#26
0
 private void _UpdateChatMessageList()
 {
     ChatMessageList.DataSource = m_chat.GetMyMessages(m_chatter.intId);
     ChatMessageList.DataBind();
 }
示例#27
0
 public void MessageCallBack(string mes)
 {
     ChatMessageList.Items.Add(mes);
     ChatMessageList.Items.MoveCurrentToLast();
     ChatMessageList.ScrollIntoView(ChatMessageList.Items.CurrentItem);
 }