Beispiel #1
0
        private string GetEmailForName(string name)
        {
#if ENABLE_EVO_SHARP
            if (name == null || name == "")
            {
                return(null);
            }

            Evolution.Book addressbook = null;


            // If we've previously failed to open the
            // addressbook, don't keep trying.
            if (ebook_failed)
            {
                return(null);
            }

            // We keep a little cache so we don't have to query
            // the addressbook too often.
            if (buddy_emails.Contains(name))
            {
                string str = (string)buddy_emails[name];
                return(str != "" ? str : null);
            }

            // Connect to the Evolution addressbook.
            try {
                addressbook = Evolution.Book.NewSystemAddressbook();
                addressbook.Open(true);
            } catch (Exception e) {
                Console.WriteLine("\nCould not open Evolution addressbook:\n" + e);
                ebook_failed = true;
                return(null);
            }

            // Do a search.
            string qstr =
                String.Format("(is \"full_name\" \"{0}\")", name);

            Evolution.BookQuery  query   = Evolution.BookQuery.FromString(qstr);
            Evolution.Contact [] matches = addressbook.GetContacts(query);
            foreach (Evolution.Contact c in matches)
            {
                Console.WriteLine("FIXME: querying the evolution addressbook instead of using Lucene, this is slow and dumb");
                Console.WriteLine("Got match: {0} {1}", c.FullName, c.Email1);
                if (c.Email1 != null)
                {
                    buddy_emails[name] = c.Email1;
                    return(c.Email1);
                }
            }
            buddy_emails[name] = "";
#endif

            return(null);
        }
        private void GetImNames(string who)
        {
            if (who == null || who == "")
            {
                return;
            }

            Evolution.Book addressbook = null;

            if (ebook_failed)
            {
                return;
            }

            try {
                addressbook = Evolution.Book.NewSystemAddressbook();
                addressbook.Open(true);
            } catch (Exception e) {
                Console.WriteLine("\nCould not open Evolution addressbook:\n" + e);
                ebook_failed = true;
                return;
            }

            string email = GetEmail(who);

            System.Console.WriteLine("Looking for im name for {0}",
                                     email);
            System.Console.WriteLine("FIXME: This query is using the Evolution addressbook instead of querying Beagle directly.  This is slow, dumb, etc.");

            string qstr =
                String.Format("(is \"email\" \"{0}\")", email);

            Evolution.BookQuery query = Evolution.BookQuery.FromString(qstr);

            if (query == null)
            {
                return;
            }

            Evolution.Contact[] matches = addressbook.GetContacts(query);
            foreach (Evolution.Contact c in matches)
            {
                if (c.ImAim.Length > 0)
                {
                    aim_name = c.ImAim[0];
                }
                if (c.ImIcq.Length > 0)
                {
                    icq_name = c.ImIcq[0];
                }
                if (c.ImJabber.Length > 0)
                {
                    jabber_name = c.ImJabber[0];
                }
                if (c.ImMsn.Length > 0)
                {
                    msn_name = c.ImMsn[0];
                }
                if (c.ImYahoo.Length > 0)
                {
                    yahoo_name = c.ImYahoo[0];
                }
                if (c.ImGroupwise.Length > 0)
                {
                    groupwise_name = c.ImGroupwise[0];
                }
            }
        }