private void CreatePrivatePage(int userId, bool getPendingMessages = true) { var user = AllUsers.Instance.GetUser(userId); if (user == null) { return; } var userKey = userId.ToString(); CreatePage(userKey, user.NickName); var newPage = tabControl.TabPages[userKey]; var newChatControl = new ChatMessagingControl { Dock = DockStyle.Fill }; newChatControl.MessageEnteted += message => engine.SendPrivateMessage(userId, message); newChatControl.ConversationLeft += () => LeaveConversationButtonClicked(userKey); newChatControl.Enable(engine.IsOnline()); newPage.Controls.Add(newChatControl); UpdateImageIndexForPage(userKey); // posting old messages engine.GetPrivateMessages(userId).ForEach(m => PrintMessage(newChatControl, m)); if (getPendingMessages) { engine.GetPendingPrivateMessages(); } }
private void ShowErrorInChatControl(ChatMessagingControl chatControl, DateTime time, string text) { PrintMessage(chatControl, new Message { Text = text, TimeStamp = time }, ChatMessagingControl.MessageStyle.Error); }
private void CreatePageForRoom(string roomName) { CreatePage(roomName, roomName); var newPage = tabControl.TabPages[roomName]; var newChatControl = new ChatMessagingControl { Dock = DockStyle.Fill }; newChatControl.MessageEnteted += message => engine.SendMessage(roomName, message); newChatControl.ConversationLeft += () => LeaveConversationButtonClicked(roomName); newChatControl.Enable(engine.IsOnline()); newPage.Controls.Add(newChatControl); UpdateImageIndexForPage(roomName); // posting old messages engine.GetMessages(roomName).ForEach(m => PrintMessage(newChatControl, m)); }
private void OnUserLeaveRoom(UserAction action) { var page = tabControl.TabPages[action.Room]; ChatMessagingControl chatControl = null; if (page != null) { chatControl = (ChatMessagingControl)page.Controls[0]; } if (action.UserId == engine.CurrentUserId) { highlightedPages.Remove(tabControl.TabPages[action.Room]); if (chatControl != null) { ShowErrorInChatControl(chatControl, action.TimeStamp, "Вы перестали быть участником этой комнаты"); } UpdateImageIndexForPage(action.Room); return; } // print message about leaving var user = AllUsers.Instance.GetUser(action.UserId); if (user == null) { return; } if (chatControl != null) { PrintMessage(chatControl, new Message { Text = user.NickName + " покинул комнату", TimeStamp = action.TimeStamp }, ChatMessagingControl.MessageStyle.Notify); } // remove left user from tree branch if (tabControl.SelectedTab == null || tabControl.SelectedTab.Name != action.Room) { return; } RemoveFromRoom("this", action.UserId.ToString()); AddToRoom("others", action.UserId.ToString(), user.NickName); }
private void ShowErrorInChatControl(ChatMessagingControl chatControl, DateTime time, string text) { PrintMessage(chatControl, new Message {Text = text, TimeStamp = time}, ChatMessagingControl.MessageStyle.Error); }
private void PrintMessage(ChatMessagingControl chatControl, Message message, ChatMessagingControl.MessageStyle style = ChatMessagingControl.MessageStyle.None) { chatControl.AddMessage(message, engine, style); }
private void CreatePrivatePage(int userId, bool getPendingMessages = true) { var user = AllUsers.Instance.GetUser(userId); if (user == null) return; var userKey = userId.ToString(); CreatePage(userKey, user.NickName); var newPage = tabControl.TabPages[userKey]; var newChatControl = new ChatMessagingControl { Dock = DockStyle.Fill }; newChatControl.MessageEnteted += message => engine.SendPrivateMessage(userId, message); newChatControl.ConversationLeft += () => LeaveConversationButtonClicked(userKey); newChatControl.Enable(engine.IsOnline()); newPage.Controls.Add(newChatControl); UpdateImageIndexForPage(userKey); // posting old messages engine.GetPrivateMessages(userId).ForEach(m => PrintMessage(newChatControl, m)); if (getPendingMessages) engine.GetPendingPrivateMessages(); }