X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-tny-account-store.c;h=f5aa9e3ae3c4004839d9b99b11a1b2e6566b098f;hb=5b2f29d9ca116e550ef1900f3883a488aeee28e9;hp=86f7190acd2af25616f8b3256e484bf019841ad1;hpb=e427d3062be82355bdca744951d7fe01c39e55e6;p=modest diff --git a/src/modest-tny-account-store.c b/src/modest-tny-account-store.c index 86f7190..f5aa9e3 100644 --- a/src/modest-tny-account-store.c +++ b/src/modest-tny-account-store.c @@ -149,6 +149,28 @@ free_gobject_list (GList *list) } +static void +manager_new_account (ModestAccountMgr *modest_acc_mgr, gchar *name, gpointer data) +{ + g_print ("new account signal %s\n", name); +} + + +static void +manager_remove_account (ModestAccountMgr *modest_acc_mgr,gchar *name, gpointer data) +{ + g_print ("remove account signal %s\n", name); +} + + +static void +manager_change_account (ModestAccountMgr *modest_acc_mgr, gchar *accountname, + gchar *key, gchar* value, gpointer data) +{ + g_print ("account change signal: account: %s key: %s value: %s\n", accountname, key, value); +} + + static void modest_tny_account_store_finalize (GObject *obj) { @@ -156,6 +178,13 @@ modest_tny_account_store_finalize (GObject *obj) ModestTnyAccountStorePrivate *priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE(self); + g_signal_handlers_disconnect_by_func (G_OBJECT (priv->modest_acc_mgr), + G_CALLBACK(manager_new_account), NULL); + g_signal_handlers_disconnect_by_func (G_OBJECT (priv->modest_acc_mgr), + G_CALLBACK(manager_remove_account), NULL); + g_signal_handlers_disconnect_by_func (G_OBJECT (priv->modest_acc_mgr), + G_CALLBACK(manager_change_account), NULL); + if (priv->modest_acc_mgr) { g_object_unref (G_OBJECT(priv->modest_acc_mgr)); priv->modest_acc_mgr = NULL; @@ -178,9 +207,9 @@ modest_tny_account_store_finalize (GObject *obj) priv->cache_dir = NULL; - } + GObject* modest_tny_account_store_new (ModestAccountMgr *modest_acc_mgr) { @@ -192,8 +221,10 @@ modest_tny_account_store_new (ModestAccountMgr *modest_acc_mgr) obj = G_OBJECT(g_object_new(MODEST_TYPE_TNY_ACCOUNT_STORE, NULL)); priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE(obj); - g_object_ref(G_OBJECT(priv->modest_acc_mgr = modest_acc_mgr)); - + + g_object_ref(G_OBJECT(modest_acc_mgr)); + priv->modest_acc_mgr = modest_acc_mgr; + priv->device = (TnyDeviceIface*)tny_device_new(); if (!priv->device) { g_warning ("Cannot create Device instance"); @@ -207,6 +238,13 @@ modest_tny_account_store_new (ModestAccountMgr *modest_acc_mgr) g_object_unref (obj); return NULL; } + + g_signal_connect (G_OBJECT (modest_acc_mgr), "account-add", + G_CALLBACK(manager_new_account), NULL); + g_signal_connect (G_OBJECT (modest_acc_mgr), "account-remove", + G_CALLBACK(manager_remove_account), NULL); + g_signal_connect (G_OBJECT (modest_acc_mgr), "account-change", + G_CALLBACK(manager_change_account), NULL); return obj; } @@ -258,7 +296,7 @@ add_account (TnyAccountStoreIface *self, TnyAccountIface *account) ModestTnyAccountStore *account_store; ModestTnyAccountStorePrivate *priv; - const gchar* account_name; + const gchar *account_name; const gchar *hostname, *username, *proto; g_return_val_if_fail (self, FALSE); @@ -405,30 +443,24 @@ modest_tny_account_store_get_store_accounts (TnyAccountStoreIface *iface) ModestTnyAccountStore *self; ModestTnyAccountStorePrivate *priv; GSList *accounts; - GList *tny_accounts; g_return_val_if_fail (iface, NULL); self = MODEST_TNY_ACCOUNT_STORE(iface); priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE(self); - accounts = - modest_account_mgr_server_account_names (priv->modest_acc_mgr, - NULL, - MODEST_PROTO_TYPE_STORE, - NULL, FALSE); + if (!priv->store_accounts) { + accounts = + modest_account_mgr_server_account_names (priv->modest_acc_mgr, + NULL, + MODEST_PROTO_TYPE_STORE, + NULL, FALSE); - tny_accounts = tny_accounts_from_server_accounts (self, accounts, TRUE); - g_slist_free (accounts); - - /* - * FIXME: after gconf notification support is added, - * we can simply return priv->store_account - */ - priv->store_accounts = free_gobject_list (priv->store_accounts); - priv->store_accounts = tny_accounts; + priv->store_accounts = tny_accounts_from_server_accounts (self, accounts, TRUE); + g_slist_free (accounts); + } - return tny_accounts; + return priv->store_accounts; } @@ -438,31 +470,25 @@ modest_tny_account_store_get_transport_accounts (TnyAccountStoreIface *iface) ModestTnyAccountStore *self; ModestTnyAccountStorePrivate *priv; GSList *accounts; - GList *tny_accounts; g_return_val_if_fail (iface, NULL); self = MODEST_TNY_ACCOUNT_STORE(iface); priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE(self); - accounts = - modest_account_mgr_server_account_names (priv->modest_acc_mgr, - NULL, - MODEST_PROTO_TYPE_TRANSPORT, - NULL, FALSE); - tny_accounts = tny_accounts_from_server_accounts (self, accounts, FALSE); - g_warning ("transport accounts: %d", g_list_length (tny_accounts)); - - g_slist_free (accounts); + + if (!priv->transport_accounts) { + accounts = + modest_account_mgr_server_account_names (priv->modest_acc_mgr, + NULL, + MODEST_PROTO_TYPE_TRANSPORT, + NULL, FALSE); + priv->transport_accounts = tny_accounts_from_server_accounts (self, accounts, FALSE); + g_slist_free (accounts); + } - /* - * FIXME: after gconf notification support is added, - * we can simply return priv->store_account - */ - priv->transport_accounts = free_gobject_list (priv->transport_accounts); - priv->transport_accounts = tny_accounts; - return tny_accounts; /* FIXME: who will free this? */ + return priv->transport_accounts; }