Example #1
0
        void client_Presence(object sender, XmppPresenceEventArgs e)
        {
            Dispatcher.BeginInvoke(new Action(() => {
                RosterItem ri = RosterMgr.Get(e.Presence.From);
                if (ri != null)
                {
                    ri.UpdatePresence(e.Presence);

                    Chat ci = ChatMgr.Get(e.Presence.From, null);
                    if (ci != null)
                    {
                        ci.RefreshPresence();
                    }

                    RosterMgr.UpdateRosterView();
                    Log(string.Format("{0} is {2} {3}", ri.Text, e.Presence.From.Bare, e.Presence.Status.ToString().ToLower(), e.Presence.MessageStatus));
                }

                string hash = e.Presence.PhotoHash;
                if (e.Presence.From.Bare == client.Jid.Bare)
                {
                    if (!Avatar.Exist(hash))
                    {
                        client.SendVCardRequest(client.Jid);
                    }
                    else
                    {
                        UpdateAvatar(hash);
                    }
                }
                else
                {
                    if (e.Presence.Status != XmppPresenceStatus.Unavailable && !string.IsNullOrWhiteSpace(hash) && !Avatar.Exist(hash))
                    {
                        if (!client.HostName.ToLower().Contains("facebook"))                            // @@@ do not working with facebook... bug?
                        {
                            client.SendVCardRequest(e.Presence.From);
                        }
                    }
                }
            }), DispatcherPriority.Normal);
        }
Example #2
0
        private void xmppControl_OnPresence(object sender, XmppPresenceEventArgs e)
        {
            Console.WriteLine("IM-Presence:" + "(" + e.User + ")" + e.Availability);
            if (!myBuddyPresence.Contains(e.User))
            {
                myBuddyPresence.Add(e.User, e.Availability);
            }
            else
            {
                myBuddyPresence[e.User] = e.Availability;
            }

            //update the roster imageindex for this buddy
            myChatWindow.AddToConversation(e.User, "PRESENCE", e.User + " is " + myChatWindow.PRESENCES[e.Availability]);
            myChatWindow.UpdatePresence(e.User, e.Availability);
            
            TreeNode node = GetNode(myRosterListTreeView.TopNode, e.User);
            if (node != null)
            {
                switch (e.Availability)
                {
                    case 0: node.ImageIndex = 0; node.SelectedImageIndex = 0; break;// 'offline
                    case 1: node.ImageIndex = 1; node.SelectedImageIndex = 1; break;// 'online
                    case 2: node.ImageIndex = 2; node.SelectedImageIndex = 2; break;// 'away
                    case 3: node.ImageIndex = 3; node.SelectedImageIndex = 3; break;// 'extended away
                    case 4: node.ImageIndex = 4; node.SelectedImageIndex = 4; break;// 'Do not disturb
                }
            }
        }