static gboolean auto_timeout(void *data) { struct _auto_data *info = data; if (camel_session_is_online(session)) { const char *uri = e_account_get_string(info->account, E_ACCOUNT_SOURCE_URL); int keep = e_account_get_bool(info->account, E_ACCOUNT_SOURCE_KEEP_ON_SERVER); mail_receive_uri(uri, keep); } return TRUE; }
static void offline_store_construct (CamelService *service, CamelSession *session, CamelProvider *provider, CamelURL *url, CamelException *ex) { CamelOfflineStore *store = CAMEL_OFFLINE_STORE (service); CAMEL_SERVICE_CLASS (parent_class)->construct (service, session, provider, url, ex); if (camel_exception_is_set (ex)) return; store->state = camel_session_is_online (session) ? CAMEL_OFFLINE_STORE_NETWORK_AVAIL : CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL; }
static CORBA_boolean impl_requestQuit(PortableServer_Servant servant, CORBA_Environment *ev) { /*MailComponent *mc = MAIL_COMPONENT(bonobo_object_from_servant(servant));*/ CamelFolder *folder; guint32 unsent; if (!e_msg_composer_request_close_all()) return FALSE; folder = mc_default_folders[MAIL_COMPONENT_FOLDER_OUTBOX].folder; if (folder != NULL && camel_session_is_online(session) && camel_object_get(folder, NULL, CAMEL_FOLDER_VISIBLE, &unsent, 0) == 0 && unsent > 0 && e_error_run(NULL, "mail:exit-unsaved", NULL) != GTK_RESPONSE_YES) return FALSE; return TRUE; }
GtkWidget * mail_send_receive (void) { CamelFolder *outbox_folder; struct _send_data *data; EAccountList *accounts; EAccount *account; GList *scan; if (send_recv_dialog != NULL) { if (GTK_WIDGET_REALIZED(send_recv_dialog)) { gdk_window_show(send_recv_dialog->window); gdk_window_raise(send_recv_dialog->window); } return send_recv_dialog; } if (!camel_session_is_online (session)) return send_recv_dialog; account = mail_config_get_default_account (); if (!account || !account->transport->url) return send_recv_dialog; accounts = mail_config_get_accounts (); outbox_folder = mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_OUTBOX); data = build_dialog (accounts, outbox_folder, account->transport->url); scan = data->infos; while (scan) { struct _send_info *info = scan->data; switch(info->type) { case SEND_RECEIVE: mail_fetch_mail(info->uri, info->keep, FILTER_SOURCE_INCOMING, info->cancel, receive_get_folder, info, receive_status, info, receive_done, info); break; case SEND_SEND: /* 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); break; case SEND_UPDATE: mail_get_store(info->uri, info->cancel, receive_update_got_store, info); break; default: break; } scan = scan->next; } return send_recv_dialog; }