evolution-data-server r9811 - in trunk/addressbook: . backends/google backends/groupwise libebook libedata-book



Author: msuman
Date: Mon Dec  8 09:04:26 2008
New Revision: 9811
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=9811&view=rev

Log:
Patch from Sasa Ostrouska <saxa droplinegnome org>: Fix for bug #270376 (Provide Skype as an entry for storing IM information).

Modified:
   trunk/addressbook/ChangeLog
   trunk/addressbook/backends/google/e-book-backend-google.c
   trunk/addressbook/backends/groupwise/e-book-backend-groupwise.c
   trunk/addressbook/libebook/e-contact.c
   trunk/addressbook/libebook/e-contact.h
   trunk/addressbook/libebook/e-vcard.h
   trunk/addressbook/libedata-book/e-book-backend-sexp.c

Modified: trunk/addressbook/backends/google/e-book-backend-google.c
==============================================================================
--- trunk/addressbook/backends/google/e-book-backend-google.c	(original)
+++ trunk/addressbook/backends/google/e-book-backend-google.c	Mon Dec  8 09:04:26 2008
@@ -51,11 +51,11 @@
 static EBookBackendSyncStatus e_book_backend_status_from_google_book_error (GoogleBookError error_code);
 
 static EBookBackendSyncStatus
-e_book_backend_google_create_contact (EBookBackendSync *backend,
-                                      EDataBook        *book,
-                                      guint32           opid,
-                                      const char       *vcard_str,
-                                      EContact        **out_contact)
+e_book_backend_google_create_contact (EBookBackendSync 	*backend,
+				      EDataBook		*book,
+				      guint32 		opid,
+				      const char 	*vcard_str,
+				      EContact 		**out_contact)
 {
     EBookBackendGooglePrivate *priv;
     EBookBackendSyncStatus status = GNOME_Evolution_Addressbook_OtherError;
@@ -69,18 +69,18 @@
     *out_contact = NULL;
 
     if (priv->mode != GNOME_Evolution_Addressbook_MODE_REMOTE) {
-        return GNOME_Evolution_Addressbook_OfflineUnavailable;
+	return GNOME_Evolution_Addressbook_OfflineUnavailable;
     }
 
     contact = e_contact_new_from_vcard (vcard_str);
     google_book_add_contact (priv->book, contact, out_contact, &error);
     g_object_unref (contact);
     if (error) {
-        status = e_book_backend_status_from_google_book_error (error->code);
-        __debug__ ("Creating contact failed: %s", error->message);
-        g_clear_error (&error);
-        *out_contact = NULL;
-        return status;
+	status = e_book_backend_status_from_google_book_error (error->code);
+	__debug__ ("Creating contact failed: %s", error->message);
+	g_clear_error (&error);
+	*out_contact = NULL;
+	return status;
     }
 
     return GNOME_Evolution_Addressbook_Success;
@@ -88,10 +88,10 @@
 
 static EBookBackendSyncStatus
 e_book_backend_google_remove_contacts (EBookBackendSync *backend,
-                                       EDataBook        *book,
-                                       guint32           opid,
-                                       GList            *id_list,
-                                       GList           **ids)
+				       EDataBook 	*book,
+				       guint32 		opid,
+				       GList 		*id_list,
+				       GList 		**ids)
 {
     EBookBackendGooglePrivate *priv;
     EBookBackendSyncStatus status = GNOME_Evolution_Addressbook_OtherError;
@@ -103,37 +103,37 @@
     *ids = NULL;
 
     if (priv->mode != GNOME_Evolution_Addressbook_MODE_REMOTE) {
-        return GNOME_Evolution_Addressbook_OfflineUnavailable;
+	return GNOME_Evolution_Addressbook_OfflineUnavailable;
     }
 
     for (id_iter = id_list; id_iter; id_iter = id_iter->next) {
-        GError *error = NULL;
-        const char *uid;
+	GError *error = NULL;
+	const char *uid;
 
-        uid = id_iter->data;
-        google_book_remove_contact (priv->book, uid, &error);
-        if (error) {
-            /* Only last error will be reported */
-            status = e_book_backend_status_from_google_book_error (error->code);
-            __debug__ ("Deleting contact %s failed: %s", uid, error->message);
-            g_clear_error (&error);
-        } else {
-            *ids = g_list_append (*ids, g_strdup (uid));
-        }
+	uid = id_iter->data;
+	google_book_remove_contact (priv->book, uid, &error);
+	if (error) {
+	    /* Only last error will be reported */
+	    status = e_book_backend_status_from_google_book_error (error->code);
+	    __debug__ ("Deleting contact %s failed: %s", uid, error->message);
+	    g_clear_error (&error);
+	} else {
+	    *ids = g_list_append (*ids, g_strdup (uid));
+	}
     }
 
     if (NULL == *ids) {
-        return status;
+	return status;
     }
     return GNOME_Evolution_Addressbook_Success;
 }
 
 static EBookBackendSyncStatus
