Moved all_recipients_list to be available in modest tny msg.
authorJose Dapena Paz <jdapena@igalia.com>
Wed, 26 Nov 2008 11:55:49 +0000 (11:55 +0000)
committerJose Dapena Paz <jdapena@igalia.com>
Wed, 26 Nov 2008 11:55:49 +0000 (11:55 +0000)
pmo-trunk-r6413

src/hildon2/modest-msg-view-window.c
src/modest-tny-msg.c
src/modest-tny-msg.h

index d7c6b7f..547eff2 100644 (file)
@@ -3014,43 +3014,6 @@ on_fetch_image (ModestMsgView *msgview,
        return TRUE;;
 }
 
        return TRUE;;
 }
 
-static GSList *
-all_recipients_list (TnyMsg *msg)
-{
-       TnyHeader *header = NULL;
-       GSList *recipients = NULL;
-       gchar *from = NULL, *to = NULL, *cc = NULL, *bcc = NULL;
-
-       if (msg == NULL)
-               return NULL;
-
-       header = tny_msg_get_header (msg);
-       if (header == NULL)
-               return NULL;
-
-       from = tny_header_dup_from (header);
-       to = tny_header_dup_to (header);
-       cc = tny_header_dup_cc (header);
-       bcc = tny_header_dup_bcc (header);
-
-       recipients = NULL;
-       if (from)
-               recipients = g_slist_concat (recipients, modest_text_utils_split_addresses_list (from));
-       if (to)
-               recipients = g_slist_concat (recipients, modest_text_utils_split_addresses_list (to));
-       if (cc)
-               recipients = g_slist_concat (recipients, modest_text_utils_split_addresses_list (cc));
-       if (bcc)
-               recipients = g_slist_concat (recipients, modest_text_utils_split_addresses_list (bcc));
-
-       g_free (from);
-       g_free (to);
-       g_free (cc);
-       g_free (bcc);
-
-       return recipients;
-}
-
 void
 modest_msg_view_window_add_to_contacts (ModestMsgViewWindow *self)
 {
 void
 modest_msg_view_window_add_to_contacts (ModestMsgViewWindow *self)
 {
@@ -3058,10 +3021,11 @@ modest_msg_view_window_add_to_contacts (ModestMsgViewWindow *self)
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self);
        GSList *recipients = NULL;
        TnyMsg *msg = NULL;
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self);
        GSList *recipients = NULL;
        TnyMsg *msg = NULL;
+       gboolean contacts_to_add = FALSE;
 
        msg = tny_msg_view_get_msg (TNY_MSG_VIEW (priv->msg_view));
        if (msg == NULL) return;
 
        msg = tny_msg_view_get_msg (TNY_MSG_VIEW (priv->msg_view));
        if (msg == NULL) return;
