aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-send-recv.c
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@ximian.com>2002-07-06 03:38:11 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2002-07-06 03:38:11 +0800
commita293a2aa215aea513cf5c88c14f783f224719de8 (patch)
treeff788022c0f08b5958696dba6a8f13f769b1a94e /mail/mail-send-recv.c
parent915bf644648f4de87c4c2472c368719524456936 (diff)
downloadgsoc2013-evolution-a293a2aa215aea513cf5c88c14f783f224719de8.tar
gsoc2013-evolution-a293a2aa215aea513cf5c88c14f783f224719de8.tar.gz
gsoc2013-evolution-a293a2aa215aea513cf5c88c14f783f224719de8.tar.bz2
gsoc2013-evolution-a293a2aa215aea513cf5c88c14f783f224719de8.tar.lz
gsoc2013-evolution-a293a2aa215aea513cf5c88c14f783f224719de8.tar.xz
gsoc2013-evolution-a293a2aa215aea513cf5c88c14f783f224719de8.tar.zst
gsoc2013-evolution-a293a2aa215aea513cf5c88c14f783f224719de8.zip
No longer need to pass a postpone_cb function into the composer
2002-07-05 Jeffrey Stedfast <fejj@ximian.com> * main.c (main): No longer need to pass a postpone_cb function into the composer factory_init. * mail-send-recv.c (get_receive_type): If the provider is a transport, return SEND_SEND. * mail-config.c (mail_config_get_default_transport): If the default account doesn't have a transport, find the first account that does. * mail-callbacks.c (append_mail_cleanup): Don't bother freeing the appended_uid here. (composer_send_internal): New helper function that does all the similar work that composer_send_cb and composer_postpone_cb did. (composer_send_cb): Append the message to Outbox and in the async callback, queue a message send operation. (composer_postpone_cb): Removed. (composer_send_queued_cb): The new async callback for composer_send_cb(). If the append is successful, queue a message send operation and destroy the composer otherwise re-show the composer. (save_draft_done): g_strdup the appended uid. (compose_msg): Don't connect to the postpone signal anymore as it no longer exists. (send_to_url): Same. (mail_reply): Here too. (forward_get_composer): And here. (redirect_get_composer): Again here. (do_edit_messages): And finally here. * mail-ops.c (append_mail_free): Free the appended uid. svn path=/trunk/; revision=17379
Diffstat (limited to 'mail/mail-send-recv.c')
-rw-r--r--mail/mail-send-recv.c67
1 files changed, 63 insertions, 4 deletions
diff --git a/mail/mail-send-recv.c b/mail/mail-send-recv.c
index 7b28435b32..c33b165a69 100644
--- a/mail/mail-send-recv.c
+++ b/mail/mail-send-recv.c
@@ -262,10 +262,16 @@ static send_info_t get_receive_type(const char *url)
if (!provider)
return SEND_INVALID;
- if (provider->flags & CAMEL_PROVIDER_IS_STORAGE)
- return SEND_UPDATE;
- else
- return SEND_RECEIVE;
+ if (provider->object_types[CAMEL_PROVIDER_STORE]) {
+ if (provider->flags & CAMEL_PROVIDER_IS_STORAGE)
+ return SEND_UPDATE;
+ else
+ return SEND_RECEIVE;
+ } else if (provider->object_types[CAMEL_PROVIDER_TRANSPORT]) {
+ return SEND_SEND;
+ }
+
+ return SEND_INVALID;
}
static struct _send_data *
@@ -854,3 +860,56 @@ mail_receive_uri (const char *uri, int keep)
g_assert_not_reached ();
}
}
+
+void
+mail_send (void)
+{
+ extern CamelFolder *outbox_folder;
+ const MailConfigService *transport;
+ struct _send_info *info;
+ struct _send_data *data;
+ send_info_t type;
+
+ transport = mail_config_get_default_transport ();
+ if (!transport || !transport->url)
+ return;
+
+ data = setup_send_data ();
+ info = g_hash_table_lookup (data->active, transport->url);
+ if (info != NULL) {
+ d(printf("send of %s still in progress\n", transport->url));
+ return;
+ }
+
+ d(printf("starting non-interactive send of '%s'\n", transport->url));
+
+ type = get_receive_type (transport->url);
+ if (type == SEND_INVALID) {
+ d(printf ("unsupported provider: '%s'\n", transport->url));
+ return;
+ }
+
+ info = g_malloc0 (sizeof (*info));
+ info->type = SEND_SEND;
+ info->bar = NULL;
+ info->status = NULL;
+ info->uri = g_strdup (transport->url);
+ info->keep = FALSE;
+ info->cancel = camel_operation_new (operation_status, info);
+ info->stop = NULL;
+ info->data = data;
+ info->state = SEND_ACTIVE;
+ info->timeout_id = 0;
+
+ d(printf("Adding new info %p\n", info));
+
+ g_hash_table_insert (data->active, info->uri, info);
+
+ /* todo, store the folder in info? */
+ mail_send_queue (outbox_folder, info->uri,
+ FILTER_SOURCE_OUTGOING,
+ info->cancel,
+ receive_get_folder, info,
+ receive_status, info,
+ receive_done, info);
+}