#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 <tny-fs-stream-cache.h>
/* 'private'/'protected' functions */
static void modest_singletons_class_init (ModestSingletonsClass *klass);
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), \
MODEST_TYPE_SINGLETONS, \
modest_singletons_init (ModestSingletons *obj)
{
ModestSingletonsPrivate *priv;
+ gchar *images_cache_path;
priv = MODEST_SINGLETONS_GET_PRIVATE(obj);
priv->conf = NULL;
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 ();
if (!priv->conf) {
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);
+ if (!priv->images_cache) {
+ g_printerr ("modest: cannot create images cache instance\n");
+ return;
+ }
+
}
static void
ModestSingletonsPrivate *priv;
priv = MODEST_SINGLETONS_GET_PRIVATE(obj);
+
+ if (priv->images_cache) {
+ MODEST_DEBUG_VERIFY_OBJECT_LAST_REF (priv->images_cache, "");
+ g_object_unref (G_OBJECT (priv->images_cache));
+ priv->images_cache = NULL;
+ }
if (priv->window_mgr) {
- modest_runtime_verify_object_last_ref(priv->window_mgr,"");
+ MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(priv->window_mgr,"");
g_object_unref (G_OBJECT(priv->window_mgr));
priv->window_mgr = NULL;
}
- if (priv->email_clipboard) {
- modest_runtime_verify_object_last_ref(priv->email_clipboard,"");
- g_object_unref (G_OBJECT(priv->email_clipboard));
- priv->email_clipboard = NULL;
+ if (priv->mail_op_queue) {
+ MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(priv->mail_op_queue,"");
+ g_object_unref (G_OBJECT(priv->mail_op_queue));
+ priv->mail_op_queue = NULL;
}
if (priv->cache_mgr) {
- modest_runtime_verify_object_last_ref(priv->cache_mgr,"");
+ MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(priv->cache_mgr,"");
g_object_unref (G_OBJECT(priv->cache_mgr));
priv->cache_mgr = NULL;
}
if (priv->device) {
- modest_runtime_verify_object_last_ref(priv->device,"");
+ MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(priv->device,"");
g_object_unref (G_OBJECT(priv->device));
priv->device = NULL;
}
if (priv->platform_fact) {
- modest_runtime_verify_object_last_ref(priv->platform_fact,"");
+ MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(priv->platform_fact,"");
g_object_unref (G_OBJECT(priv->platform_fact));
priv->platform_fact = NULL;
}
+
+ if (priv->email_clipboard) {
+ MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(priv->email_clipboard,"");
+ g_object_unref (G_OBJECT(priv->email_clipboard));
+ priv->email_clipboard = NULL;
+ }
- if (priv->mail_op_queue) {
- modest_runtime_verify_object_last_ref(priv->mail_op_queue,"");
- g_object_unref (G_OBJECT(priv->mail_op_queue));
- priv->mail_op_queue = 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
* cancells any mail operations which in turn access the account
* manager (see modest_mail_operation_notify_end()). */
if (priv->account_mgr) {
- modest_runtime_verify_object_last_ref(priv->account_mgr,"");
+ MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(priv->account_mgr,"");
g_object_unref (G_OBJECT(priv->account_mgr));
priv->account_mgr = NULL;
}
if (priv->conf) {
- modest_runtime_verify_object_last_ref(priv->conf,"");
+ MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(priv->conf,"");
g_object_unref (G_OBJECT(priv->conf));
priv->conf = NULL;
}
static gboolean invoked = FALSE;
if (invoked) {
- g_printerr ("modest: modest_singletons_new may only be called once\n");
- g_assert (!invoked); /* abort */
- return NULL; /* g_assert may be NOP */
+ g_printerr ("%s: modest: modest_singletons_new may only be called once, aborting...\n",
+ __FUNCTION__);
+ abort();
+ return NULL;
}
self = MODEST_SINGLETONS(g_object_new(MODEST_TYPE_SINGLETONS, NULL));
/* 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;
g_return_val_if_fail (self, NULL);
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;
+}