-e_book_backend_google_modify_contact (EBookBackendSync *backend,
-                                      EDataBook        *book,
-                                      guint32           opid,
-                                      const char       *vcard_str,
-                                      EContact        **out_contact)
+e_book_backend_google_modify_contact (EBookBackendSync 	*backend,
+				      EDataBook		*book,
+				      guint32 		opid,
+				      const char 	*vcard_str,
+				      EContact 		**out_contact)
 {
     EBookBackendGooglePrivate *priv;
     EBookBackendSyncStatus status = GNOME_Evolution_Addressbook_OtherError;
@@ -147,29 +147,29 @@
     *out_contact = NULL;
 
     if (priv->mode != GNOME_Evolution_Addressbook_MODE_REMOTE) {
-        return GNOME_Evolution_Addressbook_OfflineUnavailable;
+	return GNOME_Evolution_Addressbook_OfflineUnavailable;
     }
 
     contact = e_contact_new_from_vcard (vcard_str);
     google_book_update_contact (priv->book, contact, out_contact, &error);
     g_object_unref (contact);
     if (error) {
-        status = e_book_backend_status_from_google_book_error (error->code);
-        __debug__ ("Modifying contact failed: %s", error->message);
-        g_clear_error (&error);
-        *out_contact = NULL;
-        return status;
+	status = e_book_backend_status_from_google_book_error (error->code);
+	__debug__ ("Modifying contact failed: %s", error->message);
+	g_clear_error (&error);
+	*out_contact = NULL;
+	return status;
     }
 
     return GNOME_Evolution_Addressbook_Success;
 }
 
 static EBookBackendSyncStatus
-e_book_backend_google_get_contact (EBookBackendSync *backend,
-                                   EDataBook        *book,
-                                   guint32           opid,
-                                   const char       *uid,
-                                   char            **vcard_str)
+e_book_backend_google_get_contact (EBookBackendSync 	*backend,
+				   EDataBook 		*book,
+				   guint32 		opid,
+				   const char 		*uid,
+				   char 		**vcard_str)
 {
     EBookBackendGooglePrivate *priv;
     EBookBackendSyncStatus status = GNOME_Evolution_Addressbook_OtherError;
@@ -181,10 +181,10 @@
 
     contact = google_book_get_contact (priv->book, uid, &error);
     if (error) {
-        status = e_book_backend_status_from_google_book_error (error->code);
-        __debug__ ("Getting contact with uid %s failed: %s", uid, error->message);
-        g_clear_error (&error);
-        return status;
+	status = e_book_backend_status_from_google_book_error (error->code);
+	__debug__ ("Getting contact with uid %s failed: %s", uid, error->message);
+	g_clear_error (&error);
+	return status;
     }
     *vcard_str = e_vcard_to_string (E_VCARD (contact), EVC_FORMAT_VCARD_30);
     g_object_unref (contact);
@@ -194,10 +194,10 @@
 
 static EBookBackendSyncStatus
 e_book_backend_google_get_contact_list (EBookBackendSync *backend,
-                                        EDataBook        *book,
-                                        guint32           opid,
-                                        const char       *query,
-                                        GList           **contacts)
+					EDataBook 	 *book,
+					guint32 	 opid,
+					const char 	 *query,
+					GList 		 **contacts)
 {
     EBookBackendGooglePrivate *priv;
     EBookBackendSyncStatus status = GNOME_Evolution_Addressbook_OtherError;
@@ -212,24 +212,24 @@
 
     all_contacts = google_book_get_all_contacts (priv->book, &error);
     if (error) {
-        status = e_book_backend_status_from_google_book_error (error->code);
-        __debug__ ("Getting all contacts failed: %s", error->message);
-        g_clear_error (&error);
-        return status;
+	status = e_book_backend_status_from_google_book_error (error->code);
+	__debug__ ("Getting all contacts failed: %s", error->message);
+	g_clear_error (&error);
+	return status;
     }
 
     sexp = e_book_backend_sexp_new (query);
     while (all_contacts) {
-        EContact *contact;
+	EContact *contact;
 
-        contact = all_contacts->data;
-        if (e_book_backend_sexp_match_contact (sexp, contact)) {
-            char *vcard_str;
-            vcard_str = e_vcard_to_string (E_VCARD (contact), EVC_FORMAT_VCARD_30);
-            *contacts = g_list_append (*contacts, vcard_str);
-        }
-        g_object_unref (contact);
-        all_contacts = g_list_delete_link (all_contacts, all_contacts);
+	contact = all_contacts->data;
+	if (e_book_backend_sexp_match_contact (sexp, contact)) {
+	    char *vcard_str;
+	    vcard_str = e_vcard_to_string (E_VCARD (contact), EVC_FORMAT_VCARD_30);
+	    *contacts = g_list_append (*contacts, vcard_str);
+	}
+	g_object_unref (contact);
+	all_contacts = g_list_delete_link (all_contacts, all_contacts);
     }
     g_object_unref (sexp);
 
@@ -244,8 +244,8 @@
 
     priv = GET_PRIVATE (user_data);
     for (iter = priv->bookviews; iter; iter = iter->next) {
-        g_object_ref (contact);
-        e_data_book_view_notify_update (E_DATA_BOOK_VIEW (iter->data), contact);
+	g_object_ref (contact);
+	e_data_book_view_notify_update (E_DATA_BOOK_VIEW (iter->data), contact);
     }
 }
 
