public void ProcessSimpleMessage(ChatMessage chatMessage) { if (chatMessage == null || string.IsNullOrEmpty(chatMessage.UserName) || chatMessage.UserUri == null) { return; } PeerUser peerUserObject = this.simpleChat.GetUser(chatMessage.UserUri); if (peerUserObject == null) { // User is not in internal store, update container and show message peerUserObject = new PeerUser(chatMessage.UserName, new EndpointAddress(chatMessage.UserUri)); this.simpleChat.AddUser(peerUserObject); peerUserObject.ChatWindow = new ChatWindow(this.simpleChat, peerUserObject); } if (peerUserObject.ChatWindowExists) { // User is in internal store and has an open chat window peerUserObject.ChatWindow.DisplayMessage(chatMessage); ShowChatWindow(peerUserObject); } else { // User is in internal store but no chat window is open peerUserObject.ChatWindow = new ChatWindow(this.simpleChat, peerUserObject); peerUserObject.ChatWindow.DisplayMessage(chatMessage); ShowChatWindow(peerUserObject); } }
public ChatWindow(SimpleChat simpleChat, PeerUser peerUserObject) { if (simpleChat == null) { throw new ArgumentNullException("simpleChat"); } if (peerUserObject == null) { throw new ArgumentNullException("peerUserObject"); } InitializeComponent(); this.chatClient = ChannelFactory<ISimpleChatService>.CreateChannel( new WSHttpBinding(), peerUserObject.Address); this.simpleChatOwner = simpleChat; this.peerUser = peerUserObject; string chatWith = null; if (!string.IsNullOrEmpty(peerUserObject.UserName)) { chatWith = this.peerUser.UserName; } else { chatWith = this.peerUser.Address.Uri.Host; } Text = string.Format( CultureInfo.CurrentCulture, Resources.ChattingWithMessage, simpleChat.UserName, chatWith); Owner = simpleChat; StartPosition = FormStartPosition.CenterParent; Show(); chatText.Focus(); }
public void AddUser(PeerUser peerUser) { this.userListBox.Items.Add(peerUser); this.EnableUsersBox(); }
private static void ShowChatWindow(PeerUser peerUserObject) { NativeMethods.SetForegroundWindow(peerUserObject.ChatWindow.Owner.Handle); NativeMethods.SetForegroundWindow(peerUserObject.ChatWindow.Handle); }