Very first changes to embrace the new tinymail session code
[modest] / src / modest-tny-account-store.c
index fdd51cf..6f35370 100644 (file)
 #include <libgnomevfs/gnome-vfs-volume-monitor.h>
 
 /* 'private'/'protected' functions */
-static void modest_tny_account_store_class_init   (ModestTnyAccountStoreClass *klass);
-//static void modest_tny_account_store_init         (ModestTnyAccountStore *obj);
-static void modest_tny_account_store_finalize     (GObject *obj);
+static void    modest_tny_account_store_class_init   (ModestTnyAccountStoreClass *klass);
+
+static void    modest_tny_account_store_finalize     (GObject *obj);
 
-/* implementations for tny-account-store-iface */
 static void    modest_tny_account_store_instance_init (ModestTnyAccountStore *obj);
+
 static void    modest_tny_account_store_init          (gpointer g, gpointer iface_data);
 
+static void    modest_tny_account_store_base_init     (gpointer g_class);
 
 static void    get_server_accounts                    (TnyAccountStore *self, 
                                                       TnyList *list, 
@@ -88,6 +89,9 @@ static void    get_server_accounts                    (TnyAccountStore *self,
 
 /* list my signals */
 enum {
+       ACCOUNT_CHANGED_SIGNAL,
+       ACCOUNT_INSERTED_SIGNAL,
+       ACCOUNT_REMOVED_SIGNAL,
        ACCOUNT_UPDATE_SIGNAL,
        PASSWORD_REQUESTED_SIGNAL,
        LAST_SIGNAL
@@ -132,7 +136,7 @@ modest_tny_account_store_get_type (void)
        if (!my_type) {
                static const GTypeInfo my_info = {
                        sizeof(ModestTnyAccountStoreClass),
-                       NULL,           /* base init */
+                       modest_tny_account_store_base_init,     /* base init */
                        NULL,           /* base finalize */
                        (GClassInitFunc) modest_tny_account_store_class_init,
                        NULL,           /* class finalize */
@@ -158,6 +162,74 @@ modest_tny_account_store_get_type (void)
        return my_type;
 }
 
+
+static void
+modest_tny_account_store_base_init (gpointer g_class)
+{
+       static gboolean tny_account_store_initialized = FALSE;
+
+       if (!tny_account_store_initialized) {
+
+               signals[ACCOUNT_CHANGED_SIGNAL] =
+                       g_signal_new ("account_changed",
+                                     MODEST_TYPE_TNY_ACCOUNT_STORE,
+                                     G_SIGNAL_RUN_FIRST,
+                                     G_STRUCT_OFFSET (ModestTnyAccountStoreClass, account_changed),
+                                     NULL, NULL,
+                                     g_cclosure_marshal_VOID__POINTER,
+                                     G_TYPE_NONE, 1, TNY_TYPE_ACCOUNT);
+
+               signals[ACCOUNT_INSERTED_SIGNAL] =
+                       g_signal_new ("account_inserted",
+                                     MODEST_TYPE_TNY_ACCOUNT_STORE,
+                                     G_SIGNAL_RUN_FIRST,
+                                     G_STRUCT_OFFSET (ModestTnyAccountStoreClass, account_inserted),
+                                     NULL, NULL,
+                                     g_cclosure_marshal_VOID__POINTER,
+                                     G_TYPE_NONE, 1, TNY_TYPE_ACCOUNT);
+               
+               signals[ACCOUNT_REMOVED_SIGNAL] =
+                       g_signal_new ("account_removed",
+                                     MODEST_TYPE_TNY_ACCOUNT_STORE,
+                                     G_SIGNAL_RUN_FIRST,
+                                     G_STRUCT_OFFSET (ModestTnyAccountStoreClass, account_removed),
+                                     NULL, NULL,
+                                     g_cclosure_marshal_VOID__POINTER,
+                                     G_TYPE_NONE, 1, TNY_TYPE_ACCOUNT);
+               
+/*             signals[TNY_ACCOUNT_STORE_CONNECTING_FINISHED] = */
+/*                     g_signal_new ("connecting_finished", */
+/*                                   TNY_TYPE_ACCOUNT_STORE, */
+/*                                   G_SIGNAL_RUN_FIRST, */
+/*                                   G_STRUCT_OFFSET (TnyAccountStoreIface, connecting_finished), */
+/*                                   NULL, NULL, */
+/*                                   g_cclosure_marshal_VOID__VOID,  */
+/*                                   G_TYPE_NONE, 0); */
+
+               signals[ACCOUNT_UPDATE_SIGNAL] =
+                       g_signal_new ("account_update",
+                                     MODEST_TYPE_TNY_ACCOUNT_STORE,
+                                     G_SIGNAL_RUN_FIRST,
+                                     G_STRUCT_OFFSET(ModestTnyAccountStoreClass, account_update),
+                                     NULL, NULL,
+                                     g_cclosure_marshal_VOID__STRING,
+                                     G_TYPE_NONE, 1, G_TYPE_STRING);
+               
+               signals[PASSWORD_REQUESTED_SIGNAL] =
+                       g_signal_new ("password_requested",
+                                     MODEST_TYPE_TNY_ACCOUNT_STORE,
+                                     G_SIGNAL_RUN_FIRST,
+                                     G_STRUCT_OFFSET(ModestTnyAccountStoreClass, password_requested),
+                                     NULL, NULL,
+                                     modest_marshal_VOID__STRING_POINTER_POINTER_POINTER_POINTER,
+                                     G_TYPE_NONE, 5, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER,
+                                     G_TYPE_POINTER);          
+
+               tny_account_store_initialized = TRUE;
+       }
+}
+
+
 static void
 modest_tny_account_store_class_init (ModestTnyAccountStoreClass *klass)
 {
@@ -169,25 +241,6 @@ modest_tny_account_store_class_init (ModestTnyAccountStoreClass *klass)
 
        g_type_class_add_private (gobject_class,
                                  sizeof(ModestTnyAccountStorePrivate));
-
-        signals[ACCOUNT_UPDATE_SIGNAL] =
-               g_signal_new ("account_update",
-                             G_TYPE_FROM_CLASS (gobject_class),
-                             G_SIGNAL_RUN_FIRST,
-                             G_STRUCT_OFFSET(ModestTnyAccountStoreClass, account_update),
-                             NULL, NULL,
-                             g_cclosure_marshal_VOID__STRING,
-                             G_TYPE_NONE, 1, G_TYPE_STRING);
-        
-        signals[PASSWORD_REQUESTED_SIGNAL] =
-                g_signal_new ("password_requested",
-                              G_TYPE_FROM_CLASS (gobject_class),
-                              G_SIGNAL_RUN_FIRST,
-                              G_STRUCT_OFFSET(ModestTnyAccountStoreClass, password_requested),
-                              NULL, NULL,
-                              modest_marshal_VOID__STRING_POINTER_POINTER_POINTER_POINTER,
-                              G_TYPE_NONE, 5, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER,
-                              G_TYPE_POINTER);
 }
 
 
@@ -365,10 +418,10 @@ on_account_removed (ModestAccountMgr *acc_mgr,
 
        /* Notify the observers */
        g_signal_emit (G_OBJECT (self),
-                      tny_account_store_signals [TNY_ACCOUNT_STORE_ACCOUNT_REMOVED],
+                      signals [ACCOUNT_REMOVED_SIGNAL],
                       0, store_account);
        g_signal_emit (G_OBJECT (self),
-                      tny_account_store_signals [TNY_ACCOUNT_STORE_ACCOUNT_REMOVED],
+                      signals [ACCOUNT_REMOVED_SIGNAL],
                       0, transport_account);
 
        /* Frees */
@@ -870,7 +923,7 @@ modest_tny_account_store_new (ModestAccountMgr *account_mgr, TnyDevice *device)
        }
        
        tny_session_camel_set_ui_locker (priv->session,  tny_gtk_lockable_new ());
-       tny_session_camel_set_async_connecting (priv->session, TRUE);
+/*     tny_session_camel_set_async_connecting (priv->session, TRUE); */
                
        /* Connect signals */
        g_signal_connect (G_OBJECT(account_mgr), "account_changed",