X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmaemo%2Fmodest-account-view-window.c;h=e77b3357a86da5b549562d25468053eb92eaf3c2;hb=1dd6964aee70253e63019e1a0d4cd3ef17c6364d;hp=6f08eecf8aa560f904e7b6064a373b561761e0c4;hpb=47b04b1e03f3599c7c77b5040baf7ad58aa3802b;p=modest diff --git a/src/maemo/modest-account-view-window.c b/src/maemo/modest-account-view-window.c index 6f08eec..e77b335 100644 --- a/src/maemo/modest-account-view-window.c +++ b/src/maemo/modest-account-view-window.c @@ -61,6 +61,9 @@ struct _ModestAccountViewWindowPrivate { GtkWidget *delete_button; GtkWidget *close_button; ModestAccountView *account_view; + + /* We remember this so that we only open one at a time: */ + ModestEasysetupWizardDialog *wizard; }; #define MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ MODEST_TYPE_ACCOUNT_VIEW_WINDOW, \ @@ -117,6 +120,13 @@ modest_account_view_window_class_init (ModestAccountViewWindowClass *klass) static void modest_account_view_window_finalize (GObject *obj) { + ModestAccountViewWindowPrivate *priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(obj); + + if (priv->wizard) { + gtk_widget_destroy (GTK_WIDGET (priv->wizard)); + priv->wizard = NULL; + } + G_OBJECT_CLASS(parent_class)->finalize (obj); } @@ -191,9 +201,7 @@ on_delete_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) is_default = TRUE; g_free (default_account_name); - gboolean removed = modest_account_mgr_remove_account (account_mgr, - account_name, - FALSE); + gboolean removed = modest_account_mgr_remove_account (account_mgr, account_name); if (!removed) { g_warning ("%s: modest_account_mgr_remove_account() failed.\n", __FUNCTION__); } @@ -241,13 +249,42 @@ on_edit_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) } static void +on_wizard_response (GtkDialog *dialog, gint response, gpointer user_data) +{ + ModestAccountViewWindow *self = MODEST_ACCOUNT_VIEW_WINDOW (user_data); + ModestAccountViewWindowPrivate *priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); + + /* The response has already been handled by the wizard dialog itself, + * creating the new account. + */ + + /* Destroy the dialog: */ + if (priv->wizard) { + gtk_widget_destroy (GTK_WIDGET (priv->wizard)); + priv->wizard = NULL; + } +} + +static void on_new_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) { + ModestAccountViewWindowPrivate *priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); + /* 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)); + + if (priv->wizard) { + /* Just show the existing window: */ + gtk_window_present (GTK_WINDOW (priv->wizard)); + } else { + /* Create and show the dialog: */ + priv->wizard = modest_easysetup_wizard_dialog_new (); + + gtk_window_set_transient_for (GTK_WINDOW (priv->wizard), GTK_WINDOW (self)); + + /* Destroy the dialog when it is closed: */ + g_signal_connect (G_OBJECT (priv->wizard), "response", G_CALLBACK (on_wizard_response), self); + gtk_widget_show (GTK_WIDGET (priv->wizard)); + } }