コード例 #1
0
ファイル: Identity.cs プロジェクト: nubuntu/mychitchat
        /// <summary>
        /// Traitement du résultat de la demande de récupération de la fiche d'identité
        /// </summary>
        /// <param name="sender">Objet représentant la routine ayant fait appel à cette méthode</param>
        /// <param name="iq">Requète représentant le résultat de la demande</param>
        /// <param name="data">Identifiant de la requète</param>
        private void retrieveIqResult(object sender, agsXMPP.protocol.client.IQ iq, object data)
        {
            string iqID = data as string;

            // si on a une erreur alors on en informe la librairie
            if (iq.Type == agsXMPP.protocol.client.IqType.error)
            {
                return;
            }
            // sinon et seulement si c'est le résultat, on lance le traitement
            else if (iq.Type == agsXMPP.protocol.client.IqType.result)
            {
                // si la requette nous transmet la carte de visite
                if (iq.Vcard != null)
                {
                    _birthday       = iq.Vcard.Birthday;
                    _description    = (iq.Vcard.Description != null) ? iq.Vcard.Description.Trim() : string.Empty;
                    _fullname       = (iq.Vcard.Fullname != null) ? iq.Vcard.Fullname.Trim() : string.Empty;
                    _name           = new Name();
                    _name.firstname = (iq.Vcard.Name != null && iq.Vcard.Name.Given != null) ? iq.Vcard.Name.Given.Trim() : string.Empty;
                    _name.middle    = (iq.Vcard.Name != null && iq.Vcard.Name.Middle != null) ? iq.Vcard.Name.Middle.Trim() : string.Empty;
                    _name.lastname  = (iq.Vcard.Name != null && iq.Vcard.Name.Family != null) ? iq.Vcard.Name.Family.Trim() : string.Empty;
                    if (iq.Vcard.Nickname != null)
                    {
                        nickname = iq.Vcard.Nickname.Trim();
                    }
                    _organization      = new Organization();
                    _organization.name = (iq.Vcard.Organization != null && iq.Vcard.Organization.Name != null) ? iq.Vcard.Organization.Name.Trim() : string.Empty;
                    _organization.unit = (iq.Vcard.Organization != null && iq.Vcard.Organization.Unit != null) ? iq.Vcard.Organization.Unit.Trim() : string.Empty;
                    _role  = (iq.Vcard.Role != null) ? iq.Vcard.Role.Trim() : string.Empty;
                    _title = (iq.Vcard.Title != null) ? iq.Vcard.Title.Trim() : string.Empty;
                    _url   = (iq.Vcard.Url != null) ? iq.Vcard.Url.Trim() : string.Empty;
                    if (iq.Vcard.GetEmailAddresses() != null)
                    {
                        _email.Clear();
                        foreach (agsXMPP.protocol.iq.vcard.Email em in iq.Vcard.GetEmailAddresses())
                        {
                            if (em != null && em.UserId != null)
                            {
                                Email m = new Email();
                                m.type    = Enums.EmailTypeConverter(em.Type);
                                m.address = em.UserId;
                                _email.Add(m);
                            }
                        }
                    }
                    if (iq.Vcard.GetTelephoneNumbers() != null)
                    {
                        _telephone.Clear();
                        foreach (agsXMPP.protocol.iq.vcard.Telephone phone in iq.Vcard.GetTelephoneNumbers())
                        {
                            if (phone != null && phone.Number != null)
                            {
                                Telehone t = new Telehone();
                                t.location = Enums.LocationTypeConverter(phone.Location);
                                t.type     = Enums.PhoneTypeConverter(phone.Type);
                                t.number   = phone.Number;
                                _telephone.Add(t);
                            }
                        }
                    }
                    if (iq.Vcard.GetAddresses() != null)
                    {
                        _address.Clear();
                        foreach (agsXMPP.protocol.iq.vcard.Address ad in iq.Vcard.GetAddresses())
                        {
                            if (ad != null)
                            {
                                Address a = new Address();
                                a.location = Enums.AddressLocationTypeConverter(ad.Location);
                                a.city     = (ad.Locality != null) ? ad.Locality.Trim() : string.Empty;
                                a.country  = (ad.Country != null) ? ad.Country.Trim() : string.Empty;
                                a.extra    = (ad.ExtraAddress != null) ? ad.ExtraAddress.Trim() : string.Empty;
                                a.region   = (ad.Region != null) ? ad.Region.Trim() : string.Empty;
                                a.street   = (ad.Street != null) ? ad.Street.Trim() : string.Empty;
                                a.zipcode  = (ad.PostalCode != null) ? ad.PostalCode.Trim() : string.Empty;
                                _address.Add(a);
                            }
                        }
                    }
                    photo = (iq.Vcard.Photo != null) ? iq.Vcard.Photo.Image : null;
                    onIdentityRetrieved();
                }
            }
            if (Jabber.xmpp.IqGrabber != null)
            {
                Jabber.xmpp.IqGrabber.Remove(iqID);
            }
        }
