Fixes NB#119490, use "email_remote_folder" icon for remote folders
[modest] / src / widgets / modest-wizard-dialog.c
index 6f11957..401d922 100644 (file)
@@ -97,6 +97,8 @@ static void make_buttons_sensitive  (ModestWizardDialog *wizard_dialog,
 
 static gboolean invoke_before_next_vfunc (ModestWizardDialog *wizard_dialog);
 static void invoke_enable_buttons_vfunc (ModestWizardDialog *wizard_dialog);
+static void invoke_update_model_vfunc (ModestWizardDialog *wizard_dialog);
+static gboolean invoke_save_vfunc (ModestWizardDialog *wizard_dialog);
 
 enum {
     PROP_ZERO,
@@ -159,6 +161,11 @@ class_init (ModestWizardDialogClass *wizard_dialog_class)
     object_class->get_property = get_property;
     object_class->finalize     = finalize;
 
+    wizard_dialog_class->before_next = NULL;
+    wizard_dialog_class->update_model = NULL;
+    wizard_dialog_class->save = NULL;
+    wizard_dialog_class->enable_buttons = NULL;
+
     /**
      * ModestWizardDialog:wizard-name:
      *
@@ -276,10 +283,14 @@ init (ModestWizardDialog *wizard_dialog)
     priv->autotitle = TRUE;
 
     /* Build wizard layout */
-    gtk_box_pack_start_defaults (GTK_BOX (dialog->vbox), GTK_WIDGET (priv->box));
-    gtk_box_pack_start_defaults (GTK_BOX (priv->box), GTK_WIDGET (vbox));
-    if (priv->image)
-      gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (priv->image), FALSE, FALSE, 0);
+    gtk_box_pack_start (GTK_BOX (dialog->vbox), GTK_WIDGET (priv->box), TRUE, TRUE, 0);
+    gtk_box_pack_start (GTK_BOX (priv->box), GTK_WIDGET (vbox), FALSE, FALSE, 0);
+    gtk_widget_show (vbox);
+    gtk_widget_show (GTK_WIDGET (priv->box));
+    if (priv->image) {
+           gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (priv->image), TRUE, TRUE, 0);
+           gtk_widget_show (priv->image);
+    }
 
     /* Add response buttons: finish, previous, next, cancel */
 #ifdef MODEST_TOOLKIT_HILDON1
@@ -303,8 +314,7 @@ init (ModestWizardDialog *wizard_dialog)
     /* Set initial button states: previous and finish buttons are disabled */
     make_buttons_sensitive (wizard_dialog, FALSE, FALSE, TRUE);
 
-    /* Show all the internal widgets */
-    gtk_widget_show_all (GTK_WIDGET (dialog->vbox));
+    gtk_widget_show (GTK_WIDGET (dialog->vbox));
 
     /* connect to dialog's response signal */
     g_signal_connect (G_OBJECT (dialog), "response",
@@ -425,7 +435,7 @@ set_property (GObject      *object,
              * and remove borders) to make it look like a nice wizard widget */
             gtk_notebook_set_show_tabs (priv->notebook, FALSE);
             gtk_notebook_set_show_border (priv->notebook, FALSE);
-            gtk_box_pack_start_defaults (GTK_BOX( priv->box), GTK_WIDGET (priv->notebook));
+            gtk_box_pack_start (GTK_BOX( priv->box), GTK_WIDGET (priv->notebook), TRUE, TRUE, 0);
 
             /* Show the notebook so that a gtk_widget_show on the dialog is
              * all that is required to display the dialog correctly */
@@ -719,6 +729,30 @@ invoke_enable_buttons_vfunc (ModestWizardDialog *wizard_dialog)
        }
 }
 
+static void
+invoke_update_model_vfunc (ModestWizardDialog *wizard_dialog)
+{
+       ModestWizardDialogClass *klass = MODEST_WIZARD_DIALOG_GET_CLASS (wizard_dialog);
+       
+       /* Call the vfunc, which may be overridden by derived classes: */
+       if (klass->update_model) {
+               (*(klass->update_model)) (wizard_dialog);
+       }
+}
+
+static gboolean
+invoke_save_vfunc (ModestWizardDialog *wizard_dialog)
+{
+       ModestWizardDialogClass *klass = MODEST_WIZARD_DIALOG_GET_CLASS (wizard_dialog);
+       
+       /* Call the vfunc, which may be overridden by derived classes: */
+       if (klass->save) {
+               return (*(klass->save)) (wizard_dialog);
+       } else {
+               return TRUE;
+       }
+}
+
 void 
 modest_wizard_dialog_set_response_override_handler (ModestWizardDialog *wizard_dialog,
                                                    ModestWizardDialogResponseOverrideFunc callback)
@@ -727,3 +761,19 @@ modest_wizard_dialog_set_response_override_handler (ModestWizardDialog *wizard_d
 
     priv->override_func = callback;
 }
+
+void
+modest_wizard_dialog_update_model (ModestWizardDialog *wizard_dialog)
+{
+       g_return_if_fail (MODEST_IS_WIZARD_DIALOG (wizard_dialog));
+
+       invoke_update_model_vfunc (wizard_dialog);
+}
+
+gboolean
+modest_wizard_dialog_save (ModestWizardDialog *wizard_dialog)
+{
+       g_return_val_if_fail (MODEST_IS_WIZARD_DIALOG (wizard_dialog), FALSE);
+
+       return invoke_save_vfunc (wizard_dialog);
+}