Proper insertion of resolved addresses in recpt editor
authorJose Dapena Paz <jdapena@igalia.com>
Tue, 17 Mar 2009 09:34:09 +0000 (09:34 +0000)
committerJose Dapena Paz <jdapena@igalia.com>
Tue, 17 Mar 2009 09:34:09 +0000 (09:34 +0000)
pmo-trunk-r8061

src/hildon2/modest-address-book.c
src/widgets/modest-recpt-editor.c
src/widgets/modest-recpt-editor.h

index 6a057ce..366c4e6 100644 (file)
@@ -806,6 +806,14 @@ static void clean_check_names_banner (CheckNamesInfo *info)
        }
 }
 
+void free_resolved_addresses_list (gpointer data,
+                                  gpointer ignored)
+{
+       GSList *list = (GSList *)data;
+       g_slist_foreach (list, (GFunc) g_free, NULL);
+       g_slist_free (list);
+}
+
 gboolean
 modest_address_book_check_names (ModestRecptEditor *recpt_editor, gboolean update_addressbook)
 {
@@ -875,30 +883,13 @@ modest_address_book_check_names (ModestRecptEditor *recpt_editor, gboolean updat
 
                                if (result) {
                                        gint new_length;
-                                       GSList *contact_ids_node, *resolved_addresses_node;
-
-                                       contact_ids_node = contact_ids;
-                                       resolved_addresses_node = resolved_addresses;
-
-                                       while (contact_ids_node != NULL) {
-                                               gchar *contact_id = (gchar *) contact_ids_node->data;
-                                               GSList *resolved_addresses_for_contact = 
-                                                       (GSList *) resolved_addresses_node->data;
-
-                                               /* replace string */
-                                               modest_recpt_editor_replace_with_resolved_recipient 
-                                                       (recpt_editor,
-                                                        &start_iter, &end_iter,
-                                                        resolved_addresses_for_contact, 
-                                                        contact_id);
-
-                                               g_free (contact_id);
-                                               g_slist_foreach (resolved_addresses_for_contact, (GFunc) g_free, NULL);
-                                               g_slist_free (resolved_addresses_for_contact);
-
-                                               contact_ids_node = g_slist_next (contact_ids_node);
-                                               resolved_addresses_node = g_slist_next (resolved_addresses_node);
-                                       }
+
+                                       modest_recpt_editor_replace_with_resolved_recipients (recpt_editor,
+                                                                                             &start_iter, &end_iter,
+                                                                                             resolved_addresses,
+                                                                                             contact_ids);
+                                       g_slist_foreach (contact_ids, (GFunc) g_free, NULL);
+                                       g_slist_foreach (resolved_addresses, free_resolved_addresses_list, NULL);
                                        g_slist_free (contact_ids);
                                        g_slist_free (resolved_addresses);
 
index fad88cc..b0a4bc9 100644 (file)
@@ -264,6 +264,25 @@ modest_recpt_editor_replace_with_resolved_recipient (ModestRecptEditor *recpt_ed
                                                     GtkTextIter *start, GtkTextIter *end,
                                                     GSList *email_list, const gchar * recipient_id)
 {
+       GSList *email_lists_list;
+       GSList *recipient_ids_list;
+
+       email_lists_list = g_slist_append (NULL, email_list);
+       recipient_ids_list = g_slist_append (NULL, (gpointer) recipient_id);
+
+       modest_recpt_editor_replace_with_resolved_recipients (recpt_editor, start, end,
+                                                             email_lists_list, recipient_ids_list);
+
+       g_slist_free (email_lists_list);
+       g_slist_free (recipient_ids_list);
+
+}
+
+void 
+modest_recpt_editor_replace_with_resolved_recipients (ModestRecptEditor *recpt_editor, 
+                                                    GtkTextIter *start, GtkTextIter *end,
+                                                    GSList *email_lists_list, GSList * recipient_ids_list)
+{
        ModestRecptEditorPrivate *priv;
        GtkTextBuffer *buffer;
        GtkTextTag *tag;
@@ -282,7 +301,10 @@ modest_recpt_editor_replace_with_resolved_recipient (ModestRecptEditor *recpt_ed
 
        gtk_text_buffer_delete (buffer, start, end);
 
-       if (email_list) {
+       while (email_lists_list) {
+               gchar *recipient_id = (gchar *) recipient_ids_list->data;
+               GSList *email_list = (GSList *) email_lists_list->data;
+               
          
                tag = gtk_text_buffer_create_tag (buffer, NULL, 
                                                  "underline", PANGO_UNDERLINE_SINGLE,
@@ -307,6 +329,9 @@ modest_recpt_editor_replace_with_resolved_recipient (ModestRecptEditor *recpt_ed
                                is_first_recipient = FALSE;
                        }
                }
+
+               email_lists_list = g_slist_next (email_lists_list);
+               recipient_ids_list = g_slist_next (recipient_ids_list);
        }
        g_signal_handlers_unblock_by_func (buffer, modest_recpt_editor_on_insert_text, recpt_editor);
 
index c4049d3..3cc172c 100644 (file)
@@ -76,6 +76,11 @@ void modest_recpt_editor_replace_with_resolved_recipient (ModestRecptEditor *rec
                                                          GSList *email_list, 
                                                          const gchar *recipient_id);
 
+void modest_recpt_editor_replace_with_resolved_recipients (ModestRecptEditor *recpt_editor, 
+                                                          GtkTextIter *start, GtkTextIter *end,
+                                                          GSList *email_lists_list, 
+                                                          GSList *recipient_ids_list);
+
 void modest_recpt_editor_set_field_size_group (ModestRecptEditor *recpt_editor, GtkSizeGroup *size_group);
 GtkTextBuffer *modest_recpt_editor_get_buffer (ModestRecptEditor *recpt_editor);
 void modest_recpt_editor_grab_focus (ModestRecptEditor *recpt_editor);