* src/maemo/easysetup/modest-easysetup-country-combo-box.c:
[modest] / src / maemo / easysetup / modest-easysetup-wizard.c
index 4be58b7..5149b02 100644 (file)
@@ -70,6 +70,7 @@ G_DEFINE_TYPE (ModestEasysetupWizardDialog, modest_easysetup_wizard_dialog, MODE
 
 typedef struct _ModestEasysetupWizardDialogPrivate ModestEasysetupWizardDialogPrivate;
 
+
 typedef enum {
        MODEST_EASYSETUP_WIZARD_DIALOG_INCOMING_CHANGED = 0x01,
        MODEST_EASYSETUP_WIZARD_DIALOG_OUTGOING_CHANGED = 0x02
@@ -181,9 +182,9 @@ static GList* check_for_supported_auth_methods(ModestEasysetupWizardDialog* acco
        const gchar* username = gtk_entry_get_text(GTK_ENTRY(account_wizard->entry_user_username));
        const ModestConnectionProtocol protocol_security_incoming = 
                                        modest_serversecurity_combo_box_get_active_serversecurity (
-                                       MODEST_SERVERSECURITY_COMBO_BOX (
-                                       account_wizard->combo_incoming_security));
-       int port_num = get_serverport_incoming(protocol, protocol_security_incoming); 
+                                               MODEST_SERVERSECURITY_COMBO_BOX (
+                                                       account_wizard->combo_incoming_security));
+       const int port_num = get_serverport_incoming(protocol, protocol_security_incoming); 
        GList *list_auth_methods =
           modest_maemo_utils_get_supported_secure_authentication_methods (
                                                                       protocol, 
@@ -198,7 +199,9 @@ static GList* check_for_supported_auth_methods(ModestEasysetupWizardDialog* acco
                                list = g_list_append(list, GINT_TO_POINTER(auth));
                        }
                }
+
                g_list_free(list_auth_methods);
+
                if (list)
                        return list;
        }
@@ -209,10 +212,39 @@ static GList* check_for_supported_auth_methods(ModestEasysetupWizardDialog* acco
                show_error (GTK_WIDGET(account_wizard), _("Could not discover supported secure authentication methods."));
        }
 
-       if(error != NULL) g_error_free(error);
+       if(error != NULL)
+               g_error_free(error);
+
        return NULL;
 }
 
+static gboolean check_has_supported_auth_methods(ModestEasysetupWizardDialog* account_wizard)
+{
+       GList* methods = check_for_supported_auth_methods(account_wizard);
+       if (!methods)
+       {
+               return FALSE;
+       }
+
+       g_list_free(methods);
+       return TRUE;
+}
+
+static ModestAuthProtocol check_first_supported_auth_method(ModestEasysetupWizardDialog* account_wizard)
+{
+       ModestAuthProtocol result = MODEST_PROTOCOL_AUTH_PASSWORD;
+
+       GList* methods = check_for_supported_auth_methods(account_wizard);
+       if (methods)
+       {
+               /* Use the first one: */
+               result = (ModestAuthProtocol) (GPOINTER_TO_INT(methods->data));
+               g_list_free(methods);
+       }
+
+       return result;
+}
+
 static void
 invoke_enable_buttons_vfunc (ModestEasysetupWizardDialog *wizard_dialog)
 {
@@ -296,7 +328,7 @@ create_page_welcome (ModestEasysetupWizardDialog *self)
        GtkWidget *label = gtk_label_new(_("mcen_ia_emailsetup_intro"));
        gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
        /* So that it is not truncated: */
-       gtk_label_set_max_width_chars (GTK_LABEL (label), 40);
+       gtk_widget_set_size_request (label, 600, -1);
        gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
        gtk_widget_show (label);
        gtk_widget_show (GTK_WIDGET (box));
@@ -378,7 +410,7 @@ create_page_account_details (ModestEasysetupWizardDialog *self)
        GtkWidget *box = gtk_vbox_new (FALSE, MODEST_MARGIN_NONE);
        GtkWidget *label = gtk_label_new(_("mcen_ia_accountdetails"));
        gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
-       gtk_label_set_max_width_chars (GTK_LABEL (label), 40);
+       gtk_widget_set_size_request (label, 600, -1);
        gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, MODEST_MARGIN_HALF);
        gtk_widget_show (label);
        
