X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmaemo%2Feasysetup%2Fmodest-easysetup-wizard.c;h=b86f40d0f23ed03d64770cdb6570c0a33061e05b;hp=62c15e967a29c61b59a36a2e0453223003719c57;hb=94a4612a68cf9129d80418e40d177911297b76e7;hpb=d0a955dfd04c1707ecd486a8426112714990b84c diff --git a/src/maemo/easysetup/modest-easysetup-wizard.c b/src/maemo/easysetup/modest-easysetup-wizard.c index 62c15e9..b86f40d 100644 --- a/src/maemo/easysetup/modest-easysetup-wizard.c +++ b/src/maemo/easysetup/modest-easysetup-wizard.c @@ -70,10 +70,6 @@ G_DEFINE_TYPE (ModestEasysetupWizardDialog, modest_easysetup_wizard_dialog, MODE typedef struct _ModestEasysetupWizardDialogPrivate ModestEasysetupWizardDialogPrivate; -/* global to make sure there is only one of this - * dialog at any time - */ -static ModestEasysetupWizardDialog *_instance = NULL; typedef enum { MODEST_EASYSETUP_WIZARD_DIALOG_INCOMING_CHANGED = 0x01, @@ -145,8 +141,6 @@ modest_easysetup_wizard_dialog_finalize (GObject *object) g_free (self->saved_account_name); G_OBJECT_CLASS (modest_easysetup_wizard_dialog_parent_class)->finalize (object); - - _instance = NULL; } static void @@ -188,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, @@ -205,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; } @@ -216,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) { @@ -303,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)); @@ -320,10 +345,10 @@ on_combo_account_country (GtkComboBox *widget, gpointer user_data) priv->dirty = TRUE; /* Fill the providers combo, based on the selected country: */ - GSList *list_mcc_ids = easysetup_country_combo_box_get_active_country_ids ( + 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, list_mcc_ids); + EASYSETUP_PROVIDER_COMBO_BOX (self->combo_account_serviceprovider), priv->presets, mcc); } static void @@ -385,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); @@ -432,10 +457,9 @@ create_page_account_details (ModestEasysetupWizardDialog *self) * set by the osso-operator-wizard package, suggested by Dirk-Jan Binnema. * */ - GConfClient *client = gconf_client_get_default (); GError *error = NULL; const gchar* key = "/apps/osso/operator-wizard/last_mcc"; - gint mcc_id = gconf_client_get_int(client, key, &error); + gint mcc_id = modest_conf_get_int(modest_runtime_get_conf (), key, &error); if(mcc_id < 0) mcc_id = 0; @@ -448,7 +472,7 @@ create_page_account_details (ModestEasysetupWizardDialog *self) mcc_id = 0; } - /* Note that gconf_client_get_int() seems to return 0 without an error if the key is not there + /* Note that modest_conf_get_int() seems to return 0 without an error if the key is not there * This might just be a Maemo bug. */ if (mcc_id == 0) @@ -457,7 +481,7 @@ create_page_account_details (ModestEasysetupWizardDialog *self) mcc_id = 244; } - easysetup_country_combo_box_set_active_country_id ( + easysetup_country_combo_box_set_active_country_mcc ( EASYSETUP_COUNTRY_COMBO_BOX (self->combo_account_country), mcc_id); @@ -629,19 +653,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); @@ -710,11 +732,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); @@ -794,8 +821,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 @@ -834,8 +866,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: */ @@ -999,11 +1030,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); @@ -1053,8 +1088,7 @@ on_response_before (ModestWizardDialog *wizard_dialog, if (response_id == GTK_RESPONSE_CANCEL) { /* This is mostly copied from * src/maemo/modest-account-settings-dialog.c */ - if (priv->dirty) - { + 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. */ @@ -1062,9 +1096,7 @@ on_response_before (ModestWizardDialog *wizard_dialog, const gint dialog_response = gtk_dialog_run (dialog); gtk_widget_destroy (GTK_WIDGET (dialog)); - if (dialog_response != GTK_RESPONSE_OK) - { - /* This is a nasty hack. murrayc. */ + if (dialog_response != GTK_RESPONSE_OK) { /* Don't let the dialog close */ g_signal_stop_emission_by_name (wizard_dialog, "response"); } @@ -1118,10 +1150,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: */ @@ -1159,16 +1208,10 @@ modest_easysetup_wizard_dialog_init (ModestEasysetupWizardDialog *self) } ModestEasysetupWizardDialog* -modest_easysetup_wizard_dialog_new_or_present (void) +modest_easysetup_wizard_dialog_new (void) { - if (_instance) { - g_message ("%s: already instantiated; presenting\n", - __FUNCTION__); - gtk_window_present (GTK_WINDOW(_instance)); - return NULL; - } - return _instance = g_object_new (MODEST_TYPE_EASYSETUP_WIZARD_DIALOG, NULL); + return g_object_new (MODEST_TYPE_EASYSETUP_WIZARD_DIALOG, NULL); } static void create_subsequent_customsetup_pages (ModestEasysetupWizardDialog *self) @@ -1198,9 +1241,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)); @@ -1216,9 +1265,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)); @@ -1423,7 +1478,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 ( @@ -1432,13 +1488,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); } } @@ -1585,7 +1636,7 @@ show_error (GtkWidget *parent_widget, const gchar* text) /** Attempt to create the account from the information that the user has entered. * @result: TRUE if the account was successfully created. */ -gboolean +static gboolean create_account (ModestEasysetupWizardDialog *self, gboolean enabled) { ModestEasysetupWizardDialogPrivate *priv = WIZARD_DIALOG_GET_PRIVATE (self); @@ -1671,18 +1722,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. @@ -1812,29 +1857,26 @@ create_account (ModestEasysetupWizardDialog *self, gboolean enabled) /* The user name and email address must be set additionally: */ const gchar* user_name = gtk_entry_get_text (GTK_ENTRY (self->entry_user_name)); - modest_account_mgr_set_string (self->account_manager, account_name, - MODEST_ACCOUNT_FULLNAME, user_name, FALSE /* not server account */); + modest_account_mgr_set_server_account_user_fullname (self->account_manager, account_name, user_name); const gchar* emailaddress = gtk_entry_get_text (GTK_ENTRY (self->entry_user_email)); - modest_account_mgr_set_string (self->account_manager, account_name, - MODEST_ACCOUNT_EMAIL, emailaddress, FALSE /* not server account */); + modest_account_mgr_set_server_account_user_email (self->account_manager, account_name, emailaddress); /* Set the display name: */ - modest_account_mgr_set_string (self->account_manager, account_name, - MODEST_ACCOUNT_DISPLAY_NAME, display_name, FALSE /* not server account */); + modest_account_mgr_set_display_name (self->account_manager, account_name, display_name); /* Set retrieve type */ const gchar *retrieve = MODEST_ACCOUNT_RETRIEVE_VALUE_HEADERS_ONLY; - modest_account_mgr_set_string (self->account_manager, account_name, - MODEST_ACCOUNT_RETRIEVE, retrieve, FALSE /* not server account */); + modest_account_mgr_set_retrieve_type (self->account_manager, account_name, retrieve); /* Save the connection-specific SMTP server accounts. */ - modest_account_mgr_set_use_connection_specific_smtp(self->account_manager, account_name, + 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);