X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=ae37a1babe65aa196f72053d07b0d09bdbf8ef58;hb=4e4dc7577e137b09be57730b803e8a9e61a2c4d3;hp=3c02d51f013e84c8a81c8c95955b3856a87e989b;hpb=67a92deb2ce400564da6b4e2de84404198e71b36;p=modest diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 3c02d51..ae37a1b 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -6170,3 +6170,49 @@ modest_ui_actions_get_msg_already_deleted_error_msg (ModestWindow *win) return msg; } + +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; +}