/// <summary> /// Incoming data received event handler method /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Client_ConnectionChanged(object sender, ConnectionChangedEventArgs e) { //event gets called by Listener thread via Delegate if (ConversationTextBox.InvokeRequired) //element is on a different thread { MethodInvoker invoker = new MethodInvoker(delegate() { if (e.ConnMsg.StartsWith("Received")) { ConversationTextBox.AppendText(e.ConnMsg, Color.Blue); ConversationTextBox.AppendText(Environment.NewLine); } else { ConversationTextBox.AppendText(e.ConnMsg, Color.Black); ConversationTextBox.AppendText(Environment.NewLine); } //ConversationTextBox.Text += e.ConnMsg; }); ConversationTextBox.BeginInvoke(invoker); } else { //business as usual //update the progress bar ConversationTextBox.Text += e.ConnMsg; } }
/// <summary> /// send a message /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SendMsgButton_Click(object sender, EventArgs e) { Client.WriteMessage(MessageTextBox.Text); client.Log(MessageTextBox.Text); ConversationTextBox.AppendText(">>" + MessageTextBox.Text, Color.Blue); ConversationTextBox.AppendText(Environment.NewLine); MessageTextBox.Text = ""; }
/// <summary> /// disconnect chat app /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void disconnectToolStripMenuItem_Click(object sender, EventArgs e) { //Start thread to listen for messages from server if (client != null) { client.Stop(); ConversationTextBox.AppendText("<< Connection Closed >>", Color.Black); ConversationTextBox.AppendText(Environment.NewLine); connectToolStripMenuItem.Enabled = true; MessageTextBox.Enabled = false; } }
/// <summary> /// Event-ul de click pe butonul de send message /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SendMessageButton_Click(object sender, EventArgs e) { if (friendsList.SelectedIndex < 0) { friendsList.SelectedIndex = 0; } cliToSvr.SendMessage(username, friendsList.Items[friendsList.SelectedIndex].ToString().Split(' ')[0], SendMessageTextBox.Text); //admin1 - offline DateTime thisDay = DateTime.Now; ConversationTextBox.Text += thisDay.ToString("dd/MM/yy H:mm:ss") + " | Me ---> " + SendMessageTextBox.Text + Environment.NewLine; SendMessageTextBox.Text = string.Empty; ConversationTextBox.SelectionStart = ConversationTextBox.Text.Length; ConversationTextBox.ScrollToCaret(); }
/// <summary> /// Afiseaza covnersatia dintre userul curent si userul primit ca parametru /// </summary> /// <param name="receiver">Reveiver</param> private void DisplayConversation(string receiver) { string[] allmessages = cliToSvr.GetMessages(username, receiver); ConversationTextBox.Text = string.Empty; foreach (string message in allmessages) { if (message.Split(' ')[2].Equals(username)) { ConversationTextBox.Text += message.Split(' ')[0] + " " + message.Split(' ')[1] + " | Me ---> "; //+ message.Split(' ')[4] + Environment.NewLine; for (int i = 4; i < message.Split(' ').Length; i++) { ConversationTextBox.Text += message.Split(' ')[i] + " "; } ConversationTextBox.Text += Environment.NewLine; } else { ConversationTextBox.Text += message.Split(' ')[0] + " " + message.Split(' ')[1] + " | " + message.Split(' ')[2] + " ---> "; //+ message.Split(' ')[4] + Environment.NewLine; for (int i = 4; i < message.Split(' ').Length; i++) { ConversationTextBox.Text += message.Split(' ')[i] + " "; } ConversationTextBox.Text += Environment.NewLine; } ConversationTextBox.SelectionStart = ConversationTextBox.Text.Length; ConversationTextBox.ScrollToCaret(); } string friend = friendsList.Items[friendsList.FindString(receiver)].ToString(); string exclamation = " "; if (friend.Length > 1) { exclamation = friend.Substring(friend.Length - 1); } if (exclamation.Equals("!")) { friendsList.Items[friendsList.FindString(receiver)] = friend.Remove(friend.Length - 1); } }
/// <summary> /// handle connect button to connect to server /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void connectToolStripMenuItem_Click(object sender, EventArgs e) { client = new Client(); ConversationTextBox.AppendText("<< Client Started >>", Color.Black); ConversationTextBox.AppendText(Environment.NewLine); //Start thread to listen for messages from server client.Start(ipAddress, port, out errorMessage); //Main thread handles user input client.ConnectionChanged += new ChatLib.ConnectionChangedEventHandler(Client_ConnectionChanged); connectionThread = new Thread(client.Listen); connectionThread.IsBackground = true; //this will allow front end to kill it when closing connectionThread.Name = "ConnectionThread"; connectionThread.Start(); disconnectToolStripMenuItem.Enabled = true; connectToolStripMenuItem.Enabled = false; MessageTextBox.Enabled = true; }