@@ -257,7 +257,7 @@
 
     priv = GET_PRIVATE (user_data);
     for (iter = priv->bookviews; iter; iter = iter->next) {
-        e_data_book_view_notify_remove (E_DATA_BOOK_VIEW (iter->data), g_strdup (uid));
+	e_data_book_view_notify_remove (E_DATA_BOOK_VIEW (iter->data), g_strdup (uid));
     }
 }
 
@@ -269,8 +269,8 @@
 
     priv = GET_PRIVATE (user_data);
     for (iter = priv->bookviews; iter; iter = iter->next) {
-        g_object_ref (contact);
-        e_data_book_view_notify_update (E_DATA_BOOK_VIEW (iter->data), contact);
+	g_object_ref (contact);
+	e_data_book_view_notify_update (E_DATA_BOOK_VIEW (iter->data), contact);
     }
 }
 
@@ -283,19 +283,19 @@
 
     priv = GET_PRIVATE (user_data);
     if (error) {
-        status = e_book_backend_status_from_google_book_error (error->code);
-        __debug__ ("Book-view query failed: %s", error->message);
-        status = e_book_backend_status_from_google_book_error (error->code);
-        g_clear_error (&error);
+	status = e_book_backend_status_from_google_book_error (error->code);
+	__debug__ ("Book-view query failed: %s", error->message);
+	status = e_book_backend_status_from_google_book_error (error->code);
+	g_clear_error (&error);
     }
     for (iter = priv->bookviews; iter; iter = iter->next) {
-        e_data_book_view_notify_complete (E_DATA_BOOK_VIEW (iter->data), GNOME_Evolution_Addressbook_Success);
+	e_data_book_view_notify_complete (E_DATA_BOOK_VIEW (iter->data), GNOME_Evolution_Addressbook_Success);
     }
 }
 
 static void
 e_book_backend_google_start_book_view (EBookBackend  *backend,
-                                       EDataBookView *bookview)
+				       EDataBookView *bookview)
 {
     EBookBackendGooglePrivate *priv;
     GList *cached_contacts;
@@ -314,18 +314,18 @@
     google_book_set_live_mode (priv->book, TRUE);
     cached_contacts = google_book_get_all_contacts_in_live_mode (priv->book);
     while (cached_contacts) {
-        EContact *contact = cached_contacts->data;
+	EContact *contact = cached_contacts->data;
 
-        e_data_book_view_notify_update (bookview, contact);
-        g_object_unref (contact);
-        cached_contacts = g_list_delete_link (cached_contacts, cached_contacts);
+	e_data_book_view_notify_update (bookview, contact);
+	g_object_unref (contact);
+	cached_contacts = g_list_delete_link (cached_contacts, cached_contacts);
     }
     e_data_book_view_notify_complete (bookview, GNOME_Evolution_Addressbook_Success);
 }
 
 static void
 e_book_backend_google_stop_book_view (EBookBackend  *backend,
-                                      EDataBookView *bookview)
+				      EDataBookView *bookview)
 {
     EBookBackendGooglePrivate *priv;
 
@@ -336,17 +336,17 @@
     e_data_book_view_unref (bookview);
 
     if (NULL == priv->bookviews) {
-        google_book_set_live_mode (priv->book, FALSE);
+	google_book_set_live_mode (priv->book, FALSE);
     }
 }
 
 static EBookBackendSyncStatus
 e_book_backend_google_authenticate_user (EBookBackendSync *backend,
-                                         EDataBook        *book,
-                                         guint32           opid,
-                                         const char       *username,
-                                         const char       *password,
-                                         const char       *auth_method)
+					 EDataBook 	  *book,
+					 guint32 	  opid,
+					 const char 	  *username,
+					 const char 	  *password,
+					 const char 	  *auth_method)
 {
     EBookBackendGooglePrivate *priv;
     EBookBackendSyncStatus status = GNOME_Evolution_Addressbook_Success;
@@ -358,42 +358,42 @@
     priv = GET_PRIVATE (backend);
 
     if (priv->mode != GNOME_Evolution_Addressbook_MODE_REMOTE) {
-        return GNOME_Evolution_Addressbook_Success;
+	return GNOME_Evolution_Addressbook_Success;
     }
 
     if (NULL == username || username[0] == 0) {
-        return GNOME_Evolution_Addressbook_AuthenticationFailed;
+	return GNOME_Evolution_Addressbook_AuthenticationFailed;
     }
 
     g_object_get (G_OBJECT (priv->book),
-                  "username", &book_username,
-                  NULL);
+		  "username", &book_username,
+		  NULL);
 
     match = (0 == strcmp (username, book_username));
     g_free (book_username);
     if (FALSE == match) {
-        g_warning ("Username given when loading source and on authentication did not match!");
-        return GNOME_Evolution_Addressbook_OtherError;
+	g_warning ("Username given when loading source and on authentication did not match!");
+	return GNOME_Evolution_Addressbook_OtherError;
     }
 
     google_book_connect_to_google (priv->book, password, &error);
     if (error) {
-        status = e_book_backend_status_from_google_book_error (error->code);
-        __debug__ ("Authentication failed: %s", error->message);
-        status = e_book_backend_status_from_google_book_error (error->code);
-        g_clear_error (&error);
+	status = e_book_backend_status_from_google_book_error (error->code);
+	__debug__ ("Authentication failed: %s", error->message);
+	status = e_book_backend_status_from_google_book_error (error->code);
+	g_clear_error (&error);
     } else {
-        e_book_backend_notify_writable (E_BOOK_BACKEND (backend), TRUE);
+	e_book_backend_notify_writable (E_BOOK_BACKEND (backend), TRUE);
     }
 
     return status;
 }
 
 static EBookBackendSyncStatus
