X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-tny-account-store.c;h=6af53daa671ba96f6cbd11580d9c514ceb90b48d;hb=b9f91e858b975799d758aa5df68165ebc85961c1;hp=a41cf72e5798c5f5244136538d7038020a119a37;hpb=c3fa140bae7b51e3bca3ae33bf2b6f924cd9386f;p=modest diff --git a/src/modest-tny-account-store.c b/src/modest-tny-account-store.c index a41cf72..6af53da 100644 --- a/src/modest-tny-account-store.c +++ b/src/modest-tny-account-store.c @@ -317,16 +317,29 @@ on_vfs_volume_unmounted(GnomeVFSVolumeMonitor *volume_monitor, } static void -on_account_removed (ModestAccountMgr *acc_mgr, const gchar *account, gboolean server_account, +on_account_removed (ModestAccountMgr *acc_mgr, + const gchar *account, + gboolean server_account, gpointer user_data) { ModestTnyAccountStore *self = MODEST_TNY_ACCOUNT_STORE(user_data); - - /* FIXME: make this more finegrained; changes do not really affect _all_ - * accounts, and some do not affect tny accounts at all (such as 'last_update') + TnyAccount *store_account; + + /* Clear the account cache */ + store_account = + modest_tny_account_store_get_server_account (self, + account, + TNY_ACCOUNT_TYPE_STORE); + if (store_account) { + tny_store_account_delete_cache (TNY_STORE_ACCOUNT (store_account)); + g_object_unref (store_account); + } + + /* FIXME: make this more finegrained; changes do not + * really affect _all_ accounts, and some do not + * affect tny accounts at all (such as 'last_update') */ - if (server_account) - recreate_all_accounts (self); + recreate_all_accounts (self); g_signal_emit (G_OBJECT(self), signals[ACCOUNT_UPDATE_SIGNAL], 0, account); @@ -334,13 +347,14 @@ on_account_removed (ModestAccountMgr *acc_mgr, const gchar *account, gboolean se static void on_account_changed (ModestAccountMgr *acc_mgr, const gchar *account, - const gchar *key, gboolean server_account, gpointer user_data) + const GSList *keys, gboolean server_account, gpointer user_data) { ModestTnyAccountStore *self = MODEST_TNY_ACCOUNT_STORE(user_data); /* Ignore the change if it's a change in the last_updated value */ - if (g_str_has_suffix (key, MODEST_ACCOUNT_LAST_UPDATED)) + if (g_slist_length ((GSList *)keys) == 1 && + g_str_has_suffix ((const gchar *) keys->data, MODEST_ACCOUNT_LAST_UPDATED)) return; /* FIXME: make this more finegrained; changes do not really affect _all_ @@ -923,6 +937,8 @@ static gboolean modest_tny_account_store_alert (TnyAccountStore *self, TnyAlertType type, gboolean question, const GError *error) { + /* TODO: It would be nice to know what account caused this error. */ + g_return_val_if_fail (error, FALSE); if ((error->domain != TNY_ACCOUNT_ERROR) @@ -942,7 +958,10 @@ modest_tny_account_store_alert (TnyAccountStore *self, TnyAlertType type, /* The tinymail camel implementation just sends us this for almost * everything, so we have to guess at the cause. * It could be a wrong password, or inability to resolve a hostname, - * or lack of network, or something entirely different: */ + * or lack of network, or incorrect authentication method, or something entirely different: */ + /* TODO: Fix camel to provide specific error codes, and then use the + * specific dialog messages from Chapter 12 of the UI spec. + */ case TNY_ACCOUNT_STORE_ERROR_UNKNOWN_ALERT: g_debug ("%s: Handling GError domain=%d, code=%d, message=%s", __FUNCTION__, error->domain, error->code, error->message); @@ -950,7 +969,9 @@ modest_tny_account_store_alert (TnyAccountStore *self, TnyAlertType type, /* TODO: Remove the internal error message for the real release. * This is just so the testers can give us more information: */ /* prompt = _("Modest account not yet fully configured."); */ - prompt = g_strdup_printf(_("Modest account not yet fully configured. Error=%s"), + prompt = g_strdup_printf( + "%s\n (Internal error message, often very misleading):\n%s", + _("Incorrect Account Settings"), error->message); /* TODO: If we can ever determine that the problem is a wrong password: @@ -986,7 +1007,7 @@ modest_tny_account_store_alert (TnyAccountStore *self, TnyAlertType type, break; //TODO: We have started receiving errors of - //domain=TNY_ACCOUNT_ERROR, code=TNY_ACCOUNT_ERROR_TRY_CONNECT, messagae="Canceled". + //domain=TNY_ACCOUNT_ERROR, code=TNY_ACCOUNT_ERROR_TRY_CONNECT, message="Canceled". //If this is really a result of us cancelling our own operation then //a) this probably shouldn't be an error, and //b) should have its own error code.