* modest-mail-operation.c:
[modest] / src / maemo / modest-account-view-window.c
index 61f50ae..0307e4e 100644 (file)
@@ -151,18 +151,26 @@ on_delete_button_clicked (GtkWidget *button, ModestAccountViewWindow *self)
 {
        ModestAccountViewWindowPrivate *priv;
        ModestAccountMgr *account_mgr;
-       gchar *account_name;
+       
        
        priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self);
 
        account_mgr = modest_runtime_get_account_mgr(); 
-       account_name = modest_account_view_get_selected_account (priv->account_view);
+       gchar *account_name = modest_account_view_get_selected_account (priv->account_view);
+       if(!account_name)
+               return;
+               
+       gchar *account_title = modest_account_mgr_get_display_name(account_mgr, account_name);
 
        if (account_name) {
                gboolean removed;
                GtkWidget *dialog;
                gchar *txt;
 
+               /* 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,
@@ -171,7 +179,10 @@ on_delete_button_clicked (GtkWidget *button, ModestAccountViewWindow *self)
                                                      GTK_STOCK_OK,
                                                      GTK_RESPONSE_ACCEPT,
                                                      NULL);
-               txt = g_strdup_printf (_("Do you really want to delete the account %s?"), account_name);
+               /* 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));
@@ -204,7 +215,11 @@ on_delete_button_clicked (GtkWidget *button, ModestAccountViewWindow *self)
                        }
                }
                gtk_widget_destroy (dialog);
+               g_free (account_title);
                g_free (account_name);
+               
+               /* Update the view: */
+               modest_account_view_unblock_conf_updates (priv->account_view);
        }
 }
 
@@ -217,6 +232,10 @@ on_edit_button_clicked (GtkWidget *button, ModestAccountViewWindow *self)
        if (!account_name)
                return;
                
+       /* 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);
+               
        /* Show the Account Settings window: */
        ModestAccountSettingsDialog *dialog = modest_account_settings_dialog_new ();
        modest_account_settings_dialog_set_account_name (dialog, account_name);
@@ -226,16 +245,28 @@ on_edit_button_clicked (GtkWidget *button, ModestAccountViewWindow *self)
        gtk_widget_destroy (GTK_WIDGET (dialog));
        
        g_free (account_name);
+       
+       /* Update the view: */
+       modest_account_view_unblock_conf_updates (priv->account_view);  
 }
 
 static void
 on_new_button_clicked (GtkWidget *button, ModestAccountViewWindow *self)
 {
+       ModestAccountViewWindowPrivate *priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self);
+       
+       /* 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);
+       
        /* Show the easy-setup wizard: */
        ModestEasysetupWizardDialog *wizard = modest_easysetup_wizard_dialog_new ();
        gtk_window_set_transient_for (GTK_WINDOW (wizard), GTK_WINDOW (self));
        gtk_dialog_run (GTK_DIALOG (wizard));
        gtk_widget_destroy (GTK_WIDGET (wizard));
+       
+       /* Allow updates: */
+       modest_account_view_unblock_conf_updates (priv->account_view);
 }