X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-tny-account-store.c;h=169cf4a18581ff446f484fdc20c75c6748089b9c;hb=5458e352ca31d2729dd17f5b323b38e1c7d0bbb1;hp=86f7190acd2af25616f8b3256e484bf019841ad1;hpb=e427d3062be82355bdca744951d7fe01c39e55e6;p=modest diff --git a/src/modest-tny-account-store.c b/src/modest-tny-account-store.c index 86f7190..169cf4a 100644 --- a/src/modest-tny-account-store.c +++ b/src/modest-tny-account-store.c @@ -181,6 +181,24 @@ modest_tny_account_store_finalize (GObject *obj) } + +static void +manager_new_account (ModestAccountMgr *modest_acc_mgr, gchar *name, gpointer data) +{ + g_print ("new account signal %s\n", name); +} +void +manager_remove_account (ModestAccountMgr *modest_acc_mgr,gchar *name, gpointer data) +{ + g_print ("remove account signal %s\n", name); +} +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); +} + GObject* modest_tny_account_store_new (ModestAccountMgr *modest_acc_mgr) { @@ -192,8 +210,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 +227,14 @@ modest_tny_account_store_new (ModestAccountMgr *modest_acc_mgr) g_object_unref (obj); return NULL; } + +#warning todo: disconnect on destruction + 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 +286,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 +433,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 +460,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; }