X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-text-utils.c;h=0a84acf73403d0b7255a61cc68599cb2ea10f33d;hp=0bcc66c574f7977b4a602aa56c5ec22df74f98c5;hb=dd00071e3b3dba6e7d35f7142ba61a89c8f205c3;hpb=7682620c7cd97669d2d99283c038c63433c1d66d diff --git a/src/modest-text-utils.c b/src/modest-text-utils.c index 0bcc66c..0a84acf 100644 --- a/src/modest-text-utils.c +++ b/src/modest-text-utils.c @@ -48,6 +48,7 @@ #define SENT_STRING _("Sent:") #define TO_STRING _("To:") #define SUBJECT_STRING _("Subject:") +#define EMPTY_STRING "" /* * we need these regexps to find URLs in plain text e-mails @@ -121,7 +122,6 @@ modest_text_utils_quote (const gchar *text, g_return_val_if_fail (text, NULL); g_return_val_if_fail (content_type, NULL); - g_return_val_if_fail (from, NULL); cited = cite (sent_date, from); @@ -148,7 +148,6 @@ modest_text_utils_cite (const gchar *text, g_return_val_if_fail (text, NULL); g_return_val_if_fail (content_type, NULL); - g_return_val_if_fail (from, NULL); tmp = cite (sent_date, from); retval = g_strdup_printf ("%s%s\n", tmp, text); @@ -178,9 +177,7 @@ modest_text_utils_inline (const gchar *text, g_return_val_if_fail (text, NULL); g_return_val_if_fail (content_type, NULL); - g_return_val_if_fail (from, NULL); g_return_val_if_fail (text, NULL); - g_return_val_if_fail (to, NULL); modest_text_utils_strftime (sent_str, 100, "%c", sent_date); @@ -193,10 +190,10 @@ modest_text_utils_inline (const gchar *text, return g_strdup_printf (format, FORWARD_STRING, - FROM_STRING, from, + FROM_STRING, (from) ? from : EMPTY_STRING, SENT_STRING, sent_str, - TO_STRING, to, - SUBJECT_STRING, subject, + TO_STRING, (to) ? to : EMPTY_STRING, + SUBJECT_STRING, (subject) ? subject : EMPTY_STRING, text); } @@ -206,17 +203,14 @@ modest_text_utils_inline (const gchar *text, gsize modest_text_utils_strftime(char *s, gsize max, const char *fmt, time_t timet) { - /* only since Gtk 2.10 - * - *static GDate date; - *g_date_set_time_t (&date, timet); - *return g_date_strftime (s, max, fmt, (const GDate*) &date); - */ - - struct tm *time_tm; - time_tm = localtime (&timet); - - return strftime (s, max, fmt, time_tm); + static GDate date; + +#if MODEST_PLATFORM_ID==1 /* gtk */ + g_date_set_time_t (&date, timet); +#elif MODEST_PLATFORM_ID==2 /* hildon (maemo) */ + g_date_set_time (&date, (GTime) timet); +#endif + return g_date_strftime (s, max, fmt, (const GDate*) &date); } gchar * @@ -339,6 +333,50 @@ modest_text_utils_convert_to_html (const gchar *data) return g_string_free (html, FALSE); } +GSList * +modest_text_utils_split_addresses_list (const gchar *addresses) +{ + gchar *current, *start, *last_blank; + GSList *result = NULL; + + start = (gchar *) addresses; + current = start; + last_blank = start; + + while (*current != '\0') { + if ((start == current)&&((*current == ' ')||(*current == ','))) { + start++; + last_blank = current; + } else if (*current == ',') { + gchar *new_address = NULL; + new_address = g_strndup (start, current - last_blank); + result = g_slist_prepend (result, new_address); + start = current + 1; + last_blank = start; + } else if (*current == '\"') { + if (current == start) { + current++; + start++; + } + while ((*current != '\"')&&(*current != '\0')) + current++; + } + + current++; + } + + if (start != current) { + gchar *new_address = NULL; + new_address = g_strndup (start, current - last_blank); + result = g_slist_prepend (result, new_address); + } + + result = g_slist_reverse (result); + return result; + +} + + /* ******************************************************************* */ /* ************************* UTILIY FUNCTIONS ************************ */ /* ******************************************************************* */ @@ -493,7 +531,9 @@ cite (const time_t sent_date, const gchar *from) /* format sent_date */ modest_text_utils_strftime (sent_str, 100, "%c", sent_date); - return g_strdup_printf (N_("On %s, %s wrote:\n"), sent_str, from); + return g_strdup_printf (N_("On %s, %s wrote:\n"), + sent_str, + (from) ? from : EMPTY_STRING); } @@ -667,7 +707,8 @@ hyperlinkify_plain_text (GString *txt) /* the prefix is NULL: use the one that is already there */ repl = g_strdup_printf ("%s", - match->prefix ? match->prefix : "", url, url); + match->prefix ? match->prefix : EMPTY_STRING, + url, url); /* replace the old thing with our hyperlink * replacement thing */ @@ -769,55 +810,32 @@ modest_text_utils_utf8_strcmp (const gchar* s1, const gchar *s2, gboolean insens return result; } -static GHashTable* -get_display_date_cache (void) -{ - return modest_cache_mgr_get_cache (modest_runtime_get_cache_mgr (), - MODEST_CACHE_MGR_CACHE_TYPE_DATE_STRING); -} - - -const gchar* +gchar* modest_text_utils_get_display_date (time_t date) { - static GHashTable *date_cache = NULL; - time_t now; const guint BUF_SIZE = 64; gchar date_buf[BUF_SIZE]; gchar now_buf [BUF_SIZE]; - gchar* cached_val; - if (G_UNLIKELY(!date_cache)) - date_cache = get_display_date_cache (); - - cached_val = g_hash_table_lookup (date_cache, &date); - if (cached_val) - return cached_val; - now = time (NULL); - - /* get today's date */ - modest_text_utils_strftime (date_buf, BUF_SIZE, "%x", date); - modest_text_utils_strftime (now_buf, BUF_SIZE, "%x", now); - /* today */ + modest_text_utils_strftime (date_buf, BUF_SIZE, "%x", date); + modest_text_utils_strftime (now_buf, BUF_SIZE, "%x", now); /* today */ + /* if this is today, get the time instead of the date */ if (strcmp (date_buf, now_buf) == 0) modest_text_utils_strftime (date_buf, BUF_SIZE, _("%X"), date); - - cached_val = g_strdup(date_buf); - g_hash_table_insert (date_cache, (gpointer)&date, (gpointer)cached_val); - return cached_val; + return g_strdup(date_buf); } gboolean modest_text_utils_validate_email_address (const gchar *email_address) { int count = 0; - const gchar *c, *domain; + const gchar *c = NULL, *domain = NULL; static gchar *rfc822_specials = "()<>@,;:\\\"[]"; /* first we validate the name portion (name@domain) */