@@ -622,19 +654,17 @@ static GtkWidget* create_page_complete_easysetup (ModestEasysetupWizardDialog *s
        
        GtkWidget *label = gtk_label_new(_("mcen_ia_emailsetup_setup_complete"));
        gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
-       gtk_label_set_max_width_chars (GTK_LABEL (label), 40);
+       gtk_widget_set_size_request (label, 600, -1);
        gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+       /* The documentation for gtk_label_set_line_wrap() says that we must 
+        * call gtk_widget_set_size_request() with a hard-coded width, 
+        * though I wonder why gtk_label_set_max_width_chars() isn't enough. */
        gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
        gtk_widget_show (label);
        
        label = gtk_label_new (_("mcen_ia_easysetup_complete"));
        gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
-       gtk_label_set_max_width_chars (GTK_LABEL (label), 40);
-       
-       /* The documentation for gtk_label_set_line_wrap() says that we must 
-        * call gtk_widget_set_size_request() with a hard-coded width, 
-        * though I wonder why gtk_label_set_max_width_chars() isn't enough. */
-       gtk_widget_set_size_request (label, 400, -1);
+       gtk_widget_set_size_request (label, 600, -1);
        
        gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
        gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
@@ -703,11 +733,16 @@ static void on_entry_incoming_servername_changed(GtkEntry *entry, gpointer user_
 static GtkWidget* create_page_custom_incoming (ModestEasysetupWizardDialog *self)
 {
        GtkWidget *box = gtk_vbox_new (FALSE, MODEST_MARGIN_NONE);
+       GtkWidget *scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+
+       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
+                                       GTK_POLICY_NEVER,
+                                       GTK_POLICY_AUTOMATIC);
 
        /* Show note that account type cannot be changed in future: */
        GtkWidget *label = gtk_label_new (_("mcen_ia_emailsetup_account_type"));
        gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
-       gtk_label_set_max_width_chars (GTK_LABEL (label), 40);
+       gtk_widget_set_size_request (label, 600, -1);
        gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
        gtk_widget_show (label);
        
@@ -787,8 +822,13 @@ static GtkWidget* create_page_custom_incoming (ModestEasysetupWizardDialog *self
        gtk_widget_show (caption);
        
        gtk_widget_show (GTK_WIDGET (box));
+
+       gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), box);
+       gtk_container_set_focus_vadjustment (GTK_CONTAINER (box),
+                                            gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled_window)));
+       gtk_widget_show (scrolled_window);
        
-       return GTK_WIDGET (box);
+       return GTK_WIDGET (scrolled_window);
 }
 
 static void
@@ -827,8 +867,7 @@ on_button_outgoing_smtp_servers (GtkButton *button, gpointer user_data)
        if (!(self->specific_window)) {
                self->specific_window = GTK_WIDGET (modest_connection_specific_smtp_window_new ());
                modest_connection_specific_smtp_window_fill_with_connections (
-                       MODEST_CONNECTION_SPECIFIC_SMTP_WINDOW (self->specific_window), self->account_manager, 
-                       NULL /* account_name, not known yet. */);
+                       MODEST_CONNECTION_SPECIFIC_SMTP_WINDOW (self->specific_window), self->account_manager);
        }
 
        /* Show the window: */
