diff options
Diffstat (limited to 'mail/em-composer-utils.c')
-rw-r--r-- | mail/em-composer-utils.c | 152 |
1 files changed, 74 insertions, 78 deletions
diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 25e1761eb4..514885c28b 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -59,18 +59,10 @@ #include "em-format-quote.h" #include "em-event.h" -#include <camel/camel-folder.h> -#include <camel/camel-multipart.h> -#include <camel/camel-string-utils.h> -#include <camel/camel-stream-mem.h> -#include <camel/camel-nntp-address.h> -#include <camel/camel-vee-folder.h> - #ifdef G_OS_WIN32 -/* Undef the similar macro from pthread.h, it doesn't check if - * gmtime() returns NULL. - */ +#ifdef gmtime_r #undef gmtime_r +#endif /* The gmtime() in Microsoft's C library is MT-safe */ #define gmtime_r(tp,tmp) (gmtime(tp)?(*(tmp)=*gmtime(tp),(tmp)):0) @@ -113,10 +105,10 @@ emcs_set_drafts_info (struct emcs_t *emcs, g_return_if_fail (drafts_uid != NULL); if (emcs->drafts_folder != NULL) - camel_object_unref (emcs->drafts_folder); + g_object_unref (emcs->drafts_folder); g_free (emcs->drafts_uid); - camel_object_ref (drafts_folder); + g_object_ref (drafts_folder); emcs->drafts_folder = drafts_folder; emcs->drafts_uid = g_strdup (drafts_uid); } @@ -133,10 +125,10 @@ emcs_set_folder_info (struct emcs_t *emcs, g_return_if_fail (uid != NULL); if (emcs->folder != NULL) - camel_object_unref (emcs->folder); + g_object_unref (emcs->folder); g_free (emcs->uid); - camel_object_ref (folder); + g_object_ref (folder); emcs->folder = folder; emcs->uid = g_strdup (uid); emcs->flags = flags; @@ -147,11 +139,11 @@ static void free_emcs (struct emcs_t *emcs) { if (emcs->drafts_folder != NULL) - camel_object_unref (emcs->drafts_folder); + g_object_unref (emcs->drafts_folder); g_free (emcs->drafts_uid); if (emcs->folder != NULL) - camel_object_unref (emcs->folder); + g_object_unref (emcs->folder); g_free (emcs->uid); g_free (emcs); @@ -241,7 +233,7 @@ composer_send_queued_cb (CamelFolder *folder, CamelMimeMessage *msg, CamelMessag camel_folder_set_message_flags (emcs->drafts_folder, emcs->drafts_uid, CAMEL_MESSAGE_DELETED | CAMEL_MESSAGE_SEEN, CAMEL_MESSAGE_DELETED | CAMEL_MESSAGE_SEEN); - camel_object_unref (emcs->drafts_folder); + g_object_unref (emcs->drafts_folder); emcs->drafts_folder = NULL; g_free (emcs->drafts_uid); emcs->drafts_uid = NULL; @@ -251,7 +243,7 @@ composer_send_queued_cb (CamelFolder *folder, CamelMimeMessage *msg, CamelMessag /* set any replied flags etc */ camel_folder_set_message_flags (emcs->folder, emcs->uid, emcs->flags, emcs->set); camel_folder_set_message_user_flag (emcs->folder, emcs->uid, "receipt-handled", TRUE); - camel_object_unref (emcs->folder); + g_object_unref (emcs->folder); emcs->folder = NULL; g_free (emcs->uid); emcs->uid = NULL; @@ -259,7 +251,7 @@ composer_send_queued_cb (CamelFolder *folder, CamelMimeMessage *msg, CamelMessag gtk_widget_destroy (GTK_WIDGET (send->composer)); - if (send->send && camel_session_is_online (session)) { + if (send->send && camel_session_get_online (session)) { /* queue a message send */ mail_send (); } @@ -394,7 +386,7 @@ composer_get_message (EMsgComposer *composer, gboolean save_html_object_data) e_destination_freev (recipients_bcc); } - camel_object_unref (cia); + g_object_unref (cia); post_to_header = e_composer_header_table_get_header (table, E_COMPOSER_HEADER_POST_TO); if (e_composer_header_get_visible (post_to_header)) { @@ -529,7 +521,7 @@ em_utils_composer_send_cb (EMsgComposer *composer) return; folder = e_mail_local_get_folder (E_MAIL_FOLDER_OUTBOX); - camel_object_ref (folder); + g_object_ref (folder); /* mail the message */ e_msg_composer_set_mail_sent (composer, TRUE); @@ -549,8 +541,8 @@ em_utils_composer_send_cb (EMsgComposer *composer) mail_append_mail ( folder, message, info, composer_send_queued_cb, send); - camel_object_unref (folder); - camel_object_unref (message); + g_object_unref (folder); + g_object_unref (message); } struct _save_draft_info { @@ -585,8 +577,6 @@ save_draft_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *i if (!ok) goto done; - composer_set_no_change (sdi->composer, FALSE, FALSE); - if ((emcs = sdi->emcs) == NULL) emcs = emcs_new (); @@ -595,7 +585,7 @@ save_draft_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *i camel_folder_set_message_flags (emcs->drafts_folder, emcs->drafts_uid, CAMEL_MESSAGE_DELETED | CAMEL_MESSAGE_SEEN, CAMEL_MESSAGE_DELETED | CAMEL_MESSAGE_SEEN); - camel_object_unref (emcs->drafts_folder); + g_object_unref (emcs->drafts_folder); emcs->drafts_folder = NULL; g_free (emcs->drafts_uid); emcs->drafts_uid = NULL; @@ -604,14 +594,14 @@ save_draft_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *i if (emcs->folder) { /* set the replied flags etc */ camel_folder_set_message_flags (emcs->folder, emcs->uid, emcs->flags, emcs->set); - camel_object_unref (emcs->folder); + g_object_unref (emcs->folder); emcs->folder = NULL; g_free (emcs->uid); emcs->uid = NULL; } if (appended_uid) { - camel_object_ref (folder); + g_object_ref (folder); emcs->drafts_folder = folder; emcs->drafts_uid = g_strdup (appended_uid); } @@ -634,7 +624,7 @@ save_draft_folder (gchar *uri, CamelFolder *folder, gpointer data) if (folder) { *save = folder; - camel_object_ref (folder); + g_object_ref (folder); } } @@ -680,7 +670,7 @@ em_utils_composer_save_draft_cb (EMsgComposer *composer) if (!folder || !account->enabled) { if (e_alert_run_dialog_for_args ((GtkWindow *)composer, "mail:ask-default-drafts", NULL) != GTK_RESPONSE_YES) { g_object_unref(composer); - camel_object_unref(msg); + g_object_unref (msg); if (sdi->emcs) emcs_unref(sdi->emcs); g_free(sdi); @@ -688,19 +678,19 @@ em_utils_composer_save_draft_cb (EMsgComposer *composer) } folder = local_drafts_folder; - camel_object_ref (local_drafts_folder); + g_object_ref (local_drafts_folder); } } else { folder = local_drafts_folder; - camel_object_ref (folder); + g_object_ref (folder); } info = camel_message_info_new(NULL); camel_message_info_set_flags(info, CAMEL_MESSAGE_DRAFT | CAMEL_MESSAGE_SEEN, ~0); mail_append_mail (folder, msg, info, save_draft_done, sdi); - camel_object_unref (folder); - camel_object_unref (msg); + g_object_unref (folder); + g_object_unref (msg); } static void @@ -794,8 +784,7 @@ 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); + gtk_window_present (GTK_WINDOW (composer)); return composer; } @@ -851,7 +840,7 @@ replace_variables (GSList *clues, CamelMimeMessage *message, gchar **pstr) } if (!count1) { - const CamelInternetAddress *to; + CamelInternetAddress *to; const gchar *name, *addr; to = camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_TO); @@ -905,10 +894,11 @@ traverse_parts (GSList *clues, CamelMimeMessage *message, CamelDataWrapper *cont } else if (CAMEL_IS_MIME_PART (content)) { CamelMimePart *part = CAMEL_MIME_PART (content); CamelContentType *type; - CamelStream *mem; + CamelStream *stream; + GByteArray *byte_array; gchar *str; - content = camel_medium_get_content_object (CAMEL_MEDIUM (part)); + content = camel_medium_get_content (CAMEL_MEDIUM (part)); if (!content) return; @@ -921,17 +911,18 @@ traverse_parts (GSList *clues, CamelMimeMessage *message, CamelDataWrapper *cont if (!camel_content_type_is (type, "text", "*")) return; - mem = camel_stream_mem_new (); - camel_data_wrapper_decode_to_stream (content, mem); + byte_array = g_byte_array_new (); + stream = camel_stream_mem_new_with_byte_array (byte_array); + camel_data_wrapper_decode_to_stream (content, stream); - str = g_strndup ((const gchar *)((CamelStreamMem *) mem)->buffer->data, ((CamelStreamMem *) mem)->buffer->len); - camel_object_unref (mem); + str = g_strndup ((gchar *) byte_array->data, byte_array->len); + g_object_unref (stream); if (replace_variables (clues, message, &str)) { - mem = camel_stream_mem_new_with_buffer (str, strlen (str)); - camel_stream_reset (mem); - camel_data_wrapper_construct_from_stream (content, mem); - camel_object_unref (mem); + stream = camel_stream_mem_new_with_buffer (str, strlen (str)); + camel_stream_reset (stream); + camel_data_wrapper_construct_from_stream (content, stream); + g_object_unref (stream); } g_free (str); @@ -955,7 +946,7 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const gchar *uid) clue_list = gconf_client_get_list ( gconf, GCONF_KEY_TEMPLATE_PLACEHOLDERS, GCONF_VALUE_STRING, NULL ); g_object_unref (gconf); - traverse_parts (clue_list, message, camel_medium_get_content_object (CAMEL_MEDIUM (message))); + traverse_parts (clue_list, message, camel_medium_get_content (CAMEL_MEDIUM (message))); g_slist_foreach (clue_list, (GFunc) g_free, NULL); g_slist_free (clue_list); @@ -970,7 +961,7 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const gchar *uid) emcs_set_drafts_info (emcs, drafts, uid); } - composer_set_no_change (composer, TRUE, FALSE); + composer_set_no_change (composer, TRUE, TRUE); gtk_widget_show (GTK_WIDGET (composer)); @@ -1090,7 +1081,7 @@ composer_destroy_fad_cb (gpointer user_data, GObject *deadbeef) struct forward_attached_data *fad = (struct forward_attached_data*) user_data; if (fad) { - camel_object_unref (fad->folder); + g_object_unref (fad->folder); em_utils_uids_free (fad->uids); g_free (fad); } @@ -1104,7 +1095,7 @@ setup_forward_attached_callbacks (EMsgComposer *composer, CamelFolder *folder, G if (!composer || !folder || !uids || !uids->len) return; - camel_object_ref (folder); + g_object_ref (folder); fad = g_new0 (struct forward_attached_data, 1); fad->folder = folder; @@ -1205,7 +1196,7 @@ forward_non_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, composer = create_new_composer (subject, fromuri); if (composer) { - if (CAMEL_IS_MULTIPART(camel_medium_get_content_object((CamelMedium *)message))) + if (CAMEL_IS_MULTIPART(camel_medium_get_content ((CamelMedium *)message))) e_msg_composer_add_message_attachments(composer, message, FALSE); e_msg_composer_set_body_text (composer, text, len); @@ -1310,7 +1301,7 @@ em_utils_forward_message (CamelMimeMessage *message, const gchar *fromuri) subject = mail_tool_generate_forward_subject (message); composer = forward_attached (NULL, NULL, messages, part, subject, fromuri); - camel_object_unref (part); + g_object_unref (part); g_free (subject); break; case MAIL_CONFIG_FORWARD_INLINE: @@ -1448,23 +1439,23 @@ em_utils_handle_receipt (CamelFolder *folder, const gchar *uid, CamelMimeMessage return; if (camel_message_info_user_flag(info, "receipt-handled")) { - camel_message_info_free(info); + camel_folder_free_message_info (folder, info); return; } if (msg == NULL) { mail_get_messagex(folder, uid, emu_handle_receipt_message, NULL, mail_msg_unordered_push); - camel_message_info_free(info); + camel_folder_free_message_info (folder, info); return; } if ((addr = camel_medium_get_header((CamelMedium *)msg, "Disposition-Notification-To")) == NULL) { - camel_message_info_free(info); + camel_folder_free_message_info (folder, info); return; } camel_message_info_set_user_flag(info, "receipt-handled", TRUE); - camel_message_info_free(info); + camel_folder_free_message_info (folder, info); account = em_utils_guess_account_with_recipients (msg, folder); @@ -1551,14 +1542,14 @@ em_utils_send_receipt (CamelFolder *folder, CamelMimeMessage *message) _("Your message to %s about \"%s\" on %s has been read."), self_address, message_subject, message_date); camel_data_wrapper_construct_from_stream (receipt_text, stream); - camel_object_unref (stream); + g_object_unref (stream); part = camel_mime_part_new (); - camel_medium_set_content_object (CAMEL_MEDIUM (part), receipt_text); + camel_medium_set_content (CAMEL_MEDIUM (part), receipt_text); camel_mime_part_set_encoding (part, CAMEL_TRANSFER_ENCODING_QUOTEDPRINTABLE); - camel_object_unref (receipt_text); + g_object_unref (receipt_text); camel_multipart_add_part (body, part); - camel_object_unref (part); + g_object_unref (part); /* Create the machine-readable receipt */ receipt_data = camel_data_wrapper_new (); @@ -1579,21 +1570,21 @@ em_utils_send_receipt (CamelFolder *folder, CamelMimeMessage *message) "Disposition: manual-action/MDN-sent-manually; displayed\n", ua, recipient, message_id); camel_data_wrapper_construct_from_stream (receipt_data, stream); - camel_object_unref (stream); + g_object_unref (stream); g_free (ua); g_free (recipient); g_free (fake_msgid); - camel_medium_set_content_object (CAMEL_MEDIUM (part), receipt_data); + camel_medium_set_content (CAMEL_MEDIUM (part), receipt_data); camel_mime_part_set_encoding (part, CAMEL_TRANSFER_ENCODING_7BIT); - camel_object_unref (receipt_data); + g_object_unref (receipt_data); camel_multipart_add_part (body, part); - camel_object_unref (part); + g_object_unref (part); /* Finish creating the message */ - camel_medium_set_content_object (CAMEL_MEDIUM (receipt), CAMEL_DATA_WRAPPER (body)); - camel_object_unref (body); + camel_medium_set_content (CAMEL_MEDIUM (receipt), CAMEL_DATA_WRAPPER (body)); + g_object_unref (body); /* Translators: %s is the subject of the email message */ receipt_subject = g_strdup_printf (_("Delivery Notification for: \"%s\""), message_subject); @@ -1603,12 +1594,12 @@ em_utils_send_receipt (CamelFolder *folder, CamelMimeMessage *message) addr = camel_internet_address_new (); camel_address_decode (CAMEL_ADDRESS (addr), self_address); camel_mime_message_set_from (receipt, addr); - camel_object_unref (addr); + g_object_unref (addr); addr = camel_internet_address_new (); camel_address_decode (CAMEL_ADDRESS (addr), receipt_address); camel_mime_message_set_recipients (receipt, CAMEL_RECIPIENT_TYPE_TO, addr); - camel_object_unref (addr); + g_object_unref (addr); camel_medium_set_header (CAMEL_MEDIUM (receipt), "Return-Path", "<>"); camel_medium_set_header (CAMEL_MEDIUM (receipt), "X-Evolution-Account", account->uid); @@ -1707,7 +1698,12 @@ reply_get_composer (CamelMimeMessage *message, EAccount *account, gchar *post; if (folder) { - store_url = camel_url_to_string (CAMEL_SERVICE (folder->parent_store)->url, CAMEL_URL_HIDE_ALL); + CamelStore *parent_store; + + parent_store = camel_folder_get_parent_store (folder); + store_url = camel_url_to_string ( + CAMEL_SERVICE (parent_store)->url, + CAMEL_URL_HIDE_ALL); if (store_url[strlen (store_url) - 1] == '/') store_url[strlen (store_url)-1] = '\0'; } @@ -1744,7 +1740,7 @@ reply_get_composer (CamelMimeMessage *message, EAccount *account, static void get_reply_sender (CamelMimeMessage *message, CamelInternetAddress *to, CamelNNTPAddress *postto) { - const CamelInternetAddress *reply_to; + CamelInternetAddress *reply_to; const gchar *name, *addr, *posthdr; gint i; @@ -1813,7 +1809,7 @@ get_reply_list (CamelMimeMessage *message, CamelInternetAddress *to) } static void -concat_unique_addrs (CamelInternetAddress *dest, const CamelInternetAddress *src, GHashTable *rcpt_hash) +concat_unique_addrs (CamelInternetAddress *dest, CamelInternetAddress *src, GHashTable *rcpt_hash) { const gchar *name, *addr; gint i; @@ -1829,7 +1825,7 @@ concat_unique_addrs (CamelInternetAddress *dest, const CamelInternetAddress *src static void get_reply_all (CamelMimeMessage *message, CamelInternetAddress *to, CamelInternetAddress *cc, CamelNNTPAddress *postto) { - const CamelInternetAddress *reply_to, *to_addrs, *cc_addrs; + CamelInternetAddress *reply_to, *to_addrs, *cc_addrs; const gchar *name, *addr, *posthdr; GHashTable *rcpt_hash; gint i; @@ -1913,7 +1909,7 @@ typedef void (* AttribFormatter) (GString *str, const gchar *attr, CamelMimeMess static void format_sender (GString *str, const gchar *attr, CamelMimeMessage *message) { - const CamelInternetAddress *sender; + CamelInternetAddress *sender; const gchar *name, *addr = NULL; sender = camel_mime_message_get_from (message); @@ -2108,7 +2104,7 @@ composer_set_body (EMsgComposer *composer, CamelMimeMessage *message, EMFormat * /* attach the original message as an attachment */ part = mail_tool_make_message_attachment (message); e_msg_composer_attach (composer, part); - camel_object_unref (part); + g_object_unref (part); break; case MAIL_CONFIG_REPLY_OUTLOOK: text = em_utils_message_to_html (message, _("-----Original Message-----"), EM_FORMAT_QUOTE_HEADERS, &len, source, start_bottom ? "<BR>" : NULL, &validity_found); @@ -2250,9 +2246,9 @@ em_utils_reply_to_message(CamelFolder *folder, const gchar *uid, CamelMimeMessag e_msg_composer_add_message_attachments (composer, message, TRUE); if (postto) - camel_object_unref(postto); - camel_object_unref(to); - camel_object_unref(cc); + g_object_unref (postto); + g_object_unref (to); + g_object_unref (cc); composer_set_body (composer, message, source); |