diff options
Diffstat (limited to 'addressbook/libedata-book/e-book-backend-sexp.c')
-rw-r--r-- | addressbook/libedata-book/e-book-backend-sexp.c | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/addressbook/libedata-book/e-book-backend-sexp.c b/addressbook/libedata-book/e-book-backend-sexp.c index d6304ce2a..12b3315b1 100644 --- a/addressbook/libedata-book/e-book-backend-sexp.c +++ b/addressbook/libedata-book/e-book-backend-sexp.c @@ -152,8 +152,30 @@ static gboolean compare_address (EContact *contact, const char *str, char *(*compare)(const char*, const char*)) { - g_warning("address searching not implemented\n"); - return FALSE; + + int i; + gboolean rv = FALSE; + + for (i = E_CONTACT_FIRST_ADDRESS_ID; i <= E_CONTACT_LAST_ADDRESS_ID; i ++) { + EContactAddress *address = e_contact_get (contact, i); + if (address) { + rv = (address->po && compare(address->po, str)) || + (address->street && compare(address->street, str)) || + (address->ext && compare(address->ext, str)) || + (address->locality && compare(address->locality, str)) || + (address->region && compare(address->region, str)) || + (address->code && compare(address->code, str)) || + (address->country && compare(address->country, str)); + + e_contact_address_free (address); + + if (rv) + break; + } + } + + return rv; + } static gboolean |