/* when receive/send is complete */ static void receive_done (gint still_more, gpointer data) { struct _send_info *info = data; const gchar *uid; uid = camel_service_get_uid (info->service); g_return_if_fail (uid != NULL); /* if we've been called to run again - run again */ if (info->type == SEND_SEND && info->state == SEND_ACTIVE && info->again) { EMailSession *session; CamelFolder *local_outbox; session = info->session; local_outbox = e_mail_session_get_local_folder ( session, E_MAIL_LOCAL_FOLDER_OUTBOX); g_return_if_fail (CAMEL_IS_TRANSPORT (info->service)); info->again = 0; mail_send_queue ( info->session, local_outbox, CAMEL_TRANSPORT (info->service), E_FILTER_SOURCE_OUTGOING, info->cancellable, receive_get_folder, info, receive_status, info, send_done, info); return; } //FIXME Set SEND completed here /* if (info->state == SEND_CANCELLED) text = _("Canceled."); else { text = _("Complete."); info->state = SEND_COMPLETE; } */ /* remove/free this active download */ d(printf("%s: freeing info %p\n", G_STRFUNC, info)); if (info->type == SEND_SEND) g_hash_table_steal (info->data->active, SEND_URI_KEY); else g_hash_table_steal (info->data->active, uid); info->data->infos = g_list_remove (info->data->infos, info); if (g_hash_table_size (info->data->active) == 0) { //FIXME: THIS MEANS SEND RECEIVE IS COMPLETED free_send_data (); } free_send_info (info); }
/* when receive/send is complete */ static void receive_done (char *uri, void *data) { struct _send_info *info = data; /* if we've been called to run again - run again */ if (info->type == SEND_SEND && info->state == SEND_ACTIVE && info->again) { info->again = 0; mail_send_queue (mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_OUTBOX), info->uri, FILTER_SOURCE_OUTGOING, info->cancel, receive_get_folder, info, receive_status, info, receive_done, info); return; } if (info->progress_bar) { const gchar *text; gtk_progress_bar_set_fraction( GTK_PROGRESS_BAR (info->progress_bar), 1.0); if (info->state == SEND_CANCELLED) text = _("Canceled."); else { text = _("Complete."); info->state = SEND_COMPLETE; } gtk_label_set_text (GTK_LABEL (info->status_label), text); } if (info->cancel_button) gtk_widget_set_sensitive (info->cancel_button, FALSE); /* remove/free this active download */ d(printf("%s: freeing info %p\n", G_STRFUNC, info)); if (info->type == SEND_SEND) g_hash_table_steal(info->data->active, SEND_URI_KEY); else g_hash_table_steal(info->data->active, info->uri); info->data->infos = g_list_remove(info->data->infos, info); if (g_hash_table_size(info->data->active) == 0) { if (info->data->gd) gtk_widget_destroy((GtkWidget *)info->data->gd); free_send_data(); } free_send_info(info); }