-e_book_backend_google_get_supported_auth_methods (EBookBackendSync *backend,
-                                                  EDataBook        *book,
-                                                  guint32           opid,
-                                                  GList           **methods)
+e_book_backend_google_get_supported_auth_methods (EBookBackendSync 	*backend,
+						  EDataBook 		*book,
+						  guint32 		opid,
+						  GList 		**methods)
 {
     char *auth_method;
 
@@ -405,10 +405,10 @@
 }
 
 static EBookBackendSyncStatus
-e_book_backend_google_get_required_fields (EBookBackendSync *backend,
-                                           EDataBook        *book,
-                                           guint32           opid,
-                                           GList           **fields_out)
+e_book_backend_google_get_required_fields (EBookBackendSync 	*backend,
+					   EDataBook 		*book,
+					   guint32 		opid,
+					   GList 		**fields_out)
 {
     __debug__ (G_STRFUNC);
 
@@ -417,36 +417,39 @@
 }
 
 static EBookBackendSyncStatus
-e_book_backend_google_get_supported_fields (EBookBackendSync *backend,
-                                            EDataBook        *book,
-                                            guint32           opid,
-                                            GList           **fields_out)
+e_book_backend_google_get_supported_fields (EBookBackendSync 	*backend,
+					    EDataBook 		*book,
+					    guint32 		opid,
+					    GList 		**fields_out)
 {
     const int supported_fields[] =
     {
-        E_CONTACT_FULL_NAME,
-        E_CONTACT_EMAIL_1,
-        E_CONTACT_EMAIL_2,
-        E_CONTACT_EMAIL_3,
-        E_CONTACT_EMAIL_4,
-        E_CONTACT_ADDRESS_LABEL_HOME,
-        E_CONTACT_ADDRESS_LABEL_WORK,
-        E_CONTACT_ADDRESS_LABEL_OTHER,
-        E_CONTACT_PHONE_HOME,
-        E_CONTACT_PHONE_HOME_FAX,
-        E_CONTACT_PHONE_BUSINESS,
-        E_CONTACT_PHONE_BUSINESS_FAX,
-        E_CONTACT_PHONE_MOBILE,
-        E_CONTACT_PHONE_PAGER,
-        E_CONTACT_IM_AIM,
-        E_CONTACT_IM_JABBER,
-        E_CONTACT_IM_YAHOO,
-        E_CONTACT_IM_MSN,
-        E_CONTACT_IM_ICQ,
-        E_CONTACT_ADDRESS,
-        E_CONTACT_ADDRESS_HOME,
-        E_CONTACT_ADDRESS_WORK,
-        E_CONTACT_ADDRESS_OTHER
+	E_CONTACT_FULL_NAME,
+	E_CONTACT_EMAIL_1,
+	E_CONTACT_EMAIL_2,
+	E_CONTACT_EMAIL_3,
+	E_CONTACT_EMAIL_4,
+	E_CONTACT_ADDRESS_LABEL_HOME,
+	E_CONTACT_ADDRESS_LABEL_WORK,
+	E_CONTACT_ADDRESS_LABEL_OTHER,
+	E_CONTACT_PHONE_HOME,
+	E_CONTACT_PHONE_HOME_FAX,
+	E_CONTACT_PHONE_BUSINESS,
+	E_CONTACT_PHONE_BUSINESS_FAX,
+	E_CONTACT_PHONE_MOBILE,
+	E_CONTACT_PHONE_PAGER,
+	E_CONTACT_IM_AIM,
+	E_CONTACT_IM_JABBER,
+	E_CONTACT_IM_YAHOO,
+	E_CONTACT_IM_MSN,
+	E_CONTACT_IM_ICQ,
+	E_CONTACT_IM_SKYPE,
+	E_CONTACT_IM_GADUGADU,
+	E_CONTACT_IM_GROUPWISE,
+	E_CONTACT_ADDRESS,
+	E_CONTACT_ADDRESS_HOME,
+	E_CONTACT_ADDRESS_WORK,
+	E_CONTACT_ADDRESS_OTHER
     };
     GList *fields = NULL;
     int i;
@@ -454,10 +457,10 @@
     __debug__ (G_STRFUNC);
 
     for (i = 0; i < G_N_ELEMENTS (supported_fields); i++) {
-        const char *field_name;
+	const char *field_name;
 
-        field_name = e_contact_field_name (supported_fields[i]);
-        fields = g_list_append (fields, g_strdup (field_name));
+	field_name = e_contact_field_name (supported_fields[i]);
+	fields = g_list_append (fields, g_strdup (field_name));
     }
 
     *fields_out = fields;
@@ -465,20 +468,20 @@
 }
 
 static EBookBackendSyncStatus
