+
+gboolean
+modest_ui_actions_on_delete_account (GtkWindow *parent_window,
+ const gchar *account_name,
+ const gchar *account_title)
+{
+ ModestAccountMgr *account_mgr;
+ gchar *txt = NULL;
+ gint response;
+ ModestProtocol *protocol;
+ gboolean removed = FALSE;
+
+ g_return_val_if_fail (account_name, FALSE);
+ g_return_val_if_fail (account_title, FALSE);
+
+ account_mgr = modest_runtime_get_account_mgr();
+
+ /* The warning text depends on the account type: */
+ protocol = modest_protocol_registry_get_protocol_by_type (modest_runtime_get_protocol_registry (),
+ modest_account_mgr_get_store_protocol (account_mgr,
+ account_name));
+ txt = modest_protocol_get_translation (protocol,
+ MODEST_PROTOCOL_TRANSLATION_DELETE_MAILBOX,
+ account_title);
+ if (txt == NULL)
+ txt = g_strdup_printf (_("emev_nc_delete_mailbox"), account_title);
+
+ response = modest_platform_run_confirmation_dialog (parent_window, 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);
+
+ removed = modest_account_mgr_remove_account (account_mgr, account_name);
+ if (!removed)
+ g_warning ("%s: modest_account_mgr_remove_account() failed.\n", __FUNCTION__);
+ }
+ return removed;
+}