aboutsummaryrefslogtreecommitdiffstats
path: root/mail/em-composer-utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/em-composer-utils.c')
-rw-r--r--mail/em-composer-utils.c152
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);