-e_book_backend_google_get_changes (EBookBackendSync *backend,
-                                   EDataBook        *book,
-                                   guint32           opid,
-                                   const char       *change_id,
-                                   GList           **changes_out)
+e_book_backend_google_get_changes (EBookBackendSync 	*backend,
+				   EDataBook 		*book,
+				   guint32 		opid,
+				   const char 		*change_id,
+				   GList 		**changes_out)
 {
     __debug__ (G_STRFUNC);
     return GNOME_Evolution_Addressbook_OtherError;
 }
 
 static EBookBackendSyncStatus
-e_book_backend_google_remove (EBookBackendSync *backend,
-                              EDataBook        *book,
-                              guint32           opid)
+e_book_backend_google_remove (EBookBackendSync 	*backend,
+			      EDataBook		*book,
+			      guint32 		opid)
 {
     __debug__ (G_STRFUNC);
     return GNOME_Evolution_Addressbook_Success;
@@ -493,8 +496,8 @@
 
 static GNOME_Evolution_Addressbook_CallStatus
 e_book_backend_google_load_source (EBookBackend *backend,
-                                   ESource      *source,
-                                   gboolean      only_if_exists)
+				   ESource 	*source,
+				   gboolean 	only_if_exists)
 {
     EBookBackendGooglePrivate *priv = GET_PRIVATE (backend);
     const char *refresh_interval_str, *use_ssl_str, *use_cache_str;
@@ -503,15 +506,15 @@
     const char *username;
 
     if (priv->book) {
-        g_warning ("Source already loaded!");
-        return GNOME_Evolution_Addressbook_OtherError;
+	g_warning ("Source already loaded!");
+	return GNOME_Evolution_Addressbook_OtherError;
     }
 
     username = e_source_get_property (source, "username");
 
     if (NULL == username || username[0] == '\0') {
-        g_warning ("No or empty username!");
-        return GNOME_Evolution_Addressbook_OtherError;
+	g_warning ("No or empty username!");
+	return GNOME_Evolution_Addressbook_OtherError;
     }
 
     refresh_interval_str = e_source_get_property (source, "refresh-interval");
@@ -519,37 +522,37 @@
     use_cache_str = e_source_get_property (source, "offline_sync");
 
     if (refresh_interval_str) {
-        if (1 != sscanf (refresh_interval_str, "%u", &refresh_interval)) {
-            g_warning ("Could not parse refresh-interval!");
-            refresh_interval = 3600;
-        }
+	if (1 != sscanf (refresh_interval_str, "%u", &refresh_interval)) {
+	    g_warning ("Could not parse refresh-interval!");
+	    refresh_interval = 3600;
+	}
     }
 
     use_ssl = TRUE;
     if (use_ssl_str) {
-        if (0 == g_ascii_strcasecmp (use_ssl_str, "false") || 0 == strcmp (use_ssl_str, "0"))
-            use_ssl = FALSE;
+	if (0 == g_ascii_strcasecmp (use_ssl_str, "false") || 0 == strcmp (use_ssl_str, "0"))
+	    use_ssl = FALSE;
     }
 
     use_cache = TRUE;
     if (use_cache_str) {
-        if (0 == g_ascii_strcasecmp (use_cache_str, "false") || 0 == strcmp (use_cache_str, "0"))
-            use_cache = FALSE;
+	if (0 == g_ascii_strcasecmp (use_cache_str, "false") || 0 == strcmp (use_cache_str, "0"))
+	    use_cache = FALSE;
     }
 
     priv->book = google_book_new (username, use_cache);
 
     g_object_set (G_OBJECT (priv->book),
-                  "refresh-interval", refresh_interval,
-                  "use-ssl", use_ssl,
-                  NULL);
+		  "refresh-interval", refresh_interval,
+		  "use-ssl", use_ssl,
+		  NULL);
     g_object_connect (G_OBJECT (priv->book),
-                      "signal::contact-added", G_CALLBACK (on_google_book_contact_added), backend,
-                      "signal::contact-changed", G_CALLBACK (on_google_book_contact_changed), backend,
-                      "signal::contact-removed", G_CALLBACK (on_google_book_contact_removed), backend,
-                      "signal::sequence-complete", G_CALLBACK (on_google_book_sequence_complete), backend,
-                      "signal::auth-required", G_CALLBACK (on_google_book_auth_required), backend,
-                      NULL);
+		      "signal::contact-added", G_CALLBACK (on_google_book_contact_added), backend,
+		      "signal::contact-changed", G_CALLBACK (on_google_book_contact_changed), backend,
+		      "signal::contact-removed", G_CALLBACK (on_google_book_contact_removed), backend,
+		      "signal::sequence-complete", G_CALLBACK (on_google_book_sequence_complete), backend,
+		      "signal::auth-required", G_CALLBACK (on_google_book_auth_required), backend,
+		      NULL);
 
     __debug__ (G_STRFUNC);
 
