* Fixes NB#91689. fixes a wrong check for ASCII
[modest] / src / modest-runtime.c
index 66e34b2..2097db5 100644 (file)
@@ -46,6 +46,7 @@
 #include <modest-account-mgr-helpers.h>
 #include <modest-icon-names.h>
 #include <modest-ui-actions.h>
+#include <modest-debug.h>
 
 static ModestSingletons       *_singletons    = NULL;
 
@@ -85,21 +86,33 @@ modest_runtime_uninit (void)
                return TRUE;    /* uninit maybe called if runtime_init failed */
        
        g_return_val_if_fail (MODEST_IS_SINGLETONS(_singletons), FALSE);
-       modest_runtime_verify_object_last_ref(_singletons,"");
-       g_object_unref(G_OBJECT(_singletons));
+
+       g_debug ("%s: cleaning up", __FUNCTION__);
+
+       if (_sig_handlers) {
+               modest_signal_mgr_disconnect_all_and_destroy (_sig_handlers);
+               _sig_handlers = NULL;
+       }
+
+       g_debug ("%s: cleaned up signal manager", __FUNCTION__);
+
+       MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(_singletons,"");
+       g_object_unref(_singletons);
        _singletons = NULL;
 
+       g_debug ("%s: cleaned up singletons", __FUNCTION__);
+
        if (_account_store) {
-               modest_runtime_verify_object_last_ref(_account_store,"");
-               g_object_unref(G_OBJECT(_account_store));
+               MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(_account_store,"");
+               g_object_unref(_account_store);
                _account_store = NULL;
        }
 
+       g_debug ("%s: cleaned up the account store", __FUNCTION__);
+
        
-       if (_sig_handlers) {
-               modest_signal_mgr_disconnect_all_and_destroy (_sig_handlers);
-               _sig_handlers = NULL;
-       }
+       g_debug ("%s: all cleaned up", __FUNCTION__);
+
        
        return TRUE;
 }
@@ -113,6 +126,13 @@ modest_runtime_get_account_mgr   (void)
        return modest_singletons_get_account_mgr (_singletons);
 }
 
+TnyStreamCache*
+modest_runtime_get_images_cache   (void)
+{
+       g_return_val_if_fail (_singletons, NULL);
+       return modest_singletons_get_images_cache (_singletons);
+}
+
 ModestEmailClipboard*
 modest_runtime_get_email_clipboard   (void)
 {
@@ -178,11 +198,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);
@@ -195,32 +216,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), 
+                                            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 ()
@@ -230,6 +253,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)
 {
@@ -237,6 +278,20 @@ modest_runtime_get_window_mgr (void)
        return modest_singletons_get_window_mgr (_singletons);
 }
 
+ModestPluginFactory *
+modest_runtime_get_plugin_factory (void)
+{
+       g_return_val_if_fail (_singletons, NULL);
+       return modest_singletons_get_plugin_factory (_singletons);
+}
+
+ModestProtocolRegistry *
+modest_runtime_get_protocol_registry (void)
+{
+       g_return_val_if_fail (_singletons, NULL);
+       return modest_singletons_get_protocol_registry (_singletons);
+}
+
 /* http://primates.ximian.com/~federico/news-2006-04.html#memory-debugging-infrastructure*/
 ModestRuntimeDebugFlags
 modest_runtime_get_debug_flags ()
@@ -244,9 +299,10 @@ modest_runtime_get_debug_flags ()
        static const GDebugKey debug_keys[] = {
                { "abort-on-warning",   MODEST_RUNTIME_DEBUG_ABORT_ON_WARNING },
                { "log-actions",        MODEST_RUNTIME_DEBUG_LOG_ACTIONS },
-               { "debug-objects",      MODEST_RUNTIME_DEBUG_DEBUG_OBJECTS },
-               { "debug-signals",      MODEST_RUNTIME_DEBUG_DEBUG_SIGNALS },
-               { "factory-settings",   MODEST_RUNTIME_DEBUG_FACTORY_SETTINGS}
+               { "debug-objects",      MODEST_RUNTIME_DEBUG_OBJECTS },
+               { "debug-signals",      MODEST_RUNTIME_DEBUG_SIGNALS },
+               { "factory-settings",   MODEST_RUNTIME_DEBUG_FACTORY_SETTINGS},
+               { "debug-code",         MODEST_RUNTIME_DEBUG_CODE}
        };
        const gchar *str;
        static ModestRuntimeDebugFlags debug_flags = -1;