Example #1
0
        // Public method for callers to get a new contact added to the Roster
        // Note that we do not add it to our internal roster, the server will send a roster item push
        public void Add(string jid, string nickname, string[] groups)
        {
            // Add the contact to our roster
            jabber.protocol.iq.RosterIQ riq = new jabber.protocol.iq.RosterIQ(XmppGlobal.InternalClient.Document);

            riq.Type = jabber.protocol.client.IQType.set;

            jabber.protocol.iq.Roster r = (jabber.protocol.iq.Roster)riq.Query;
            jabber.protocol.iq.Item   i = r.AddItem();

            i.JID = new jabber.JID(jid);

            foreach (string g in groups)
            {
                i.AddGroup(g);
            }

            if (!string.IsNullOrEmpty(nickname))
            {
                i.Nickname = nickname;
            }

            XmppGlobal.InternalClient.Write(riq);

            // Subscribe to the contact's presence
            jabber.protocol.client.Presence p = new jabber.protocol.client.Presence(XmppGlobal.InternalClient.Document);
            p.Type = jabber.protocol.client.PresenceType.subscribe;
            p.To   = new jabber.JID(jid);

            XmppGlobal.InternalClient.Write(p);
        }
Example #2
0
        private void BotClient_OnPresence(object sender, jabber.protocol.client.Presence pres)
        {
            Console.WriteLine("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
            Console.WriteLine(pres.ToString());
            Console.WriteLine("***********************************");
            Console.WriteLine(pres.Type.ToString()); // Available/Unavailable
            Console.WriteLine(pres.Value);
            Console.WriteLine(pres.Show);            // dnd / away / ""
            Console.WriteLine("------------------------");
            Console.WriteLine(pres.HasAttribute("type") ? pres.GetAttribute("type").ToString() : "");
            Console.WriteLine("***********************************");

            JabberClient temp = (JabberClient)sender;

            ApplicationUser usr;
            string          usrname = string.Format("{0}@{1}", pres.From.User.ToString(), pres.From.Server.ToString());

            if (this.AppMan.AppUsers.TryGetValue(usrname, out usr))
            {
                PresenceEventArgs presenceArgs = new PresenceEventArgs(usr.UserId, pres.Show, pres.Type.ToString());
                usr.Presence = presenceArgs.Presence;
                usr.OnPresenceEvent(presenceArgs);
            }
            else
            {
                if (!string.IsNullOrEmpty(this.AppMan.DefaultApplication))
                {
                    var app    = this.AppMan.Apps[this.AppMan.DefaultApplication];
                    var method = app.AppType.GetMethod("InitiateConversation");

                    if (method != null && (bool)method.Invoke(null, new object[] { usrname }))
                    {
                        usr                          = this.AppMan.AddUser(usrname);
                        usr.SystemReply             += new SystemReplyHandler(usr_SystemReply);
                        usr.TriggerApplicationEvent += new TriggerApplicationEventHandler(usr_TriggerApplicationEvent);
                        usr.Tag                      = pres.From.ToString();

                        PresenceEventArgs presenceArgs = new PresenceEventArgs(usr.UserId, pres.Show, pres.Type.ToString());
                        usr.Presence = presenceArgs.Presence;
                    }
                }
            }

            // SHOW VALUE
            //* nil (Available, no <show/> element)
            //* :away
            //* :chat (Free for chat)
            //* :dnd (Do not disturb)
            //* :xa (Extended away)

            //Type Values
            //* :error
            //* :probe (Servers send this to request presence information)
            //* :subscribe (Subscription request)
            //* :subscribed (Subscription approval)
            //* :unavailable (User has gone offline)
            //* :unsubscribe (Unsubscription request)
            //* :unsubscribed (Unsubscription approval)
            //* [nil] (available)
        }
Example #3
0
        void _client_OnPresence(object sender, jabber.protocol.client.Presence pres)
        {
            //_client.pre
            int n = 0;

            foreach (var p in _presence)
            {
                n++;
            }
            this.ViewersCount = n;
        }
Example #4
0
        private void Cancel_Button_Click(object sender, EventArgs e)
        {
            jabber.protocol.client.Presence p = new jabber.protocol.client.Presence(XmppGlobal.Connection.JabberDocument);

            p.To   = request.From;
            p.Type = jabber.protocol.client.PresenceType.unsubscribed;

            XmppGlobal.Connection.SendPacket(p);

            DialogResult = DialogResult.Cancel;
            Close();
        }
        private void Cancel_Button_Click(object sender, EventArgs e)
        {
            jabber.protocol.client.Presence p = new jabber.protocol.client.Presence (XmppGlobal.Connection.JabberDocument);

            p.To = request.From;
            p.Type = jabber.protocol.client.PresenceType.unsubscribed;

            XmppGlobal.Connection.SendPacket (p);

            DialogResult = DialogResult.Cancel;
            Close ();
        }
Example #6
0
        private void PresenceChanged(object sender, PresenceItemEventArgs e)
        {
            RosterItem ri = (RosterItem)sender;

            jabber.protocol.client.Presence pres = ri.GetPresence();

            if (pres == null)
            {
                pres = e.Item;
            }

            ContactItem ci = null;

            if (pres != null)
            {
                ci = ContactListPanel.GetContactItem(ri.Jid.Bare);

                if (pres.Status != null)
                {
                    ci.TextLineTwo = pres.Status;
                }
                else if (pres.Show != null)
                {
                    ci.TextLineTwo = pres.Show;
                }
                else
                {
                    ci.TextLineTwo = "Online";
                }
            }

            switch (pres.Type)
            {
            case jabber.protocol.client.PresenceType.available:
                if (!(ci == null))
                {
                    ci.Enabled = true;
                    ci.Visible = true;
                    ci.Image   = ri.Avatar;
                }
                break;

            case jabber.protocol.client.PresenceType.unavailable:
                if (ci != null)
                {
                    ci.Enabled = false;
                    ci.Visible = false;
                }
                break;
            }
        }
Example #7
0
        internal void GotPresenceItem(jabber.protocol.client.Presence pres)
        {
            switch (pres.Type)
            {
            case jabber.protocol.client.PresenceType.available:
                RequestVCard(null, null, false);
                OnPresenceChanged(new PresenceItemEventArgs(pres));
                break;

            case jabber.protocol.client.PresenceType.unavailable:
                OnPresenceChanged(new PresenceItemEventArgs(pres));
                break;
            }
        }
        public SubscriptionRequestDialog(jabber.protocol.client.Presence request)
        {
            InitializeComponent ();

            this.request = request;

            RequestLabel.Text = string.Format ("{0} would like to add you to their contact list.  Is this OK?", request.From.Bare);

            AddCheckBox.Visible = false;

            if (!XmppGlobal.Roster.ContainsKey (request.From))
                if (!XmppGlobal.Roster.ContainsKey (new jabber.JID (request.From.Bare)))
                    AddCheckBox.Visible = true;
        }
Example #9
0
        private void PresenceChanged(object sender, PresenceItemEventArgs e)
        {
            RosterItem ri = (RosterItem)sender;

            jabber.protocol.client.Presence pres = ri.GetPresence();

            if (pres == null)
            {
                StatusBarPanel1.Text    = string.Format("{0} is offline.", ri.GetDisplayName());
                StatusBarPanel1.Visible = true;
            }
            else
            {
                switch (pres.Type)
                {
                case jabber.protocol.client.PresenceType.available:
                    switch (pres.Show)
                    {
                    case "away":
                    case "xa":
                    case "dnd":
                        if (pres.Status == null)
                        {
                            StatusBarPanel1.Text = string.Format("{0} is away.", ri.GetDisplayName());
                        }
                        else
                        {
                            StatusBarPanel1.Text = string.Format("{0} is away. {1}", ri.GetDisplayName(), pres.Status.Trim().Length > 0 ? string.Format(" ({0})", pres.Status.Trim()) : string.Empty);
                        }

                        StatusBarPanel1.Visible = true;
                        break;

                    default:
                        StatusBarPanel1.Visible = false;
                        break;
                    }
                    break;

                case jabber.protocol.client.PresenceType.unavailable:
                    StatusBarPanel1.Text    = string.Format("{0} is offline.", ri.GetDisplayName());
                    StatusBarPanel1.Visible = true;
                    break;
                }
            }

            UserAvatar.Image = ri.Avatar;
        }
Example #10
0
        public SubscriptionRequestDialog(jabber.protocol.client.Presence request)
        {
            InitializeComponent();

            this.request = request;

            RequestLabel.Text = string.Format("{0} would like to add you to their contact list.  Is this OK?", request.From.Bare);

            AddCheckBox.Visible = false;

            if (!XmppGlobal.Roster.ContainsKey(request.From))
            {
                if (!XmppGlobal.Roster.ContainsKey(new jabber.JID(request.From.Bare)))
                {
                    AddCheckBox.Visible = true;
                }
            }
        }
Example #11
0
        void _client_OnPresence(object sender, jabber.protocol.client.Presence pres)
        {
            if (pres.From == null)
            {
                return;
            }

            if (pres.Type == jabber.protocol.client.PresenceType.available ||
                pres.Type == jabber.protocol.client.PresenceType.subscribe ||
                pres.Type == jabber.protocol.client.PresenceType.subscribed)
            {
                _OnUpdateBuddy(pres.From.Bare, true);
            }
            else
            {
                _OnUpdateBuddy(pres.From.Bare, false);
            }
        }
Example #12
0
        private void OK_Button_Click(object sender, EventArgs e)
        {
            jabber.protocol.client.Presence p = new jabber.protocol.client.Presence(XmppGlobal.Connection.JabberDocument);

            p.To   = request.From;
            p.Type = jabber.protocol.client.PresenceType.subscribed;

            XmppGlobal.Connection.SendPacket(p);

            if (AddCheckBox.Checked)
            {
                XmppGlobal.Roster.Add(request.From.Bare, string.Empty);

                jabber.protocol.client.Presence p2 = new jabber.protocol.client.Presence(XmppGlobal.Connection.JabberDocument);

                p2.To   = request.From;
                p2.Type = jabber.protocol.client.PresenceType.subscribe;
                XmppGlobal.Connection.SendPacket(p2);
            }

            DialogResult = DialogResult.OK;
            Close();
        }
Example #13
0
 void c_OnPresence(object sender, jabber.protocol.client.Presence pres)
 {
     if (users.ContainsKey(pres.From.User))
     {
         users[pres.From.User].status = pres.Status;
     }
     else
     {
         User us = new User(pres.From.User, "", "", pres.Status, null);
         users.Add(pres.From.User, us);
         theUsers.Add(us);
     }
     if (users[pres.From.User].State == "offline")
     {
         users[pres.From.User].isOnline = false;
         if (theUsers.Contains(users[pres.From.User]))
         {
             theUsers.Remove(users[pres.From.User]);
         }
     }
     else
     {
         users[pres.From.User].isOnline = (users[pres.From.User].Nickname != "");
         if (!theUsers.Contains(users[pres.From.User]))
         {
             theUsers.Add(users[pres.From.User]);
         }
     }
     if (theUsers.Contains(users[pres.From.User]))
     {
         if (UserChanged != null)
         {
             UserChanged(users[pres.From.User]);
         }
     }
 }
        private void OK_Button_Click(object sender, EventArgs e)
        {
            jabber.protocol.client.Presence p = new jabber.protocol.client.Presence (XmppGlobal.Connection.JabberDocument);

            p.To = request.From;
            p.Type = jabber.protocol.client.PresenceType.subscribed;

            XmppGlobal.Connection.SendPacket (p);

            if (AddCheckBox.Checked) {
                XmppGlobal.Roster.Add (request.From.Bare, string.Empty);

                jabber.protocol.client.Presence p2 = new jabber.protocol.client.Presence (XmppGlobal.Connection.JabberDocument);

                p2.To = request.From;
                p2.Type = jabber.protocol.client.PresenceType.subscribe;
                XmppGlobal.Connection.SendPacket (p2);
            }

            DialogResult = DialogResult.OK;
            Close ();
        }
 public PresenceItemEventArgs(jabber.protocol.client.Presence item)
 {
     this.item = item;
 }
Example #16
0
 void _client_OnBeforePresenceOut(object sender, jabber.protocol.client.Presence pres)
 {
     //throw new NotImplementedException();
 }
 public PresenceItemEventArgs(jabber.protocol.client.Presence item)
 {
     this.item = item;
 }
Example #18
0
 private void m_cli_OnPresence(object sender, jabber.protocol.client.Presence pres)
 {
     throw new Exception("The method or operation is not implemented.");
 }