@@ -583,19 +586,19 @@
     __debug__ (G_STRFUNC);
 
     if (mode == priv->mode) {
-        return;
+	return;
     }
 
     priv->mode = mode;
 
     if (NULL == priv->book) {
-        return;
+	return;
     }
 
     if (mode == GNOME_Evolution_Addressbook_MODE_REMOTE) {
-        google_book_set_offline_mode (priv->book, FALSE);
+	google_book_set_offline_mode (priv->book, FALSE);
     } else {
-        google_book_set_offline_mode (priv->book, TRUE);
+	google_book_set_offline_mode (priv->book, TRUE);
     }
 }
 
@@ -607,13 +610,13 @@
     __debug__ (G_STRFUNC);
 
     while (priv->bookviews) {
-        e_data_book_view_unref (priv->bookviews->data);
-        priv->bookviews = g_list_delete_link (priv->bookviews,
-                                              priv->bookviews);
+	e_data_book_view_unref (priv->bookviews->data);
+	priv->bookviews = g_list_delete_link (priv->bookviews,
+					      priv->bookviews);
     }
     if (priv->book) {
-        g_object_unref (priv->book);
-        priv->book = NULL;
+	g_object_unref (priv->book);
+	priv->book = NULL;
     }
 
     G_OBJECT_CLASS (e_book_backend_google_parent_class)->dispose (object);
@@ -641,23 +644,23 @@
     g_type_class_add_private (klass, sizeof (EBookBackendGooglePrivate));
 
     /* Set the virtual methods. */
-    backend_class->load_source             = e_book_backend_google_load_source;
-    backend_class->get_static_capabilities = e_book_backend_google_get_static_capabilities;
-    backend_class->start_book_view         = e_book_backend_google_start_book_view;
-    backend_class->stop_book_view          = e_book_backend_google_stop_book_view;
-    backend_class->cancel_operation        = e_book_backend_google_cancel_operation;
-    backend_class->set_mode                = e_book_backend_google_set_mode;
-    sync_class->remove_sync                = e_book_backend_google_remove;
-    sync_class->create_contact_sync        = e_book_backend_google_create_contact;
-    sync_class->remove_contacts_sync       = e_book_backend_google_remove_contacts;
-    sync_class->modify_contact_sync        = e_book_backend_google_modify_contact;
-    sync_class->get_contact_sync           = e_book_backend_google_get_contact;
-    sync_class->get_contact_list_sync      = e_book_backend_google_get_contact_list;
-    sync_class->get_changes_sync           = e_book_backend_google_get_changes;
-    sync_class->authenticate_user_sync     = e_book_backend_google_authenticate_user;
-    sync_class->get_supported_fields_sync  = e_book_backend_google_get_supported_fields;
-    sync_class->get_required_fields_sync   = e_book_backend_google_get_required_fields;
-    sync_class->get_supported_auth_methods_sync  = e_book_backend_google_get_supported_auth_methods;
+    backend_class->load_source			= e_book_backend_google_load_source;
+    backend_class->get_static_capabilities	= e_book_backend_google_get_static_capabilities;
+    backend_class->start_book_view		= e_book_backend_google_start_book_view;
+    backend_class->stop_book_view		= e_book_backend_google_stop_book_view;
+    backend_class->cancel_operation		= e_book_backend_google_cancel_operation;
+    backend_class->set_mode			= e_book_backend_google_set_mode;
+    sync_class->remove_sync			= e_book_backend_google_remove;
+    sync_class->create_contact_sync		= e_book_backend_google_create_contact;
+    sync_class->remove_contacts_sync		= e_book_backend_google_remove_contacts;
+    sync_class->modify_contact_sync		= e_book_backend_google_modify_contact;
+    sync_class->get_contact_sync		= e_book_backend_google_get_contact;
+    sync_class->get_contact_list_sync		= e_book_backend_google_get_contact_list;
+    sync_class->get_changes_sync		= e_book_backend_google_get_changes;
+    sync_class->authenticate_user_sync		= e_book_backend_google_authenticate_user;
+    sync_class->get_supported_fields_sync	= e_book_backend_google_get_supported_fields;
+    sync_class->get_required_fields_sync	= e_book_backend_google_get_required_fields;
+    sync_class->get_supported_auth_methods_sync = e_book_backend_google_get_supported_auth_methods;
 
     object_class->dispose  = e_book_backend_google_dispose;
     object_class->finalize = e_book_backend_google_finalize;

