- /* Freeze updates, so we can do just one update afterwards,
- * instead of responding to every conf key change: */
- modest_account_view_block_conf_updates (priv->account_view);
-
- dialog = gtk_dialog_new_with_buttons (_("Confirmation dialog"),
- GTK_WINDOW (self),
- GTK_DIALOG_MODAL,
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_REJECT,
- GTK_STOCK_OK,
- GTK_RESPONSE_ACCEPT,
- NULL);
- /* TODO: This confirmation dialog is not specified in the Maemo UI spec,
- * but we really need one: */
- txt = g_strdup_printf (_("Do you really want to delete the account %s?"),
- account_title);
- gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox),
- gtk_label_new (txt), FALSE, FALSE, 0);
- gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox));
- g_free (txt);
-
- if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
- /* Remove account. If succeeded it removes also
- 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,
- FALSE);
-
- if (removed && is_default) {
- /* Set a different account as the default, so there is always at least one default:
- * This is not specified, and might be the wrong behaviour. murrayc. */
- modest_account_mgr_set_first_account_as_default (account_mgr);
- }
-
- if (removed) {
- /* Show confirmation dialog ??? */
- } else {
- /* Show error dialog ??? */
- }
- }
- gtk_widget_destroy (dialog);
- g_free (account_title);
- g_free (account_name);
-
- /* Update the view: */
- modest_account_view_unblock_conf_updates (priv->account_view);
- }
+ g_free (account_title);
+ g_free (account_name);
+}
+
+static void
+on_account_settings_dialog_response (GtkDialog *dialog,
+ gint response,
+ gpointer user_data)
+{
+ TnyAccount *store_account = NULL;
+ gchar* account_name = NULL;
+ ModestAccountViewWindowPrivate *priv = NULL;
+
+ priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE (user_data);
+ account_name = modest_account_view_get_selected_account (priv->account_view);
+ store_account = modest_tny_account_store_get_server_account (modest_runtime_get_account_store (),
+ account_name,
+ TNY_ACCOUNT_TYPE_STORE);
+
+ /* Reconnect the store account, no need to reconnect the
+ transport account because it will connect when needed */
+ if (tny_account_get_connection_status (store_account) ==
+ TNY_CONNECTION_STATUS_DISCONNECTED)
+ tny_camel_account_set_online (TNY_CAMEL_ACCOUNT (store_account),
+ TRUE, NULL, NULL);
+
+ /* Disconnect this handler */
+ g_signal_handlers_disconnect_by_func (dialog, on_account_settings_dialog_response, user_data);
+
+ /* Free */
+ g_free (account_name);
+ g_object_unref (store_account);