protected internal Contact(Roster roster, string member_name, 
                             uint handle, ConnectionPresenceType status)
     : this()
 {
     this.Roster = roster;
     this.Name = member_name;
     this.Handle = handle;
     this.Status = status;
 }
        private void RemoveContactSources (Roster roster)
        {
            ICollection<ContactSource> collection = source_map[roster.Connection.AccountObjectPath].Values;
            IEnumerator<ContactSource> e;
            while ((e = collection.GetEnumerator ()).MoveNext ()) {
                RemoveContactSource (e.Current.Contact);
            }

            source_map[roster.Connection.AccountObjectPath].Clear ();
        }
        private void AddContactSources (Roster roster)
        {
            foreach (Contact contact in roster.GetAllContacts ()) {
                AddContactSource (contact);
            }

            container.SortChildSources ();
        }