コード例 #2
0
ファイル: Identity.cs プロジェクト: kevinmel2000/mychitchat
 /// <summary>
 /// Traitement du résultat de la demande de récupération de la fiche d'identité
 /// </summary>
 /// <param name="sender">Objet représentant la routine ayant fait appel à cette méthode</param>
 /// <param name="iq">Requète représentant le résultat de la demande</param>
 /// <param name="data">Identifiant de la requète</param>
 private void retrieveIqResult(object sender, agsXMPP.protocol.client.IQ iq, object data)
 {
     string iqID = data as string;
     // si on a une erreur alors on en informe la librairie
     if (iq.Type == agsXMPP.protocol.client.IqType.error) {
         return;
     }
         // sinon et seulement si c'est le résultat, on lance le traitement
     else if (iq.Type == agsXMPP.protocol.client.IqType.result) {
         // si la requette nous transmet la carte de visite
         if (iq.Vcard != null) {
             _birthday = iq.Vcard.Birthday;
             _description = (iq.Vcard.Description != null) ? iq.Vcard.Description.Trim() : string.Empty;
             _fullname = (iq.Vcard.Fullname != null) ? iq.Vcard.Fullname.Trim() : string.Empty;
             _name = new Name();
             _name.firstname = (iq.Vcard.Name != null && iq.Vcard.Name.Given != null) ? iq.Vcard.Name.Given.Trim() : string.Empty;
             _name.middle = (iq.Vcard.Name != null && iq.Vcard.Name.Middle != null) ? iq.Vcard.Name.Middle.Trim() : string.Empty;
             _name.lastname = (iq.Vcard.Name != null && iq.Vcard.Name.Family != null) ? iq.Vcard.Name.Family.Trim() : string.Empty;
             if (iq.Vcard.Nickname != null) {
                 nickname = iq.Vcard.Nickname.Trim();
             }
             _organization = new Organization();
             _organization.name = (iq.Vcard.Organization != null && iq.Vcard.Organization.Name != null) ? iq.Vcard.Organization.Name.Trim() : string.Empty;
             _organization.unit = (iq.Vcard.Organization != null && iq.Vcard.Organization.Unit != null) ? iq.Vcard.Organization.Unit.Trim() : string.Empty;
             _role = (iq.Vcard.Role != null) ? iq.Vcard.Role.Trim() : string.Empty;
             _title = (iq.Vcard.Title != null) ? iq.Vcard.Title.Trim() : string.Empty;
             _url = (iq.Vcard.Url != null) ? iq.Vcard.Url.Trim() : string.Empty;
             if (iq.Vcard.GetEmailAddresses() != null) {
                 _email.Clear();
                 foreach (agsXMPP.protocol.iq.vcard.Email em in iq.Vcard.GetEmailAddresses()) {
                     if (em != null && em.UserId != null) {
                         Email m = new Email();
                         m.type = Enums.EmailTypeConverter(em.Type);
                         m.address = em.UserId;
                         _email.Add(m);
                     }
                 }
             }
             if (iq.Vcard.GetTelephoneNumbers() != null) {
                 _telephone.Clear();
                 foreach (agsXMPP.protocol.iq.vcard.Telephone phone in iq.Vcard.GetTelephoneNumbers()) {
                     if (phone != null && phone.Number != null) {
                         Telehone t = new Telehone();
                         t.location = Enums.LocationTypeConverter(phone.Location);
                         t.type = Enums.PhoneTypeConverter(phone.Type);
                         t.number = phone.Number;
                         _telephone.Add(t);
                     }
                 }
             }
             if (iq.Vcard.GetAddresses() != null) {
                 _address.Clear();
                 foreach (agsXMPP.protocol.iq.vcard.Address ad in iq.Vcard.GetAddresses()) {
                     if (ad != null) {
                         Address a = new Address();
                         a.location = Enums.AddressLocationTypeConverter(ad.Location);
                         a.city = (ad.Locality != null) ? ad.Locality.Trim() : string.Empty;
                         a.country = (ad.Country != null) ? ad.Country.Trim() : string.Empty;
                         a.extra = (ad.ExtraAddress != null) ? ad.ExtraAddress.Trim() : string.Empty;
                         a.region = (ad.Region != null) ? ad.Region.Trim() : string.Empty;
                         a.street = (ad.Street != null) ? ad.Street.Trim() : string.Empty;
                         a.zipcode = (ad.PostalCode != null) ? ad.PostalCode.Trim() : string.Empty;
                         _address.Add(a);
                     }
                 }
             }
             photo = (iq.Vcard.Photo != null) ? iq.Vcard.Photo.Image : null;
             onIdentityRetrieved();
         }
     }
     if (Jabber.xmpp.IqGrabber != null) { Jabber.xmpp.IqGrabber.Remove(iqID); }
 }
