public void OpenNewWindow(Commons.Message msg) { MessageWindow msgWindow = new MessageWindow(msg.Sender.UserName); Statics.MessageWindows.Add(msgWindow); SetMessage(msgWindow, msg); System.Windows.Forms.Application.Run(msgWindow); }
private void HideWindow(MessageWindow window) { if (this.InvokeRequired) { window.Invoke(new HideWindowCallback(HideWindow), window); } else { window.Hide(); } }
public void SetMessage(MessageWindow messageWindow, Commons.Message message) { if (messageWindow.InvokeRequired) { SetMessageCallback callback = new SetMessageCallback(messageWindow.RecievedNewMessage); messageWindow.Invoke(callback, message.Text, message.Sender.UserName); } else { messageWindow.RecievedNewMessage(message.Text, message.Sender.UserName); } }
private void lvUserList_ItemActivate(object sender, EventArgs e) { bool windowOpened = false; string identifier = lvUserList.SelectedItems[0].Tag.ToString(); foreach (MessageWindow mw in Statics.MessageWindows) { if (mw.Tag.ToString().Equals(identifier)) { // A hidden window. ShowWindow(mw); windowOpened = true; } } if (!windowOpened) { MessageWindow msgWindow = new MessageWindow(identifier); ShowWindow(msgWindow); Statics.MessageWindows.Add(msgWindow); } }
private void ShowWindow(MessageWindow window) { if (window.InvokeRequired) { window.Invoke(new ShowWindowCallback(ShowWindow), window); } else { window.Show(); } }
private void refreshTimer_Tick(object sender, EventArgs e) { RefreshList(); if (Statics.MessageQueue.Count > 0) { if (Statics.MessageWindows.Count > 0) { List<string> tags = (from MessageWindow mw in Statics.MessageWindows select mw.Tag.ToString()).ToList<string>(); foreach (Commons.Message msg in Statics.MessageQueue) { if (!tags.Contains(msg.Sender.UserName)) { MessageWindow msgWindow = new MessageWindow(msg.Sender.UserName); msgWindow.Show(); Statics.MessageWindows.Add(msgWindow); } } } } }
void ProcessMessage(Commons.Message msg, NetworkStream ns) { Commons.Message response = new Commons.Message(); switch (msg.Command) { case Commons.Statics.Commands.LISTUSERS: // List all the users. Statics.CurrentUsers = Commons.UserInfo.Deserialize(msg.Text); break; case Commons.Statics.Commands.SENDMSG: //Statics.MessageQueue.Add(msg); if (Statics.MessageWindows.Count > 0) { List<string> tags = (from MessageWindow mw in Statics.MessageWindows select mw.Tag.ToString()).ToList<string>(); if (!tags.Contains(msg.Sender.UserName)) { MessageWindow msgWindow = new MessageWindow(msg.Sender.UserName); msgWindow.Show(); Statics.MessageWindows.Add(msgWindow); } else { MessageWindow msw = (MessageWindow)(from MessageWindow mw in Statics.MessageWindows where mw.Tag.ToString().Equals(msg.Sender.UserName) select mw).ToList<MessageWindow>().First<MessageWindow>(); SetMessage(msw, msg); } } else { OpenNewWindow(msg); } break; case Commons.Statics.Commands.USERONLINE: if (!Statics.CurrentUsers.Contains(msg.Sender)) Statics.CurrentUsers.Add(msg.Sender); break; case Commons.Statics.Commands.USEROFFLINE: if (Statics.CurrentUsers.Contains(msg.Sender)) Statics.CurrentUsers.Remove(msg.Sender); break; } }