@@ -992,11 +1031,15 @@ static GtkWidget* create_page_complete_custom (ModestEasysetupWizardDialog *self
        GtkWidget *box = gtk_vbox_new (FALSE, MODEST_MARGIN_NONE);
        GtkWidget *label = gtk_label_new(_("mcen_ia_emailsetup_setup_complete"));
        gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+       gtk_widget_set_size_request (label, 600, -1);
+       gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
        gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
        gtk_widget_show (label);
        
        label = gtk_label_new (_("mcen_ia_customsetup_complete"));
        gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+       gtk_widget_set_size_request (label, 600, -1);
+       gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
        gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
        gtk_widget_show (label);
        
@@ -1111,10 +1154,27 @@ modest_easysetup_wizard_dialog_init (ModestEasysetupWizardDialog *self)
        /* Add the common pages: */
        gtk_notebook_append_page (notebook, self->page_welcome, 
                                  gtk_label_new (_("mcen_ti_emailsetup_welcome")));
+       gtk_container_child_set (GTK_CONTAINER (notebook), 
+                                self->page_welcome,
+                                "tab-expand", TRUE,
+                                "tab-fill", TRUE,
+                                NULL);
+
        gtk_notebook_append_page (notebook, self->page_account_details, 
                                  gtk_label_new (_("mcen_ti_accountdetails")));
+       gtk_container_child_set (GTK_CONTAINER (notebook), 
+                                self->page_account_details,
+                                "tab-expand", TRUE,
+                                "tab-fill", TRUE,
+                                NULL);
+
        gtk_notebook_append_page (notebook, self->page_user_details, 
                                  gtk_label_new (_("mcen_ti_emailsetup_userdetails")));
+       gtk_container_child_set (GTK_CONTAINER (notebook), 
+                                self->page_user_details,
+                                "tab-expand", TRUE,
+                                "tab-fill", TRUE,
+                                NULL);
                
        /* Create and add the easysetup-specific pages,
         * because we need _some_ final page to enable the Next and Finish buttons: */
@@ -1153,7 +1213,8 @@ modest_easysetup_wizard_dialog_init (ModestEasysetupWizardDialog *self)
 
 ModestEasysetupWizardDialog*
 modest_easysetup_wizard_dialog_new (void)
-{
+{      
+       
        return g_object_new (MODEST_TYPE_EASYSETUP_WIZARD_DIALOG, NULL);
 }
 
@@ -1184,9 +1245,15 @@ static void create_subsequent_customsetup_pages (ModestEasysetupWizardDialog *se
                gtk_notebook_append_page (notebook, self->page_custom_outgoing,
                                          gtk_label_new (_("mcen_ti_emailsetup_outgoingdetails")));
                
-       if (!gtk_widget_get_parent (GTK_WIDGET (self->page_complete_customsetup)))
+       if (!gtk_widget_get_parent (GTK_WIDGET (self->page_complete_customsetup))) {
                gtk_notebook_append_page (notebook, self->page_complete_customsetup,
                                          gtk_label_new (_("mcen_ti_emailsetup_complete")));
+               gtk_container_child_set (GTK_CONTAINER (notebook), 
+                                        self->page_complete_customsetup,
+                                        "tab-expand", TRUE,
+                                        "tab-fill", TRUE,
+                                        NULL);
+       }
                        
        /* This is unnecessary with GTK+ 2.10: */
        modest_wizard_dialog_force_title_update (MODEST_WIZARD_DIALOG(self));
@@ -1202,9 +1269,15 @@ static void create_subsequent_easysetup_pages (ModestEasysetupWizardDialog *self
        if(!self->page_complete_easysetup)
                self->page_complete_easysetup = create_page_complete_easysetup (self);
 
-       if (!gtk_widget_get_parent (GTK_WIDGET (self->page_complete_easysetup)))
+       if (!gtk_widget_get_parent (GTK_WIDGET (self->page_complete_easysetup))) {
                gtk_notebook_append_page (notebook, self->page_complete_easysetup, 
                                          gtk_label_new (_("mcen_ti_emailsetup_complete")));
+               gtk_container_child_set (GTK_CONTAINER (notebook),
+                                        self->page_complete_easysetup,
+                                        "tab-expand", TRUE,
+                                        "tab-fill", TRUE,
+                                        NULL);
+       }
                        
        /* This is unnecessary with GTK+ 2.10: */
        modest_wizard_dialog_force_title_update (MODEST_WIZARD_DIALOG(self));
@@ -1409,7 +1482,8 @@ on_before_next (ModestWizardDialog *dialog, GtkWidget *current_page, GtkWidget *
        }
        else if (next_page == account_wizard->page_custom_outgoing) {
                set_default_custom_servernames (account_wizard);
-    /* Check if the server supports secure authentication */
+
+               /* Check if the server supports secure authentication */
                const ModestConnectionProtocol security_incoming = 
                        modest_serversecurity_combo_box_get_active_serversecurity (
                                                                                                                                                                                                                                                                 MODEST_SERVERSECURITY_COMBO_BOX (
@@ -1418,13 +1492,8 @@ on_before_next (ModestWizardDialog *dialog, GtkWidget *current_page, GtkWidget *
                        GTK_TOGGLE_BUTTON (account_wizard->checkbox_incoming_auth))
                                && !modest_protocol_info_is_secure(security_incoming))
                {
-                               GList* methods = check_for_supported_auth_methods(account_wizard);
-                               if (!methods)
-                               {
-                                       g_list_free(methods);
+                               if (!check_has_supported_auth_methods (account_wizard))
                                        return FALSE;
-                               }
-                               g_list_free(methods);
                }
        }
        
@@ -1657,18 +1726,12 @@ create_account (ModestEasysetupWizardDialog *self, gboolean enabled)
                 */
                
                if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->checkbox_incoming_auth)) &&
-                               !modest_protocol_info_is_secure(protocol_security_incoming))
-               {
-                               GList* methods = check_for_supported_auth_methods(self);
-                               if (!methods) {
-                                       g_free (display_name);
-                                       return FALSE;
-                               }
-                               else
-                                 protocol_authentication_incoming = (ModestAuthProtocol) (GPOINTER_TO_INT(methods->data));
+                               !modest_protocol_info_is_secure(protocol_security_incoming)) {
+                       protocol_authentication_incoming = check_first_supported_auth_method (self);
                }
-               else
+               else {
                        protocol_authentication_incoming = MODEST_PROTOCOL_AUTH_PASSWORD;
+               }
        }
        
        /* First we add the 2 server accounts, and then we add the account that uses them.
@@ -1815,10 +1878,12 @@ create_account (ModestEasysetupWizardDialog *self, gboolean enabled)
                MODEST_ACCOUNT_RETRIEVE, retrieve, FALSE /* not server account */);
 
        /* Save the connection-specific SMTP server accounts. */
+        modest_account_mgr_set_use_connection_specific_smtp(self->account_manager, account_name, 
+                gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self->checkbox_outgoing_smtp_specific)));
        gboolean result = TRUE;
        if (self->specific_window)
                result = modest_connection_specific_smtp_window_save_server_accounts (
-                       MODEST_CONNECTION_SPECIFIC_SMTP_WINDOW (self->specific_window), account_name);
+                       MODEST_CONNECTION_SPECIFIC_SMTP_WINDOW (self->specific_window));
                        
        g_free (self->saved_account_name);
        self->saved_account_name = g_strdup (account_name);