public void Eventos(Mensagem dados) { string mensagem = string.Empty; switch (dados.EVENTO) { case "start_typing": typetxt.Text = dados.SenderUSER + " está digitando..."; typePic.Visible = true; typetxt.Visible = true; break; case "stop_typing": typetxt.Text = ""; typePic.Visible = false; typetxt.Visible = false; break; case "chat_close": typetxt.Text = ""; typePic.Visible = false; typetxt.Visible = false; rtbPrivChat.SelectionFont = new Font("Tahoma", 7, FontStyle.Italic); mensagem = string.Format("{0} {1} Fechou a janela.", dados.TIMESTAMP, dados.SenderUSER); rtbPrivChat.AppendText(mensagem + Environment.NewLine); rtbPrivChat.ScrollToCaret(); break; case "user_offline": typetxt.Text = ""; typePic.Visible = false; typetxt.Visible = false; rtbPrivChat.SelectionFont = new Font("Tahoma", 7, FontStyle.Italic); rtbPrivChat.SelectionColor = System.Drawing.Color.Red; mensagem = string.Format("{0} {1} Ficou Offline.", dados.TIMESTAMP, dados.ReceiverUSER); EventoStatus(mensagem, false); rtbPrivChat.ScrollToCaret(); rtbPrivEnvia.ReadOnly = true; btnPrivEnvia.Enabled = false; break; case "user_online": typetxt.Text = ""; typePic.Visible = false; typetxt.Visible = false; rtbPrivChat.SelectionFont = new Font("Tahoma", 7, FontStyle.Italic); rtbPrivChat.SelectionColor = System.Drawing.Color.Green; mensagem = string.Format("{0} {1} Esta Online.", dados.TIMESTAMP, dados.ReceiverUSER); EventoStatus(mensagem, true); rtbPrivChat.ScrollToCaret(); rtbPrivEnvia.ReadOnly = false; btnPrivEnvia.Enabled = true; break; case "UserChanged": rtbPrivChat.SelectionFont = new Font("Tahoma", 7, FontStyle.Italic); mensagem = string.Format("{0} {1} Alterou o nome.", dados.TIMESTAMP, dados.ReceiverUSER); rtbPrivChat.AppendText(mensagem + Environment.NewLine); this.Text = dados.ReceiverUSER; this.Refresh(); break; } }
public void SendUserPicture(Mensagem Dados) { IpEnvio = Dados.SenderIP; }
public void CriaHistorico(Mensagem dados) { try { string folder = Config.Default.HistLocal; string filename = string.Empty; if (!Directory.Exists(folder)) { Directory.CreateDirectory(folder); } if (dados.SenderIP.Equals(Config.Default.UserIP)) { filename = string.Format("{0}\\{1}.xml", folder, dados.ReceiverUSER); } else { filename = string.Format("{0}\\{1}.xml", folder, dados.SenderUSER); } if (!File.Exists(filename)) { XmlWriterSettings xmlWriterSettings = new XmlWriterSettings(); xmlWriterSettings.Indent = true; xmlWriterSettings.NewLineOnAttributes = true; using (XmlWriter xmlWriter = XmlWriter.Create(filename, xmlWriterSettings)) { xmlWriter.WriteStartDocument(); xmlWriter.WriteStartElement("root"); xmlWriter.WriteStartElement("DADOS_MENSAGEM"); xmlWriter.WriteElementString("Data", (DateTime.Now.ToString("dd-MM-yyyy"))); xmlWriter.WriteElementString("Hora", string.Format("{HH:mm:ss}", dados.TIMESTAMP)); xmlWriter.WriteElementString("SenderUser", dados.SenderUSER); xmlWriter.WriteElementString("SenderIP", dados.SenderIP); xmlWriter.WriteElementString("ReceiverUser", dados.ReceiverUSER); xmlWriter.WriteElementString("ReceiverIP", dados.ReceiverIP); xmlWriter.WriteElementString("Mensagem", dados.MENSAGEM); xmlWriter.WriteEndElement(); xmlWriter.WriteEndElement(); xmlWriter.WriteEndDocument(); xmlWriter.Flush(); xmlWriter.Close(); } } else { XDocument xDocument = XDocument.Load(filename); XElement root = xDocument.Element("root"); IEnumerable <XElement> rows = root.Descendants("DADOS_MENSAGEM"); XElement firstRow = rows.First(); firstRow.AddBeforeSelf( new XElement("DADOS_MENSAGEM", new XElement("Data", (DateTime.Now.ToString("dd-MM-yyyy"))), new XElement("Hora", dados.TIMESTAMP), new XElement("SenderUser", dados.SenderUSER), new XElement("SenderIP", dados.SenderIP), new XElement("ReceiverUser", dados.ReceiverUSER), new XElement("ReceiverIP", dados.ReceiverIP), new XElement("Mensagem", dados.MENSAGEM))); xDocument.Save(filename); } } catch (System.IO.IOException IOexcp) { } catch (System.Xml.XmlException XMLexcp) { } catch (System.FormatException formexcp) { } }
public FrmChat(string args) { InitializeComponent(); lstUsuarios.MultiSelect = false; lstUsuarios.FullRowSelect = true; lstUsuarios.SmallImageList = statusIcons; bandeja.Visible = true; Version version = Assembly.GetExecutingAssembly().GetName().Version; lblStatus.Text = "v. " + version.Major + "." + version.Minor; StartParams(args); Closing += FrmChat_Closing; this.FormClosing += FrmChat_FormClosing; HandleCreated += FrmChat_HandleCreated; lstUsuarios.MouseClick += lstUsuarios_MouseClick; lstUsuarios.KeyDown += lstUsuarios_KeyDown; bandeja.DoubleClick += bandeja_DoubleClick; btnMenu.Click += btnMenu_Click; Resize += FrmChat_Resize; usuárioToolStripMenuItem.Click += usuárioToolStripMenuItem_Click; opçõesToolStripMenuItem.Click += opçõesToolStripMenuItem_Click; históricoToolStripMenuItem.Click += históricoToolStripMenuItem_Click; sairToolStripMenuItem1.Click += sairToolStripMenuItem_Click; if (!Config.Default.ParamSetados) { Config cfg = new Config(); cfg.DefineParam(); } SetHeight(lstUsuarios, 25); // método para definir espaçamento da listview //RecebeMensagem(); StartListening(); #region Delegate Lista de Usuários lstDelegate = delegate(object item) { string[] split = item.ToString().Split('|'); string username = split[0]; string userIP = split[1]; string userTCP = split[2]; string evento = split[3]; string status = split[4]; if (evento.Contains("add")) { AddUser(username, userIP, userTCP, "online"); } else if (evento.Contains("remove")) { RemoveUser(userIP); return(null); } GravaDadosUser(username, userIP, userTCP, status); return(null); }; #endregion #region Delegate Recebimento de Mensagem msgDelegate = delegate(object msg) { Mensagem dados = msg as Mensagem; FrmPrivado chat = null; if (string.IsNullOrEmpty(dados.EVENTO)) { chat = SetMessage(dados.SenderIP); if (chat.DadosJanela == null) { DadosConversa conversa = new DadosConversa(); conversa.ReceiverIP = dados.SenderIP; conversa.ReceiverUSER = dados.SenderUSER; conversa.SenderIP = Config.Default.UserIP; conversa.SenderUSER = Config.Default.Username; chat.DadosJanela = conversa; } chat.RecebeMsg(dados); return(null); } else if ((chat = IsOpenChat(dados.SenderIP)) != null) { chat.Eventos(dados); } else if (dados.EVENTO == "img_request") { SendUserPicture(dados); } return(null); }; #endregion }