From a4c585d56c72bac9cd44f25dde3058edf8e09afd Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Fri, 19 Oct 2001 23:04:35 +0000 Subject: Properly handle local vTrash folders. 2001-10-19 Jeffrey Stedfast * component-factory.c (destination_folder_handle_drop): Properly handle local vTrash folders. svn path=/trunk/; revision=13813 --- mail/ChangeLog | 5 +++++ mail/component-factory.c | 31 ++++++++++++++++++------------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/mail/ChangeLog b/mail/ChangeLog index bb05a20306..80044d14a8 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,8 @@ +2001-10-19 Jeffrey Stedfast + + * component-factory.c (destination_folder_handle_drop): Properly + handle local vTrash folders. + 2001-10-19 * mail-account-gui.c (build_auth_menu): Dont translate camel strings. diff --git a/mail/component-factory.c b/mail/component-factory.c index 12dd05993d..8ec5fc924b 100644 --- a/mail/component-factory.c +++ b/mail/component-factory.c @@ -322,7 +322,7 @@ xfer_folder (EvolutionShellComponent *shell_component, CamelException ex; GPtrArray *uids; CamelURL *url; - + url = camel_url_new (destination_physical_uri, NULL); noselect = url ? camel_url_get_param (url, "noselect") : NULL; @@ -340,7 +340,7 @@ xfer_folder (EvolutionShellComponent *shell_component, GNOME_Evolution_ShellComponentListener_UNSUPPORTED_TYPE, &ev); return; } - + camel_exception_init (&ex); source = mail_tool_uri_to_folder (source_physical_uri, 0, &ex); camel_exception_clear (&ex); @@ -348,12 +348,12 @@ xfer_folder (EvolutionShellComponent *shell_component, CORBA_exception_init (&ev); if (source) { xfer_folder_data *xfd; - + xfd = g_new0 (xfer_folder_data, 1); xfd->remove_source = remove_source; xfd->source_uri = g_strdup (source_physical_uri); xfd->listener = CORBA_Object_duplicate (listener, &ev); - + uids = camel_folder_get_uids (source); mail_transfer_messages (source, uids, remove_source, destination_physical_uri, CAMEL_STORE_FOLDER_CREATE, xfer_folder_done, xfd); @@ -377,10 +377,10 @@ populate_folder_context_menu (EvolutionShellComponent *shell_component, static char popup_xml[] = ""; - + if (strcmp (type, "mail") != 0) return; - + bonobo_ui_component_set_translate (uic, EVOLUTION_SHELL_COMPONENT_POPUP_PLACEHOLDER, popup_xml, NULL); } @@ -470,6 +470,7 @@ destination_folder_handle_drop (EvolutionShellComponentDndDestinationFolder *des gpointer user_data) { char *tmp, *url, **urls, *in, *inptr, *inend; + char *vfolder_uri = NULL; gboolean retval = FALSE; const char *noselect; CamelFolder *folder; @@ -502,6 +503,10 @@ destination_folder_handle_drop (EvolutionShellComponentDndDestinationFolder *des camel_exception_init (&ex); + /* if this is a local vtrash folder, then it's uri is vtrash:file:/ */ + if (!strcmp (folder_type, "vtrash") && !strncmp (physical_uri, "file:", 5)) + physical_uri = "vtrash:file:/"; + switch (type) { case ACCEPTED_DND_TYPE_TEXT_URI_LIST: folder = mail_tool_uri_to_folder (physical_uri, 0, NULL); @@ -646,14 +651,14 @@ got_folder (char *uri, CamelFolder *folder, void *data) if (folder) { *fp = folder; - - camel_object_ref(CAMEL_OBJECT (folder)); - + + camel_object_ref (CAMEL_OBJECT (folder)); + /* emit a changed event, this is a little hack so that the folderinfo cache will update knowing whether this is the outbox_folder or not, etc */ if (folder == outbox_folder) { CamelFolderChangeInfo *changes = camel_folder_change_info_new(); - + camel_object_trigger_event((CamelObject *)folder, "folder_changed", changes); camel_folder_change_info_free(changes); } @@ -845,7 +850,7 @@ create_component (void) EvolutionShellComponentDndDestinationFolder *destination_interface; MailOfflineHandler *offline_handler; int i; - + shell_component = evolution_shell_component_new (folder_types, schema_types, create_view, @@ -864,7 +869,7 @@ create_component (void) BONOBO_OBJECT (destination_interface)); evolution_mail_config_wizard_init (); - + evolution_shell_component_add_user_creatable_item (shell_component, "message", _("New Mail Message"), _("New _Mail Message"), 'm'); for (i=0;i