X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-runtime.c;h=8eda572261da0ece4bc2645c614430acdef5b13f;hp=9d8a3683bd8e1a15a495f060a210c5036ef99cbf;hb=d35c9918f4df9384dee13049f7d3344a47227f22;hpb=1fd53376fd0da263d9e0168215a6a016a981d130 diff --git a/src/modest-runtime.c b/src/modest-runtime.c index 9d8a368..8eda572 100644 --- a/src/modest-runtime.c +++ b/src/modest-runtime.c @@ -189,11 +189,12 @@ modest_runtime_get_platform_factory (void) } ModestTnySendQueue* -modest_runtime_get_send_queue (TnyTransportAccount *account) +modest_runtime_get_send_queue (TnyTransportAccount *account, + gboolean create) { ModestCacheMgr *cache_mgr; GHashTable *send_queue_cache; - gpointer orig_key, send_queue; + gpointer orig_key = NULL, send_queue = NULL; g_return_val_if_fail (_singletons, NULL); g_return_val_if_fail (TNY_IS_TRANSPORT_ACCOUNT(account), NULL); @@ -206,32 +207,34 @@ modest_runtime_get_send_queue (TnyTransportAccount *account) * Note that each modest account will have its own outbox folder, * returned by TnySendQueue::get_outbox_func(). */ - if (!g_hash_table_lookup_extended (send_queue_cache, account, &orig_key, &send_queue)) { + if (!g_hash_table_lookup_extended (send_queue_cache, account, &orig_key, &send_queue) && + create) { /* Note that this send queue will start sending messages from its outbox * as soon as it is instantiated: */ - send_queue = (gpointer)modest_tny_send_queue_new (TNY_CAMEL_TRANSPORT_ACCOUNT(account)); - - _sig_handlers = - modest_signal_mgr_connect (_sig_handlers, - send_queue, - "error_happened", - G_CALLBACK (modest_ui_actions_on_send_queue_error_happened), - NULL); - - _sig_handlers = - modest_signal_mgr_connect (_sig_handlers, - send_queue, - "status_changed", - G_CALLBACK (modest_ui_actions_on_send_queue_status_changed), - NULL); - - - g_hash_table_insert (send_queue_cache, - g_object_ref (account), - g_object_ref (send_queue)); + send_queue = modest_tny_send_queue_new (TNY_CAMEL_TRANSPORT_ACCOUNT(account)); + + if (send_queue) { + _sig_handlers = + modest_signal_mgr_connect (_sig_handlers, + send_queue, + "error_happened", + G_CALLBACK (modest_ui_actions_on_send_queue_error_happened), + NULL); + + _sig_handlers = + modest_signal_mgr_connect (_sig_handlers, + send_queue, + "status_changed", + G_CALLBACK (modest_ui_actions_on_send_queue_status_changed), + NULL); + + g_hash_table_insert (send_queue_cache, + g_object_ref (account), + g_object_ref (send_queue)); + } } - return MODEST_TNY_SEND_QUEUE(send_queue); + return (send_queue) ? MODEST_TNY_SEND_QUEUE(send_queue) : NULL; } void modest_runtime_remove_all_send_queues () @@ -241,6 +244,24 @@ void modest_runtime_remove_all_send_queues () modest_cache_mgr_flush (cache_mgr, MODEST_CACHE_MGR_CACHE_TYPE_SEND_QUEUE); } +void +modest_runtime_remove_send_queue (TnyTransportAccount *account) +{ + + ModestCacheMgr *cache_mgr; + GHashTable *send_queue_cache; + + g_return_if_fail (TNY_IS_TRANSPORT_ACCOUNT (account)); + g_return_if_fail (_singletons); + + cache_mgr = modest_singletons_get_cache_mgr (_singletons); + send_queue_cache = modest_cache_mgr_get_cache (cache_mgr, + MODEST_CACHE_MGR_CACHE_TYPE_SEND_QUEUE); + + if (g_hash_table_lookup (send_queue_cache, account)) + g_hash_table_remove (send_queue_cache, account); +} + ModestWindowMgr * modest_runtime_get_window_mgr (void) {