コード例 #3
0
ファイル: Identity.cs プロジェクト: nubuntu/mychitchat
 /// <summary>
 /// Charge la fiche d'identité locale
 /// </summary>
 public void Load(string vCardFilePath)
 {
     if (!Directory.Exists(Path.GetDirectoryName(vCardFilePath)))
     {
         try {
             Directory.CreateDirectory(vCardFilePath);
         } catch {
         }
     }
     if (File.Exists(vCardFilePath))
     {
         try {
             XmlDocument xDoc = new XmlDocument();
             xDoc.Load(vCardFilePath);
             XmlElement vcard      = xDoc["vcard"];
             XmlElement xAddresses = vcard["addresses"];
             if (xAddresses.HasChildNodes)
             {
                 _address.Clear();
                 foreach (XmlNode xAddress in xAddresses.ChildNodes)
                 {
                     Address a = new Address();
                     if (xAddress.Attributes["location"].Value == Enums.LocationType.Home.ToString())
                     {
                         a.location = Enums.LocationType.Home;
                     }
                     else if (xAddress.Attributes["location"].Value == Enums.LocationType.Work.ToString())
                     {
                         a.location = Enums.LocationType.Work;
                     }
                     else
                     {
                         a.location = Enums.LocationType.None;
                     }
                     a.city    = (xAddress["city"].InnerText != null) ? xAddress["city"].InnerText : string.Empty;
                     a.country = (xAddress["country"].InnerText != null) ? xAddress["country"].InnerText : string.Empty;
                     a.extra   = (xAddress["extra"].InnerText != null) ? xAddress["extra"].InnerText : string.Empty;
                     a.region  = (xAddress["region"].InnerText != null) ? xAddress["region"].InnerText : string.Empty;
                     a.street  = (xAddress["street"].InnerText != null) ? xAddress["street"].InnerText : string.Empty;
                     a.zipcode = (xAddress["zipcode"].InnerText != null) ? xAddress["zipcode"].InnerText : string.Empty;
                     _address.Add(a);
                 }
             }
             _birthday    = (vcard["birthday"].InnerText != null) ? DateTime.Parse(vcard["birthday"].InnerText) : DateTime.Now;
             _description = (vcard["description"].InnerText != null) ? vcard["description"].InnerText : string.Empty;
             XmlElement xEmails = vcard["emails"];
             if (xEmails.HasChildNodes)
             {
                 _email.Clear();
                 foreach (XmlNode xEmail in xEmails.ChildNodes)
                 {
                     Email m = new Email();
                     if (xEmail.Attributes["type"].Value == Enums.EmailType.Home.ToString())
                     {
                         m.type = Enums.EmailType.Home;
                     }
                     else if (xEmail.Attributes["type"].Value == Enums.EmailType.Internet.ToString())
                     {
                         m.type = Enums.EmailType.Internet;
                     }
                     else if (xEmail.Attributes["type"].Value == Enums.EmailType.Work.ToString())
                     {
                         m.type = Enums.EmailType.Work;
                     }
                     else if (xEmail.Attributes["type"].Value == Enums.EmailType.X400.ToString())
                     {
                         m.type = Enums.EmailType.X400;
                     }
                     else
                     {
                         m.type = Enums.EmailType.None;
                     }
                     m.address = (xEmail.InnerText != null) ? xEmail.InnerText : string.Empty;
                     _email.Add(m);
                 }
             }
             _fullname = (vcard["fullname"].InnerText != null) ? vcard["fullname"].InnerText : string.Empty;
             XmlElement xName = vcard["name"];
             Name       n     = new Name();
             n.firstname = (xName["firstname"].InnerText != null) ? xName["firstname"].InnerText : string.Empty;
             n.lastname  = (xName["lastname"].InnerText != null) ? xName["lastname"].InnerText : string.Empty;
             n.middle    = (xName["middle"].InnerText != null) ? xName["middle"].InnerText : string.Empty;
             _name       = n;
             nickname    = (vcard["nickname"].InnerText != null) ? vcard["nickname"].InnerText : string.Empty;
             XmlElement   xOrganization = vcard["organization"];
             Organization o             = new Organization();
             o.name        = (xOrganization["name"].InnerText != null) ? xOrganization["name"].InnerText : string.Empty;
             o.unit        = (xOrganization["unit"].InnerText != null) ? xOrganization["unit"].InnerText : string.Empty;
             _organization = o;
             if (vcard["photo"].HasChildNodes && vcard["photo"].HasAttribute("format"))
             {
                 string      format = vcard["photo"].Attributes["format"].Value;
                 ImageFormat ift    = null;
                 if (format == ImageFormat.Bmp.ToString())
                 {
                     ift = ImageFormat.Bmp;
                 }
                 else if (format == ImageFormat.Gif.ToString())
                 {
                     ift = ImageFormat.Gif;
                 }
                 else if (format == ImageFormat.Icon.ToString())
                 {
                     ift = ImageFormat.Icon;
                 }
                 else if (format == ImageFormat.Jpeg.ToString())
                 {
                     ift = ImageFormat.Jpeg;
                 }
                 else if (format == ImageFormat.Png.ToString())
                 {
                     ift = ImageFormat.Png;
                 }
                 else
                 {
                     ift = null;
                 }
                 if (ift != null)
                 {
                     byte[]       bts = Convert.FromBase64String(vcard["photo"].ChildNodes[0].Value);
                     MemoryStream ms  = new MemoryStream(bts);
                     photo = Image.FromStream(ms);
                     byte[] hash = SHA1.Create().ComputeHash(ms.ToArray());
                     ms.Close();
                     ms.Dispose();
                     string hashString = string.Empty;
                     foreach (byte b in hash)
                     {
                         string hex = b.ToString("X").ToLower();
                         hex         = ((hex.Length == 1) ? "0" : string.Empty) + hex;
                         hashString += hex;
                     }
                     hash       = null;
                     _photoHash = hashString;
                     hashString = string.Empty;
                 }
             }
             _role = (vcard["role"].InnerText != null) ? vcard["role"].InnerText : string.Empty;
             XmlElement xTel = vcard["telephones"];
             if (xTel.HasChildNodes)
             {
                 _telephone.Clear();
                 foreach (XmlNode xT in xTel.ChildNodes)
                 {
                     Telehone t = new Telehone();
                     if (xT.Attributes["location"].Value == Enums.LocationType.Home.ToString())
                     {
                         t.location = Enums.LocationType.Home;
                     }
                     else if (xT.Attributes["location"].Value == Enums.LocationType.Work.ToString())
                     {
                         t.location = Enums.LocationType.Work;
                     }
                     else
                     {
                         t.location = Enums.LocationType.None;
                     }
                     if (xT.Attributes["type"].Value == Enums.PhoneType.Bbs.ToString())
                     {
                         t.type = Enums.PhoneType.Bbs;
                     }
                     else if (xT.Attributes["type"].Value == Enums.PhoneType.Cell.ToString())
                     {
                         t.type = Enums.PhoneType.Cell;
                     }
                     else if (xT.Attributes["type"].Value == Enums.PhoneType.Fax.ToString())
                     {
                         t.type = Enums.PhoneType.Fax;
                     }
                     else if (xT.Attributes["type"].Value == Enums.PhoneType.Isdn.ToString())
                     {
                         t.type = Enums.PhoneType.Isdn;
                     }
                     else if (xT.Attributes["type"].Value == Enums.PhoneType.Modem.ToString())
                     {
                         t.type = Enums.PhoneType.Modem;
                     }
                     else if (xT.Attributes["type"].Value == Enums.PhoneType.Msg.ToString())
                     {
                         t.type = Enums.PhoneType.Msg;
                     }
                     else if (xT.Attributes["type"].Value == Enums.PhoneType.Number.ToString())
                     {
                         t.type = Enums.PhoneType.Number;
                     }
                     else if (xT.Attributes["type"].Value == Enums.PhoneType.Pager.ToString())
                     {
                         t.type = Enums.PhoneType.Pager;
                     }
                     else if (xT.Attributes["type"].Value == Enums.PhoneType.Pcs.ToString())
                     {
                         t.type = Enums.PhoneType.Pcs;
                     }
                     else if (xT.Attributes["type"].Value == Enums.PhoneType.Pref.ToString())
                     {
                         t.type = Enums.PhoneType.Pref;
                     }
                     else if (xT.Attributes["type"].Value == Enums.PhoneType.Video.ToString())
                     {
                         t.type = Enums.PhoneType.Video;
                     }
                     else if (xT.Attributes["type"].Value == Enums.PhoneType.Voice.ToString())
                     {
                         t.type = Enums.PhoneType.Voice;
                     }
                     else
                     {
                         t.type = Enums.PhoneType.None;
                     }
                     t.number = (xT.InnerText != null) ? xT.InnerText : string.Empty;
                     _telephone.Add(t);
                 }
             }
             _title = (vcard["title"].InnerText != null) ? vcard["title"].InnerText : string.Empty;
             _url   = (vcard["url"].InnerText != null) ? vcard["url"].InnerText : string.Empty;
             onIdentityRetrieved();
         } catch {
         }
     }
     else
     {
         this.retrieve();
     }
 }
