summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSivaiah Nallagatla <snallagatla@novell.com>2004-07-19 05:33:07 +0000
committerSivaiah Nallagatla <siva@src.gnome.org>2004-07-19 05:33:07 +0000
commit976302404a135aa709f1bc60bad8161c55ada5bc (patch)
treea5437c8767b97a9b4900c2b40dcee83026b09d45
parent491e8c914a307a317cfe6e96dbb86d96ff18164a (diff)
downloadevolution-data-server-976302404a135aa709f1bc60bad8161c55ada5bc.tar.gz
provided implementation, search in all fileds of all types of addresses
2004-07-19 Sivaiah Nallagatla <snallagatla@novell.com> * libedata-book/e-book-backend-sexp.c (compare_address) : provided implementation, search in all fileds of all types of addresses till a match occurs Fixes #58701
-rw-r--r--addressbook/ChangeLog7
-rw-r--r--addressbook/libedata-book/e-book-backend-sexp.c26
2 files changed, 31 insertions, 2 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index a3139c288..77b885b0e 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,10 @@
+2004-07-19 Sivaiah Nallagatla <snallagatla@novell.com>
+
+ * libedata-book/e-book-backend-sexp.c (compare_address) : provided
+ implementation, search in all fileds of all types of addresses
+ till a match occurs
+ Fixes #58701
+
2004-07-16 Chris Toshok <toshok@ximian.com>
[ fixes #61052 ]
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