Fixes NB#124742, duplicate entries inserted in addressbook when same address is in...
authorSergio Villar Senin <svillar@igalia.com>
Thu, 25 Jun 2009 10:02:17 +0000 (12:02 +0200)
committerSergio Villar Senin <svillar@igalia.com>
Thu, 25 Jun 2009 10:39:42 +0000 (12:39 +0200)
Updated check_names() calls to the new API
Updated Diablo version to the new addressbook API

src/hildon2/modest-address-book.c
src/hildon2/modest-msg-edit-window.c
src/maemo/modest-address-book.c
src/maemo/modest-msg-edit-window.c

index 30ccccb..f3e8fe4 100644 (file)
@@ -740,8 +740,6 @@ modest_address_book_check_names (ModestRecptEditor *recpt_editor,
        current_start = start_indexes;
        current_end = end_indexes;
        buffer = modest_recpt_editor_get_buffer (recpt_editor);
-       if (address_list)
-               *address_list = NULL;
 
        while (current_start != NULL) {
                gchar *address;
index d77a975..58325e6 100644 (file)
@@ -3423,7 +3423,8 @@ gboolean
 modest_msg_edit_window_check_names (ModestMsgEditWindow *window, gboolean add_to_addressbook)
 {
        ModestMsgEditWindowPrivate *priv = NULL;
-       
+       GSList *address_list = NULL;
+
        g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window), FALSE);
        priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
 
@@ -3436,26 +3437,28 @@ modest_msg_edit_window_check_names (ModestMsgEditWindow *window, gboolean add_to
                return FALSE;
        }
 
+       /* Check names */
        g_object_ref (window);
-/*     if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->to_field),  add_to_addressbook)) { */
-       if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->to_field),  NULL)) {
+       if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->to_field),  &address_list)) {
                modest_recpt_editor_grab_focus (MODEST_RECPT_EDITOR (priv->to_field));
                g_object_unref (window);
                return FALSE;
        }
-/*     if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->cc_field),  add_to_addressbook)) { */
-       if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->cc_field),  NULL)) {
+       if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->cc_field),  &address_list)) {
                modest_recpt_editor_grab_focus (MODEST_RECPT_EDITOR (priv->cc_field));
                g_object_unref (window);
                return FALSE;
        }
-/*     if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->bcc_field), add_to_addressbook)) { */
-       if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->bcc_field), NULL)) {
+       if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->bcc_field), &address_list)) {
                modest_recpt_editor_grab_focus (MODEST_RECPT_EDITOR (priv->bcc_field));
                g_object_unref (window);
                return FALSE;
        }
 
+       /* Add contacts to address book */
+       if (address_list)
+               modest_address_book_add_address_list (address_list);
+
        if (!modest_recpt_editor_has_focus (MODEST_RECPT_EDITOR (priv->cc_field)) &&
            !modest_recpt_editor_has_focus (MODEST_RECPT_EDITOR (priv->bcc_field)))
                modest_recpt_editor_grab_focus (MODEST_RECPT_EDITOR (priv->to_field));
index a34123b..2bf3808 100644 (file)
@@ -817,10 +817,11 @@ modest_address_book_check_names (ModestRecptEditor *recpt_editor,
                /* so, it seems a valid address */
                /* note: adding it the to the addressbook if it did not exist yet,
                 * and adding it to the recent_list */
-               if (result && store_address)
-                       add_to_address_book (address);
+               if (result && address_list && store_address)
+                       *address_list = g_slist_prepend (*address_list, address);
+               else
+                       g_free (address);
 
-               g_free (address);
                if (result == FALSE)
                        break;
 
@@ -828,6 +829,10 @@ modest_address_book_check_names (ModestRecptEditor *recpt_editor,
                current_end = g_slist_next (current_end);
        }
 
+       /* Remove dup's */
+       if (address_list && *address_list)
+               *address_list = modest_text_utils_remove_duplicate_addresses_list (*address_list);
+
        if (current_start == NULL) {
                gtk_text_buffer_get_end_iter (buffer, &end_iter);
                gtk_text_buffer_place_cursor (buffer, &end_iter);
index 6e7907e..7f15f1e 100644 (file)
@@ -3178,7 +3178,8 @@ gboolean
 modest_msg_edit_window_check_names (ModestMsgEditWindow *window, gboolean add_to_addressbook)
 {
        ModestMsgEditWindowPrivate *priv = NULL;
-       
+       GSList *address_list = NULL;
+
        g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window), FALSE);
        priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
 
@@ -3191,25 +3192,32 @@ modest_msg_edit_window_check_names (ModestMsgEditWindow *window, gboolean add_to
                return FALSE;
        }
 
-/*     if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->to_field),  add_to_addressbook)) { */
-       if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->to_field),  NULL)) {
+       /* Check names */
+       g_object_ref (window);
+       if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->to_field),  &address_list)) {
                modest_recpt_editor_grab_focus (MODEST_RECPT_EDITOR (priv->to_field));
+               g_object_unref (window);
                return FALSE;
        }
-/*     if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->cc_field),  add_to_addressbook)) { */
-       if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->cc_field),  NULL)) {
+       if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->cc_field),  &address_list)) {
                modest_recpt_editor_grab_focus (MODEST_RECPT_EDITOR (priv->cc_field));
+               g_object_unref (window);
                return FALSE;
        }
-/*     if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->bcc_field), add_to_addressbook)) { */
-       if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->bcc_field), NULL)) {
+       if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->bcc_field), &address_list)) {
                modest_recpt_editor_grab_focus (MODEST_RECPT_EDITOR (priv->bcc_field));
+               g_object_unref (window);
                return FALSE;
        }
 
+       /* Add contacts to address book */
+       if (address_list)
+               modest_address_book_add_address_list (address_list);
+
        if (!modest_recpt_editor_has_focus (MODEST_RECPT_EDITOR (priv->cc_field)) &&
            !modest_recpt_editor_has_focus (MODEST_RECPT_EDITOR (priv->bcc_field)))
                modest_recpt_editor_grab_focus (MODEST_RECPT_EDITOR (priv->to_field));
+       g_object_unref (window);
 
        return TRUE;