Fixes NB#74612
[modest] / src / maemo / easysetup / modest-easysetup-wizard.c
index 523b1ac..8e32cda 100644 (file)
@@ -883,6 +883,7 @@ on_button_outgoing_smtp_servers (GtkButton *button, gpointer user_data)
 
        /* Show the window: */
        gtk_window_set_transient_for (GTK_WINDOW (self->specific_window), GTK_WINDOW (self));
+       gtk_window_set_modal (GTK_WINDOW (self->specific_window), TRUE);
        gtk_widget_show (self->specific_window);
 }
 
@@ -1103,7 +1104,8 @@ on_response_before (ModestWizardDialog *wizard_dialog,
                if (priv->dirty) {
                        GtkDialog *dialog = GTK_DIALOG (hildon_note_new_confirmation (GTK_WINDOW (self), 
                                _("imum_nc_wizard_confirm_lose_changes")));
-                       /* TODO: These button names will be ambiguous, and not specified in the UI specification. */
+                       /* TODO: These button names will be ambiguous, and not
+                        * specified in the UI specification. */
 
                        const gint dialog_response = gtk_dialog_run (dialog);
                        self->combo_account_country = NULL;
@@ -1139,9 +1141,12 @@ presets_idle (gpointer userdata)
                gint mcc = easysetup_country_combo_box_get_active_country_mcc (
                        EASYSETUP_COUNTRY_COMBO_BOX (self->combo_account_country));
                easysetup_provider_combo_box_fill (
-                       EASYSETUP_PROVIDER_COMBO_BOX (self->combo_account_serviceprovider), priv->presets, mcc);
+                       EASYSETUP_PROVIDER_COMBO_BOX (self->combo_account_serviceprovider),
+                       priv->presets, mcc);
        }
 
+       priv->dirty = FALSE;
+
        g_object_unref (idle_data->dialog);
        g_free (idle_data);
 
@@ -1157,17 +1162,31 @@ presets_loader (gpointer userdata)
        ModestPresets *presets = NULL;
        IdleData *idle_data;
 
-       const gchar* filepath = MODEST_PROVIDERS_DATA_PATH; /* Defined in config.h */
-       presets = modest_presets_new (filepath);
-       if (!(presets)) {
-               g_warning ("Could not locate the official provider data keyfile from %s", filepath);
+       const gchar* path  = NULL;
+       const gchar* path1 = MODEST_PROVIDER_DATA_FILE;
+       const gchar* path2 = MODEST_MAEMO_PROVIDER_DATA_FILE;
+       
+       if (access(path1, R_OK) == 0) 
+               path = path1;
+       else if (access(path2, R_OK) == 0)
+               path = path2;
+       else {
+               g_warning ("%s: neither '%s' nor '%s' is a readable provider data file",
+                          __FUNCTION__, path1, path2);
+               return NULL;
        }
 
+       presets = modest_presets_new (path);
+       if (!presets) {
+               g_warning ("%s: failed to parse '%s'", __FUNCTION__, path);
+               return NULL;
+       }
+       
        idle_data = g_new0 (IdleData, 1);
        idle_data->dialog = self;
        idle_data->presets = presets;
-
-       g_idle_add (presets_idle, idle_data);
+       
+       g_idle_add (presets_idle, idle_data);   
 
        return NULL;
 }
@@ -1273,6 +1292,8 @@ modest_easysetup_wizard_dialog_init (ModestEasysetupWizardDialog *self)
        g_object_ref (self);
        g_thread_create (presets_loader, self, FALSE, NULL);
 
+       hildon_help_dialog_help_enable (GTK_DIALOG(self), "applications_email_wizardwelcome",
+                                       modest_maemo_utils_get_osso_context()); 
 }
 
 ModestEasysetupWizardDialog*
@@ -1708,7 +1729,7 @@ static gboolean
 create_account (ModestEasysetupWizardDialog *self, gboolean enabled)
 {
        ModestEasysetupWizardDialogPrivate *priv = WIZARD_DIALOG_GET_PRIVATE (self);
-       
+       guint special_port;
        gchar* display_name = get_entered_account_title (self);
 
        /* Some checks: */
@@ -1758,7 +1779,6 @@ create_account (ModestEasysetupWizardDialog *self, gboolean enabled)
                                                                                                   provider_id, 
                                                                                                   TRUE /* incoming */);
 
-               g_warning ("security incoming: %x", security_incoming);
                        
                /* We don't check for SMTP here as that is impossible for an incoming server. */
                if (servertype_incoming == MODEST_PRESETS_SERVER_TYPE_IMAP) {
@@ -1806,6 +1826,13 @@ create_account (ModestEasysetupWizardDialog *self, gboolean enabled)
        gchar *store_name = modest_account_mgr_get_unused_account_name (self->account_manager, 
                                                                        store_name_start, TRUE /* server account */);
        g_free (store_name_start);
+
+       /* we check if there is a *special* port */
+       special_port = modest_presets_get_port (priv->presets, provider_id,
+                                               TRUE /* incoming */);
+       if (special_port != 0)
+               serverport_incoming = special_port;
+       
        gboolean created = modest_account_mgr_add_server_account (self->account_manager,
                                                                  store_name,
                                                                  servername_incoming,
@@ -1849,10 +1876,6 @@ create_account (ModestEasysetupWizardDialog *self, gboolean enabled)
                        modest_presets_get_info_server_security (priv->presets, provider_id, 
                                                                 FALSE /* incoming */);
 
-               /* TODO: The secure-smtp information in the presets data is currently wrong,
-                * so we choose a reasonable default. Remove this when the presets data is corrected: */
-               security_outgoing = security_outgoing & MODEST_PRESETS_SECURITY_SECURE_SMTP;
-
                protocol_security_outgoing = MODEST_PROTOCOL_CONNECTION_NORMAL;
                if (security_outgoing & MODEST_PRESETS_SECURITY_SECURE_SMTP) {
                        /* printf("DEBUG: %s: using secure SMTP\n", __FUNCTION__); */
@@ -1863,8 +1886,7 @@ create_account (ModestEasysetupWizardDialog *self, gboolean enabled)
                        /* printf("DEBUG: %s: using non-secure SMTP\n", __FUNCTION__); */
                        protocol_authentication_outgoing = MODEST_PROTOCOL_AUTH_NONE;
                }
-       }
-       else {
+       } else {
                /* Use custom pages because no preset was specified: */
                servername_outgoing = g_strdup (gtk_entry_get_text (GTK_ENTRY (self->entry_outgoingserver) ));
                
@@ -1882,6 +1904,13 @@ create_account (ModestEasysetupWizardDialog *self, gboolean enabled)
        gchar *transport_name = modest_account_mgr_get_unused_account_name (self->account_manager, 
                                                                            transport_name_start, TRUE /* server account */);
        g_free (transport_name_start);
+
+       /* we check if there is a *special* port */
+       special_port = modest_presets_get_port (priv->presets, provider_id,
+                                               FALSE /* incoming */);
+       if (special_port != 0)
+               serverport_outgoing = special_port;
+       
        created = modest_account_mgr_add_server_account (self->account_manager,
                                                         transport_name,
                                                         servername_outgoing,