X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-text-utils.c;h=2b7cbb5abee79cbd60f180ae1dc9a97a1150a095;hp=6d0b050e1affcb6bc531986fcbb19885147ba93a;hb=28fbc4e0d124d6c3d41cfd970ad699fe48555182;hpb=df8ae49c96a166a2287cf7488335acb847303a55 diff --git a/src/modest-text-utils.c b/src/modest-text-utils.c index 6d0b050..2b7cbb5 100644 --- a/src/modest-text-utils.c +++ b/src/modest-text-utils.c @@ -416,6 +416,9 @@ modest_text_utils_remove_duplicate_addresses (const gchar *address_list) g_slist_foreach (addresses, (GFunc)g_free, NULL); g_slist_free (addresses); + if (new_list == NULL) + new_list = g_strdup (""); + return new_list; } @@ -1713,11 +1716,11 @@ modest_text_utils_get_display_size (guint64 size) else if (KB <= size && size < 100 * KB) return g_strdup_printf (_FM("sfil_li_size_1kb_99kb"), (int) size / KB); else if (100*KB <= size && size < MB) - return g_strdup_printf (_FM("sfil_li_size_100kb_1mb"), (float) size / MB); + return g_strdup_printf (_FM("sfil_li_size_100kb_1mb"), (int) size / KB); else if (MB <= size && size < 10*MB) return g_strdup_printf (_FM("sfil_li_size_1mb_10mb"), (float) size / MB); else if (10*MB <= size && size < GB) - return g_strdup_printf (_FM("sfil_li_size_10mb_1gb"), (int) size / MB); + return g_strdup_printf (_FM("sfil_li_size_10mb_1gb"), (float) size / MB); else return g_strdup_printf (_FM("sfil_li_size_1gb_or_greater"), (float) size / GB); } @@ -1952,3 +1955,39 @@ modest_text_utils_simplify_recipients (const gchar *recipients) return g_string_free (result, FALSE); } + +GSList * +modest_text_utils_remove_duplicate_addresses_list (GSList *address_list) +{ + GSList *new_list, *iter; + GHashTable *table; + + g_return_val_if_fail (address_list, NULL); + + table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); + + new_list = address_list; + iter = address_list; + while (iter) { + const gchar* address = (const gchar*)iter->data; + + /* We need only the email to just compare it and not + the full address which would make "a " + different from "a@a.com" */ + const gchar *email = get_email_from_address (address); + + /* ignore the address if already seen */ + if (g_hash_table_lookup (table, email) == 0) { + g_hash_table_insert (table, (gchar*)email, GINT_TO_POINTER(1)); + iter = g_slist_next (iter); + } else { + GSList *tmp = g_slist_next (iter); + new_list = g_slist_delete_link (new_list, iter); + iter = tmp; + } + } + + g_hash_table_unref (table); + + return new_list; +}