Modified webpage: now tinymail repository is in gitorious.
[modest] / src / modest-singletons.c
index 1883f20..e4159e4 100644 (file)
 #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 "gtk/modest-gtk-window-mgr.h"
+#endif
 #include <tny-fs-stream-cache.h>
 
 /* 'private'/'protected' functions */
@@ -50,6 +55,7 @@ struct _ModestSingletonsPrivate {
        ModestWindowMgr           *window_mgr;
        ModestProtocolRegistry    *protocol_registry;
        ModestPluginFactory   *plugin_factory;
+       ModestToolkitFactory      *toolkit_factory;
        TnyStreamCache            *images_cache;
 };
 #define MODEST_SINGLETONS_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
@@ -111,6 +117,7 @@ modest_singletons_init (ModestSingletons *obj)
        priv->window_mgr      = NULL;
        priv->protocol_registry = NULL;
        priv->plugin_factory = NULL;
+       priv->toolkit_factory = NULL;
 
        priv->protocol_registry = modest_protocol_registry_new ();
        if (!priv->protocol_registry) {
@@ -144,6 +151,12 @@ modest_singletons_init (ModestSingletons *obj)
                return;
        }
 
+       priv->toolkit_factory  = modest_toolkit_factory_get_instance ();
+       if (!priv->toolkit_factory) {
+               g_printerr ("modest: cannot create toolkit factory instance\n");
+               return;
+       }
+
        priv->device  = tny_platform_factory_new_device (priv->platform_fact);
        if (!priv->device) {
                g_printerr ("modest: cannot create tny device instance\n");
@@ -162,7 +175,11 @@ 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_gtk_window_mgr_new ();
+#endif
        if (!priv->window_mgr) {
                g_printerr ("modest: cannot create modest window manager instance\n");
                return;
@@ -233,6 +250,18 @@ modest_singletons_finalize (GObject *obj)
                priv->email_clipboard = 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;
+       }
+
+       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;
+       }
+
        /* 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
@@ -333,6 +362,13 @@ modest_singletons_get_platform_factory (ModestSingletons *self)
        return MODEST_SINGLETONS_GET_PRIVATE(self)->platform_fact;
 }
 
+ModestToolkitFactory*
+modest_singletons_get_toolkit_factory (ModestSingletons *self)
+{
+       g_return_val_if_fail (self, NULL);
+       return MODEST_SINGLETONS_GET_PRIVATE(self)->toolkit_factory;
+}
+
 ModestWindowMgr* 
 modest_singletons_get_window_mgr (ModestSingletons *self)
 {