diff options
author | Not Zed <NotZed@Ximian.com> | 2004-03-03 16:11:19 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2004-03-03 16:11:19 +0800 |
commit | 7dfbad5dce6da74e6c83b7b8196952f114e04a56 (patch) | |
tree | 993974121db7dd0539ad38ab5bf33a6e36eb0bdb /mail/em-utils.c | |
parent | cc11303dc2a9775eeb742feedff5c2bfea224fc3 (diff) | |
download | gsoc2013-evolution-7dfbad5dce6da74e6c83b7b8196952f114e04a56.tar.gz gsoc2013-evolution-7dfbad5dce6da74e6c83b7b8196952f114e04a56.tar.zst gsoc2013-evolution-7dfbad5dce6da74e6c83b7b8196952f114e04a56.zip |
** See bug #54924.
2004-03-03 Not Zed <NotZed@Ximian.com>
** See bug #54924.
* em-utils.c (em_utils_selection_set_urilist): Try to get the drop
filename from the message subject, or folder name.
(em_utils_empty_trash): kill warning.
svn path=/trunk/; revision=24946
Diffstat (limited to 'mail/em-utils.c')
-rw-r--r-- | mail/em-utils.c | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/mail/em-utils.c b/mail/em-utils.c index 24622329f1..306bd0474c 100644 --- a/mail/em-utils.c +++ b/mail/em-utils.c @@ -2029,19 +2029,34 @@ em_utils_selection_set_urilist(GtkSelectionData *data, CamelFolder *folder, GPtr { const char *tmpdir; CamelStream *fstream; - char *uri, *p; + char *uri, *p, *file = NULL; int fd; + CamelMessageInfo *info; tmpdir = e_mkdtemp("drag-n-drop-XXXXXX"); if (tmpdir == NULL) return; - /* FIXME: this used to save a single message with the subject - as the filename but it was unsafe, and makes this messier, - the pain */ - - p = uri = g_alloca (strlen (tmpdir) + 16); - p += sprintf (uri, "file:///%s/mbox", tmpdir); + /* Try to get the drop filename from the message or folder */ + if (uids->len == 1) { + info = camel_folder_get_message_info(folder, uids->pdata[0]); + if (info) { + file = g_strdup(camel_message_info_subject(info)); + camel_folder_free_message_info(folder, info); + } + } + + /* TODO: Handle conflicts? */ + if (file == NULL) { + /* Drop filename for messages from a mailbox */ + file = g_strdup_printf(_("Messages from %s"), folder->name); + } + + e_filename_make_safe(file); + + p = uri = g_alloca (strlen (tmpdir) + strlen(file) + 16); + p += sprintf (uri, "file:///%s/%s", tmpdir, file); + g_free(file); fd = open(uri + 7, O_WRONLY | O_CREAT | O_EXCL, 0666); if (fd == -1) @@ -2434,7 +2449,6 @@ em_utils_expunge_folder (GtkWidget *parent, CamelFolder *folder) void em_utils_empty_trash (GtkWidget *parent) { - extern CamelSession *session; CamelProvider *provider; EAccountList *accounts; EAccount *account; |