From: Sergio Villar Senin Date: Wed, 4 Nov 2009 16:47:06 +0000 (+0100) Subject: Refactored the code that joins the addresses in a single string X-Git-Tag: 3.1.13~8 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=a31e3b7e2d3779420c9e0b62fc0ffba214137f0e;hp=6aa065e1ca72b0f503eda2560453dfdd2bed9e4e Refactored the code that joins the addresses in a single string Fixes NB#144914 (2/8) --- diff --git a/src/modest-text-utils.c b/src/modest-text-utils.c index fef874c..db00b31 100644 --- a/src/modest-text-utils.c +++ b/src/modest-text-utils.c @@ -704,6 +704,48 @@ modest_text_utils_split_addresses_list (const gchar *addresses) return head; } +gchar * +modest_text_utils_join_addresses (const gchar *from, + const gchar *to, + const gchar *cc, + const gchar *bcc) +{ + GString *buffer; + gboolean add_separator = FALSE; + + buffer = g_string_new (""); + + if (from && strlen (from)) { + buffer = g_string_append (buffer, from); + add_separator = TRUE; + } + if (to && strlen (to)) { + if (add_separator) + buffer = g_string_append (buffer, "; "); + else + add_separator = TRUE; + + buffer = g_string_append (buffer, to); + } + if (cc && strlen (cc)) { + if (add_separator) + buffer = g_string_append (buffer, "; "); + else + add_separator = TRUE; + + buffer = g_string_append (buffer, cc); + } + if (bcc && strlen (bcc)) { + if (add_separator) + buffer = g_string_append (buffer, "; "); + else + add_separator = TRUE; + + buffer = g_string_append (buffer, bcc); + } + + return g_string_free (buffer, FALSE); +} void modest_text_utils_address_range_at_position (const gchar *recipients_list, diff --git a/src/modest-text-utils.h b/src/modest-text-utils.h index 971bd23..59c0714 100644 --- a/src/modest-text-utils.h +++ b/src/modest-text-utils.h @@ -397,6 +397,21 @@ gboolean modest_text_utils_validate_recipient (const gchar *recipient, **/ GSList *modest_text_utils_split_addresses_list (const gchar *addresses); +/** + * modest_text_utils_join_addresses: + * @from: comma separated string of addresses + * @to: comma separated string of addresses + * @cc: comma separated string of addresses + * @bcc: comma separated string of addresses + * + * joins all the addresses in a single comma-separated string + * + * Returns: a newly allocated string with a list of addresses + **/ +gchar *modest_text_utils_join_addresses (const gchar *from, + const gchar *to, + const gchar *cc, + const gchar *bcc); /** * modest_text_utils_get_addresses_indexes: diff --git a/src/modest-tny-msg.c b/src/modest-tny-msg.c index c60af10..2399070 100644 --- a/src/modest-tny-msg.c +++ b/src/modest-tny-msg.c @@ -1330,52 +1330,19 @@ modest_tny_msg_header_get_all_recipients_list (TnyHeader *header) { GSList *recipients = NULL; gchar *from = NULL, *to = NULL, *cc = NULL, *bcc = NULL; - gchar *after_remove; - GString *buffer; - gboolean add_separator = TRUE; + gchar *after_remove, *joined; if (header == NULL) return NULL; - buffer = g_string_new (""); - 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) { - buffer = g_string_append (buffer, from); - add_separator = TRUE; - } - if (to) { - if (add_separator) - buffer = g_string_append (buffer, "; "); - else - add_separator = TRUE; - - buffer = g_string_append (buffer, to); - } - if (cc) { - if (add_separator) - buffer = g_string_append (buffer, "; "); - else - add_separator = TRUE; - - buffer = g_string_append (buffer, cc); - } - if (bcc) { - if (add_separator) - buffer = g_string_append (buffer, "; "); - else - add_separator = TRUE; - - buffer = g_string_append (buffer, bcc); - } - - after_remove = modest_text_utils_remove_duplicate_addresses (buffer->str); - g_string_free (buffer, TRUE); + joined = modest_text_utils_join_addresses (from, to, cc, bcc); + after_remove = modest_text_utils_remove_duplicate_addresses (joined); + g_free (joined); recipients = modest_text_utils_split_addresses_list (after_remove); g_free (after_remove);