[evolution-couchdb] Store postal addresses when saving contacts to the database



commit 6f56e2e87457cf169071ba19763c290a2e19e102
Author: Rodrigo Moya <rodrigo gnome-db org>
Date:   Wed Jun 24 18:01:55 2009 +0200

    Store postal addresses when saving contacts to the database

 addressbook/e-book-backend-couchdb.c |   52 +++++++++++++++++++++++++++++++++-
 1 files changed, 51 insertions(+), 1 deletions(-)
---
diff --git a/addressbook/e-book-backend-couchdb.c b/addressbook/e-book-backend-couchdb.c
index d5872a5..7137c29 100644
--- a/addressbook/e-book-backend-couchdb.c
+++ b/addressbook/e-book-backend-couchdb.c
@@ -163,6 +163,7 @@ couch_document_from_contact (EBookBackendCouchDB *couchdb_backend, EContact *con
 	gint i;
 	const char *str;
 	CouchDBDocument *document;
+	EContactAddress *contact_address;
 
 	/* create the CouchDBDocument to put on the database */
 	document = couchdb_document_new (couchdb_backend->couchdb);
@@ -228,7 +229,56 @@ couch_document_from_contact (EBookBackendCouchDB *couchdb_backend, EContact *con
 		g_slist_free (list);
 	}
 
-	/* FIXME: addresses */
+	/* postal addresses */
+	list = NULL;
+	contact_address = e_contact_get_const (contact, E_CONTACT_ADDRESS_HOME);
+	if (contact_address) {
+		CouchDBStructField *sf;
+
+		sf = couchdb_document_contact_address_new (contact_address->street,
+							   contact_address->locality,
+							   contact_address->region,
+							   contact_address->country,
+							   contact_address->code,
+							   contact_address->po,
+							   "home");
+		list = g_slist_append (list, sf);
+	}
+
+	contact_address = e_contact_get_const (contact, E_CONTACT_ADDRESS_WORK);
+	if (contact_address) {
+		CouchDBStructField *sf;
+
+		sf = couchdb_document_contact_address_new (contact_address->street,
+							   contact_address->locality,
+							   contact_address->region,
+							   contact_address->country,
+							   contact_address->code,
+							   contact_address->po,
+							   "work");
+		list = g_slist_append (list, sf);
+	}
+
+	contact_address = e_contact_get_const (contact, E_CONTACT_ADDRESS_OTHER);
+	if (contact_address) {
+		CouchDBStructField *sf;
+
+		sf = couchdb_document_contact_address_new (contact_address->street,
+							   contact_address->locality,
+							   contact_address->region,
+							   contact_address->country,
+							   contact_address->code,
+							   contact_address->po,
+							   "other");
+		list = g_slist_append (list, sf);
+	}
+
+	if (list) {
+		couchdb_document_contact_set_addresses (document, list);
+
+		g_slist_foreach (list, (GFunc) couchdb_struct_field_unref, NULL);
+		g_slist_free (list);
+	}
 
 	/* birth date */
 	dt = (EContactDate *) e_contact_get_const (contact, E_CONTACT_BIRTH_DATE);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]