aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/mail-to-task/mail-to-task.c60
1 files changed, 54 insertions, 6 deletions
diff --git a/plugins/mail-to-task/mail-to-task.c b/plugins/mail-to-task/mail-to-task.c
index 406aae642f..1c8be4538a 100644
--- a/plugins/mail-to-task/mail-to-task.c
+++ b/plugins/mail-to-task/mail-to-task.c
@@ -162,6 +162,37 @@ set_attendees (ECalComponent *comp, CamelMimeMessage *message, const gchar *orga
g_slist_free (attendees);
}
+static const gchar *
+prepend_from (CamelMimeMessage *message, gchar **text)
+{
+ gchar *res, *tmp, *addr = NULL;
+ const gchar *name = NULL, *eml = NULL;
+ const CamelInternetAddress *from = NULL;
+
+ g_return_val_if_fail (message != NULL, NULL);
+ g_return_val_if_fail (text != NULL, NULL);
+
+ if (message->reply_to)
+ from = message->reply_to;
+ else if (message->from)
+ from = message->from;
+
+ if (from && camel_internet_address_get (from, 0, &name, &eml))
+ addr = camel_internet_address_format_address (name, eml);
+
+ /* To Translators: The full sentence looks like: "Created from a mail by John Doe <john.doe@myco.example>" */
+ tmp = g_strdup_printf (_("Created from a mail by %s"), addr ? addr : "");
+
+ res = g_strconcat (tmp, "\n", *text, NULL);
+
+ g_free (tmp);
+ g_free (*text);
+
+ *text = res;
+
+ return res;
+}
+
static void
set_description (ECalComponent *comp, CamelMimeMessage *message)
{
@@ -182,8 +213,7 @@ set_description (ECalComponent *comp, CamelMimeMessage *message)
/*
* Get non-multipart content from multipart message.
*/
- while (CAMEL_IS_MULTIPART (content) && count > 0)
- {
+ while (CAMEL_IS_MULTIPART (content) && count > 0) {
mime_part = camel_multipart_get_part (CAMEL_MULTIPART (content), 0);
content = camel_medium_get_content_object (CAMEL_MEDIUM (mime_part));
count--;
@@ -203,17 +233,16 @@ set_description (ECalComponent *comp, CamelMimeMessage *message)
camel_object_unref (mem);
/* convert to UTF-8 string */
- if (str && content->mime_type->params && content->mime_type->params->value)
- {
+ if (str && content->mime_type->params && content->mime_type->params->value) {
convert_str = g_convert (str, strlen (str),
"UTF-8", content->mime_type->params->value,
&bytes_read, &bytes_written, NULL);
}
if (convert_str)
- text.value = convert_str;
+ text.value = prepend_from (message, &convert_str);
else
- text.value = str;
+ text.value = prepend_from (message, &str);
text.altrep = NULL;
sl.next = NULL;
sl.data = &text;
@@ -309,6 +338,22 @@ set_attachments (ECal *client, ECalComponent *comp, CamelMimeMessage *message)
e_cal_component_set_attachment_list (comp, list);
}
+static void
+set_priority (ECalComponent *comp, CamelMimePart *part)
+{
+ const gchar *prio;
+
+ g_return_if_fail (comp != NULL);
+ g_return_if_fail (part != NULL);
+
+ prio = camel_header_raw_find (& (part->headers), "X-Priority", NULL);
+ if (prio && atoi (prio) > 0) {
+ gint priority = 1;
+
+ e_cal_component_set_priority (comp, &priority);
+ }
+}
+
struct _report_error
{
gchar *format;
@@ -726,6 +771,9 @@ do_mail_to_event (AsyncData *data)
/* set attachment files */
set_attachments (client, comp, message);
+ /* priority */
+ set_priority (comp, CAMEL_MIME_PART (message));
+
/* no need to increment a sequence number, this is a new component */
e_cal_component_abort_sequence (comp);