public void newMessage(MetroTalkMessage m)
        {
            if (!this.isApplicationActive || m.From.Bare != userSelected.jid.Bare)
            {
                UserJabber u = cm.users[m.From.Bare];
                string s = u.FullName + " : " + m.Body;
                this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(delegate() {
                    MetroTalkPopup p = new MetroTalkPopup(s);
                    p.Show();
                }));

            }

            new SoundPlayer("./Sounds/button-9.wav").Play();

            RefreshConversation();
        }
        public void Send(Jid to, string b)
        {
            Jid from = UserJid;
            MetroTalkMessage m = new MetroTalkMessage();
            // Send a message
            agsXMPP.protocol.client.Message msg = new agsXMPP.protocol.client.Message();
            msg.Type = agsXMPP.protocol.client.MessageType.chat;
            msg.To = to;
            msg.Body = b;

            m.To = to;
            m.Body = b;
            m.From = from;
            m.Date = DateTime.Now;

            if (cm.conversations.ContainsKey(from.Bare))
            {
                IList<MetroTalkMessage> msgs = cm.conversations[from.Bare];
                msgs.Add(m);
                cm.conversations[from.Bare] = msgs;
            }
            else {
                IList<MetroTalkMessage> msgs = new List<MetroTalkMessage>();
                msgs.Add(m);
                cm.conversations.Add(from.Bare, msgs);
            }

            cW.RefreshConversation();

            xmppCon.Send(msg);
        }
        void OnMessage(object sender, agsXMPP.protocol.client.Message msg)
        {
            // ignore empty messages (events)
            if (msg.Body == null)
                return;
            MetroTalkMessage m = new MetroTalkMessage();

            m.Date = DateTime.Now;
            m.To = msg.To;
            m.From = msg.From;
            m.Body = msg.Body;

            if (cm.conversations.ContainsKey(msg.To.Bare))
            {
                IList<MetroTalkMessage> msgs = cm.conversations[msg.To.Bare];
                msgs.Add(m);
                cm.conversations[msg.To.Bare] = msgs;
            }
            else
            {
                IList<MetroTalkMessage> msgs = new List<MetroTalkMessage>();
                msgs.Add(m);
                cm.conversations.Add(msg.To.Bare, msgs);
            }

            cW.newMessage(m);
        }