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, \
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);
}
}
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 ();
- modest_maemo_show_dialog_and_forget (GTK_WINDOW (self), GTK_DIALOG (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));
+ }
}