From cea054cd54d84479352a43bbabc19c9ce9af5efb Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 8 Aug 2008 04:26:12 +0000 Subject: Merge revisions 35747:35930 from trunk. svn path=/branches/kill-bonobo/; revision=35931 --- mail/em-composer-utils.c | 147 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 144 insertions(+), 3 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 257d66c486..8ae537ad7c 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -68,6 +68,8 @@ #define gmtime_r(tp,tmp) (gmtime(tp)?(*(tmp)=*gmtime(tp),(tmp)):0) #endif +#define GCONF_KEY_TEMPLATE_PLACEHOLDERS "/apps/evolution/mail/template_placeholders" + static EAccount * guess_account (CamelMimeMessage *message, CamelFolder *folder); struct emcs_t { @@ -808,8 +810,143 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const char *uid) { EMsgComposer *composer; + /* Template specific code follows. */ + if (em_utils_folder_is_templates(drafts, NULL) == TRUE) { + /* retrieve the message from the CamelFolder */ + CamelDataWrapper *content; + CamelStream *mem; + CamelContentType *type; + CamelMimePart *mime_part = CAMEL_MIME_PART (message); + CamelDataWrapper *mail_text; + CamelMultipart *body = camel_multipart_new (); + CamelStream *stream; + CamelMimePart *part; + int count1 = 0, string_changed = 0; + + char *str; + gint count = 2; + + content = camel_medium_get_content_object ((CamelMedium *) message); + if (!content) + return; + + /* + * Get non-multipart content from multipart message. + */ + 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--; + } + + if (!mime_part) + return; + + type = camel_mime_part_get_content_type (mime_part); + if (!camel_content_type_is (type, "text", "plain")) + return; + + mem = camel_stream_mem_new (); + camel_data_wrapper_decode_to_stream (content, mem); + + str = g_strndup ((const gchar*)((CamelStreamMem *) mem)->buffer->data, ((CamelStreamMem *) mem)->buffer->len); + camel_object_unref (mem); + + const char *cur = str; + int i; + for (i = 0; i < strlen(str); i++) { + if (!g_ascii_strncasecmp (cur, "$", 1)) { + const char *end = cur, *check_env; + char *out; + GConfClient *gconf; + GSList *clue_list = NULL, *list; + + gconf = gconf_client_get_default (); + + while (*end && !g_unichar_isspace (*end) && (*end != '"')) + end++; + + out = g_strndup ((const gchar *) cur, end - cur); + check_env = out; + + char **temp_str = g_strsplit (str, out, 2); + + /* Get the list from gconf */ + clue_list = gconf_client_get_list ( gconf, GCONF_KEY_TEMPLATE_PLACEHOLDERS, GCONF_VALUE_STRING, NULL ); + + g_object_unref (gconf); + + for (list = clue_list; list; list = g_slist_next (list)) { + char **temp = g_strsplit (list->data, "=", 2); + if (!g_ascii_strcasecmp(temp[0], out+1)) { + str = g_strdup_printf("%s%s%s", temp_str[0], temp[1], temp_str[1]); + cur = str + i; + count1 = 1; + string_changed = 1; + } + else + count1 = 0; + g_strfreev(temp); + } + + if (clue_list) { + g_slist_foreach (clue_list, (GFunc) g_free, NULL); + g_slist_free (clue_list); + } + + if (!count1) { + if (getenv(out+1)) { + str = g_strdup_printf("%s%s%s", temp_str[0], getenv(out + 1), temp_str[1]); + cur = str + i; + count1 = 1; + string_changed = 1; + } + else + count1 = 0; + } + + g_strfreev(temp_str); + } + else + cur++; + } + + if (string_changed) { + + /* Create toplevel container */ + camel_data_wrapper_set_mime_type (CAMEL_DATA_WRAPPER (body), + "multipart/alternative;"); + camel_multipart_set_boundary (body, NULL); + + stream = camel_stream_mem_new (); + + mail_text = camel_data_wrapper_new (); + camel_data_wrapper_set_mime_type_field (mail_text, type); + + camel_stream_printf (stream, "%s", g_strdup(str)); + + camel_data_wrapper_construct_from_stream (mail_text, stream); + camel_object_unref (stream); + + part = camel_mime_part_new (); + camel_medium_set_content_object (CAMEL_MEDIUM (part), mail_text); + camel_object_unref (mail_text); + camel_multipart_add_part (body, part); + camel_object_unref (part); + + /* Finish creating the message */ + camel_medium_set_content_object (CAMEL_MEDIUM (message), CAMEL_DATA_WRAPPER(body)); + camel_object_unref (body); + } + } + composer = e_msg_composer_new_with_message (message); - em_composer_utils_setup_callbacks (composer, NULL, NULL, 0, 0, drafts, uid); + + if (em_utils_folder_is_templates(drafts, NULL) == TRUE) + em_composer_utils_setup_callbacks (composer, NULL, NULL, 0, 0, NULL, NULL); + else + em_composer_utils_setup_callbacks (composer, NULL, NULL, 0, 0, drafts, uid); composer_set_no_change (composer, TRUE); @@ -819,16 +956,20 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const char *uid) /** * em_utils_edit_message: * @message: message to edit + * @folder: used to recognize the templates folder * * Opens a composer filled in with the headers/mime-parts/etc of * @message. **/ void -em_utils_edit_message (CamelMimeMessage *message) +em_utils_edit_message (CamelMimeMessage *message, CamelFolder *folder) { g_return_if_fail (CAMEL_IS_MIME_MESSAGE (message)); - edit_message (message, NULL, NULL); + if (folder) + edit_message (message, folder, NULL); + else + edit_message (message, NULL, NULL); } static void -- cgit v1.2.3 From c0a255eb90769638d57ae4122932f75c46e4e531 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 11 Sep 2008 15:34:29 +0000 Subject: Merge revisions 36016:36303 from trunk. svn path=/branches/kill-bonobo/; revision=36307 --- mail/em-composer-utils.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 8ae537ad7c..415a3d7193 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -822,6 +822,8 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const char *uid) CamelStream *stream; CamelMimePart *part; int count1 = 0, string_changed = 0; + const char *cur; + int i; char *str; gint count = 2; @@ -853,14 +855,14 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const char *uid) str = g_strndup ((const gchar*)((CamelStreamMem *) mem)->buffer->data, ((CamelStreamMem *) mem)->buffer->len); camel_object_unref (mem); - const char *cur = str; - int i; + cur = str; for (i = 0; i < strlen(str); i++) { if (!g_ascii_strncasecmp (cur, "$", 1)) { const char *end = cur, *check_env; char *out; GConfClient *gconf; GSList *clue_list = NULL, *list; + char **temp_str; gconf = gconf_client_get_default (); @@ -870,7 +872,7 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const char *uid) out = g_strndup ((const gchar *) cur, end - cur); check_env = out; - char **temp_str = g_strsplit (str, out, 2); + temp_str = g_strsplit (str, out, 2); /* Get the list from gconf */ clue_list = gconf_client_get_list ( gconf, GCONF_KEY_TEMPLATE_PLACEHOLDERS, GCONF_VALUE_STRING, NULL ); -- cgit v1.2.3 From b2cda1d0c6d44f53f71bad9e256f41188677dfba Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 1 Oct 2008 20:56:04 +0000 Subject: Merge revisions 36016:36533 from trunk. svn path=/branches/kill-bonobo/; revision=36534 --- mail/em-composer-utils.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 415a3d7193..3d18fc824c 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -1,22 +1,22 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* - * Authors: Jeffrey Stedfast + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) version 3. * - * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * You should have received a copy of the GNU Lesser General Public + * License along with the program; if not, see * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * Authors: + * Jeffrey Stedfast + * + * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) * */ @@ -1419,7 +1419,7 @@ em_utils_handle_receipt (CamelFolder *folder, const char *uid, CamelMimeMessage } if (account && (account->receipt_policy == E_ACCOUNT_RECEIPT_ALWAYS || account->receipt_policy == E_ACCOUNT_RECEIPT_ASK) - && e_error_run (NULL, "mail:ask-receipt", addr, camel_mime_message_get_subject(msg)) == GTK_RESPONSE_YES) + && e_error_run (NULL, "mail:ask-receipt", addr, camel_mime_message_get_subject(msg), NULL) == GTK_RESPONSE_YES) em_utils_send_receipt(folder, msg); } -- cgit v1.2.3 From 54b80a7271e8ce1b2f3ccc68bb553940a24b80e2 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 17 Oct 2008 03:48:03 +0000 Subject: Get the mail folder tree compiling, though I'm not yet sure why it's not showing anything. Probably something stupid. Also enabled the composer. svn path=/branches/kill-bonobo/; revision=36623 --- mail/em-composer-utils.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 3d18fc824c..09f5419101 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -37,7 +37,6 @@ #include "mail-config.h" #include "mail-session.h" #include "mail-send-recv.h" -#include "mail-component.h" #include "e-util/e-error.h" @@ -58,6 +57,8 @@ #include #include +#include "e-mail-shell-module.h" + #ifdef G_OS_WIN32 /* Undef the similar macro from pthread.h, it doesn't check if * gmtime() returns NULL. @@ -436,7 +437,8 @@ em_utils_composer_send_cb (EMsgComposer *composer, gpointer user_data) if (!(message = composer_get_message (composer, FALSE))) return; - mail_folder = mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_OUTBOX); + mail_folder = e_mail_shell_module_get_folder ( + mail_shell_module, E_MAIL_FOLDER_OUTBOX); camel_object_ref (mail_folder); /* mail the message */ @@ -558,10 +560,10 @@ save_draft_folder (char *uri, CamelFolder *folder, gpointer data) void em_utils_composer_save_draft_cb (EMsgComposer *composer, gpointer user_data) { - const char *default_drafts_folder_uri = mail_component_get_folder_uri(NULL, MAIL_COMPONENT_FOLDER_DRAFTS); - CamelFolder *drafts_folder = mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_DRAFTS); + CamelFolder *local_drafts_folder; EComposerHeaderTable *table; struct _save_draft_info *sdi; + const gchar *local_drafts_folder_uri; CamelFolder *folder = NULL; CamelMimeMessage *msg; CamelMessageInfo *info; @@ -571,6 +573,12 @@ em_utils_composer_save_draft_cb (EMsgComposer *composer, gpointer user_data) * get destroyed while we're in mail_msg_wait() a little lower * down, waiting for the folder to open */ + local_drafts_folder = e_mail_shell_module_get_folder ( + mail_shell_module, E_MAIL_FOLDER_DRAFTS); + + local_drafts_folder_uri = e_mail_shell_module_get_folder_uri ( + mail_shell_module, E_MAIL_FOLDER_DRAFTS); + g_object_ref(composer); msg = e_msg_composer_get_message_draft (composer); table = e_msg_composer_get_header_table (composer); @@ -583,7 +591,7 @@ em_utils_composer_save_draft_cb (EMsgComposer *composer, gpointer user_data) emcs_ref(sdi->emcs); if (account && account->drafts_folder_uri && - strcmp (account->drafts_folder_uri, default_drafts_folder_uri) != 0) { + strcmp (account->drafts_folder_uri, local_drafts_folder_uri) != 0) { int id; id = mail_get_folder (account->drafts_folder_uri, 0, save_draft_folder, &folder, mail_msg_unordered_push); @@ -599,11 +607,11 @@ em_utils_composer_save_draft_cb (EMsgComposer *composer, gpointer user_data) return; } - folder = drafts_folder; - camel_object_ref (drafts_folder); + folder = local_drafts_folder; + camel_object_ref (local_drafts_folder); } } else { - folder = drafts_folder; + folder = local_drafts_folder; camel_object_ref (folder); } @@ -1559,7 +1567,8 @@ em_utils_send_receipt (CamelFolder *folder, CamelMimeMessage *message) } /* Send the receipt */ - out_folder = mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_OUTBOX); + out_folder = e_mail_shell_module_get_folder ( + mail_shell_module, E_MAIL_FOLDER_OUTBOX); info = camel_message_info_new (NULL); camel_message_info_set_flags (info, CAMEL_MESSAGE_SEEN, CAMEL_MESSAGE_SEEN); mail_append_mail (out_folder, receipt, info, em_utils_receipt_done, NULL); -- cgit v1.2.3 From 5a1c48696363e3f3c7ffe11bdffdcad6557f811a Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 20 Jan 2009 04:33:23 +0000 Subject: Untangle some circular dependencies with the composer. Addressbook and calendar no longer depend on the mailer. svn path=/branches/kill-bonobo/; revision=37107 --- mail/em-composer-utils.c | 234 +++++++++++++++++++++++++---------------------- 1 file changed, 127 insertions(+), 107 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 09f5419101..a7b982386e 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -73,6 +73,9 @@ static EAccount * guess_account (CamelMimeMessage *message, CamelFolder *folder); +static void em_utils_composer_send_cb (EMsgComposer *composer); +static void em_utils_composer_save_draft_cb (EMsgComposer *composer); + struct emcs_t { unsigned int ref_count; @@ -89,28 +92,67 @@ emcs_new (void) { struct emcs_t *emcs; - emcs = g_new (struct emcs_t, 1); + emcs = g_new0 (struct emcs_t, 1); emcs->ref_count = 1; - emcs->drafts_folder = NULL; - emcs->drafts_uid = NULL; - emcs->folder = NULL; - emcs->flags = 0; - emcs->set = 0; - emcs->uid = NULL; return emcs; } +static void +emcs_set_drafts_info (struct emcs_t *emcs, + CamelFolder *drafts_folder, + const gchar *drafts_uid) +{ + g_return_if_fail (emcs != NULL); + g_return_if_fail (drafts_folder != NULL); + g_return_if_fail (drafts_uid != NULL); + + if (emcs->drafts_folder != NULL) + camel_object_unref (emcs->drafts_folder); + g_free (emcs->drafts_uid); + + camel_object_ref (drafts_folder); + emcs->drafts_folder = drafts_folder; + emcs->drafts_uid = g_strdup (drafts_uid); + + g_debug ("%s", G_STRFUNC); +} + +static void +emcs_set_folder_info (struct emcs_t *emcs, + CamelFolder *folder, + const gchar *uid, + guint32 flags, + guint32 set) +{ + g_return_if_fail (emcs != NULL); + g_return_if_fail (folder != NULL); + g_return_if_fail (uid != NULL); + + if (emcs->folder != NULL) + camel_object_unref (emcs->folder); + g_free (emcs->uid); + + camel_object_ref (folder); + emcs->folder = folder; + emcs->uid = g_strdup (uid); + emcs->flags = flags; + emcs->set = set; + + g_debug ("%s", G_STRFUNC); +} + static void free_emcs (struct emcs_t *emcs) { - if (emcs->drafts_folder) + if (emcs->drafts_folder != NULL) camel_object_unref (emcs->drafts_folder); g_free (emcs->drafts_uid); - if (emcs->folder) + if (emcs->folder != NULL) camel_object_unref (emcs->folder); g_free (emcs->uid); + g_free (emcs); } @@ -128,12 +170,6 @@ emcs_unref (struct emcs_t *emcs) free_emcs (emcs); } -static void -composer_destroy_cb (gpointer user_data, GObject *deadbeef) -{ - emcs_unref (user_data); -} - static gboolean ask_confirm_for_unwanted_html_mail (EMsgComposer *composer, EDestination **recipients) { @@ -227,17 +263,6 @@ composer_send_queued_cb (CamelFolder *folder, CamelMimeMessage *msg, CamelMessag mail_send (); } } else { - if (!emcs) { - /* disconnect the previous signal handlers */ - g_signal_handlers_disconnect_matched (send->composer, G_SIGNAL_MATCH_FUNC, 0, - 0, NULL, em_utils_composer_send_cb, NULL); - g_signal_handlers_disconnect_matched (send->composer, G_SIGNAL_MATCH_FUNC, 0, - 0, NULL, em_utils_composer_save_draft_cb, NULL); - - /* reconnect to the signals using a non-NULL emcs for the callback data */ - em_composer_utils_setup_default_callbacks (send->composer); - } - e_msg_composer_set_enable_autosave (send->composer, TRUE); gtk_widget_show (GTK_WIDGET (send->composer)); } @@ -417,8 +442,8 @@ composer_get_message (EMsgComposer *composer, gboolean save_html_object_data) return message; } -void -em_utils_composer_send_cb (EMsgComposer *composer, gpointer user_data) +static void +em_utils_composer_send_cb (EMsgComposer *composer) { EComposerHeaderTable *table; CamelMimeMessage *message; @@ -430,11 +455,13 @@ em_utils_composer_send_cb (EMsgComposer *composer, gpointer user_data) table = e_msg_composer_get_header_table (composer); account = e_composer_header_table_get_account (table); if (!account || !account->enabled) { - e_error_run((GtkWindow *)composer, "mail:send-no-account-enabled", NULL); + e_error_run ( + GTK_WINDOW (composer), + "mail:send-no-account-enabled", NULL); return; } - if (!(message = composer_get_message (composer, FALSE))) + if ((message = composer_get_message (composer, FALSE)) == NULL) return; mail_folder = e_mail_shell_module_get_folder ( @@ -442,21 +469,22 @@ em_utils_composer_send_cb (EMsgComposer *composer, gpointer user_data) camel_object_ref (mail_folder); /* mail the message */ - info = camel_message_info_new(NULL); - camel_message_info_set_flags(info, CAMEL_MESSAGE_SEEN, ~0); + info = camel_message_info_new (NULL); + camel_message_info_set_flags (info, CAMEL_MESSAGE_SEEN, ~0); send = g_malloc (sizeof (*send)); - send->emcs = user_data; + send->emcs = g_object_get_data (G_OBJECT (composer), "emcs"); if (send->emcs) emcs_ref (send->emcs); send->send = TRUE; - send->composer = composer; - g_object_ref (composer); + send->composer = g_object_ref (composer); gtk_widget_hide (GTK_WIDGET (composer)); e_msg_composer_set_enable_autosave (composer, FALSE); - mail_append_mail (mail_folder, message, info, composer_send_queued_cb, send); + mail_append_mail ( + mail_folder, message, info, composer_send_queued_cb, send); + camel_object_unref (mail_folder); camel_object_unref (message); } @@ -495,17 +523,9 @@ save_draft_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *i composer_set_no_change (sdi->composer, FALSE); - if ((emcs = sdi->emcs) == NULL) { + if ((emcs = sdi->emcs) == NULL) emcs = emcs_new (); - /* disconnect the previous signal handlers */ - g_signal_handlers_disconnect_by_func (sdi->composer, G_CALLBACK (em_utils_composer_send_cb), NULL); - g_signal_handlers_disconnect_by_func (sdi->composer, G_CALLBACK (em_utils_composer_save_draft_cb), NULL); - - /* reconnect to the signals using a non-NULL emcs for the callback data */ - em_composer_utils_setup_default_callbacks (sdi->composer); - } - if (emcs->drafts_folder) { /* delete the original draft message */ camel_folder_set_message_flags (emcs->drafts_folder, emcs->drafts_uid, @@ -557,8 +577,8 @@ save_draft_folder (char *uri, CamelFolder *folder, gpointer data) } } -void -em_utils_composer_save_draft_cb (EMsgComposer *composer, gpointer user_data) +static void +em_utils_composer_save_draft_cb (EMsgComposer *composer) { CamelFolder *local_drafts_folder; EComposerHeaderTable *table; @@ -579,16 +599,16 @@ em_utils_composer_save_draft_cb (EMsgComposer *composer, gpointer user_data) local_drafts_folder_uri = e_mail_shell_module_get_folder_uri ( mail_shell_module, E_MAIL_FOLDER_DRAFTS); - g_object_ref(composer); + g_object_ref (composer); msg = e_msg_composer_get_message_draft (composer); table = e_msg_composer_get_header_table (composer); account = e_composer_header_table_get_account (table); - sdi = g_malloc(sizeof(struct _save_draft_info)); + sdi = g_malloc (sizeof(struct _save_draft_info)); sdi->composer = composer; - sdi->emcs = user_data; + sdi->emcs = g_object_get_data (G_OBJECT (composer), "emcs"); if (sdi->emcs) - emcs_ref(sdi->emcs); + emcs_ref (sdi->emcs); if (account && account->drafts_folder_uri && strcmp (account->drafts_folder_uri, local_drafts_folder_uri) != 0) { @@ -623,43 +643,10 @@ em_utils_composer_save_draft_cb (EMsgComposer *composer, gpointer user_data) camel_object_unref (msg); } -void -em_composer_utils_setup_callbacks (EMsgComposer *composer, - CamelFolder *folder, - const char *uid, - guint32 flags, - guint32 set, - CamelFolder *drafts, - const char *drafts_uid) -{ - struct emcs_t *emcs; - - emcs = emcs_new (); - - if (folder && uid) { - camel_object_ref (folder); - emcs->folder = folder; - emcs->uid = g_strdup (uid); - emcs->flags = flags; - emcs->set = set; - } - - if (drafts && drafts_uid) { - camel_object_ref (drafts); - emcs->drafts_folder = drafts; - emcs->drafts_uid = g_strdup (drafts_uid); - } - - g_signal_connect (composer, "send", G_CALLBACK (em_utils_composer_send_cb), emcs); - g_signal_connect (composer, "save-draft", G_CALLBACK (em_utils_composer_save_draft_cb), emcs); - - g_object_weak_ref ((GObject *) composer, (GWeakNotify) composer_destroy_cb, emcs); -} - /* Composing messages... */ static EMsgComposer * -create_new_composer (const char *subject, const char *fromuri, gboolean use_default_callbacks) +create_new_composer (const char *subject, const char *fromuri) { EMsgComposer *composer; EComposerHeaderTable *table; @@ -670,15 +657,12 @@ create_new_composer (const char *subject, const char *fromuri, gboolean use_defa return NULL; if (fromuri) - account = mail_config_get_account_by_source_url(fromuri); + account = mail_config_get_account_by_source_url (fromuri); table = e_msg_composer_get_header_table (composer); e_composer_header_table_set_account (table, account); e_composer_header_table_set_subject (table, subject); - if (use_default_callbacks) - em_composer_utils_setup_default_callbacks (composer); - return composer; } @@ -693,7 +677,7 @@ em_utils_compose_new_message (const char *fromuri) { GtkWidget *composer; - composer = (GtkWidget *) create_new_composer ("", fromuri, TRUE); + composer = (GtkWidget *) create_new_composer ("", fromuri); if (composer == NULL) return; @@ -723,7 +707,6 @@ em_utils_compose_new_message_with_mailto (const char *url, const char *fromuri) composer = e_msg_composer_new (); table = e_msg_composer_get_header_table (composer); - em_composer_utils_setup_default_callbacks (composer); if (fromuri && (account = mail_config_get_account_by_source_url(fromuri))) @@ -771,8 +754,6 @@ em_utils_post_to_folder (CamelFolder *folder) table, account->name); } - em_composer_utils_setup_default_callbacks (composer); - composer_set_no_change (composer, TRUE); gtk_widget_show ((GtkWidget *) composer); @@ -804,8 +785,6 @@ em_utils_post_to_url (const char *url) g_list_free (list); } - em_composer_utils_setup_default_callbacks (composer); - composer_set_no_change (composer, TRUE); gtk_widget_show ((GtkWidget *) composer); @@ -953,10 +932,12 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const char *uid) composer = e_msg_composer_new_with_message (message); - if (em_utils_folder_is_templates(drafts, NULL) == TRUE) - em_composer_utils_setup_callbacks (composer, NULL, NULL, 0, 0, NULL, NULL); - else - em_composer_utils_setup_callbacks (composer, NULL, NULL, 0, 0, drafts, uid); + if (em_utils_folder_is_drafts (drafts, NULL)) { + struct emcs_t *emcs; + + emcs = g_object_get_data (G_OBJECT (composer), "emcs"); + emcs_set_drafts_info (emcs, drafts, uid); + } composer_set_no_change (composer, TRUE); @@ -1079,7 +1060,7 @@ forward_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, Cam { EMsgComposer *composer; - composer = create_new_composer (subject, fromuri, TRUE); + composer = create_new_composer (subject, fromuri); if (composer == NULL) return; @@ -1158,7 +1139,7 @@ forward_non_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, text = em_utils_message_to_html (message, _("-------- Forwarded Message --------"), flags, &len, NULL, NULL); if (text) { - composer = create_new_composer (subject, fromuri, !uids || !uids->pdata [i]); + composer = create_new_composer (subject, fromuri); if (composer) { if (CAMEL_IS_MULTIPART(camel_medium_get_content_object((CamelMedium *)message))) @@ -1166,8 +1147,12 @@ forward_non_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, e_msg_composer_set_body_text (composer, text, len); - if (uids && uids->pdata[i]) - em_composer_utils_setup_callbacks (composer, folder, uids->pdata[i], CAMEL_MESSAGE_FORWARDED, CAMEL_MESSAGE_FORWARDED, NULL, NULL); + if (uids && uids->pdata[i]) { + struct emcs_t *emcs; + + emcs = g_object_get_data (G_OBJECT (composer), "emcs"); + emcs_set_folder_info (emcs, folder, uids->pdata[i], CAMEL_MESSAGE_FORWARDED, CAMEL_MESSAGE_FORWARDED); + } composer_set_no_change (composer, TRUE); @@ -1323,8 +1308,6 @@ redirect_get_composer (CamelMimeMessage *message) composer = e_msg_composer_new_redirect (message, account ? account->name : NULL); - em_composer_utils_setup_default_callbacks (composer); - return composer; } @@ -2236,6 +2219,7 @@ em_utils_reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage guint32 flags; EMEvent *eme; EMEventTargetMessage *target; + struct emcs_t *emcs; if (folder && uid && message == NULL) { struct _reply_data *rd = g_malloc0(sizeof(*rd)); @@ -2300,7 +2284,8 @@ em_utils_reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage composer_set_body (composer, message, source); - em_composer_utils_setup_callbacks (composer, folder, uid, flags, flags, NULL, NULL); + emcs = g_object_get_data (G_OBJECT (composer), "emcs"); + emcs_set_folder_info (emcs, folder, uid, flags, flags); composer_set_no_change (composer, TRUE); @@ -2324,6 +2309,7 @@ post_reply_to_message (CamelFolder *folder, const char *uid, CamelMimeMessage *m char *real_uid; guint32 flags; GList *list = NULL; + struct emcs_t *emcs; if (message == NULL) return; @@ -2399,7 +2385,8 @@ post_reply_to_message (CamelFolder *folder, const char *uid, CamelMimeMessage *m composer_set_body (composer, message, NULL); - em_composer_utils_setup_callbacks (composer, real_folder, real_uid, flags, flags, NULL, NULL); + emcs = g_object_get_data (G_OBJECT (composer), "emcs"); + emcs_set_folder_info (emcs, real_folder, real_uid, flags, flags); composer_set_no_change (composer, TRUE); @@ -2427,3 +2414,36 @@ em_utils_post_reply_to_message_by_uid (CamelFolder *folder, const char *uid) mail_get_message (folder, uid, post_reply_to_message, NULL, mail_msg_unordered_push); } + +/** + * em_configure_new_composer: + * @composer: a newly created #EMsgComposer + * + * Integrates a newly created #EMsgComposer into the mail module. The + * composer can't link directly to the mail module without introducing + * circular library dependencies, so this function finishes configuring + * things the #EMsgComposer instance can't do itself. + **/ +void +em_configure_new_composer (EMsgComposer *composer) +{ + struct emcs_t *emcs; + + g_return_if_fail (E_IS_MSG_COMPOSER (composer)); + + emcs = emcs_new (); + + g_object_set_data_full ( + G_OBJECT (composer), "emcs", emcs, + (GDestroyNotify) emcs_unref); + + g_signal_connect ( + composer, "send", + G_CALLBACK (em_utils_composer_send_cb), NULL); + + g_signal_connect ( + composer, "save-draft", + G_CALLBACK (em_utils_composer_save_draft_cb), NULL); + + g_debug ("Composer configured."); +} -- cgit v1.2.3 From ab00f5b08adb1d74a0c70d935a32ffd982e86f34 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 21 Jan 2009 02:52:05 +0000 Subject: Merge revisions 37075:37107 from trunk. svn path=/branches/kill-bonobo/; revision=37112 --- mail/em-composer-utils.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index a7b982386e..75a237c472 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -1557,6 +1557,102 @@ em_utils_send_receipt (CamelFolder *folder, CamelMimeMessage *message) mail_append_mail (out_folder, receipt, info, em_utils_receipt_done, NULL); } +static void +emu_forward_raw_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, + int queued, const char *appended_uid, void *data) +{ + camel_message_info_free (info); + /* do not call mail send, just pile them all in the outbox */ + /* mail_send (); */ +} + +/** + * em_utils_forward_message_raw: + * @param folder Where's a message located. + * @param message Message to forward. + * @param address Forward to whom. + * @param ex Exception. + * Forwards message to the address, in very similar way as redirect does. + **/ +void +em_utils_forward_message_raw (CamelFolder *folder, CamelMimeMessage *message, const char *address, CamelException *ex) +{ + EAccount *account; + CamelMimeMessage *forward; + CamelStream *mem; + CamelInternetAddress *addr; + CamelFolder *out_folder; + CamelMessageInfo *info; + struct _camel_header_raw *xev; + char *subject; + + g_return_if_fail (folder != NULL); + g_return_if_fail (message != NULL); + g_return_if_fail (address != NULL); + + if (!*address) { + camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, _("No destination address provided, forward of the message has been cancelled.")); + return; + } + + account = guess_account (message, folder); + if (!account) { + camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, _("No account found to use, forward of the message has been cancelled.")); + return; + } + + forward = camel_mime_message_new (); + + /* make copy of the message, because we are going to modify it */ + mem = camel_stream_mem_new (); + camel_data_wrapper_write_to_stream ((CamelDataWrapper *)message, mem); + camel_seekable_stream_seek (CAMEL_SEEKABLE_STREAM (mem), 0, CAMEL_STREAM_SET); + camel_data_wrapper_construct_from_stream ((CamelDataWrapper *)forward, mem); + camel_object_unref (mem); + + /* clear previous recipients */ + camel_mime_message_set_recipients (forward, CAMEL_RECIPIENT_TYPE_TO, NULL); + camel_mime_message_set_recipients (forward, CAMEL_RECIPIENT_TYPE_CC, NULL); + camel_mime_message_set_recipients (forward, CAMEL_RECIPIENT_TYPE_BCC, NULL); + camel_mime_message_set_recipients (forward, CAMEL_RECIPIENT_TYPE_RESENT_TO, NULL); + camel_mime_message_set_recipients (forward, CAMEL_RECIPIENT_TYPE_RESENT_CC, NULL); + camel_mime_message_set_recipients (forward, CAMEL_RECIPIENT_TYPE_RESENT_BCC, NULL); + + /* remove all delivery and notification headers */ + while (camel_medium_get_header (CAMEL_MEDIUM (forward), "Disposition-Notification-To")) + camel_medium_remove_header (CAMEL_MEDIUM (forward), "Disposition-Notification-To"); + + while (camel_medium_get_header (CAMEL_MEDIUM (forward), "Delivered-To")) + camel_medium_remove_header (CAMEL_MEDIUM (forward), "Delivered-To"); + + /* remove any X-Evolution-* headers that may have been set */ + xev = mail_tool_remove_xevolution_headers (forward); + camel_header_raw_clear (&xev); + + /* from */ + addr = camel_internet_address_new (); + camel_internet_address_add (addr, account->id->name, account->id->address); + camel_mime_message_set_from (forward, addr); + camel_object_unref (addr); + + /* to */ + addr = camel_internet_address_new (); + camel_address_decode (CAMEL_ADDRESS (addr), address); + camel_mime_message_set_recipients (forward, CAMEL_RECIPIENT_TYPE_TO, addr); + camel_object_unref (addr); + + /* subject */ + subject = mail_tool_generate_forward_subject (message); + camel_mime_message_set_subject (forward, subject); + g_free (subject); + + /* and send it */ + out_folder = mail_component_get_folder (NULL, MAIL_COMPONENT_FOLDER_OUTBOX); + info = camel_message_info_new (NULL); + camel_message_info_set_flags (info, CAMEL_MESSAGE_SEEN, CAMEL_MESSAGE_SEEN); + mail_append_mail (out_folder, forward, info, emu_forward_raw_done, NULL); +} + /* Replying to messages... */ static GHashTable * -- cgit v1.2.3 From 3c7a575407bef757d434808904a4c4dc1ba60cb3 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 21 Jan 2009 21:03:14 +0000 Subject: Fix some runtime warnings. Copy that nasty message list scrolling hack to EMailShellContent. Remember the scrollbar position for each folder. Now I just have to make it select a message automatically. svn path=/branches/kill-bonobo/; revision=37119 --- mail/em-composer-utils.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 75a237c472..bf94aed15a 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -1647,7 +1647,7 @@ em_utils_forward_message_raw (CamelFolder *folder, CamelMimeMessage *message, co g_free (subject); /* and send it */ - out_folder = mail_component_get_folder (NULL, MAIL_COMPONENT_FOLDER_OUTBOX); + out_folder = e_mail_shell_module_get_folder (mail_shell_module, E_MAIL_FOLDER_OUTBOX); info = camel_message_info_new (NULL); camel_message_info_set_flags (info, CAMEL_MESSAGE_SEEN, CAMEL_MESSAGE_SEEN); mail_append_mail (out_folder, forward, info, emu_forward_raw_done, NULL); @@ -2523,6 +2523,8 @@ em_utils_post_reply_to_message_by_uid (CamelFolder *folder, const char *uid) void em_configure_new_composer (EMsgComposer *composer) { + EComposerHeaderTable *table; + EMFolderTreeModel *model; struct emcs_t *emcs; g_return_if_fail (E_IS_MSG_COMPOSER (composer)); @@ -2541,5 +2543,8 @@ em_configure_new_composer (EMsgComposer *composer) composer, "save-draft", G_CALLBACK (em_utils_composer_save_draft_cb), NULL); - g_debug ("Composer configured."); + /* Supply the composer with a folder tree model. */ + table = e_msg_composer_get_header_table (composer); + model = e_mail_shell_module_get_folder_tree_model (mail_shell_module); + e_composer_header_table_set_folder_tree_model (table, model); } -- cgit v1.2.3 From e0f414941dd4e13ea074996d10606b0dae7e494b Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 26 Jan 2009 22:18:58 +0000 Subject: Split EAccountList and ESignatureList management out of the mail module. This reduces the dependency of the composer on the mail module, which is currently a circular dependency. svn path=/branches/kill-bonobo/; revision=37135 --- mail/em-composer-utils.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index bf94aed15a..205a894d37 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -39,6 +39,7 @@ #include "mail-send-recv.h" #include "e-util/e-error.h" +#include "e-util/e-account-utils.h" #include "em-utils.h" #include "em-composer-utils.h" @@ -48,8 +49,6 @@ #include "em-format-quote.h" #include "em-event.h" -#include "libedataserver/e-account-list.h" - #include #include #include @@ -1663,10 +1662,10 @@ generate_account_hash (void) EAccountList *accounts; EIterator *iter; - accounts = mail_config_get_accounts (); + accounts = e_get_account_list (); account_hash = g_hash_table_new (camel_strcase_hash, camel_strcase_equal); - def = mail_config_get_default_account (); + def = e_get_default_account (); iter = e_list_get_iterator ((EList *) accounts); while (e_iterator_is_valid (iter)) { -- cgit v1.2.3 From cd5ff486fb02451645f8b4b39608edca2da5e4a2 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 31 Jan 2009 18:02:22 +0000 Subject: Let the mailer handle composer printing. Start roughing in the mailer search bar. svn path=/branches/kill-bonobo/; revision=37199 --- mail/em-composer-utils.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 205a894d37..065cd325df 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -46,6 +46,7 @@ #include "composer/e-msg-composer.h" #include "composer/e-composer-autosave.h" #include "em-format-html.h" +#include "em-format-html-print.h" #include "em-format-quote.h" #include "em-event.h" @@ -642,6 +643,20 @@ em_utils_composer_save_draft_cb (EMsgComposer *composer) camel_object_unref (msg); } +static void +em_utils_composer_print_cb (EMsgComposer *composer, + GtkPrintOperationAction action) +{ + CamelMimeMessage *message; + EMFormatHTMLPrint *efhp; + + message = e_msg_composer_get_message_print (composer, 1); + + efhp = em_format_html_print_new (NULL, action); + em_format_html_print_raw_message (efhp, message); + g_object_unref (efhp); +} + /* Composing messages... */ static EMsgComposer * @@ -2542,6 +2557,10 @@ em_configure_new_composer (EMsgComposer *composer) composer, "save-draft", G_CALLBACK (em_utils_composer_save_draft_cb), NULL); + g_signal_connect ( + composer, "print", + G_CALLBACK (em_utils_composer_print_cb), NULL); + /* Supply the composer with a folder tree model. */ table = e_msg_composer_get_header_table (composer); model = e_mail_shell_module_get_folder_tree_model (mail_shell_module); -- cgit v1.2.3 From 7986af5369482c4feeaad6880045bf92a4d3f744 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 13 Feb 2009 04:32:51 +0000 Subject: Let the mail module handle composer "Post To:" button clicks, since EMFolderSelector and EMFolderTree are off-limits to the composer. This further weakens the composer's mail module dependency. Add class methods to EComposerHeader for "changed" and "clicked" signals. Allows subclasses to implement them without connecting to their own signals. svn path=/branches/kill-bonobo/; revision=37260 --- mail/em-composer-utils.c | 74 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 69 insertions(+), 5 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 065cd325df..381e7fbfc5 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -45,6 +45,9 @@ #include "em-composer-utils.h" #include "composer/e-msg-composer.h" #include "composer/e-composer-autosave.h" +#include "composer/e-composer-post-header.h" +#include "em-folder-selector.h" +#include "em-folder-tree.h" #include "em-format-html.h" #include "em-format-html-print.h" #include "em-format-quote.h" @@ -2525,6 +2528,56 @@ em_utils_post_reply_to_message_by_uid (CamelFolder *folder, const char *uid) mail_get_message (folder, uid, post_reply_to_message, NULL, mail_msg_unordered_push); } +static void +post_header_clicked_cb (EComposerPostHeader *header, + EShellModule *shell_module) +{ + EMFolderTreeModel *model; + GtkWidget *folder_tree; + GtkWidget *dialog; + GList *list; + + model = e_mail_shell_module_get_folder_tree_model (shell_module); + folder_tree = em_folder_tree_new_with_model (model); + + em_folder_tree_set_multiselect ( + EM_FOLDER_TREE (folder_tree), TRUE); + em_folder_tree_set_excluded ( + EM_FOLDER_TREE (folder_tree), + EMFT_EXCLUDE_NOSELECT | + EMFT_EXCLUDE_VIRTUAL | + EMFT_EXCLUDE_VTRASH); + + dialog = em_folder_selector_new ( + EM_FOLDER_TREE (folder_tree), + EM_FOLDER_SELECTOR_CAN_CREATE, + _("Posting destination"), + _("Choose folders to post the message to."), + NULL); + + list = e_composer_post_header_get_folders (header); + em_folder_selector_set_selected_list ( + EM_FOLDER_SELECTOR (dialog), list); + g_list_foreach (list, (GFunc) g_free, NULL); + g_list_free (list); + + if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_OK) { + /* Prevent the header's "custom" flag from being reset, + * which is what the default method will do next. */ + g_signal_stop_emission_by_name (header, "clicked"); + goto exit; + } + + list = em_folder_selector_get_selected_uris ( + EM_FOLDER_SELECTOR (dialog)); + e_composer_post_header_set_folders (header, list); + g_list_foreach (list, (GFunc) g_free, NULL); + g_list_free (list); + +exit: + gtk_widget_destroy (dialog); +} + /** * em_configure_new_composer: * @composer: a newly created #EMsgComposer @@ -2538,11 +2591,16 @@ void em_configure_new_composer (EMsgComposer *composer) { EComposerHeaderTable *table; - EMFolderTreeModel *model; + EComposerHeaderType header_type; + EComposerHeader *header; struct emcs_t *emcs; g_return_if_fail (E_IS_MSG_COMPOSER (composer)); + header_type = E_COMPOSER_HEADER_POST_TO; + table = e_msg_composer_get_header_table (composer); + header = e_composer_header_table_get_header (table, header_type); + emcs = emcs_new (); g_object_set_data_full ( @@ -2561,8 +2619,14 @@ em_configure_new_composer (EMsgComposer *composer) composer, "print", G_CALLBACK (em_utils_composer_print_cb), NULL); - /* Supply the composer with a folder tree model. */ - table = e_msg_composer_get_header_table (composer); - model = e_mail_shell_module_get_folder_tree_model (mail_shell_module); - e_composer_header_table_set_folder_tree_model (table, model); + /* Handle "Post To:" button clicks, which displays a folder tree + * widget. The composer doesn't know about folder tree widgets, + * so it can't handle this itself. + * + * Note: This is a G_SIGNAL_RUN_LAST signal, which allows us to + * stop the signal emission if the user cancels or closes + * the folder selector dialog. See the handler function. */ + g_signal_connect ( + header, "clicked", + G_CALLBACK (post_header_clicked_cb), mail_shell_module); } -- cgit v1.2.3 From f5ca8fdc13fa9d29dfb9fc941a01dbb64833b6ea Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 2 May 2009 00:56:55 -0400 Subject: Merge changes from master. --- mail/em-composer-utils.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 381e7fbfc5..c32b05b402 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -499,7 +499,7 @@ struct _save_draft_info { }; static void -composer_set_no_change (EMsgComposer *composer, gboolean drop_undo) +composer_set_no_change (EMsgComposer *composer, gboolean drop_undo, gboolean editor_changed) { GtkhtmlEditor *editor; @@ -510,7 +510,9 @@ composer_set_no_change (EMsgComposer *composer, gboolean drop_undo) if (drop_undo) gtkhtml_editor_drop_undo (editor); - gtkhtml_editor_set_changed (editor, FALSE); + if (editor_changed) + gtkhtml_editor_set_changed (editor, FALSE); + e_composer_autosave_set_saved (composer, TRUE); } @@ -524,7 +526,7 @@ save_draft_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *i if (!ok) goto done; - composer_set_no_change (sdi->composer, FALSE); + composer_set_no_change (sdi->composer, FALSE, FALSE); if ((emcs = sdi->emcs) == NULL) emcs = emcs_new (); @@ -698,7 +700,7 @@ em_utils_compose_new_message (const char *fromuri) if (composer == NULL) return; - composer_set_no_change (E_MSG_COMPOSER (composer), TRUE); + composer_set_no_change (E_MSG_COMPOSER (composer), TRUE, TRUE); gtk_widget_show (composer); } @@ -729,7 +731,7 @@ em_utils_compose_new_message_with_mailto (const char *url, const char *fromuri) && (account = mail_config_get_account_by_source_url(fromuri))) e_composer_header_table_set_account_name (table, account->name); - composer_set_no_change (composer, TRUE); + composer_set_no_change (composer, TRUE, url == NULL); gtk_widget_show ((GtkWidget *) composer); gdk_window_raise (((GtkWidget *) composer)->window); @@ -771,7 +773,7 @@ em_utils_post_to_folder (CamelFolder *folder) table, account->name); } - composer_set_no_change (composer, TRUE); + composer_set_no_change (composer, TRUE, TRUE); gtk_widget_show ((GtkWidget *) composer); gdk_window_raise (((GtkWidget *) composer)->window); @@ -802,7 +804,7 @@ em_utils_post_to_url (const char *url) g_list_free (list); } - composer_set_no_change (composer, TRUE); + composer_set_no_change (composer, TRUE, TRUE); gtk_widget_show ((GtkWidget *) composer); } @@ -956,7 +958,7 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const char *uid) emcs_set_drafts_info (emcs, drafts, uid); } - composer_set_no_change (composer, TRUE); + composer_set_no_change (composer, TRUE, FALSE); gtk_widget_show (GTK_WIDGET (composer)); } @@ -1087,7 +1089,7 @@ forward_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, Cam if (uids) setup_forward_attached_callbacks (composer, folder, uids); - composer_set_no_change (composer, TRUE); + composer_set_no_change (composer, TRUE, FALSE); gtk_widget_show (GTK_WIDGET (composer)); } @@ -1171,7 +1173,7 @@ forward_non_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, emcs_set_folder_info (emcs, folder, uids->pdata[i], CAMEL_MESSAGE_FORWARDED, CAMEL_MESSAGE_FORWARDED); } - composer_set_no_change (composer, TRUE); + composer_set_no_change (composer, TRUE, FALSE); gtk_widget_show (GTK_WIDGET (composer)); } @@ -1346,7 +1348,7 @@ em_utils_redirect_message (CamelMimeMessage *message) gtk_widget_show (GTK_WIDGET (composer)); - composer_set_no_change (composer, TRUE); + composer_set_no_change (composer, TRUE, FALSE); } static void @@ -2400,7 +2402,7 @@ em_utils_reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage emcs = g_object_get_data (G_OBJECT (composer), "emcs"); emcs_set_folder_info (emcs, folder, uid, flags, flags); - composer_set_no_change (composer, TRUE); + composer_set_no_change (composer, TRUE, FALSE); gtk_widget_show (GTK_WIDGET (composer)); } @@ -2501,7 +2503,7 @@ post_reply_to_message (CamelFolder *folder, const char *uid, CamelMimeMessage *m emcs = g_object_get_data (G_OBJECT (composer), "emcs"); emcs_set_folder_info (emcs, real_folder, real_uid, flags, flags); - composer_set_no_change (composer, TRUE); + composer_set_no_change (composer, TRUE, FALSE); gtk_widget_show (GTK_WIDGET (composer)); -- cgit v1.2.3 From 16e2beab9e4d412399f495f6165d27da80cb3675 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 7 May 2009 16:38:32 -0400 Subject: Adapt mail to EShellBackend changes. Again, builds but not tested. Lots of compiler warnings to clean up, but I don't have the energy for it. This was pretty grueling. --- mail/em-composer-utils.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index f503f2d7ed..66863faf64 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -60,7 +60,7 @@ #include #include -#include "e-mail-shell-module.h" +#include "e-mail-shell-backend.h" #ifdef G_OS_WIN32 /* Undef the similar macro from pthread.h, it doesn't check if @@ -467,8 +467,8 @@ em_utils_composer_send_cb (EMsgComposer *composer) if ((message = composer_get_message (composer, FALSE)) == NULL) return; - mail_folder = e_mail_shell_module_get_folder ( - mail_shell_module, E_MAIL_FOLDER_OUTBOX); + mail_folder = e_mail_shell_backend_get_folder ( + global_mail_shell_backend, E_MAIL_FOLDER_OUTBOX); camel_object_ref (mail_folder); /* mail the message */ @@ -598,11 +598,11 @@ em_utils_composer_save_draft_cb (EMsgComposer *composer) * get destroyed while we're in mail_msg_wait() a little lower * down, waiting for the folder to open */ - local_drafts_folder = e_mail_shell_module_get_folder ( - mail_shell_module, E_MAIL_FOLDER_DRAFTS); + local_drafts_folder = e_mail_shell_backend_get_folder ( + global_mail_shell_backend, E_MAIL_FOLDER_DRAFTS); - local_drafts_folder_uri = e_mail_shell_module_get_folder_uri ( - mail_shell_module, E_MAIL_FOLDER_DRAFTS); + local_drafts_folder_uri = e_mail_shell_backend_get_folder_uri ( + global_mail_shell_backend, E_MAIL_FOLDER_DRAFTS); g_object_ref (composer); msg = e_msg_composer_get_message_draft (composer); @@ -1569,8 +1569,8 @@ em_utils_send_receipt (CamelFolder *folder, CamelMimeMessage *message) } /* Send the receipt */ - out_folder = e_mail_shell_module_get_folder ( - mail_shell_module, E_MAIL_FOLDER_OUTBOX); + out_folder = e_mail_shell_backend_get_folder ( + global_mail_shell_backend, E_MAIL_FOLDER_OUTBOX); info = camel_message_info_new (NULL); camel_message_info_set_flags (info, CAMEL_MESSAGE_SEEN, CAMEL_MESSAGE_SEEN); mail_append_mail (out_folder, receipt, info, em_utils_receipt_done, NULL); @@ -1666,7 +1666,8 @@ em_utils_forward_message_raw (CamelFolder *folder, CamelMimeMessage *message, co g_free (subject); /* and send it */ - out_folder = e_mail_shell_module_get_folder (mail_shell_module, E_MAIL_FOLDER_OUTBOX); + out_folder = e_mail_shell_backend_get_folder ( + global_mail_shell_backend, E_MAIL_FOLDER_OUTBOX); info = camel_message_info_new (NULL); camel_message_info_set_flags (info, CAMEL_MESSAGE_SEEN, CAMEL_MESSAGE_SEEN); mail_append_mail (out_folder, forward, info, emu_forward_raw_done, NULL); @@ -2537,14 +2538,14 @@ em_utils_post_reply_to_message_by_uid (CamelFolder *folder, const char *uid) static void post_header_clicked_cb (EComposerPostHeader *header, - EShellModule *shell_module) + EShellBackend *shell_backend) { EMFolderTreeModel *model; GtkWidget *folder_tree; GtkWidget *dialog; GList *list; - model = e_mail_shell_module_get_folder_tree_model (shell_module); + model = e_mail_shell_backend_get_folder_tree_model (shell_backend); folder_tree = em_folder_tree_new_with_model (model); em_folder_tree_set_multiselect ( @@ -2589,8 +2590,8 @@ exit: * em_configure_new_composer: * @composer: a newly created #EMsgComposer * - * Integrates a newly created #EMsgComposer into the mail module. The - * composer can't link directly to the mail module without introducing + * Integrates a newly created #EMsgComposer into the mail backend. The + * composer can't link directly to the mail backend without introducing * circular library dependencies, so this function finishes configuring * things the #EMsgComposer instance can't do itself. **/ @@ -2635,5 +2636,6 @@ em_configure_new_composer (EMsgComposer *composer) * the folder selector dialog. See the handler function. */ g_signal_connect ( header, "clicked", - G_CALLBACK (post_header_clicked_cb), mail_shell_module); + G_CALLBACK (post_header_clicked_cb), + global_mail_shell_backend); } -- cgit v1.2.3 From 03fe4bdcbc8a2e644339bbfcd12843da1f766375 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 7 May 2009 21:12:02 -0400 Subject: Fix most of the compiler warnings in mail. --- mail/em-composer-utils.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 66863faf64..b522ca1861 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -2538,14 +2538,14 @@ em_utils_post_reply_to_message_by_uid (CamelFolder *folder, const char *uid) static void post_header_clicked_cb (EComposerPostHeader *header, - EShellBackend *shell_backend) + EMailShellBackend *mail_shell_backend) { EMFolderTreeModel *model; GtkWidget *folder_tree; GtkWidget *dialog; GList *list; - model = e_mail_shell_backend_get_folder_tree_model (shell_backend); + model = e_mail_shell_backend_get_folder_tree_model (mail_shell_backend); folder_tree = em_folder_tree_new_with_model (model); em_folder_tree_set_multiselect ( -- cgit v1.2.3 From a538f3f3100dbdbae1ea172ae3b8344e650d529d Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 16 May 2009 12:11:55 -0400 Subject: Fix several types of pedantic compiler warnings. --- mail/em-composer-utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index b522ca1861..0a503b579b 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -2057,7 +2057,7 @@ enum { ATTRIB_TM_YEAR, ATTRIB_TM_2YEAR, ATTRIB_TM_WDAY, /* not actually used */ - ATTRIB_TM_YDAY, + ATTRIB_TM_YDAY }; typedef void (* AttribFormatter) (GString *str, const char *attr, CamelMimeMessage *message); -- cgit v1.2.3 From 5893a146f20f364042410aa7d8cd45f8194ae745 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 16 May 2009 17:19:51 -0400 Subject: =?UTF-8?q?Bug=20582744=20=E2=80=93=20CC=20field=20autofill=20does?= =?UTF-8?q?n't=20work=20for=20replies?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mail/em-composer-utils.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 0a503b579b..800717f41a 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -1799,7 +1799,10 @@ reply_get_composer (CamelMimeMessage *message, EAccount *account, e_composer_header_table_set_account (table, account); e_composer_header_table_set_subject (table, subject); e_composer_header_table_set_destinations_to (table, tov); - e_composer_header_table_set_destinations_cc (table, ccv); + + /* Add destinations instead of setting, so we don't remove + * automatic CC addresses that have already been added. */ + e_composer_header_table_add_destinations_cc (table, ccv); g_free (subject); -- cgit v1.2.3 From aaa180af5abef44bb3e3d3c3c5968ca191a3dbda Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 21 May 2009 06:55:49 -0400 Subject: Kill obsolete menu items. URI Popup Menu -> Call To... Message -> Post New Message to Folder Message -> Post a Reply --- mail/em-composer-utils.c | 195 ----------------------------------------------- 1 file changed, 195 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 800717f41a..bf6834b278 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -737,78 +737,6 @@ em_utils_compose_new_message_with_mailto (const char *url, const char *fromuri) gdk_window_raise (((GtkWidget *) composer)->window); } -/** - * em_utils_post_to_folder: - * @folder: folder - * - * Opens a new composer window as a child window of @parent's toplevel - * window. If @folder is non-NULL, the composer will default to posting - * mail to the folder specified by @folder. - **/ -void -em_utils_post_to_folder (CamelFolder *folder) -{ - EMsgComposer *composer; - EComposerHeaderTable *table; - EAccount *account; - - composer = e_msg_composer_new_with_type (E_MSG_COMPOSER_POST); - table = e_msg_composer_get_header_table (composer); - - if (folder != NULL) { - char *url = mail_tools_folder_to_url (folder); - GList *list = g_list_prepend (NULL, url); - - e_composer_header_table_set_post_to_list (table, list); - - g_list_free (list); - g_free (url); - - url = camel_url_to_string (CAMEL_SERVICE (folder->parent_store)->url, CAMEL_URL_HIDE_ALL); - account = mail_config_get_account_by_source_url (url); - g_free (url); - - if (account) - e_composer_header_table_set_account_name ( - table, account->name); - } - - composer_set_no_change (composer, TRUE, TRUE); - - gtk_widget_show ((GtkWidget *) composer); - gdk_window_raise (((GtkWidget *) composer)->window); -} - -/** - * em_utils_post_to_url: - * @url: mailto url - * - * Opens a new composer window as a child window of @parent's toplevel - * window. If @url is non-NULL, the composer will default to posting - * mail to the folder specified by @url. - **/ -void -em_utils_post_to_url (const char *url) -{ - EMsgComposer *composer; - EComposerHeaderTable *table; - - composer = e_msg_composer_new_with_type (E_MSG_COMPOSER_POST); - table = e_msg_composer_get_header_table (composer); - - if (url != NULL) { - GList *list = NULL; - - list = g_list_prepend (list, (gpointer) url); - e_composer_header_table_set_post_to_list (table, list); - g_list_free (list); - } - - composer_set_no_change (composer, TRUE, TRUE); - - gtk_widget_show ((GtkWidget *) composer); -} - /* Editing messages... */ static void @@ -2416,129 +2344,6 @@ em_utils_reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage gtk_widget_show (GTK_WIDGET (composer)); } -/* Posting replies... */ - -static void -post_reply_to_message (CamelFolder *folder, const char *uid, CamelMimeMessage *message, void *user_data) -{ - /* FIXME: would be nice if this shared more code with reply_get_composer() */ - const char *message_id, *references; - CamelInternetAddress *to; - EDestination **tov = NULL; - CamelFolder *real_folder; - EMsgComposer *composer; - EComposerHeaderTable *table; - char *subject, *url; - EAccount *account; - char *real_uid; - guint32 flags; - GList *list = NULL; - struct emcs_t *emcs; - - if (message == NULL) - return; - - if (CAMEL_IS_VEE_FOLDER (folder)) { - CamelMessageInfo *info; - - info = camel_folder_get_message_info (folder, uid); - real_folder = camel_vee_folder_get_location ((CamelVeeFolder *) folder, (struct _CamelVeeMessageInfo *) info, &real_uid); - camel_folder_free_message_info (folder, info); - } else { - real_folder = folder; - camel_object_ref (folder); - real_uid = g_strdup (uid); - } - - account = guess_account (message, real_folder); - flags = CAMEL_MESSAGE_ANSWERED | CAMEL_MESSAGE_SEEN; - - to = camel_internet_address_new(); - get_reply_sender (message, to, NULL); - - composer = e_msg_composer_new_with_type (E_MSG_COMPOSER_MAIL_POST); - - /* construct the tov/ccv */ - tov = em_utils_camel_address_to_destination (to); - - /* Set the subject of the new message. */ - if ((subject = (char *) camel_mime_message_get_subject (message))) { - if (g_ascii_strncasecmp (subject, "Re: ", 4) != 0) - subject = g_strdup_printf ("Re: %s", subject); - else - subject = g_strdup (subject); - } else { - subject = g_strdup (""); - } - - table = e_msg_composer_get_header_table (composer); - e_composer_header_table_set_account (table, account); - e_composer_header_table_set_subject (table, subject); - e_composer_header_table_set_destinations_to (table, tov); - - g_free (subject); - - url = mail_tools_folder_to_url (real_folder); - list = g_list_prepend (list, url); - - e_composer_header_table_set_post_to_list (table, list); - - g_list_free (list); - g_free (url); - - /* Add In-Reply-To and References. */ - message_id = camel_medium_get_header (CAMEL_MEDIUM (message), "Message-Id"); - references = camel_medium_get_header (CAMEL_MEDIUM (message), "References"); - if (message_id) { - char *reply_refs; - - e_msg_composer_add_header (composer, "In-Reply-To", message_id); - - if (references) - reply_refs = g_strdup_printf ("%s %s", references, message_id); - else - reply_refs = g_strdup (message_id); - - e_msg_composer_add_header (composer, "References", reply_refs); - g_free (reply_refs); - } else if (references) { - e_msg_composer_add_header (composer, "References", references); - } - - e_msg_composer_add_message_attachments (composer, message, TRUE); - - composer_set_body (composer, message, NULL); - - emcs = g_object_get_data (G_OBJECT (composer), "emcs"); - emcs_set_folder_info (emcs, real_folder, real_uid, flags, flags); - - composer_set_no_change (composer, TRUE, FALSE); - - gtk_widget_show (GTK_WIDGET (composer)); - - camel_object_unref (real_folder); - camel_object_unref(to); - g_free (real_uid); -} - -/** - * em_utils_post_reply_to_message_by_uid: - * @folder: folder containing message to reply to - * @uid: message uid - * @mode: reply mode - * - * Creates a new composer (post mode) ready to reply to the message - * referenced by @folder and @uid. - **/ -void -em_utils_post_reply_to_message_by_uid (CamelFolder *folder, const char *uid) -{ - g_return_if_fail (CAMEL_IS_FOLDER (folder)); - g_return_if_fail (uid != NULL); - - mail_get_message (folder, uid, post_reply_to_message, NULL, mail_msg_unordered_push); -} - static void post_header_clicked_cb (EComposerPostHeader *header, EMailShellBackend *mail_shell_backend) -- cgit v1.2.3 From c3205a427adcc910f0614cb83249622816440c56 Mon Sep 17 00:00:00 2001 From: Srinivasa Ragavan Date: Fri, 22 May 2009 17:30:14 +0530 Subject: Mail changes required for Anjal. --- mail/em-composer-utils.c | 74 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 64 insertions(+), 10 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 20193465a3..f6ea663a40 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -665,13 +665,16 @@ em_utils_composer_print_cb (EMsgComposer *composer, /* Composing messages... */ static EMsgComposer * -create_new_composer (const char *subject, const char *fromuri) +create_new_composer (const char *subject, const char *fromuri, gboolean lite) { EMsgComposer *composer; EComposerHeaderTable *table; EAccount *account = NULL; - composer = e_msg_composer_new (); + if (lite) + composer = e_msg_composer_lite_new (); + else + composer = e_msg_composer_new (); table = e_msg_composer_get_header_table (composer); if (fromuri != NULL) { @@ -701,7 +704,7 @@ em_utils_compose_new_message (const char *fromuri) { GtkWidget *composer; - composer = (GtkWidget *) create_new_composer ("", fromuri); + composer = (GtkWidget *) create_new_composer ("", fromuri, FALSE); if (composer == NULL) return; @@ -710,6 +713,26 @@ em_utils_compose_new_message (const char *fromuri) gtk_widget_show (composer); } +/** + * em_utils_compose_lite_new_message: + * + * Opens a new composer window as a child window of @parent's toplevel + * window. + **/ +struct _EMsgComposer * +em_utils_compose_lite_new_message (const char *fromuri) +{ + GtkWidget *composer; + + composer = (GtkWidget *) create_new_composer ("", fromuri, TRUE); + if (composer == NULL) + return NULL; + + composer_set_no_change (E_MSG_COMPOSER (composer), TRUE, TRUE); + + return (struct _EMsgComposer *)composer; +} + /** * em_utils_compose_new_message_with_mailto: * @url: mailto url @@ -1012,7 +1035,7 @@ forward_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, Cam { EMsgComposer *composer; - composer = create_new_composer (subject, fromuri); + composer = create_new_composer (subject, fromuri, FALSE); if (composer == NULL) return; @@ -1091,7 +1114,7 @@ forward_non_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, text = em_utils_message_to_html (message, _("-------- Forwarded Message --------"), flags, &len, NULL, NULL); if (text) { - composer = create_new_composer (subject, fromuri); + composer = create_new_composer (subject, fromuri, FALSE); if (composer) { if (CAMEL_IS_MULTIPART(camel_medium_get_content_object((CamelMedium *)message))) @@ -1656,7 +1679,7 @@ generate_account_hash (void) return account_hash; } -static EDestination ** +EDestination ** em_utils_camel_address_to_destination (CamelInternetAddress *iaddr) { EDestination *dest, **destv; @@ -1860,6 +1883,12 @@ get_reply_sender (CamelMimeMessage *message, CamelInternetAddress *to, CamelNNTP } } +void +em_utils_get_reply_sender (CamelMimeMessage *message, CamelInternetAddress *to, CamelNNTPAddress *postto) +{ + get_reply_sender (message, to, postto); +} + static gboolean get_reply_list (CamelMimeMessage *message, CamelInternetAddress *to) { @@ -1973,6 +2002,13 @@ get_reply_all (CamelMimeMessage *message, CamelInternetAddress *to, CamelInterne g_hash_table_destroy (rcpt_hash); } +void +em_utils_get_reply_all (CamelMimeMessage *message, CamelInternetAddress *to, CamelInternetAddress *cc, CamelNNTPAddress *postto) +{ + get_reply_all (message, to, cc, postto); +} + + enum { ATTRIB_UNKNOWN, ATTRIB_CUSTOM, @@ -2230,6 +2266,21 @@ struct _reply_data { int mode; }; +char * +em_utils_construct_composer_text (CamelMimeMessage *message, EMFormat *source) +{ + char *text, *credits; + ssize_t len = 0; + gboolean start_bottom = 0; + + credits = attribution_format (ATTRIBUTION, message); + text = em_utils_message_to_html (message, credits, EM_FORMAT_QUOTE_CITE, &len, source, start_bottom ? "
" : NULL); + + g_free (credits); + return text; +} + + static void reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage *message, void *user_data) { @@ -2260,7 +2311,7 @@ reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage *message * may be supplied in order to update the message flags once it has * been replied to. **/ -void +struct _EMsgComposer * em_utils_reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage *message, int mode, EMFormat *source) { CamelInternetAddress *to, *cc; @@ -2281,10 +2332,10 @@ em_utils_reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage g_object_ref(rd->source); mail_get_message(folder, uid, reply_to_message, rd, mail_msg_unordered_push); - return; + return NULL; } - g_return_if_fail(message != NULL); + g_return_val_if_fail(message != NULL, NULL); /** @Event: message.replying * @Title: Message being replied to @@ -2340,7 +2391,10 @@ em_utils_reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage composer_set_no_change (composer, TRUE, FALSE); - gtk_widget_show (GTK_WIDGET (composer)); + if (!e_msg_composer_get_lite()) + gtk_widget_show (GTK_WIDGET (composer)); + + return composer; } static void -- cgit v1.2.3 From e4afd3f9fb962ea1295a0657ec9f83a427829171 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 26 May 2009 23:21:02 -0400 Subject: Remove trailing whitespace, again. --- mail/em-composer-utils.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 9b3dbe6cf9..4ed3e70b8f 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -10,7 +10,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the program; if not, see + * License along with the program; if not, see * * * Authors: @@ -469,7 +469,7 @@ static void composer_set_no_change (EMsgComposer *composer, gboolean drop_undo, gboolean editor_changed) { GtkhtmlEditor *editor; - + g_return_if_fail (composer != NULL); editor = GTKHTML_EDITOR (composer); @@ -662,7 +662,7 @@ create_new_composer (const char *subject, const char *fromuri, gboolean use_defa if (lite) composer = e_msg_composer_lite_new (); else - composer = e_msg_composer_new (); + composer = e_msg_composer_new (); table = e_msg_composer_get_header_table (composer); if (fromuri != NULL) { @@ -773,7 +773,7 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const char *uid) CamelMimePart *mime_part = CAMEL_MIME_PART (message); CamelDataWrapper *mail_text; CamelMultipart *body = camel_multipart_new (); - CamelStream *stream; + CamelStream *stream; CamelMimePart *part; int count1 = 0, string_changed = 0; const char *cur; @@ -863,8 +863,8 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const char *uid) } g_strfreev(temp_str); - } - else + } + else cur++; } @@ -879,7 +879,7 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const char *uid) mail_text = camel_data_wrapper_new (); camel_data_wrapper_set_mime_type_field (mail_text, type); - + camel_stream_printf (stream, "%s", g_strdup(str)); camel_data_wrapper_construct_from_stream (mail_text, stream); @@ -896,10 +896,10 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const char *uid) camel_object_unref (body); } } - + composer = e_msg_composer_new_with_message (message); - - if (em_utils_folder_is_templates(drafts, NULL) == TRUE) + + if (em_utils_folder_is_templates(drafts, NULL) == TRUE) em_composer_utils_setup_callbacks (composer, NULL, NULL, 0, 0, NULL, NULL); else em_composer_utils_setup_callbacks (composer, NULL, NULL, 0, 0, drafts, uid); @@ -925,7 +925,7 @@ em_utils_edit_message (CamelMimeMessage *message, CamelFolder *folder) if (folder) edit_message (message, folder, NULL); else - edit_message (message, NULL, NULL); + edit_message (message, NULL, NULL); } static void @@ -1047,7 +1047,7 @@ forward_attached_cb (CamelFolder *folder, GPtrArray *messages, CamelMimePart *pa if (part) forward_attached (folder, fad->uids, messages, part, subject, fad->fromuri); - + g_free (fad->fromuri); g_free (fad); } @@ -2261,7 +2261,7 @@ em_utils_construct_composer_text (CamelMimeMessage *message, EMFormat *source) char *text, *credits; ssize_t len = 0; gboolean start_bottom = 0; - + credits = attribution_format (ATTRIBUTION, message); text = em_utils_message_to_html (message, credits, EM_FORMAT_QUOTE_CITE, &len, source, start_bottom ? "
" : NULL); -- cgit v1.2.3 From 948235c3d1076dbe6ed2e57a24c16a083bbd9f01 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 27 May 2009 10:29:19 -0400 Subject: Prefer GLib basic types over C types. --- mail/em-composer-utils.c | 222 +++++++++++++++++++++++------------------------ 1 file changed, 111 insertions(+), 111 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index fdff69861b..c433558295 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -80,14 +80,14 @@ static void em_utils_composer_send_cb (EMsgComposer *composer); static void em_utils_composer_save_draft_cb (EMsgComposer *composer); struct emcs_t { - unsigned int ref_count; + guint ref_count; CamelFolder *drafts_folder; - char *drafts_uid; + gchar *drafts_uid; CamelFolder *folder; guint32 flags, set; - char *uid; + gchar *uid; }; static struct emcs_t * @@ -178,12 +178,12 @@ ask_confirm_for_unwanted_html_mail (EMsgComposer *composer, EDestination **recip { gboolean res; GString *str; - int i; + gint i; str = g_string_new(""); for (i = 0; recipients[i] != NULL; ++i) { if (!e_destination_get_html_mail_pref (recipients[i])) { - const char *name; + const gchar *name; name = e_destination_get_textrep (recipients[i], FALSE); @@ -230,7 +230,7 @@ struct _send_data { static void composer_send_queued_cb (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, - int queued, const char *appended_uid, void *data) + gint queued, const gchar *appended_uid, gpointer data) { struct emcs_t *emcs; struct _send_data *send = data; @@ -286,12 +286,12 @@ composer_get_message (EMsgComposer *composer, gboolean save_html_object_data) EDestination **recipients, **recipients_bcc; gboolean html_mode, send_html, confirm_html; CamelInternetAddress *cia; - int hidden = 0, shown = 0; - int num = 0, num_bcc = 0, num_post = 0; - const char *subject; + gint hidden = 0, shown = 0; + gint num = 0, num_bcc = 0, num_post = 0; + const gchar *subject; GConfClient *gconf; EAccount *account; - int i; + gint i; GList *postlist; EMEvent *eme; EMEventTargetComposer *target; @@ -312,7 +312,7 @@ composer_get_message (EMsgComposer *composer, gboolean save_html_object_data) /* see which ones are visible/present, etc */ if (recipients) { for (i = 0; recipients[i] != NULL; i++) { - const char *addr = e_destination_get_address (recipients[i]); + const gchar *addr = e_destination_get_address (recipients[i]); if (addr && addr[0]) { camel_address_decode ((CamelAddress *) cia, addr); @@ -333,7 +333,7 @@ composer_get_message (EMsgComposer *composer, gboolean save_html_object_data) recipients_bcc = e_composer_header_table_get_destinations_bcc (table); if (recipients_bcc) { for (i = 0; recipients_bcc[i] != NULL; i++) { - const char *addr = e_destination_get_address (recipients_bcc[i]); + const gchar *addr = e_destination_get_address (recipients_bcc[i]); if (addr && addr[0]) { camel_address_decode ((CamelAddress *) cia, addr); @@ -429,9 +429,9 @@ composer_get_message (EMsgComposer *composer, gboolean save_html_object_data) camel_medium_set_header (CAMEL_MEDIUM (message), "X-Evolution-Transport", account->transport->url); camel_medium_set_header (CAMEL_MEDIUM (message), "X-Evolution-Fcc", account->sent_folder_uri); if (account->id->organization && *account->id->organization) { - char *org; + gchar *org; - org = camel_header_encode_string ((const unsigned char *)account->id->organization); + org = camel_header_encode_string ((const guchar *)account->id->organization); camel_medium_set_header (CAMEL_MEDIUM (message), "Organization", org); g_free (org); } @@ -517,8 +517,8 @@ composer_set_no_change (EMsgComposer *composer, gboolean drop_undo, gboolean edi } static void -save_draft_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, int ok, - const char *appended_uid, void *user_data) +save_draft_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, gint ok, + const gchar *appended_uid, gpointer user_data) { struct _save_draft_info *sdi = user_data; struct emcs_t *emcs; @@ -572,7 +572,7 @@ save_draft_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *i } static void -save_draft_folder (char *uri, CamelFolder *folder, gpointer data) +save_draft_folder (gchar *uri, CamelFolder *folder, gpointer data) { CamelFolder **save = data; @@ -617,7 +617,7 @@ em_utils_composer_save_draft_cb (EMsgComposer *composer) if (account && account->drafts_folder_uri && strcmp (account->drafts_folder_uri, local_drafts_folder_uri) != 0) { - int id; + gint id; id = mail_get_folder (account->drafts_folder_uri, 0, save_draft_folder, &folder, mail_msg_unordered_push); mail_msg_wait (id); @@ -665,7 +665,7 @@ em_utils_composer_print_cb (EMsgComposer *composer, /* Composing messages... */ static EMsgComposer * -create_new_composer (const char *subject, const char *fromuri, gboolean lite) +create_new_composer (const gchar *subject, const gchar *fromuri, gboolean lite) { EMsgComposer *composer; EComposerHeaderTable *table; @@ -700,7 +700,7 @@ create_new_composer (const char *subject, const char *fromuri, gboolean lite) * window. **/ void -em_utils_compose_new_message (const char *fromuri) +em_utils_compose_new_message (const gchar *fromuri) { GtkWidget *composer; @@ -720,7 +720,7 @@ em_utils_compose_new_message (const char *fromuri) * window. **/ struct _EMsgComposer * -em_utils_compose_lite_new_message (const char *fromuri) +em_utils_compose_lite_new_message (const gchar *fromuri) { GtkWidget *composer; @@ -742,7 +742,7 @@ em_utils_compose_lite_new_message (const char *fromuri) * according to the values in the mailto url. **/ void -em_utils_compose_new_message_with_mailto (const char *url, const char *fromuri) +em_utils_compose_new_message_with_mailto (const gchar *url, const gchar *fromuri) { EMsgComposer *composer; EComposerHeaderTable *table; @@ -768,7 +768,7 @@ em_utils_compose_new_message_with_mailto (const char *url, const char *fromuri) /* Editing messages... */ static void -edit_message (CamelMimeMessage *message, CamelFolder *drafts, const char *uid) +edit_message (CamelMimeMessage *message, CamelFolder *drafts, const gchar *uid) { EMsgComposer *composer; @@ -783,11 +783,11 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const char *uid) CamelMultipart *body = camel_multipart_new (); CamelStream *stream; CamelMimePart *part; - int count1 = 0, string_changed = 0; - const char *cur; - int i; + gint count1 = 0, string_changed = 0; + const gchar *cur; + gint i; - char *str; + gchar *str; gint count = 2; content = camel_medium_get_content_object ((CamelMedium *) message); @@ -814,17 +814,17 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const char *uid) mem = camel_stream_mem_new (); camel_data_wrapper_decode_to_stream (content, mem); - str = g_strndup ((const gchar*)((CamelStreamMem *) mem)->buffer->data, ((CamelStreamMem *) mem)->buffer->len); + str = g_strndup ((const gchar *)((CamelStreamMem *) mem)->buffer->data, ((CamelStreamMem *) mem)->buffer->len); camel_object_unref (mem); cur = str; for (i = 0; i < strlen(str); i++) { if (!g_ascii_strncasecmp (cur, "$", 1)) { - const char *end = cur, *check_env; - char *out; + const gchar *end = cur, *check_env; + gchar *out; GConfClient *gconf; GSList *clue_list = NULL, *list; - char **temp_str; + gchar **temp_str; gconf = gconf_client_get_default (); @@ -842,7 +842,7 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const char *uid) g_object_unref (gconf); for (list = clue_list; list; list = g_slist_next (list)) { - char **temp = g_strsplit (list->data, "=", 2); + gchar **temp = g_strsplit (list->data, "=", 2); if (!g_ascii_strcasecmp(temp[0], out+1)) { str = g_strdup_printf("%s%s%s", temp_str[0], temp[1], temp_str[1]); cur = str + i; @@ -939,10 +939,10 @@ em_utils_edit_message (CamelMimeMessage *message, CamelFolder *folder) } static void -edit_messages (CamelFolder *folder, GPtrArray *uids, GPtrArray *msgs, void *user_data) +edit_messages (CamelFolder *folder, GPtrArray *uids, GPtrArray *msgs, gpointer user_data) { gboolean replace = GPOINTER_TO_INT (user_data); - int i; + gint i; if (msgs == NULL) return; @@ -979,7 +979,7 @@ struct forward_attached_data { CamelFolder *folder; GPtrArray *uids; - char *fromuri; + gchar *fromuri; }; static void @@ -1031,7 +1031,7 @@ setup_forward_attached_callbacks (EMsgComposer *composer, CamelFolder *folder, G } static void -forward_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, CamelMimePart *part, char *subject, const char *fromuri) +forward_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, CamelMimePart *part, gchar *subject, const gchar *fromuri) { EMsgComposer *composer; @@ -1051,7 +1051,7 @@ forward_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, Cam } static void -forward_attached_cb (CamelFolder *folder, GPtrArray *messages, CamelMimePart *part, char *subject, void *user_data) +forward_attached_cb (CamelFolder *folder, GPtrArray *messages, CamelMimePart *part, gchar *subject, gpointer user_data) { struct forward_attached_data *fad = (struct forward_attached_data *) user_data; @@ -1075,7 +1075,7 @@ forward_attached_cb (CamelFolder *folder, GPtrArray *messages, CamelMimePart *pa * forwarded as a simple message/rfc822 attachment. **/ void -em_utils_forward_attached (CamelFolder *folder, GPtrArray *uids, const char *fromuri) +em_utils_forward_attached (CamelFolder *folder, GPtrArray *uids, const gchar *fromuri) { struct forward_attached_data *fad; @@ -1090,12 +1090,12 @@ em_utils_forward_attached (CamelFolder *folder, GPtrArray *uids, const char *fro } static void -forward_non_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, int style, const char *fromuri) +forward_non_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, gint style, const gchar *fromuri) { CamelMimeMessage *message; EMsgComposer *composer; - char *subject, *text; - int i; + gchar *subject, *text; + gint i; guint32 flags; if (messages->len == 0) @@ -1141,9 +1141,9 @@ forward_non_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, } static void -forward_inline (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, void *user_data) +forward_inline (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, gpointer user_data) { - forward_non_attached (folder, uids, messages, MAIL_CONFIG_FORWARD_INLINE, (char *)user_data); + forward_non_attached (folder, uids, messages, MAIL_CONFIG_FORWARD_INLINE, (gchar *)user_data); g_free(user_data); } @@ -1156,7 +1156,7 @@ forward_inline (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, void * Forwards each message in the 'inline' form, each in its own composer window. **/ void -em_utils_forward_inline (CamelFolder *folder, GPtrArray *uids, const char *fromuri) +em_utils_forward_inline (CamelFolder *folder, GPtrArray *uids, const gchar *fromuri) { g_return_if_fail (CAMEL_IS_FOLDER (folder)); g_return_if_fail (uids != NULL); @@ -1165,9 +1165,9 @@ em_utils_forward_inline (CamelFolder *folder, GPtrArray *uids, const char *fromu } static void -forward_quoted (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, void *user_data) +forward_quoted (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, gpointer user_data) { - forward_non_attached (folder, uids, messages, MAIL_CONFIG_FORWARD_QUOTED, (char *)user_data); + forward_non_attached (folder, uids, messages, MAIL_CONFIG_FORWARD_QUOTED, (gchar *)user_data); g_free(user_data); } @@ -1181,7 +1181,7 @@ forward_quoted (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, void * a "> "), each in its own composer window. **/ void -em_utils_forward_quoted (CamelFolder *folder, GPtrArray *uids, const char *fromuri) +em_utils_forward_quoted (CamelFolder *folder, GPtrArray *uids, const gchar *fromuri) { g_return_if_fail (CAMEL_IS_FOLDER (folder)); g_return_if_fail (uids != NULL); @@ -1198,13 +1198,13 @@ em_utils_forward_quoted (CamelFolder *folder, GPtrArray *uids, const char *fromu * Forwards a message in the user's configured default style. **/ void -em_utils_forward_message (CamelMimeMessage *message, const char *fromuri) +em_utils_forward_message (CamelMimeMessage *message, const gchar *fromuri) { GPtrArray *messages; CamelMimePart *part; GConfClient *gconf; - char *subject; - int mode; + gchar *subject; + gint mode; messages = g_ptr_array_new (); g_ptr_array_add (messages, message); @@ -1243,10 +1243,10 @@ em_utils_forward_message (CamelMimeMessage *message, const char *fromuri) * style. **/ void -em_utils_forward_messages (CamelFolder *folder, GPtrArray *uids, const char *fromuri) +em_utils_forward_messages (CamelFolder *folder, GPtrArray *uids, const gchar *fromuri) { GConfClient *gconf; - int mode; + gint mode; gconf = mail_config_get_gconf_client (); mode = gconf_client_get_int (gconf, "/apps/evolution/mail/format/forward_style", NULL); @@ -1308,7 +1308,7 @@ em_utils_redirect_message (CamelMimeMessage *message) } static void -redirect_msg (CamelFolder *folder, const char *uid, CamelMimeMessage *message, void *user_data) +redirect_msg (CamelFolder *folder, const gchar *uid, CamelMimeMessage *message, gpointer user_data) { if (message == NULL) return; @@ -1325,7 +1325,7 @@ redirect_msg (CamelFolder *folder, const char *uid, CamelMimeMessage *message, v * be editable). Adds Resent-From/Resent-To/etc headers. **/ void -em_utils_redirect_message_by_uid (CamelFolder *folder, const char *uid) +em_utils_redirect_message_by_uid (CamelFolder *folder, const gchar *uid) { g_return_if_fail (CAMEL_IS_FOLDER (folder)); g_return_if_fail (uid != NULL); @@ -1334,7 +1334,7 @@ em_utils_redirect_message_by_uid (CamelFolder *folder, const char *uid) } static void -emu_handle_receipt_message(CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *data, CamelException *ex) +emu_handle_receipt_message(CamelFolder *folder, const gchar *uid, CamelMimeMessage *msg, gpointer data, CamelException *ex) { if (msg) em_utils_handle_receipt(folder, uid, msg); @@ -1345,10 +1345,10 @@ emu_handle_receipt_message(CamelFolder *folder, const char *uid, CamelMimeMessag /* Message disposition notifications, rfc 2298 */ void -em_utils_handle_receipt (CamelFolder *folder, const char *uid, CamelMimeMessage *msg) +em_utils_handle_receipt (CamelFolder *folder, const gchar *uid, CamelMimeMessage *msg) { EAccount *account; - const char *addr; + const gchar *addr; CamelMessageInfo *info; info = camel_folder_get_message_info(folder, uid); @@ -1391,7 +1391,7 @@ em_utils_handle_receipt (CamelFolder *folder, const char *uid, CamelMimeMessage static void em_utils_receipt_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, - int queued, const char *appended_uid, void *data) + gint queued, const gchar *appended_uid, gpointer data) { camel_message_info_free (info); mail_send (); @@ -1412,14 +1412,14 @@ em_utils_send_receipt (CamelFolder *folder, CamelMimeMessage *message) CamelStream *stream; CamelFolder *out_folder; CamelMessageInfo *info; - const char *message_id = camel_medium_get_header (CAMEL_MEDIUM (message), "Message-ID"); - const char *message_date = camel_medium_get_header (CAMEL_MEDIUM (message), "Date"); - const char *message_subject = camel_mime_message_get_subject (message); - const char *receipt_address = camel_medium_get_header (CAMEL_MEDIUM (message), "Disposition-Notification-To"); - char *fake_msgid; - char *hostname; - char *self_address, *receipt_subject; - char *ua, *recipient; + const gchar *message_id = camel_medium_get_header (CAMEL_MEDIUM (message), "Message-ID"); + const gchar *message_date = camel_medium_get_header (CAMEL_MEDIUM (message), "Date"); + const gchar *message_subject = camel_mime_message_get_subject (message); + const gchar *receipt_address = camel_medium_get_header (CAMEL_MEDIUM (message), "Disposition-Notification-To"); + gchar *fake_msgid; + gchar *hostname; + gchar *self_address, *receipt_subject; + gchar *ua, *recipient; if (!receipt_address) return; @@ -1534,7 +1534,7 @@ em_utils_send_receipt (CamelFolder *folder, CamelMimeMessage *message) static void emu_forward_raw_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, - int queued, const char *appended_uid, void *data) + gint queued, const gchar *appended_uid, gpointer data) { camel_message_info_free (info); /* do not call mail send, just pile them all in the outbox */ @@ -1550,7 +1550,7 @@ emu_forward_raw_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageIn * Forwards message to the address, in very similar way as redirect does. **/ void -em_utils_forward_message_raw (CamelFolder *folder, CamelMimeMessage *message, const char *address, CamelException *ex) +em_utils_forward_message_raw (CamelFolder *folder, CamelMimeMessage *message, const gchar *address, CamelException *ex) { EAccount *account; CamelMimeMessage *forward; @@ -1559,7 +1559,7 @@ em_utils_forward_message_raw (CamelFolder *folder, CamelMimeMessage *message, co CamelFolder *out_folder; CamelMessageInfo *info; struct _camel_header_raw *xev; - char *subject; + gchar *subject; g_return_if_fail (folder != NULL); g_return_if_fail (message != NULL); @@ -1664,7 +1664,7 @@ generate_account_hash (void) } if (!acnt) - g_hash_table_insert (account_hash, (char *) account->id->address, (void *) account); + g_hash_table_insert (account_hash, (gchar *) account->id->address, (gpointer) account); } e_iterator_next (iter); @@ -1674,7 +1674,7 @@ generate_account_hash (void) /* The default account has to be there if none of the enabled accounts are present */ if (g_hash_table_size (account_hash) == 0 && def && def->id->address) - g_hash_table_insert (account_hash, (char *) def->id->address, (void *) def); + g_hash_table_insert (account_hash, (gchar *) def->id->address, (gpointer) def); return account_hash; } @@ -1683,7 +1683,7 @@ EDestination ** em_utils_camel_address_to_destination (CamelInternetAddress *iaddr) { EDestination *dest, **destv; - int n, i, j; + gint n, i, j; if (iaddr == NULL) return NULL; @@ -1693,7 +1693,7 @@ em_utils_camel_address_to_destination (CamelInternetAddress *iaddr) destv = g_malloc (sizeof (EDestination *) * (n + 1)); for (i = 0, j = 0; i < n; i++) { - const char *name, *addr; + const gchar *name, *addr; if (camel_internet_address_get (iaddr, i, &name, &addr)) { dest = e_destination_new (); @@ -1719,11 +1719,11 @@ reply_get_composer (CamelMimeMessage *message, EAccount *account, CamelInternetAddress *to, CamelInternetAddress *cc, CamelFolder *folder, CamelNNTPAddress *postto) { - const char *message_id, *references; + const gchar *message_id, *references; EDestination **tov, **ccv; EMsgComposer *composer; EComposerHeaderTable *table; - char *subject; + gchar *subject; g_return_val_if_fail (CAMEL_IS_MIME_MESSAGE (message), NULL); g_return_val_if_fail (to == NULL || CAMEL_IS_INTERNET_ADDRESS (to), NULL); @@ -1736,7 +1736,7 @@ reply_get_composer (CamelMimeMessage *message, EAccount *account, ccv = em_utils_camel_address_to_destination (cc); /* Set the subject of the new message. */ - if ((subject = (char *) camel_mime_message_get_subject (message))) { + if ((subject = (gchar *) camel_mime_message_get_subject (message))) { if (g_ascii_strncasecmp (subject, "Re: ", 4) != 0) subject = g_strdup_printf ("Re: %s", subject); else @@ -1758,8 +1758,8 @@ reply_get_composer (CamelMimeMessage *message, EAccount *account, /* add post-to, if nessecary */ if (postto && camel_address_length((CamelAddress *)postto)) { - char *store_url = NULL; - char *post; + gchar *store_url = NULL; + gchar *post; if (folder) { store_url = camel_url_to_string (CAMEL_SERVICE (folder->parent_store)->url, CAMEL_URL_HIDE_ALL); @@ -1778,7 +1778,7 @@ reply_get_composer (CamelMimeMessage *message, EAccount *account, message_id = camel_medium_get_header (CAMEL_MEDIUM (message), "Message-Id"); references = camel_medium_get_header (CAMEL_MEDIUM (message), "References"); if (message_id) { - char *reply_refs; + gchar *reply_refs; e_msg_composer_add_header (composer, "In-Reply-To", message_id); @@ -1800,7 +1800,7 @@ static EAccount * guess_account_folder(CamelFolder *folder) { EAccount *account; - char *tmp; + gchar *tmp; tmp = camel_url_to_string(CAMEL_SERVICE(folder->parent_store)->url, CAMEL_URL_HIDE_ALL); account = mail_config_get_account_by_source_url(tmp); @@ -1814,8 +1814,8 @@ guess_account (CamelMimeMessage *message, CamelFolder *folder) { GHashTable *account_hash = NULL; EAccount *account = NULL; - const char *tmp; - int i, j; + const gchar *tmp; + gint i, j; const gchar *types[2] = { CAMEL_RECIPIENT_TYPE_TO, CAMEL_RECIPIENT_TYPE_CC @@ -1865,8 +1865,8 @@ static void get_reply_sender (CamelMimeMessage *message, CamelInternetAddress *to, CamelNNTPAddress *postto) { const CamelInternetAddress *reply_to; - const char *name, *addr, *posthdr; - int i; + const gchar *name, *addr, *posthdr; + gint i; /* check whether there is a 'Newsgroups: ' header in there */ if (postto @@ -1895,8 +1895,8 @@ em_utils_get_reply_sender (CamelMimeMessage *message, CamelInternetAddress *to, static gboolean get_reply_list (CamelMimeMessage *message, CamelInternetAddress *to) { - const char *header, *p; - char *addr; + const gchar *header, *p; + gchar *addr; /* Examples: * @@ -1935,13 +1935,13 @@ get_reply_list (CamelMimeMessage *message, CamelInternetAddress *to) static void concat_unique_addrs (CamelInternetAddress *dest, const CamelInternetAddress *src, GHashTable *rcpt_hash) { - const char *name, *addr; - int i; + const gchar *name, *addr; + gint i; for (i = 0; camel_internet_address_get (src, i, &name, &addr); i++) { if (!g_hash_table_lookup (rcpt_hash, addr)) { camel_internet_address_add (dest, name, addr); - g_hash_table_insert (rcpt_hash, (char *) addr, GINT_TO_POINTER (1)); + g_hash_table_insert (rcpt_hash, (gchar *) addr, GINT_TO_POINTER (1)); } } } @@ -1950,9 +1950,9 @@ static void get_reply_all (CamelMimeMessage *message, CamelInternetAddress *to, CamelInternetAddress *cc, CamelNNTPAddress *postto) { const CamelInternetAddress *reply_to, *to_addrs, *cc_addrs; - const char *name, *addr, *posthdr; + const gchar *name, *addr, *posthdr; GHashTable *rcpt_hash; - int i; + gint i; /* check whether there is a 'Newsgroups: ' header in there */ if (postto) { @@ -1980,7 +1980,7 @@ get_reply_all (CamelMimeMessage *message, CamelInternetAddress *to, CamelInterne is kinda silly. */ camel_internet_address_add (to, name, addr); - g_hash_table_insert (rcpt_hash, (char *) addr, GINT_TO_POINTER (1)); + g_hash_table_insert (rcpt_hash, (gchar *) addr, GINT_TO_POINTER (1)); } } } @@ -2029,13 +2029,13 @@ enum { ATTRIB_TM_YDAY }; -typedef void (* AttribFormatter) (GString *str, const char *attr, CamelMimeMessage *message); +typedef void (* AttribFormatter) (GString *str, const gchar *attr, CamelMimeMessage *message); static void -format_sender (GString *str, const char *attr, CamelMimeMessage *message) +format_sender (GString *str, const gchar *attr, CamelMimeMessage *message) { const CamelInternetAddress *sender; - const char *name, *addr; + const gchar *name, *addr; sender = camel_mime_message_get_from (message); if (sender != NULL && camel_address_length (CAMEL_ADDRESS (sender)) > 0) { @@ -2056,10 +2056,10 @@ format_sender (GString *str, const char *attr, CamelMimeMessage *message) } static struct { - const char *name; - int type; + const gchar *name; + gint type; struct { - const char *format; /* strftime or printf format */ + const gchar *format; /* strftime or printf format */ AttribFormatter formatter; /* custom formatter */ } v; } attribvars[] = { @@ -2090,17 +2090,17 @@ static struct { * variables, see em-composer-utils.c:1514 */ #define ATTRIBUTION _("On ${AbbrevWeekdayName}, ${Year}-${Month}-${Day} at ${24Hour}:${Minute} ${TimeZone}, ${Sender} wrote:") -static char * -attribution_format (const char *format, CamelMimeMessage *message) +static gchar * +attribution_format (const gchar *format, CamelMimeMessage *message) { - register const char *inptr; - const char *start; - int tzone, len, i; - char buf[64], *s; + register const gchar *inptr; + const gchar *start; + gint tzone, len, i; + gchar buf[64], *s; GString *str; struct tm tm; time_t date; - int type; + gint type; str = g_string_new (""); @@ -2211,7 +2211,7 @@ attribution_format (const char *format, CamelMimeMessage *message) static void composer_set_body (EMsgComposer *composer, CamelMimeMessage *message, EMFormat *source) { - char *text, *credits; + gchar *text, *credits; CamelMimePart *part; GConfClient *gconf; ssize_t len = 0; @@ -2266,13 +2266,13 @@ composer_set_body (EMsgComposer *composer, CamelMimeMessage *message, EMFormat * struct _reply_data { EMFormat *source; - int mode; + gint mode; }; -char * +gchar * em_utils_construct_composer_text (CamelMimeMessage *message, EMFormat *source) { - char *text, *credits; + gchar *text, *credits; ssize_t len = 0; gboolean start_bottom = 0; @@ -2285,7 +2285,7 @@ em_utils_construct_composer_text (CamelMimeMessage *message, EMFormat *source) static void -reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage *message, void *user_data) +reply_to_message(CamelFolder *folder, const gchar *uid, CamelMimeMessage *message, gpointer user_data) { struct _reply_data *rd = user_data; @@ -2315,7 +2315,7 @@ reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage *message * been replied to. **/ struct _EMsgComposer * -em_utils_reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage *message, int mode, EMFormat *source) +em_utils_reply_to_message(CamelFolder *folder, const gchar *uid, CamelMimeMessage *message, gint mode, EMFormat *source) { CamelInternetAddress *to, *cc; CamelNNTPAddress *postto = NULL; -- cgit v1.2.3 From 14f8eee012382f04090ea9277e9567d5f32e8bf0 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 28 May 2009 13:06:29 -0400 Subject: Whitespace cleanup. --- mail/em-composer-utils.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index c433558295..67d26f440d 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -671,10 +671,10 @@ create_new_composer (const gchar *subject, const gchar *fromuri, gboolean lite) EComposerHeaderTable *table; EAccount *account = NULL; - if (lite) - composer = e_msg_composer_lite_new (); - else - composer = e_msg_composer_new (); + if (lite) + composer = e_msg_composer_lite_new (); + else + composer = e_msg_composer_new (); table = e_msg_composer_get_header_table (composer); if (fromuri != NULL) { -- cgit v1.2.3 From 433eac7844481b8ceda0bae8bf08f6bb623185b0 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 1 Jun 2009 19:09:19 -0400 Subject: More code cleanup. --- mail/em-composer-utils.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 67d26f440d..74438b2043 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -1106,7 +1106,7 @@ forward_non_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, flags |= EM_FORMAT_QUOTE_CITE; for (i = 0; i < messages->len; i++) { - ssize_t len; + gssize len; message = messages->pdata[i]; subject = mail_tool_generate_forward_subject (message); @@ -2214,7 +2214,7 @@ composer_set_body (EMsgComposer *composer, CamelMimeMessage *message, EMFormat * gchar *text, *credits; CamelMimePart *part; GConfClient *gconf; - ssize_t len = 0; + gssize len = 0; gboolean start_bottom; gconf = mail_config_get_gconf_client (); @@ -2273,7 +2273,7 @@ gchar * em_utils_construct_composer_text (CamelMimeMessage *message, EMFormat *source) { gchar *text, *credits; - ssize_t len = 0; + gssize len = 0; gboolean start_bottom = 0; credits = attribution_format (ATTRIBUTION, message); -- cgit v1.2.3 From be8ee5393471a83b24aed4de1669afd723cb3168 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 9 Jun 2009 23:15:20 -0400 Subject: Use key files for tracking widget states. Each EShellView now maintains a GKeyFile for recording disposable widget state such as tree view path expansion, scroll bar positions, combo box selections, etc. The EShellView records changes to the key file to ~/.evolution//config/state, and automatically restores the GKeyFile at startup. Currently only the mailer uses the key file, but it's intended to serve all shell views. It replaces the use of Camel "cmeta" files, as well as "et-expanded-*" and "folder-tree-expand-state.xml" files. Also, the mailer's folder tree model now includes a column for tracking which sidebar folders are expanded. Folder tree widgets appearing in dialog windows can copy the sidebar's expanded state using em_folder_tree_clone_expanded(). --- mail/em-composer-utils.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 74438b2043..6c35a4e7e8 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -117,8 +117,6 @@ emcs_set_drafts_info (struct emcs_t *emcs, camel_object_ref (drafts_folder); emcs->drafts_folder = drafts_folder; emcs->drafts_uid = g_strdup (drafts_uid); - - g_debug ("%s", G_STRFUNC); } static void @@ -141,8 +139,6 @@ emcs_set_folder_info (struct emcs_t *emcs, emcs->uid = g_strdup (uid); emcs->flags = flags; emcs->set = set; - - g_debug ("%s", G_STRFUNC); } static void @@ -2412,8 +2408,9 @@ post_header_clicked_cb (EComposerPostHeader *header, model = e_mail_shell_backend_get_folder_tree_model (mail_shell_backend); folder_tree = em_folder_tree_new_with_model (model); - em_folder_tree_set_multiselect ( - EM_FOLDER_TREE (folder_tree), TRUE); + em_folder_tree_clone_expanded (EM_FOLDER_TREE (folder_tree)); + em_folder_tree_set_multiselect (EM_FOLDER_TREE (folder_tree), TRUE); + em_folder_tree_set_excluded ( EM_FOLDER_TREE (folder_tree), EMFT_EXCLUDE_NOSELECT | -- cgit v1.2.3 From ab27aff72c64183166fc6207d2ef0142e1ab8c83 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 13 Jun 2009 15:07:00 -0400 Subject: Thought of a better way to copy folder tree state. Revert the expanded tree model column and add a "selection"property to EMFolderTreeModel, which the sidebar sets. If set, all new EMFolderTree instances will automatically mimic its expanded and selected state. --- mail/em-composer-utils.c | 1 - 1 file changed, 1 deletion(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 6c35a4e7e8..4b1d9aedce 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -2408,7 +2408,6 @@ post_header_clicked_cb (EComposerPostHeader *header, model = e_mail_shell_backend_get_folder_tree_model (mail_shell_backend); folder_tree = em_folder_tree_new_with_model (model); - em_folder_tree_clone_expanded (EM_FOLDER_TREE (folder_tree)); em_folder_tree_set_multiselect (EM_FOLDER_TREE (folder_tree), TRUE); em_folder_tree_set_excluded ( -- cgit v1.2.3 From 7d98f48c246dd3024f4f093ca4249c993286ee36 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 20 Jun 2009 00:15:43 -0400 Subject: EMFolderTree cleanups. --- mail/em-composer-utils.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 4b1d9aedce..ebef6cf78b 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -2401,6 +2401,7 @@ post_header_clicked_cb (EComposerPostHeader *header, EMailShellBackend *mail_shell_backend) { EMFolderTreeModel *model; + GtkTreeSelection *selection; GtkWidget *folder_tree; GtkWidget *dialog; GList *list; @@ -2408,7 +2409,8 @@ post_header_clicked_cb (EComposerPostHeader *header, model = e_mail_shell_backend_get_folder_tree_model (mail_shell_backend); folder_tree = em_folder_tree_new_with_model (model); - em_folder_tree_set_multiselect (EM_FOLDER_TREE (folder_tree), TRUE); + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_tree)); + gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE); em_folder_tree_set_excluded ( EM_FOLDER_TREE (folder_tree), -- cgit v1.2.3 From 174c942e0945a2017f0c479883dce2950e42e786 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 24 Jun 2009 00:40:49 -0400 Subject: Split store and local folder management out from shell backend. --- mail/em-composer-utils.c | 39 +++++++++++++++------------------------ 1 file changed, 15 insertions(+), 24 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index ebef6cf78b..23dcd94bbe 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -41,6 +41,7 @@ #include "e-util/e-error.h" #include "e-util/e-account-utils.h" +#include "e-mail-local.h" #include "em-utils.h" #include "em-composer-utils.h" #include "composer/e-msg-composer.h" @@ -60,8 +61,6 @@ #include #include -#include "e-mail-shell-backend.h" - #ifdef G_OS_WIN32 /* Undef the similar macro from pthread.h, it doesn't check if * gmtime() returns NULL. @@ -448,7 +447,7 @@ em_utils_composer_send_cb (EMsgComposer *composer) CamelMimeMessage *message; CamelMessageInfo *info; struct _send_data *send; - CamelFolder *mail_folder; + CamelFolder *folder; EAccount *account; table = e_msg_composer_get_header_table (composer); @@ -463,9 +462,8 @@ em_utils_composer_send_cb (EMsgComposer *composer) if ((message = composer_get_message (composer, FALSE)) == NULL) return; - mail_folder = e_mail_shell_backend_get_folder ( - global_mail_shell_backend, E_MAIL_FOLDER_OUTBOX); - camel_object_ref (mail_folder); + folder = e_mail_local_get_folder (E_MAIL_FOLDER_OUTBOX); + camel_object_ref (folder); /* mail the message */ info = camel_message_info_new (NULL); @@ -482,9 +480,9 @@ em_utils_composer_send_cb (EMsgComposer *composer) e_msg_composer_set_enable_autosave (composer, FALSE); mail_append_mail ( - mail_folder, message, info, composer_send_queued_cb, send); + folder, message, info, composer_send_queued_cb, send); - camel_object_unref (mail_folder); + camel_object_unref (folder); camel_object_unref (message); } @@ -594,11 +592,10 @@ em_utils_composer_save_draft_cb (EMsgComposer *composer) * get destroyed while we're in mail_msg_wait() a little lower * down, waiting for the folder to open */ - local_drafts_folder = e_mail_shell_backend_get_folder ( - global_mail_shell_backend, E_MAIL_FOLDER_DRAFTS); - - local_drafts_folder_uri = e_mail_shell_backend_get_folder_uri ( - global_mail_shell_backend, E_MAIL_FOLDER_DRAFTS); + local_drafts_folder = + e_mail_local_get_folder (E_MAIL_FOLDER_DRAFTS); + local_drafts_folder_uri = + e_mail_local_get_folder_uri (E_MAIL_FOLDER_DRAFTS); g_object_ref (composer); msg = e_msg_composer_get_message_draft (composer); @@ -1521,9 +1518,8 @@ em_utils_send_receipt (CamelFolder *folder, CamelMimeMessage *message) } /* Send the receipt */ - out_folder = e_mail_shell_backend_get_folder ( - global_mail_shell_backend, E_MAIL_FOLDER_OUTBOX); info = camel_message_info_new (NULL); + out_folder = e_mail_local_get_folder (E_MAIL_FOLDER_OUTBOX); camel_message_info_set_flags (info, CAMEL_MESSAGE_SEEN, CAMEL_MESSAGE_SEEN); mail_append_mail (out_folder, receipt, info, em_utils_receipt_done, NULL); } @@ -1618,9 +1614,8 @@ em_utils_forward_message_raw (CamelFolder *folder, CamelMimeMessage *message, co g_free (subject); /* and send it */ - out_folder = e_mail_shell_backend_get_folder ( - global_mail_shell_backend, E_MAIL_FOLDER_OUTBOX); info = camel_message_info_new (NULL); + out_folder = e_mail_local_get_folder (E_MAIL_FOLDER_OUTBOX); camel_message_info_set_flags (info, CAMEL_MESSAGE_SEEN, CAMEL_MESSAGE_SEEN); mail_append_mail (out_folder, forward, info, emu_forward_raw_done, NULL); } @@ -2397,17 +2392,14 @@ em_utils_reply_to_message(CamelFolder *folder, const gchar *uid, CamelMimeMessag } static void -post_header_clicked_cb (EComposerPostHeader *header, - EMailShellBackend *mail_shell_backend) +post_header_clicked_cb (EComposerPostHeader *header) { - EMFolderTreeModel *model; GtkTreeSelection *selection; GtkWidget *folder_tree; GtkWidget *dialog; GList *list; - model = e_mail_shell_backend_get_folder_tree_model (mail_shell_backend); - folder_tree = em_folder_tree_new_with_model (model); + folder_tree = em_folder_tree_new (); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_tree)); gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE); @@ -2498,6 +2490,5 @@ em_configure_new_composer (EMsgComposer *composer) * the folder selector dialog. See the handler function. */ g_signal_connect ( header, "clicked", - G_CALLBACK (post_header_clicked_cb), - global_mail_shell_backend); + G_CALLBACK (post_header_clicked_cb), NULL); } -- cgit v1.2.3 From f425fdc8e2a68fe6fece41ee0684ced30cebc1ed Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 13 Jul 2009 09:33:38 -0400 Subject: Fix some issues when building Anjal. --- mail/em-composer-utils.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 40abdcf37d..ce72600ed4 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -734,7 +734,7 @@ em_utils_compose_lite_new_message (const gchar *fromuri) * window. If @url is non-NULL, the composer fields will be filled in * according to the values in the mailto url. **/ -void +EMsgComposer * em_utils_compose_new_message_with_mailto (const gchar *url, const gchar *fromuri) { EMsgComposer *composer; @@ -754,8 +754,12 @@ em_utils_compose_new_message_with_mailto (const gchar *url, const gchar *fromuri composer_set_no_change (composer, TRUE, url == NULL); - gtk_widget_show ((GtkWidget *) composer); - gdk_window_raise (((GtkWidget *) composer)->window); + if (!e_msg_composer_get_lite ()) { + gtk_widget_show ((GtkWidget *) composer); + gdk_window_raise (((GtkWidget *) composer)->window); + } + + return composer; } /* Editing messages... */ -- cgit v1.2.3 From 374bd42f69aca2e132fd854c9619f3d7491f1f96 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sun, 12 Jul 2009 23:33:07 -0400 Subject: Fix excessive whitespace. --- mail/em-composer-utils.c | 4 ---- 1 file changed, 4 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index ce72600ed4..472d499b06 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -1044,7 +1044,6 @@ forward_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, Cam e_msg_composer_attach (composer, part); - if (uids) setup_forward_attached_callbacks (composer, folder, uids); @@ -1400,7 +1399,6 @@ em_utils_receipt_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageI mail_send (); } - void em_utils_send_receipt (CamelFolder *folder, CamelMimeMessage *message) { @@ -2012,7 +2010,6 @@ em_utils_get_reply_all (CamelMimeMessage *message, CamelInternetAddress *to, Cam get_reply_all (message, to, cc, postto); } - enum { ATTRIB_UNKNOWN, ATTRIB_CUSTOM, @@ -2284,7 +2281,6 @@ em_utils_construct_composer_text (CamelMimeMessage *message, EMFormat *source) return text; } - static void reply_to_message(CamelFolder *folder, const gchar *uid, CamelMimeMessage *message, gpointer user_data) { -- cgit v1.2.3 From fa360fde289f9b850191f89059d1a5e6d67c07c7 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 18 Jul 2009 14:07:42 -0400 Subject: More whitespace cleanup. --- mail/em-composer-utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 472d499b06..8370496c19 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -1516,7 +1516,7 @@ em_utils_send_receipt (CamelFolder *folder, CamelMimeMessage *message) camel_object_unref (addr); camel_medium_set_header (CAMEL_MEDIUM (receipt), "Return-Path", "<>"); - if(account) { + if (account) { camel_medium_set_header (CAMEL_MEDIUM (receipt), "X-Evolution-Account", account->uid); camel_medium_set_header (CAMEL_MEDIUM (receipt), -- cgit v1.2.3 From cd5ed0e6a2da749b02c9b8c799dc559d18b10953 Mon Sep 17 00:00:00 2001 From: Bharath Acharya Date: Thu, 6 Aug 2009 15:22:35 +0200 Subject: Bug #563041 - Template plugin doesn't work; added new variables $sender_name and $sender_email --- mail/em-composer-utils.c | 78 +++++++++++++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 31 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 818654df14..c9f0594c2d 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -781,8 +781,9 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const gchar *uid) CamelStream *stream; CamelMimePart *part; gint count1 = 0, string_changed = 0; - const gchar *cur; gint i; + GConfClient *gconf; + GSList *clue_list = NULL, *list; gchar *str; gint count = 2; @@ -814,63 +815,76 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const gchar *uid) str = g_strndup ((const gchar *)((CamelStreamMem *) mem)->buffer->data, ((CamelStreamMem *) mem)->buffer->len); camel_object_unref (mem); - cur = str; - for (i = 0; i < strlen(str); i++) { + gconf = gconf_client_get_default (); + /* Get the list from gconf */ + clue_list = gconf_client_get_list ( gconf, GCONF_KEY_TEMPLATE_PLACEHOLDERS, GCONF_VALUE_STRING, NULL ); + g_object_unref (gconf); + + for (i = 0; i < strlen (str); i++) { + const gchar *cur = str + i; if (!g_ascii_strncasecmp (cur, "$", 1)) { - const gchar *end = cur, *check_env; + const gchar *end = cur + 1; gchar *out; - GConfClient *gconf; - GSList *clue_list = NULL, *list; gchar **temp_str; - gconf = gconf_client_get_default (); - - while (*end && !g_unichar_isspace (*end) && (*end != '"')) + while (*end && (g_unichar_isalnum (*end) || *end == '_')) end++; out = g_strndup ((const gchar *) cur, end - cur); - check_env = out; temp_str = g_strsplit (str, out, 2); - /* Get the list from gconf */ - clue_list = gconf_client_get_list ( gconf, GCONF_KEY_TEMPLATE_PLACEHOLDERS, GCONF_VALUE_STRING, NULL ); - - g_object_unref (gconf); - for (list = clue_list; list; list = g_slist_next (list)) { gchar **temp = g_strsplit (list->data, "=", 2); if (!g_ascii_strcasecmp(temp[0], out+1)) { - str = g_strdup_printf("%s%s%s", temp_str[0], temp[1], temp_str[1]); - cur = str + i; + g_free (str); + str = g_strconcat (temp_str[0], temp[1], temp_str[1], NULL); count1 = 1; string_changed = 1; - } - else + } else count1 = 0; g_strfreev(temp); } - if (clue_list) { - g_slist_foreach (clue_list, (GFunc) g_free, NULL); - g_slist_free (clue_list); + if (!count1) { + if (getenv (out+1)) { + g_free (str); + str = g_strconcat (temp_str[0], getenv (out + 1), temp_str[1], NULL); + count1 = 1; + string_changed = 1; + } else + count1 = 0; } if (!count1) { - if (getenv(out+1)) { - str = g_strdup_printf("%s%s%s", temp_str[0], getenv(out + 1), temp_str[1]); - cur = str + i; + const CamelInternetAddress *to; + const gchar *name, *addr; + + to = camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_TO); + if (!camel_internet_address_get (to, 0, &name, &addr)) + continue; + + if (name && g_ascii_strcasecmp ("sender_name", out + 1) == 0) { + g_free (str); + str = g_strconcat (temp_str[0], name, temp_str[1], NULL); + count1 = 1; + string_changed = 1; + } else if (addr && g_ascii_strcasecmp ("sender_email", out + 1) == 0) { + g_free (str); + str = g_strconcat (temp_str[0], addr, temp_str[1], NULL); count1 = 1; string_changed = 1; } - else - count1 = 0; } - g_strfreev(temp_str); + g_strfreev (temp_str); + g_free (out); } - else - cur++; + } + + if (clue_list) { + g_slist_foreach (clue_list, (GFunc) g_free, NULL); + g_slist_free (clue_list); } if (string_changed) { @@ -885,7 +899,7 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const gchar *uid) mail_text = camel_data_wrapper_new (); camel_data_wrapper_set_mime_type_field (mail_text, type); - camel_stream_printf (stream, "%s", g_strdup(str)); + camel_stream_printf (stream, "%s", str); camel_data_wrapper_construct_from_stream (mail_text, stream); camel_object_unref (stream); @@ -900,6 +914,8 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const gchar *uid) camel_medium_set_content_object (CAMEL_MEDIUM (message), CAMEL_DATA_WRAPPER(body)); camel_object_unref (body); } + + g_free (str); } composer = e_msg_composer_new_with_message (message); -- cgit v1.2.3 From 672adf12a0923437e90d08ab7925bd9329fcce0d Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sun, 16 Aug 2009 11:25:08 -0400 Subject: Fix compiler warnings and deprecated GTK+ API usage. --- mail/em-composer-utils.c | 2 -- 1 file changed, 2 deletions(-) (limited to 'mail/em-composer-utils.c') diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index c9f0594c2d..f268b14596 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -2340,8 +2340,6 @@ em_utils_reply_to_message(CamelFolder *folder, const gchar *uid, CamelMimeMessag EMsgComposer *composer; EAccount *account; guint32 flags; - EMEvent *eme; - EMEventTargetMessage *target; struct emcs_t *emcs; if (folder && uid && message == NULL) { -- cgit v1.2.3