Modified: trunk/addressbook/backends/groupwise/e-book-backend-groupwise.c
==============================================================================
--- trunk/addressbook/backends/groupwise/e-book-backend-groupwise.c	(original)
+++ trunk/addressbook/backends/groupwise/e-book-backend-groupwise.c	Mon Dec  8 09:04:26 2008
@@ -178,6 +178,7 @@
 	GList *yahoo_list = NULL;
 	GList *gadugadu_list = NULL;
 	GList *msn_list = NULL;
+	GList *skype_list = NULL;
 	GList *jabber_list = NULL;
 	GList *groupwise_list = NULL;
 	IMAddress *address;
@@ -204,10 +205,14 @@
 			im_field_id = E_CONTACT_IM_AIM;
 			im_attr_list = &aim_list;
 		}
-		else if ( g_str_equal (address->service, "msn")) {
+		else if (g_str_equal (address->service, "msn")) {
 			im_field_id = E_CONTACT_IM_MSN;
 			im_attr_list = &msn_list;
 		}
+		else if (g_str_equal (address->service, "skype")) {
+			im_field_id = E_CONTACT_IM_SKYPE;
+			im_attr_list = &skype_list;
+		}
 		else if (g_str_equal (address->service, "yahoo")) {
 			im_field_id = E_CONTACT_IM_YAHOO;
 			im_attr_list = &yahoo_list;
@@ -240,6 +245,7 @@
 	e_contact_set_attributes (contact, E_CONTACT_IM_YAHOO, yahoo_list);
 	e_contact_set_attributes (contact, E_CONTACT_IM_GADUGADU, gadugadu_list);
 	e_contact_set_attributes (contact, E_CONTACT_IM_MSN, msn_list);
+	e_contact_set_attributes (contact, E_CONTACT_IM_SKYPE, skype_list);
 	e_contact_set_attributes (contact, E_CONTACT_IM_GROUPWISE, groupwise_list);
 
 	free_attr_list (aim_list);
@@ -248,6 +254,7 @@
 	free_attr_list (yahoo_list);
 	free_attr_list (gadugadu_list);
 	free_attr_list (msn_list);
+	free_attr_list (skype_list);
 	free_attr_list (groupwise_list);
 }
 
@@ -280,6 +287,7 @@
 	append_ims_to_list (&im_list, contact, "gadu-gadu", E_CONTACT_IM_GADUGADU);
 	append_ims_to_list (&im_list, contact, "icq", E_CONTACT_IM_ICQ);
 	append_ims_to_list (&im_list, contact, "msn", E_CONTACT_IM_MSN);
+	append_ims_to_list (&im_list, contact, "skype", E_CONTACT_IM_SKYPE);
 	append_ims_to_list (&im_list, contact, "jabber", E_CONTACT_IM_JABBER);
 	append_ims_to_list (&im_list, contact, "nov", E_CONTACT_IM_GROUPWISE);
 	if (im_list)
@@ -3457,6 +3465,7 @@
 	fields = g_list_append (fields, g_strdup (e_contact_field_name (E_CONTACT_IM_YAHOO)));
 	fields = g_list_append (fields, g_strdup (e_contact_field_name (E_CONTACT_IM_GADUGADU)));
 	fields = g_list_append (fields, g_strdup (e_contact_field_name (E_CONTACT_IM_MSN)));
+	fields = g_list_append (fields, g_strdup (e_contact_field_name (E_CONTACT_IM_SKYPE)));
 	fields = g_list_append (fields, g_strdup (e_contact_field_name (E_CONTACT_IM_JABBER)));
 	fields = g_list_append (fields, g_strdup (e_contact_field_name (E_CONTACT_IM_GROUPWISE)));
 	fields = g_list_append (fields, g_strdup (e_contact_field_name (E_CONTACT_ADDRESS_WORK)));

Modified: trunk/addressbook/libebook/e-contact.c
==============================================================================
--- trunk/addressbook/libebook/e-contact.c	(original)
+++ trunk/addressbook/libebook/e-contact.c	Mon Dec  8 09:04:26 2008
@@ -273,7 +273,15 @@
 	/* Geo information */
 	STRUCT_FIELD	(E_CONTACT_GEO,  EVC_GEO, "geo",  N_("Geographic Information"),  FALSE, geo_getter, geo_setter, e_contact_geo_get_type),
 
-	MULTI_LIST_FIELD     (E_CONTACT_TEL,      EVC_TEL,        "phone",      N_("Telephone"),      FALSE)
+	MULTI_LIST_FIELD     (E_CONTACT_TEL,      EVC_TEL,        "phone",      N_("Telephone"),      FALSE),
+
+	ATTR_TYPE_STR_FIELD (E_CONTACT_IM_SKYPE_HOME_1,  EVC_X_SKYPE,  "im_skype_home_1",  N_("Skype Home Name 1"),         FALSE, "HOME", 0),
+	ATTR_TYPE_STR_FIELD (E_CONTACT_IM_SKYPE_HOME_2,  EVC_X_SKYPE,  "im_skype_home_2",  N_("Skype Home Name 2"),         FALSE, "HOME", 1),
+	ATTR_TYPE_STR_FIELD (E_CONTACT_IM_SKYPE_HOME_3,  EVC_X_SKYPE,  "im_skype_home_3",  N_("Skype Home Name 3"),         FALSE, "HOME", 2),
+	ATTR_TYPE_STR_FIELD (E_CONTACT_IM_SKYPE_WORK_1,  EVC_X_SKYPE,  "im_skype_work_1",  N_("Skype Work Name 1"),         FALSE, "WORK", 0),
+	ATTR_TYPE_STR_FIELD (E_CONTACT_IM_SKYPE_WORK_2,  EVC_X_SKYPE,  "im_skype_work_2",  N_("Skype Work Name 2"),         FALSE, "WORK", 1),
+	ATTR_TYPE_STR_FIELD (E_CONTACT_IM_SKYPE_WORK_3,  EVC_X_SKYPE,  "im_skype_work_3",  N_("Skype Work Name 3"),         FALSE, "WORK", 2),
+	MULTI_LIST_FIELD (E_CONTACT_IM_SKYPE,  	  EVC_X_SKYPE,     "im_skype",     N_("Skype Name List"),         FALSE)
 };
 
 #undef LIST_ELEM_STR_FIELD

