X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-singletons.c;h=76f6ec19e6fa0341a6b2cbb180adcfbe786052b1;hp=32ada6ba5d37ccd1a701a51d621ab48849d6d39d;hb=4d39841513a3a7f7aa9d38ab97cb9fcc9171e80b;hpb=85dbfb5b2586e248ed9cef94d0e43f8e24865caf diff --git a/src/modest-singletons.c b/src/modest-singletons.c index 32ada6b..76f6ec1 100644 --- a/src/modest-singletons.c +++ b/src/modest-singletons.c @@ -29,7 +29,13 @@ #include "modest-singletons.h" #include "modest-runtime.h" +#include "modest-defs.h" #include "modest-debug.h" +#ifdef MODEST_TOOLKIT_HILDON2 +#include "hildon2/modest-hildon2-window-mgr.h" +#else +#include "widgets/modest-hildon1-window-mgr.h" +#endif #include /* 'private'/'protected' functions */ @@ -47,6 +53,8 @@ struct _ModestSingletonsPrivate { TnyPlatformFactory *platform_fact; TnyDevice *device; ModestWindowMgr *window_mgr; + ModestProtocolRegistry *protocol_registry; + ModestPluginFactory *plugin_factory; TnyStreamCache *images_cache; }; #define MODEST_SINGLETONS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ @@ -106,6 +114,15 @@ modest_singletons_init (ModestSingletons *obj) priv->platform_fact = NULL; priv->device = NULL; priv->window_mgr = NULL; + priv->protocol_registry = NULL; + priv->plugin_factory = NULL; + + priv->protocol_registry = modest_protocol_registry_new (); + if (!priv->protocol_registry) { + g_printerr ("modest:cannot create protocol registry instance\n"); + return; + } + modest_protocol_registry_set_to_default (priv->protocol_registry); priv->images_cache = NULL; priv->conf = modest_conf_new (); @@ -150,12 +167,22 @@ modest_singletons_init (ModestSingletons *obj) return; } - priv->window_mgr = modest_window_mgr_new (); +#if MODEST_TOOLKIT_HILDON2 + priv->window_mgr = modest_hildon2_window_mgr_new (); +#else + priv->window_mgr = modest_hildon1_window_mgr_new (); +#endif if (!priv->window_mgr) { g_printerr ("modest: cannot create modest window manager instance\n"); return; } + priv->plugin_factory = modest_plugin_factory_new (); + if (!priv->plugin_factory) { + g_printerr ("modest: cannot create modest mail plugin factory instance\n"); + return; + } + images_cache_path = g_build_filename (g_get_home_dir (), MODEST_DIR, MODEST_IMAGES_CACHE_DIR, NULL); priv->images_cache = tny_fs_stream_cache_new (images_cache_path, MODEST_IMAGES_CACHE_SIZE); g_free (images_cache_path); @@ -163,6 +190,7 @@ modest_singletons_init (ModestSingletons *obj) g_printerr ("modest: cannot create images cache instance\n"); return; } + } static void @@ -214,6 +242,18 @@ modest_singletons_finalize (GObject *obj) priv->email_clipboard = NULL; } + if (priv->plugin_factory) { + MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(priv->plugin_factory,""); + g_object_unref (G_OBJECT(priv->plugin_factory)); + priv->plugin_factory = NULL; + } + + if (priv->protocol_registry) { + MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(priv->protocol_registry,""); + g_object_unref (G_OBJECT(priv->protocol_registry)); + priv->protocol_registry = NULL; + } + /* It is important that the account manager is uninitialized after * the mail op queue is uninitialized because the mail op queue * cancells any mail operations which in turn access the account @@ -252,7 +292,8 @@ modest_singletons_new (void) /* widget_factory will still be NULL, as it is initialized lazily */ if (!(priv->conf && priv->account_mgr && priv->email_clipboard && - priv->cache_mgr && priv->mail_op_queue && priv->device && priv->platform_fact)) { + priv->cache_mgr && priv->mail_op_queue && priv->device && + priv->platform_fact && priv->plugin_factory)) { g_printerr ("modest: failed to create singletons object\n"); g_object_unref (G_OBJECT(self)); self = NULL; @@ -320,9 +361,24 @@ modest_singletons_get_window_mgr (ModestSingletons *self) return MODEST_SINGLETONS_GET_PRIVATE(self)->window_mgr; } +ModestProtocolRegistry* +modest_singletons_get_protocol_registry (ModestSingletons *self) +{ + g_return_val_if_fail (self, NULL); + return MODEST_SINGLETONS_GET_PRIVATE(self)->protocol_registry; +} + TnyStreamCache* modest_singletons_get_images_cache (ModestSingletons *self) { g_return_val_if_fail (self, NULL); return MODEST_SINGLETONS_GET_PRIVATE(self)->images_cache; } + +ModestPluginFactory * +modest_singletons_get_plugin_factory (ModestSingletons *self) +{ + g_return_val_if_fail (self, NULL); + + return MODEST_SINGLETONS_GET_PRIVATE (self)->plugin_factory; +}