コード例 #1
0
ファイル: Client.cs プロジェクト: IanWhalen/OCTGN
        /// <summary>
        /// The xmpp on presence.
        /// </summary>
        /// <param name="sender">
        /// The sender.
        /// </param>
        /// <param name="pres">
        /// The pres.
        /// </param>
        private void XmppOnPresence(object sender, Presence pres)
        {
            // Most of this if block handles the status if logged in somewhere else as well.
            if (pres.From.User == this.xmpp.MyJID.User)
            {
                if (pres.Type == PresenceType.subscribe)
                {
                    this.xmpp.PresenceManager.ApproveSubscriptionRequest(pres.From);
                }
                else
                {
                    this.myPresence = pres;
                    this.myPresence.Type = PresenceType.available;
                    if (pres.Show != ShowType.NONE)
                    {
                        this.myPresence.Show = pres.Show;
                    }

                    this.xmpp.Status = this.myPresence.Status ?? this.xmpp.Status;
                    if (this.OnDataReceived != null)
                    {
                        this.OnDataReceived.Invoke(this, DataRecType.MyInfo, pres);
                    }
                }

                return;
            }

            switch (pres.Type)
            {
                case PresenceType.subscribe:
                    if (!this.Friends.Contains(new NewUser(pres.From.Bare)))
                    {
                        var request = new FriendRequestNotification(pres.From.Bare, this, this.noteId);
                        this.Notifications.Add(request);
                        this.noteId++;
                        if (this.OnFriendRequest != null)
                        {
                            this.OnFriendRequest.Invoke(this, pres.From.Bare);
                        }
                        request.Accept();
                    }
                    else
                    {
                        this.AcceptFriendship(pres.From.Bare);
                    }

                    break;
                case PresenceType.subscribed:
                    break;
                case PresenceType.unsubscribe:
                    break;
                case PresenceType.unsubscribed:
                    break;
                case PresenceType.error:
                    break;
                case PresenceType.probe:
                    break;
            }
            var presFromUser = pres.From.User;
            var friendToSet = this.Friends.FirstOrDefault(x => x.UserName == presFromUser);
            if (friendToSet != null)
            {
                friendToSet.CustomStatus = pres.Status ?? string.Empty;
                friendToSet.SetStatus(pres);
                this.Friends.Remove(friendToSet);
                this.Friends.Add(friendToSet);
            }

            this.XmppOnOnRosterEnd(this);
        }
コード例 #2
0
        /// <summary>
        /// The xmpp on presence.
        /// </summary>
        /// <param name="sender">
        /// The sender.
        /// </param>
        /// <param name="pres">
        /// The pres.
        /// </param>
        private void XmppOnPresence(object sender, Presence pres)
        {
            // Most of this if block handles the status if logged in somewhere else as well.
            if (pres.From.User == this.xmpp.MyJID.User)
            {
                if (pres.Type == PresenceType.subscribe)
                {
                    this.xmpp.PresenceManager.ApproveSubscriptionRequest(pres.From);
                }
                else
                {
                    this.myPresence      = pres;
                    this.myPresence.Type = PresenceType.available;
                    if (pres.Show != ShowType.NONE)
                    {
                        this.myPresence.Show = pres.Show;
                    }

                    this.xmpp.Status = this.myPresence.Status ?? this.xmpp.Status;
                    if (this.OnDataReceived != null)
                    {
                        this.OnDataReceived.Invoke(this, DataRecType.MyInfo, pres);
                    }
                }

                return;
            }

            switch (pres.Type)
            {
            case PresenceType.subscribe:
                if (!this.Friends.Contains(new User(pres.From.Bare)))
                {
                    var request = new FriendRequestNotification(pres.From.Bare, this, this.noteId);
                    this.Notifications.Add(request);
                    this.noteId++;
                    if (this.OnFriendRequest != null)
                    {
                        this.OnFriendRequest.Invoke(this, pres.From.Bare);
                    }
                    request.Accept();
                }
                else
                {
                    this.AcceptFriendship(pres.From.Bare);
                }

                break;

            case PresenceType.subscribed:
                break;

            case PresenceType.unsubscribe:
                break;

            case PresenceType.unsubscribed:
                break;

            case PresenceType.error:
                break;

            case PresenceType.probe:
                break;
            }
            var presFromUser = pres.From.User;
            var friendToSet  = this.Friends.FirstOrDefault(x => x.UserName == presFromUser);

            if (friendToSet != null)
            {
                friendToSet.CustomStatus = pres.Status ?? string.Empty;
                friendToSet.SetStatus(pres);
                this.Friends.Remove(friendToSet);
                this.Friends.Add(friendToSet);
            }

            this.XmppOnOnRosterEnd(this);
        }
コード例 #3
0
 public FriendRequestNotification()
 {
     InitializeComponent();
     _notify = null;
 }
コード例 #4
0
 public FriendRequestNotification()
 {
     InitializeComponent();
     _notify = null;
 }