-       recipients = all_recipients_list (msg);
+       recipients = modest_tny_msg_get_all_recipients_list (msg);
 
        if (recipients != NULL) {
                GtkWidget *picker_dialog;
 
        if (recipients != NULL) {
                GtkWidget *picker_dialog;
@@ -3069,9 +3033,6 @@ modest_msg_view_window_add_to_contacts (ModestMsgViewWindow *self)
                GSList *node;
                gchar *selected;
 
                GSList *node;
                gchar *selected;
 
-               picker_dialog = hildon_picker_dialog_new (GTK_WINDOW (self));
-               gtk_window_set_title (GTK_WINDOW (picker_dialog), _("mcen_me_viewer_addtocontacts"));
-
                selector = hildon_touch_selector_new_text ();
                for (node = recipients; node != NULL; node = g_slist_next (node)) {
                        if (!modest_address_book_has_address ((const gchar *) node->data)) {
                selector = hildon_touch_selector_new_text ();
                for (node = recipients; node != NULL; node = g_slist_next (node)) {
                        if (!modest_address_book_has_address ((const gchar *) node->data)) {
@@ -3081,16 +3042,27 @@ modest_msg_view_window_add_to_contacts (ModestMsgViewWindow *self)
                        }
                }
 
                        }
                }
 
-               hildon_picker_dialog_set_selector (HILDON_PICKER_DIALOG (picker_dialog), 
-                                                  HILDON_TOUCH_SELECTOR (selector));
+               if (contacts_to_add) {
+
+                       picker_dialog = hildon_picker_dialog_new (GTK_WINDOW (self));
+                       gtk_window_set_title (GTK_WINDOW (picker_dialog), _("mcen_me_viewer_addtocontacts"));
+
+                       hildon_picker_dialog_set_selector (HILDON_PICKER_DIALOG (picker_dialog), 
+                                                          HILDON_TOUCH_SELECTOR (selector));
+                       
+                       gtk_dialog_run (GTK_DIALOG (picker_dialog));
+                       selected = hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (selector));
+                       gtk_widget_destroy (picker_dialog);
+
+                       if (selected)
+                               modest_address_book_add_address (selected);
+                       g_free (selected);
 
 
-               gtk_dialog_run (GTK_DIALOG (picker_dialog));
-               selected = hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (selector));
-               gtk_widget_destroy (picker_dialog);
+               } else {
 
 
-               if (selected)
-                       modest_address_book_add_address (selected);
-               g_free (selected);
+                       g_object_unref (selector);
+
+               }
        }
        
        if (recipients) {g_slist_foreach (recipients, (GFunc) g_free, NULL); g_slist_free (recipients);}
        }
        
        if (recipients) {g_slist_foreach (recipients, (GFunc) g_free, NULL); g_slist_free (recipients);}
index 2790914..40ecc2f 100644 (file)
@@ -957,3 +957,41 @@ modest_tny_msg_estimate_size (const gchar *plain_body, const gchar *html_body,
 
        return result;
 }
 
        return result;
 }
+
+GSList *
+modest_tny_msg_get_all_recipients_list (TnyMsg *msg)
+{
+       TnyHeader *header = NULL;
+       GSList *recipients = NULL;
+       gchar *from = NULL, *to = NULL, *cc = NULL, *bcc = NULL;
+
+       if (msg == NULL)
+               return NULL;
+
+       header = tny_msg_get_header (msg);
+       if (header == NULL)
+               return NULL;
+
+       from = tny_header_dup_from (header);
+       to = tny_header_dup_to (header);
+       cc = tny_header_dup_cc (header);
+       bcc = tny_header_dup_bcc (header);
+
+       recipients = NULL;
+       if (from)
+               recipients = g_slist_concat (recipients, modest_text_utils_split_addresses_list (from));
+       if (to)
+               recipients = g_slist_concat (recipients, modest_text_utils_split_addresses_list (to));
+       if (cc)
+               recipients = g_slist_concat (recipients, modest_text_utils_split_addresses_list (cc));
+       if (bcc)
+               recipients = g_slist_concat (recipients, modest_text_utils_split_addresses_list (bcc));
+
+       g_free (from);
+       g_free (to);
+       g_free (cc);
+       g_free (bcc);
+
+       return recipients;
+}
+
index a15372b..88d4532 100644 (file)
@@ -197,4 +197,16 @@ modest_tny_msg_estimate_size (const gchar *plain_body, const gchar *html_body,
                              guint64 parts_count,
                              guint64 parts_size);
 
                              guint64 parts_count,
                              guint64 parts_size);
 
+/**
+ * modest_tny_msg_get_all_recipients_list:
+ * @msg: a #TnyMsg
+ *
+ * Obtains a list of all the addresses available in a message header.
+ *
+ * Returns: a newly allocated #GSList of strings. Caller should free strings and list.
+ */
+GSList *
+modest_tny_msg_get_all_recipients_list (TnyMsg *msg);
+
+
 #endif /* __MODEST_TNY_MSG_H__ */
 #endif /* __MODEST_TNY_MSG_H__ */