From: Jose Dapena Paz Date: Fri, 3 Apr 2009 16:20:46 +0000 (+0000) Subject: Added new method modest_text_utils_simplifies_recipients X-Git-Tag: git_migration_finished~129 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=293a875c3fe16bf77fef9f862f0eeedb9ef13175 Added new method modest_text_utils_simplifies_recipients pmo-trunk-r8604 --- diff --git a/src/modest-text-utils.c b/src/modest-text-utils.c index 93e51ee..2d30511 100644 --- a/src/modest-text-utils.c +++ b/src/modest-text-utils.c @@ -1837,6 +1837,17 @@ modest_text_utils_buffer_selection_is_valid (GtkTextBuffer *buffer) return result; } +static void +remove_quotes (gchar **quotes) +{ + if (g_str_has_prefix (*quotes, "\"") && g_str_has_suffix (*quotes, "\"")) { + gchar *result; + result = g_strndup ((*quotes)+1, strlen (*quotes) - 2); + g_free (*quotes); + *quotes = result; + } +} + gchar * modest_text_utils_escape_mnemonics (const gchar *text) { @@ -1856,3 +1867,53 @@ modest_text_utils_escape_mnemonics (const gchar *text) return g_string_free (result, FALSE); } + +gchar * +modest_text_utils_simplify_recipients (const gchar *recipients) +{ + GSList *addresses, *node; + GString *result; + gboolean is_first = TRUE; + + if (recipients == NULL) + return g_strdup (""); + + addresses = modest_text_utils_split_addresses_list (recipients); + result = g_string_new (""); + + for (node = addresses; node != NULL; node = g_slist_next (node)) { + const gchar *address = (const gchar *) node->data; + gchar *left_limit, *right_limit; + left_limit = strstr (address, "<"); + right_limit = g_strrstr (address, ">"); + + if (is_first) + is_first = FALSE; + else + result = g_string_append (result, ", "); + + if ((left_limit == NULL)||(right_limit == NULL)|| (left_limit > right_limit)) { + result = g_string_append (result, address); + } else { + gchar *name_side; + gchar *email_side; + name_side = g_strndup (address, left_limit - address); + name_side = g_strstrip (name_side); + remove_quotes (&name_side); + email_side = get_email_from_address (address); + if (name_side && email_side && !strcmp (name_side, email_side)) { + result = g_string_append (result, email_side); + } else { + result = g_string_append (result, address); + } + g_free (name_side); + g_free (email_side); + } + + } + g_slist_foreach (addresses, (GFunc)g_free, NULL); + g_slist_free (addresses); + + return g_string_free (result, FALSE); + +} diff --git a/src/modest-text-utils.h b/src/modest-text-utils.h index f2d9659..f10562f 100644 --- a/src/modest-text-utils.h +++ b/src/modest-text-utils.h @@ -474,5 +474,18 @@ gboolean modest_text_utils_buffer_selection_is_valid (GtkTextBuffer *buffer) */ gchar *modest_text_utils_escape_mnemonics (const gchar *text); +/** + * modest_text_utils_simplify_recipients: + * @recipients: a list of recipients + * + * returns a list of simplified recipients: + * * a@b converted to a@b + * * NULL converted to "" + * + * It's mainly intended for printing in screen addresses, but it can + * also be used for reply/forward. + */ +gchar *modest_text_utils_simplify_recipients (const gchar *recipient); + #endif /* __MODEST_TEXT_UTILS_H__ */