static gchar* modest_text_utils_quote_plain_text (const gchar *text,
const gchar *cite,
const gchar *signature,
+ GList *attachments,
int limit);
static gchar* modest_text_utils_quote_html (const gchar *text,
const gchar *cite,
const gchar *signature,
+ GList *attachments,
int limit);
static gchar* get_email_from_address (const gchar *address);
const gchar *signature,
const gchar *from,
const time_t sent_date,
+ GList *attachments,
int limit)
{
gchar *retval, *cited;
if (content_type && strcmp (content_type, "text/html") == 0)
/* TODO: extract the <body> of the HTML and pass it to
the function */
- retval = modest_text_utils_quote_html (text, cited, signature, limit);
+ retval = modest_text_utils_quote_html (text, cited, signature, attachments, limit);
else
- retval = modest_text_utils_quote_plain_text (text, cited, signature, limit);
+ retval = modest_text_utils_quote_plain_text (text, cited, signature, attachments, limit);
g_free (cited);
-
+
return retval;
}
const gchar *from,
time_t sent_date)
{
- gchar *tmp, *retval;
+ gchar *retval;
gchar *tmp_sig;
g_return_val_if_fail (text, NULL);
g_return_val_if_fail (content_type, NULL);
if (!signature)
- tmp_sig = g_strdup ("");
+ retval = g_strdup ("");
else if (!strcmp(content_type, "text/html")) {
- tmp_sig = modest_text_utils_convert_to_html_body(signature);
+ tmp_sig = g_strconcat ("\n", signature, NULL);
+ retval = modest_text_utils_convert_to_html_body(tmp_sig);
+ g_free (tmp_sig);
} else {
- tmp_sig = g_strdup (signature);
+ retval = g_strconcat ("\n", signature, NULL);
}
- tmp = cite (sent_date, from);
- retval = g_strdup_printf ("%s%s%s\n", tmp_sig, tmp, text);
- g_free (tmp_sig);
- g_free (tmp);
-
return retval;
}
+static gchar *
+forward_cite (const gchar *from,
+ const gchar *sent,
+ const gchar *to,
+ const gchar *subject)
+{
+ return g_strdup_printf ("%s\n%s %s\n%s %s\n%s %s\n%s %s\n",
+ FORWARD_STRING,
+ FROM_STRING, (from)?from:"",
+ SENT_STRING, sent,
+ TO_STRING, (to)?to:"",
+ SUBJECT_STRING, (subject)?subject:"");
+}
+
gchar *
modest_text_utils_inline (const gchar *text,
const gchar *content_type,
const gchar *subject)
{
gchar sent_str[101];
- gchar *formatted_signature;
- const gchar *plain_format = "%s%s\n%s %s\n%s %s\n%s %s\n%s %s\n\n%s";
- const gchar *html_format = \
- "%s%s<br>\n<table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\">\n" \
- "<tr><td>%s</td><td>%s</td></tr>\n" \
- "<tr><td>%s</td><td>%s</td></tr>\n" \
- "<tr><td>%s</td><td>%s</td></tr>\n" \
- "<tr><td>%s</td><td>%s</td></tr>\n" \
- "<br><br>%s";
- const gchar *format;
-
+ gchar *cited;
+ gchar *retval;
+
g_return_val_if_fail (text, NULL);
g_return_val_if_fail (content_type, NULL);
- g_return_val_if_fail (text, NULL);
modest_text_utils_strftime (sent_str, 100, "%c", sent_date);
- if (!strcmp (content_type, "text/html"))
- /* TODO: extract the <body> of the HTML and pass it to
- the function */
- format = html_format;
+ cited = forward_cite (from, sent_str, to, subject);
+
+ if (content_type && strcmp (content_type, "text/html") == 0)
+ retval = modest_text_utils_quote_html (text, cited, signature, NULL, 80);
else
- format = plain_format;
-
- if (signature != NULL) {
- if (!strcmp (content_type, "text/html")) {
- formatted_signature = g_strconcat (signature, "<br/>", NULL);
- } else {
- formatted_signature = g_strconcat (signature, "\n", NULL);
- }
- } else {
- formatted_signature = "";
- }
-
- return g_strdup_printf (format, formatted_signature,
- FORWARD_STRING,
- FROM_STRING, (from) ? from : EMPTY_STRING,
- SENT_STRING, sent_str,
- TO_STRING, (to) ? to : EMPTY_STRING,
- SUBJECT_STRING, (subject) ? subject : EMPTY_STRING,
- text);
+ retval = modest_text_utils_quote_plain_text (text, cited, signature, NULL, 80);
+
+ g_free (cited);
+ return retval;
}
/* just to prevent warnings:
* g_date_set_time_t (&date, timet);
*/
localtime_r (&timet, &tm);
-
return strftime(s, max, fmt, &tm);
}
case '\t' : g_string_append (html, " "); break; /* note the space at the end*/
case ' ':
if (space_seen) { /* second space in a row */
- g_string_append (html, "  ");
+ g_string_append (html, " ");
space_seen = FALSE;
} else
space_seen = TRUE;
static gchar *
cite (const time_t sent_date, const gchar *from)
{
- gchar sent_str[101];
-
- /* 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) ? from : EMPTY_STRING);
+ return g_strdup (_("mcen_ia_editor_original_message"));
}
+static gchar *
+quoted_attachments (GList *attachments)
+{
+ GList *node = NULL;
+ GString *result = g_string_new ("");
+ for (node = attachments; node != NULL; node = g_list_next (node)) {
+ gchar *filename = (gchar *) node->data;
+ g_string_append_printf ( result, "%s %s\n", _("mcen_ia_editor_attach_filename"), filename);
+ }
+
+ return g_string_free (result, FALSE);
+
+}
static gchar *
modest_text_utils_quote_plain_text (const gchar *text,
const gchar *cite,
const gchar *signature,
+ GList *attachments,
int limit)
{
const gchar *iter;
gint indent, breakpoint, rem_indent = 0;
GString *q, *l, *remaining;
gsize len;
+ gchar *attachments_string = NULL;
/* remaining will store the rest of the line if we have to break it */
- q = g_string_new (cite);
+ q = g_string_new ("\n");
+ q = g_string_append (q, cite);
+ q = g_string_append_c (q, '\n');
remaining = g_string_new ("");
iter = text;
g_string_free (l, TRUE);
} while ((iter < text + len) || (remaining->str[0]));
+ attachments_string = quoted_attachments (attachments);
+ q = g_string_append (q, attachments_string);
+ g_free (attachments_string);
+
if (signature != NULL) {
q = g_string_append_c (q, '\n');
q = g_string_append (q, signature);
modest_text_utils_quote_html (const gchar *text,
const gchar *cite,
const gchar *signature,
+ GList *attachments,
int limit)
{
gchar *result = NULL;
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n" \
"<html>\n" \
"<body>\n" \
- "%s" \
- "<blockquote type=\"cite\">\n%s\n</blockquote>\n" \
- "%s" \
+ "<br/>%s<br/>" \
+ "<pre>%s<br/>%s<br/>%s</pre>\n" \
"</body>\n" \
"</html>\n";
- const gchar *signature_format = \
- "<pre>\n" \
- "%s\n" \
- "</pre>";
+ gchar *attachments_string = NULL;
+ gchar *q_attachments_string = NULL;
+ gchar *q_cite = NULL;
+ gchar *html_text = NULL;
if (signature == NULL)
signature_result = g_strdup ("");
else
- signature_result = g_strdup_printf (signature_format, signature);
-
- result = g_strdup_printf (format, cite, text, signature_result);
+ signature_result = modest_text_utils_convert_to_html_body (signature);
+
+ attachments_string = quoted_attachments (attachments);
+ q_attachments_string = modest_text_utils_convert_to_html_body (attachments_string);
+ q_cite = modest_text_utils_convert_to_html_body (cite);
+ html_text = modest_text_utils_convert_to_html_body (text);
+ result = g_strdup_printf (format, signature_result, q_cite, html_text, q_attachments_string);
+ g_free (q_cite);
+ g_free (html_text);
+ g_free (attachments_string);
+ g_free (q_attachments_string);
g_free (signature_result);
return result;
}
{
gint i;
static const gchar* prefix[] = {
- "Re:", "RE:", "Fwd:", "FWD:", "FW:", NULL
+ "Re:", "RE:", "RV:", "re:"
+ "Fwd:", "FWD:", "FW:", "fwd:", "Fw:", "fw:", NULL
};
- if (!sub || (sub[0] != 'R' && sub[0] != 'F')) /* optimization */
+ if (!sub || (sub[0] != 'R' && sub[0] != 'F' && sub[0] != 'r' && sub[0] != 'f')) /* optimization */
return 0;
i = 0;
now = time (NULL);
- modest_text_utils_strftime (date_buf, BUF_SIZE, "%d/%m/%Y", date);
- modest_text_utils_strftime (now_buf, BUF_SIZE, "%d/%m/%Y", now); /* today */
-/* modest_text_utils_strftime (date_buf, BUF_SIZE, "%x", date); */
-/* modest_text_utils_strftime (now_buf, BUF_SIZE, "%x", now); /\* today *\/ */
+ /* use the localized dates */
+ modest_text_utils_strftime (date_buf, BUF_SIZE, "%x", date);
+ modest_text_utils_strftime (now_buf, BUF_SIZE, "%x", now);
/* 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, "%H:%M %P", date);
+ modest_text_utils_strftime (date_buf, BUF_SIZE, "%X", date);
return g_strdup(date_buf);
}
else
return g_strndup (left_limit + 1, (right_limit - left_limit) - 1);
}
+
+gchar *
+modest_text_utils_get_color_string (GdkColor *color)
+{
+
+ return g_strdup_printf ("#%x%x%x%x%x%x%x%x%x%x%x%x",
+ (color->red >> 12) & 0xf, (color->red >> 8) & 0xf,
+ (color->red >> 4) & 0xf, (color->red) & 0xf,
+ (color->green >> 12) & 0xf, (color->green >> 8) & 0xf,
+ (color->green >> 4) & 0xf, (color->green) & 0xf,
+ (color->blue >> 12) & 0xf, (color->blue >> 8) & 0xf,
+ (color->blue >> 4) & 0xf, (color->blue) & 0xf);
+}