* Fixes NB#104720, preppend '@' to the domain names in the user email address field
[modest] / src / hildon2 / modest-easysetup-wizard-dialog.c
index 5b12efa..c092e6d 100644 (file)
@@ -247,16 +247,16 @@ static void
 invoke_enable_buttons_vfunc (ModestEasysetupWizardDialog *wizard_dialog)
 {
        ModestWizardDialogClass *klass = MODEST_WIZARD_DIALOG_GET_CLASS (wizard_dialog);
-       
+
        /* Call the vfunc, which may be overridden by derived classes: */
        if (klass->enable_buttons) {
                GtkNotebook *notebook = NULL;
                g_object_get (wizard_dialog, "wizard-notebook", &notebook, NULL);
-               
+
                const gint current_page_num = gtk_notebook_get_current_page (notebook);
                if (current_page_num == -1)
                        return;
-                       
+
                GtkWidget* current_page_widget = gtk_notebook_get_nth_page (notebook, current_page_num);
                (*(klass->enable_buttons))(MODEST_WIZARD_DIALOG (wizard_dialog), current_page_widget);
        }
@@ -265,9 +265,28 @@ invoke_enable_buttons_vfunc (ModestEasysetupWizardDialog *wizard_dialog)
 static void
 on_caption_entry_changed (GtkEditable *editable, gpointer user_data)
 {
-       ModestEasysetupWizardDialog *self = MODEST_EASYSETUP_WIZARD_DIALOG (user_data);
-       g_assert(self);
+       ModestEasysetupWizardDialog *self;
+       gboolean mandatory, empty;
+       ModestEasysetupWizardDialogPrivate *priv;
+
+       g_return_if_fail (user_data);
+
+       self = MODEST_EASYSETUP_WIZARD_DIALOG (user_data);
+       priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE (self);
+
        invoke_enable_buttons_vfunc(self);
+
+       empty = !g_utf8_collate (gtk_entry_get_text (GTK_ENTRY (editable)), "");
+       mandatory = ((GtkWidget *) editable == priv->entry_account_title) ||
+               ((GtkWidget *) editable == priv->entry_user_username) || 
+               ((GtkWidget *) editable == priv->entry_user_email);
+
+       /* Show a banner & get focus */
+       if (empty && mandatory) {
+               modest_platform_information_banner ((GtkWidget *) editable, NULL, 
+                                                   _CS("ckct_ib_enter_some_text"));
+               gtk_widget_grab_focus (GTK_WIDGET (editable));
+       }
 }
 
 static void
@@ -397,8 +416,7 @@ static void
 update_user_email_from_provider (ModestEasysetupWizardDialog *self)
 {
        ModestEasysetupWizardDialogPrivate *priv; 
-       gchar* provider_id;
-       gchar* domain_name = NULL;
+       gchar* provider_id = NULL, *with_at = NULL;
 
        g_assert(self);
        priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE (self);
@@ -406,18 +424,21 @@ update_user_email_from_provider (ModestEasysetupWizardDialog *self)
        /* Fill the providers combo, based on the selected country: */
        provider_id = modest_provider_picker_get_active_provider_id (
                MODEST_PROVIDER_PICKER (priv->account_serviceprovider_picker));
-       
-       if(provider_id)
-               domain_name = modest_presets_get_domain (priv->presets, provider_id);
-       
-       if(!domain_name)
-               domain_name = g_strdup (MODEST_EXAMPLE_EMAIL_ADDRESS);
-               
+
+       if (provider_id) {
+               gchar *domain_name = modest_presets_get_domain (priv->presets, provider_id);
+               with_at = g_strdup_printf ("%c%s", '@', domain_name);
+               g_free (domain_name);
+       }
+
+       /* The sample address already contains the '@' */
+       if (!with_at)
+               with_at = g_strdup (MODEST_EXAMPLE_EMAIL_ADDRESS);
+
        if (priv->entry_user_email)
-               hildon_entry_set_text (HILDON_ENTRY (priv->entry_user_email), domain_name);
-               
-       g_free (domain_name);
-       
+               hildon_entry_set_text (HILDON_ENTRY (priv->entry_user_email), with_at);
+
+       g_free (with_at);
        g_free (provider_id);
 }
 
@@ -1830,7 +1851,7 @@ real_enable_buttons (ModestWizardDialog *dialog, gboolean enable_next)
        /* Get data */
        priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE (dialog);
        g_object_get (dialog, "wizard-notebook", &notebook, NULL);
-       
+
        /* Disable the Finish button until we are on the last page,
         * because HildonWizardDialog enables this for all but the
         * first page */
@@ -1847,9 +1868,12 @@ real_enable_buttons (ModestWizardDialog *dialog, gboolean enable_next)
                gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog),
                                                   MODEST_WIZARD_DIALOG_FINISH,
                                                   FALSE);
-               enable_next = priv->check_support_done;
+
+               /* If the check support is not done then do not enable
+                  the wizard to continue */
+               enable_next = enable_next && priv->check_support_done;
        }
-       
+
        gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog),
                                           MODEST_WIZARD_DIALOG_NEXT,
                                           enable_next);