/// <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); }
/// <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; } }
private void InsertSingleChatMessage(Messageobject msg) { App.Current.Dispatcher.Invoke(() => { ChatMessageList.Insert(0, msg.MessageObjectToBubbleItem()); }); }
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()); }
private void _UpdateChatMessageList() { if (ChatMessageList.Items.Count != m_chat.Messages.Count) { ChatMessageList.DataSource = m_chat.Messages; ChatMessageList.DataBind(); } }
/// <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; } }
/// <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 = "送达"; } }
/// <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 }); //发送已读 } }
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 = "送达"; } }
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(); } }
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; } }
/// <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 } }
/// <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()); }
/// <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); } }
/// <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); }
/// <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);//自动滚动 }); }); }); }
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); }
/// <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); //更新数据库 //} }); } }
/// <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(); }
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; } }
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(); } }
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(); } }
/// <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); //发送已读 }
private void _UpdateChatMessageList() { ChatMessageList.DataSource = m_chat.GetMyMessages(m_chatter.intId); ChatMessageList.DataBind(); }
public void MessageCallBack(string mes) { ChatMessageList.Items.Add(mes); ChatMessageList.Items.MoveCurrentToLast(); ChatMessageList.ScrollIntoView(ChatMessageList.Items.CurrentItem); }