コード例 #4
0
ファイル: Identity.cs プロジェクト: kevinmel2000/mychitchat
        /// <summary>
        /// Charge la fiche d'identité locale
        /// </summary>
        public void Load(string vCardFilePath)
        {
            if (!Directory.Exists(Path.GetDirectoryName(vCardFilePath))) {
                try {
                    Directory.CreateDirectory(vCardFilePath);
                } catch {
                }
            }
            if (File.Exists(vCardFilePath)) {
                try {
                    XmlDocument xDoc = new XmlDocument();
                    xDoc.Load(vCardFilePath);
                    XmlElement vcard = xDoc["vcard"];
                    XmlElement xAddresses = vcard["addresses"];
                    if (xAddresses.HasChildNodes) {
                        _address.Clear();
                        foreach (XmlNode xAddress in xAddresses.ChildNodes) {
                            Address a = new Address();
                            if (xAddress.Attributes["location"].Value == Enums.LocationType.Home.ToString()) {
                                a.location = Enums.LocationType.Home;
                            } else if (xAddress.Attributes["location"].Value == Enums.LocationType.Work.ToString()) {
                                a.location = Enums.LocationType.Work;
                            } else {
                                a.location = Enums.LocationType.None;
                            }
                            a.city = (xAddress["city"].InnerText != null) ? xAddress["city"].InnerText : string.Empty;
                            a.country = (xAddress["country"].InnerText != null) ? xAddress["country"].InnerText : string.Empty;
                            a.extra = (xAddress["extra"].InnerText != null) ? xAddress["extra"].InnerText : string.Empty;
                            a.region = (xAddress["region"].InnerText != null) ? xAddress["region"].InnerText : string.Empty;
                            a.street = (xAddress["street"].InnerText != null) ? xAddress["street"].InnerText : string.Empty;
                            a.zipcode = (xAddress["zipcode"].InnerText != null) ? xAddress["zipcode"].InnerText : string.Empty;
                            _address.Add(a);
                        }
                    }
                    _birthday = (vcard["birthday"].InnerText != null) ? DateTime.Parse(vcard["birthday"].InnerText) : DateTime.Now;
                    _description = (vcard["description"].InnerText != null) ? vcard["description"].InnerText : string.Empty;
                    XmlElement xEmails = vcard["emails"];
                    if (xEmails.HasChildNodes) {
                        _email.Clear();
                        foreach (XmlNode xEmail in xEmails.ChildNodes) {
                            Email m = new Email();
                            if (xEmail.Attributes["type"].Value == Enums.EmailType.Home.ToString()) {
                                m.type = Enums.EmailType.Home;
                            } else if (xEmail.Attributes["type"].Value == Enums.EmailType.Internet.ToString()) {
                                m.type = Enums.EmailType.Internet;
                            } else if (xEmail.Attributes["type"].Value == Enums.EmailType.Work.ToString()) {
                                m.type = Enums.EmailType.Work;
                            } else if (xEmail.Attributes["type"].Value == Enums.EmailType.X400.ToString()) {
                                m.type = Enums.EmailType.X400;
                            } else {
                                m.type = Enums.EmailType.None;
                            }
                            m.address = (xEmail.InnerText != null) ? xEmail.InnerText : string.Empty;
                            _email.Add(m);
                        }
                    }
                    _fullname = (vcard["fullname"].InnerText != null) ? vcard["fullname"].InnerText : string.Empty;
                    XmlElement xName = vcard["name"];
                    Name n = new Name();
                    n.firstname = (xName["firstname"].InnerText != null) ? xName["firstname"].InnerText : string.Empty;
                    n.lastname = (xName["lastname"].InnerText != null) ? xName["lastname"].InnerText : string.Empty;
                    n.middle = (xName["middle"].InnerText != null) ? xName["middle"].InnerText : string.Empty;
                    _name = n;
                    nickname = (vcard["nickname"].InnerText != null) ? vcard["nickname"].InnerText : string.Empty;
                    XmlElement xOrganization = vcard["organization"];
                    Organization o = new Organization();
                    o.name = (xOrganization["name"].InnerText != null) ? xOrganization["name"].InnerText : string.Empty;
                    o.unit = (xOrganization["unit"].InnerText != null) ? xOrganization["unit"].InnerText : string.Empty;
                    _organization = o;
                    if (vcard["photo"].HasChildNodes && vcard["photo"].HasAttribute("format")) {
                        string format = vcard["photo"].Attributes["format"].Value;
                        ImageFormat ift = null;
                        if (format == ImageFormat.Bmp.ToString()) { ift = ImageFormat.Bmp; } else if (format == ImageFormat.Gif.ToString()) { ift = ImageFormat.Gif; } else if (format == ImageFormat.Icon.ToString()) { ift = ImageFormat.Icon; } else if (format == ImageFormat.Jpeg.ToString()) { ift = ImageFormat.Jpeg; } else if (format == ImageFormat.Png.ToString()) { ift = ImageFormat.Png; } else { ift = null; }
                        if (ift != null) {
                            byte[] bts = Convert.FromBase64String(vcard["photo"].ChildNodes[0].Value);
                            MemoryStream ms = new MemoryStream(bts);
                            photo = Image.FromStream(ms);
                            byte[] hash = SHA1.Create().ComputeHash(ms.ToArray());
                            ms.Close();
                            ms.Dispose();
                            string hashString = string.Empty;
                            foreach (byte b in hash) {
                                string hex = b.ToString("X").ToLower();
                                hex = ((hex.Length == 1) ? "0" : string.Empty) + hex;
                                hashString += hex;
                            }
                            hash = null;
                            _photoHash = hashString;
                            hashString = string.Empty;
                        }
                    }
                    _role = (vcard["role"].InnerText != null) ? vcard["role"].InnerText : string.Empty;
                    XmlElement xTel = vcard["telephones"];
                    if (xTel.HasChildNodes) {
                        _telephone.Clear();
                        foreach (XmlNode xT in xTel.ChildNodes) {
                            Telehone t = new Telehone();
                            if (xT.Attributes["location"].Value == Enums.LocationType.Home.ToString()) {
                                t.location = Enums.LocationType.Home;
                            } else if (xT.Attributes["location"].Value == Enums.LocationType.Work.ToString()) {
                                t.location = Enums.LocationType.Work;
                            } else {
                                t.location = Enums.LocationType.None;
                            }
                            if (xT.Attributes["type"].Value == Enums.PhoneType.Bbs.ToString()) {
                                t.type = Enums.PhoneType.Bbs;
                            } else if (xT.Attributes["type"].Value == Enums.PhoneType.Cell.ToString()) {
                                t.type = Enums.PhoneType.Cell;
                            } else if (xT.Attributes["type"].Value == Enums.PhoneType.Fax.ToString()) {
                                t.type = Enums.PhoneType.Fax;
                            } else if (xT.Attributes["type"].Value == Enums.PhoneType.Isdn.ToString()) {
                                t.type = Enums.PhoneType.Isdn;
                            } else if (xT.Attributes["type"].Value == Enums.PhoneType.Modem.ToString()) {
                                t.type = Enums.PhoneType.Modem;
                            } else if (xT.Attributes["type"].Value == Enums.PhoneType.Msg.ToString()) {
                                t.type = Enums.PhoneType.Msg;
                            } else if (xT.Attributes["type"].Value == Enums.PhoneType.Number.ToString()) {
                                t.type = Enums.PhoneType.Number;
                            } else if (xT.Attributes["type"].Value == Enums.PhoneType.Pager.ToString()) {
                                t.type = Enums.PhoneType.Pager;
                            } else if (xT.Attributes["type"].Value == Enums.PhoneType.Pcs.ToString()) {
                                t.type = Enums.PhoneType.Pcs;
                            } else if (xT.Attributes["type"].Value == Enums.PhoneType.Pref.ToString()) {
                                t.type = Enums.PhoneType.Pref;
                            } else if (xT.Attributes["type"].Value == Enums.PhoneType.Video.ToString()) {
                                t.type = Enums.PhoneType.Video;
                            } else if (xT.Attributes["type"].Value == Enums.PhoneType.Voice.ToString()) {
                                t.type = Enums.PhoneType.Voice;
                            } else {
                                t.type = Enums.PhoneType.None;
                            }
                            t.number = (xT.InnerText != null) ? xT.InnerText : string.Empty;
                            _telephone.Add(t);
                        }
                    }
                    _title = (vcard["title"].InnerText != null) ? vcard["title"].InnerText : string.Empty;
                    _url = (vcard["url"].InnerText != null) ? vcard["url"].InnerText : string.Empty;
                    onIdentityRetrieved();
                } catch {

                }
            } else {
                this.retrieve();
            }
        }