Update for camel_folder_append_message / camel_folder_transfer_messages_to
* (various places): Update for camel_folder_append_message / camel_folder_transfer_messages_to API change. * mail-ops.c (mail_append_mail): Pass the appended_uid to the callback. * mail-callbacks.c (composer_save_draft_cb, save_draft_done, do_edit_messages): Take advantage of the append_message change to keep track of the UID of the saved draft so that we can delete the old copy of the draft each time we save a new one. Remove the FIXME suggesting we should do that, since we're doing it now. :) svn path=/trunk/; revision=16766
This commit is contained in:
@ -1,3 +1,17 @@
|
||||
2002-05-13 Dan Winship <danw@ximian.com>
|
||||
|
||||
* (various places): Update for camel_folder_append_message /
|
||||
camel_folder_transfer_messages_to API change.
|
||||
|
||||
* mail-ops.c (mail_append_mail): Pass the appended_uid to the
|
||||
callback.
|
||||
|
||||
* mail-callbacks.c (composer_save_draft_cb, save_draft_done,
|
||||
do_edit_messages): Take advantage of the append_message change to
|
||||
keep track of the UID of the saved draft so that we can delete the
|
||||
old copy of the draft each time we save a new one. Remove the
|
||||
FIXME suggesting we should do that, since we're doing it now. :)
|
||||
|
||||
2002-05-10 Jeffrey Stedfast <fejj@ximian.com>
|
||||
|
||||
* mail-callbacks.c (do_view_message): Update for the new
|
||||
|
||||
@ -483,7 +483,7 @@ message_rfc822_dnd (CamelFolder *dest, CamelStream *stream, CamelException *ex)
|
||||
|
||||
/* append the message to the folder... */
|
||||
info = g_new0 (CamelMessageInfo, 1);
|
||||
camel_folder_append_message (dest, msg, info, ex);
|
||||
camel_folder_append_message (dest, msg, info, NULL, ex);
|
||||
camel_object_unref (CAMEL_OBJECT (msg));
|
||||
|
||||
if (camel_exception_is_set (ex))
|
||||
|
||||
@ -447,7 +447,7 @@ message_rfc822_dnd (CamelFolder *dest, CamelStream *stream, CamelException *ex)
|
||||
|
||||
/* append the message to the folder... */
|
||||
info = g_new0 (CamelMessageInfo, 1);
|
||||
camel_folder_append_message (dest, msg, info, ex);
|
||||
camel_folder_append_message (dest, msg, info, NULL, ex);
|
||||
camel_object_unref (CAMEL_OBJECT (msg));
|
||||
|
||||
if (camel_exception_is_set (ex))
|
||||
|
||||
@ -182,7 +182,7 @@ process_item_fn (EvolutionImporter *eimporter,
|
||||
|
||||
if (deleted == FALSE) {
|
||||
/* write the mesg */
|
||||
camel_folder_append_message (importer->folder, msg, info, ex);
|
||||
camel_folder_append_message (importer->folder, msg, info, NULL, ex);
|
||||
g_free (info);
|
||||
}
|
||||
|
||||
|
||||
@ -520,9 +520,11 @@ composer_send_cb (EMsgComposer *composer, gpointer data)
|
||||
}
|
||||
|
||||
static void
|
||||
append_mail_cleanup (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, int ok, void *data)
|
||||
append_mail_cleanup (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, int ok, char *appended_uid, void *data)
|
||||
{
|
||||
camel_message_info_free (info);
|
||||
if (appended_uid)
|
||||
g_free (appended_uid);
|
||||
}
|
||||
|
||||
void
|
||||
@ -551,26 +553,40 @@ composer_postpone_cb (EMsgComposer *composer, gpointer data)
|
||||
|
||||
struct _save_draft_info {
|
||||
EMsgComposer *composer;
|
||||
const char *old_uid;
|
||||
int quit;
|
||||
};
|
||||
|
||||
static void
|
||||
save_draft_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, int ok, void *data)
|
||||
save_draft_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, int ok, char *appended_uid, void *data)
|
||||
{
|
||||
struct _save_draft_info *sdi = data;
|
||||
|
||||
/* delete the original draft message */
|
||||
if (ok && sdi->old_uid)
|
||||
camel_folder_set_message_flags (folder, sdi->old_uid,
|
||||
char *old_uid;
|
||||
|
||||
if (!ok)
|
||||
goto done;
|
||||
|
||||
old_uid = gtk_object_get_data (GTK_OBJECT (sdi->composer), "draft_uid");
|
||||
if (old_uid) {
|
||||
/* delete the original draft message */
|
||||
camel_folder_set_message_flags (folder, old_uid,
|
||||
CAMEL_MESSAGE_DELETED,
|
||||
CAMEL_MESSAGE_DELETED);
|
||||
}
|
||||
|
||||
if (appended_uid) {
|
||||
gtk_object_set_data_full (GTK_OBJECT (sdi->composer),
|
||||
"draft_uid", appended_uid,
|
||||
(GtkDestroyNotify)g_free);
|
||||
} else {
|
||||
gtk_object_set_data (GTK_OBJECT (sdi->composer),
|
||||
"draft_uid", NULL);
|
||||
}
|
||||
|
||||
if (ok && sdi->quit)
|
||||
if (sdi->quit)
|
||||
gtk_widget_destroy (GTK_WIDGET (sdi->composer));
|
||||
else
|
||||
gtk_object_unref (GTK_OBJECT (sdi->composer));
|
||||
|
||||
|
||||
done:
|
||||
gtk_object_unref (GTK_OBJECT (sdi->composer));
|
||||
g_free (info);
|
||||
g_free (sdi);
|
||||
}
|
||||
@ -640,16 +656,8 @@ composer_save_draft_cb (EMsgComposer *composer, int quit, gpointer user_data)
|
||||
sdi = g_malloc (sizeof (struct _save_draft_info));
|
||||
sdi->composer = composer;
|
||||
gtk_object_ref (GTK_OBJECT (composer));
|
||||
sdi->old_uid = (const char *) user_data;
|
||||
sdi->quit = quit;
|
||||
|
||||
/* FIXME: we need to have some way of getting the UID of the
|
||||
newly appended message so that we can update the data that
|
||||
this callback gets called with (user_data is the UID of the
|
||||
message being edited) so that if the user saves a
|
||||
second/third/fourth/etc time, we keep deleting the previous
|
||||
copy of the draft */
|
||||
|
||||
mail_append_mail (folder, msg, info, save_draft_done, sdi);
|
||||
camel_object_unref (CAMEL_OBJECT (folder));
|
||||
camel_object_unref (CAMEL_OBJECT (msg));
|
||||
@ -2048,10 +2056,10 @@ do_edit_messages (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, voi
|
||||
composer_postpone_cb, NULL);
|
||||
|
||||
uid = g_strdup (uids->pdata[i]);
|
||||
gtk_object_set_data_full (GTK_OBJECT (composer), "uid", uid, (GtkDestroyNotify) g_free);
|
||||
gtk_object_set_data_full (GTK_OBJECT (composer), "draft_uid", uid, (GtkDestroyNotify) g_free);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (composer), "save-draft",
|
||||
composer_save_draft_cb, uid);
|
||||
composer_save_draft_cb, NULL);
|
||||
|
||||
gtk_widget_show (GTK_WIDGET (composer));
|
||||
}
|
||||
|
||||
@ -138,7 +138,7 @@ mail_importer_add_line (MailImporter *importer,
|
||||
importer->mstream = NULL;
|
||||
|
||||
ex = camel_exception_new ();
|
||||
camel_folder_append_message (importer->folder, msg, info, ex);
|
||||
camel_folder_append_message (importer->folder, msg, info, NULL, ex);
|
||||
camel_object_unref (CAMEL_OBJECT (msg));
|
||||
|
||||
camel_exception_free (ex);
|
||||
|
||||
@ -275,7 +275,7 @@ mlf_expunge(CamelFolder *folder, CamelException *ex)
|
||||
}
|
||||
|
||||
static void
|
||||
mlf_append_message(CamelFolder *folder, CamelMimeMessage *message, const CamelMessageInfo *info, CamelException *ex)
|
||||
mlf_append_message(CamelFolder *folder, CamelMimeMessage *message, const CamelMessageInfo *info, char **appended_uid, CamelException *ex)
|
||||
{
|
||||
MailLocalFolder *mlf = MAIL_LOCAL_FOLDER(folder);
|
||||
CamelFolder *f;
|
||||
@ -285,7 +285,7 @@ mlf_append_message(CamelFolder *folder, CamelMimeMessage *message, const CamelMe
|
||||
camel_object_ref((CamelObject *)f);
|
||||
LOCAL_FOLDER_UNLOCK(mlf);
|
||||
|
||||
camel_folder_append_message(f, message, info, ex);
|
||||
camel_folder_append_message(f, message, info, appended_uid, ex);
|
||||
camel_object_unref((CamelObject *)f);
|
||||
}
|
||||
|
||||
@ -686,7 +686,7 @@ mail_local_folder_reconfigure (MailLocalFolder *mlf, const char *new_format, int
|
||||
camel_folder_freeze(mlf->real_folder);
|
||||
|
||||
uids = camel_folder_get_uids(fromfolder);
|
||||
camel_folder_transfer_messages_to(fromfolder, uids, mlf->real_folder, TRUE, ex);
|
||||
camel_folder_transfer_messages_to(fromfolder, uids, mlf->real_folder, NULL, TRUE, ex);
|
||||
camel_folder_free_uids(fromfolder, uids);
|
||||
if (camel_exception_is_set(ex))
|
||||
goto cleanup;
|
||||
|
||||
@ -558,7 +558,7 @@ mail_send_message (CamelMimeMessage *message, const char *destination,
|
||||
}
|
||||
|
||||
if (folder) {
|
||||
camel_folder_append_message (folder, message, info, ex);
|
||||
camel_folder_append_message (folder, message, info, NULL, ex);
|
||||
if (camel_exception_is_set (ex)) {
|
||||
ExceptionId id;
|
||||
|
||||
@ -826,8 +826,9 @@ struct _append_msg {
|
||||
CamelFolder *folder;
|
||||
CamelMimeMessage *message;
|
||||
CamelMessageInfo *info;
|
||||
char *appended_uid;
|
||||
|
||||
void (*done)(CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, int ok, void *data);
|
||||
void (*done)(CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, int ok, char *appended_uid, void *data);
|
||||
void *data;
|
||||
};
|
||||
|
||||
@ -843,7 +844,7 @@ append_mail_append (struct _mail_msg *mm)
|
||||
struct _append_msg *m = (struct _append_msg *)mm;
|
||||
|
||||
camel_mime_message_set_date(m->message, CAMEL_MESSAGE_DATE_CURRENT, 0);
|
||||
camel_folder_append_message(m->folder, m->message, m->info, &mm->ex);
|
||||
camel_folder_append_message(m->folder, m->message, m->info, &m->appended_uid, &mm->ex);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -852,7 +853,7 @@ append_mail_appended (struct _mail_msg *mm)
|
||||
struct _append_msg *m = (struct _append_msg *)mm;
|
||||
|
||||
if (m->done)
|
||||
m->done(m->folder, m->message, m->info, !camel_exception_is_set(&mm->ex), m->data);
|
||||
m->done(m->folder, m->message, m->info, !camel_exception_is_set(&mm->ex), m->appended_uid, m->data);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -873,7 +874,7 @@ static struct _mail_msg_op append_mail_op = {
|
||||
|
||||
void
|
||||
mail_append_mail (CamelFolder *folder, CamelMimeMessage *message, CamelMessageInfo *info,
|
||||
void (*done)(CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, int ok, void *data),
|
||||
void (*done)(CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, int ok, char *appended_uid, void *data),
|
||||
void *data)
|
||||
{
|
||||
struct _append_msg *m;
|
||||
@ -938,7 +939,7 @@ transfer_messages_transfer (struct _mail_msg *mm)
|
||||
camel_folder_freeze (m->source);
|
||||
camel_folder_freeze (dest);
|
||||
|
||||
camel_folder_transfer_messages_to (m->source, m->uids, dest, m->delete, &mm->ex);
|
||||
camel_folder_transfer_messages_to (m->source, m->uids, dest, NULL, m->delete, &mm->ex);
|
||||
|
||||
camel_folder_thaw (m->source);
|
||||
camel_folder_thaw (dest);
|
||||
|
||||
@ -39,7 +39,7 @@ extern "C" {
|
||||
#include "e-util/e-msgport.h"
|
||||
|
||||
void mail_append_mail (CamelFolder *folder, CamelMimeMessage *message, CamelMessageInfo *info,
|
||||
void (*done)(CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, int ok, void *data),
|
||||
void (*done)(CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, int ok, char *appended_uid, void *data),
|
||||
void *data);
|
||||
|
||||
void mail_transfer_messages (CamelFolder *source, GPtrArray *uids,
|
||||
|
||||
Reference in New Issue
Block a user