From: Sergio Villar Senin Date: Wed, 2 Apr 2008 16:36:50 +0000 (+0000) Subject: * Fixes NB#83555 do not let the user to delete an account twice X-Git-Tag: git_migration_finished~1511 X-Git-Url: http://git.maemo.org/git/?a=commitdiff_plain;h=bc6ade609440e9f083c8f8d7a5ed4af4531f4365;hp=0c11b6e7c193d49afbcf80cfbb3f5b592bfb15db;p=modest * Fixes NB#83555 do not let the user to delete an account twice * Added some useful extra checks pmo-trunk-r4363 --- diff --git a/src/maemo/modest-account-view-window.c b/src/maemo/modest-account-view-window.c index b9ea58c..f981b5b 100644 --- a/src/maemo/modest-account-view-window.c +++ b/src/maemo/modest-account-view-window.c @@ -163,11 +163,24 @@ check_for_active_account (ModestAccountViewWindow *self, const gchar* account_na modest_tny_account_store_get_server_account (acc_store, account_name, TNY_ACCOUNT_TYPE_STORE); + + /* This could happen if the account was deleted before the + call to this function */ + if (!store_account) + return FALSE; + transport_account = modest_tny_account_store_get_server_account (acc_store, account_name, TNY_ACCOUNT_TYPE_TRANSPORT); + /* This could happen if the account was deleted before the + call to this function */ + if (!transport_account) { + g_object_unref (store_account); + return FALSE; + } + store_conn_status = tny_account_get_connection_status (store_account); transport_conn_status = tny_account_get_connection_status (transport_account); @@ -217,54 +230,55 @@ on_delete_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) { ModestAccountViewWindowPrivate *priv; ModestAccountMgr *account_mgr; - + gchar *account_title = NULL, *account_name = NULL; priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); account_mgr = modest_runtime_get_account_mgr(); - gchar *account_name = modest_account_view_get_selected_account (priv->account_view); + account_name = modest_account_view_get_selected_account (priv->account_view); if(!account_name) return; - - if (account_name) { - gchar *account_title = modest_account_mgr_get_display_name(account_mgr, account_name); - - if (check_for_active_account (self, account_name)) { - /* The warning text depends on the account type: */ - gchar *txt = NULL; - gint response; - if (modest_account_mgr_get_store_protocol (account_mgr, account_name) - == MODEST_PROTOCOL_STORE_POP) { + account_title = modest_account_mgr_get_display_name(account_mgr, account_name); + /* This could happen if the account is being deleted */ + if (!account_title) + return; + + if (check_for_active_account (self, account_name)) { + /* The warning text depends on the account type: */ + gchar *txt = NULL; + gint response; + + if (modest_account_mgr_get_store_protocol (account_mgr, account_name) + == MODEST_PROTOCOL_STORE_POP) { txt = g_strdup_printf (_("emev_nc_delete_mailbox"), - account_title); - } else { - txt = g_strdup_printf (_("emev_nc_delete_mailboximap"), - account_title); - } + account_title); + } else { + txt = g_strdup_printf (_("emev_nc_delete_mailboximap"), + account_title); + } + + response = modest_platform_run_confirmation_dialog (GTK_WINDOW (self), txt); + g_free (txt); + txt = NULL; + + if (response == GTK_RESPONSE_OK) { + /* Remove account. If it succeeds then it also removes + the account from the ModestAccountView: */ + gboolean is_default = FALSE; + gchar *default_account_name = modest_account_mgr_get_default_account (account_mgr); + if (default_account_name && (strcmp (default_account_name, account_name) == 0)) + is_default = TRUE; + g_free (default_account_name); - response = modest_platform_run_confirmation_dialog (GTK_WINDOW (self), txt); - g_free (txt); - txt = NULL; - - if (response == GTK_RESPONSE_OK) { - /* Remove account. If it succeeds then it also removes - the account from the ModestAccountView: */ - gboolean is_default = FALSE; - gchar *default_account_name = modest_account_mgr_get_default_account (account_mgr); - if (default_account_name && (strcmp (default_account_name, account_name) == 0)) - is_default = TRUE; - g_free (default_account_name); - gboolean removed = modest_account_mgr_remove_account (account_mgr, account_name); if (!removed) { g_warning ("%s: modest_account_mgr_remove_account() failed.\n", __FUNCTION__); } - } - g_free (account_title); - } - g_free (account_name); - } + } + g_free (account_title); + } + g_free (account_name); } static void