Example #1
0
        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;
            }
        }
Example #2
0
 public void SendUserPicture(Mensagem Dados)
 {
     IpEnvio = Dados.SenderIP;
 }
Example #3
0
        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)
            {
            }
        }
Example #4
0
        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
        }