Modified: trunk/addressbook/libebook/e-contact.h
==============================================================================
--- trunk/addressbook/libebook/e-contact.h	(original)
+++ trunk/addressbook/libebook/e-contact.h	Mon Dec  8 09:04:26 2008
@@ -199,6 +199,14 @@
 
 	E_CONTACT_TEL, /* list of strings */
 
+	E_CONTACT_IM_SKYPE_HOME_1,     /* Synthetic string field */
+	E_CONTACT_IM_SKYPE_HOME_2,     /* Synthetic string field */
+	E_CONTACT_IM_SKYPE_HOME_3,     /* Synthetic string field */
+	E_CONTACT_IM_SKYPE_WORK_1,     /* Synthetic string field */
+	E_CONTACT_IM_SKYPE_WORK_2,     /* Synthetic string field */
+	E_CONTACT_IM_SKYPE_WORK_3,     /* Synthetic string field */
+	E_CONTACT_IM_SKYPE,    	 	/* Multi-valued */
+
 	E_CONTACT_FIELD_LAST,
 	E_CONTACT_FIELD_FIRST        = E_CONTACT_UID,
 

Modified: trunk/addressbook/libebook/e-vcard.h
==============================================================================
--- trunk/addressbook/libebook/e-vcard.h	(original)
+++ trunk/addressbook/libebook/e-vcard.h	Mon Dec  8 09:04:26 2008
@@ -81,6 +81,7 @@
 #define EVC_X_LIST          	"X-EVOLUTION-LIST"
 #define EVC_X_MANAGER       	"X-EVOLUTION-MANAGER"
 #define EVC_X_MSN           	"X-MSN"
+#define EVC_X_SKYPE           	"X-SKYPE"
 #define EVC_X_RADIO         	"X-EVOLUTION-RADIO"
 #define EVC_X_SPOUSE        	"X-EVOLUTION-SPOUSE"
 #define EVC_X_TELEX         	"X-EVOLUTION-TELEX"
@@ -88,7 +89,7 @@
 #define EVC_X_VIDEO_URL     	"X-EVOLUTION-VIDEO-URL"
 #define EVC_X_WANTS_HTML    	"X-MOZILLA-HTML"
 #define EVC_X_YAHOO         	"X-YAHOO"
-#define EVC_X_GADUGADU        "X-GADUGADU"
+#define EVC_X_GADUGADU          "X-GADUGADU"
 #define EVC_X_GROUPWISE     	"X-GROUPWISE"
 #define EVC_X_BOOK_URI     	"X-EVOLUTION-BOOK-URI"
 

Modified: trunk/addressbook/libedata-book/e-book-backend-sexp.c
==============================================================================
--- trunk/addressbook/libedata-book/e-book-backend-sexp.c	(original)
+++ trunk/addressbook/libedata-book/e-book-backend-sexp.c	Mon Dec  8 09:04:26 2008
@@ -76,6 +76,13 @@
 }
 
 static gboolean
+compare_im_skype (EContact *contact, const char *str,
+		char *(*compare)(const char*, const char*))
+{
+	return compare_im (contact, str, compare, E_CONTACT_IM_SKYPE);
+}
+
+static gboolean
 compare_im_icq (EContact *contact, const char *str,
 		char *(*compare)(const char*, const char*))
 {
@@ -266,6 +273,7 @@
 	NORMAL_PROP ( E_CONTACT_NOTE, "note"),
 	LIST_PROP ( "im_aim",    compare_im_aim ),
 	LIST_PROP ( "im_msn",    compare_im_msn ),
+	LIST_PROP ( "im_skype",    compare_im_skype ),
 	LIST_PROP ( "im_icq",    compare_im_icq ),
 	LIST_PROP ( "im_jabber", compare_im_jabber ),
 	LIST_PROP ( "im_yahoo",  compare_im_yahoo ),



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