X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fhildon2%2Fmodest-easysetup-wizard-dialog.c;h=a5bcb8160df8bd6d8d4a0a29bdfb4bc8a9ae7038;hp=638e5e151b1298243a2ce21da6e35713b6090a2e;hb=27e01f9b9cb45aa4d4e91b0c3f5655daa6a5f714;hpb=80dc5316379f30e5942359fe6f0f50d7150656a8 diff --git a/src/hildon2/modest-easysetup-wizard-dialog.c b/src/hildon2/modest-easysetup-wizard-dialog.c index 638e5e1..a5bcb81 100644 --- a/src/hildon2/modest-easysetup-wizard-dialog.c +++ b/src/hildon2/modest-easysetup-wizard-dialog.c @@ -58,7 +58,7 @@ #include "modest-utils.h" #include "modest-hildon-includes.h" #include "modest-maemo-security-options-view.h" -#include +#include "modest-account-protocol.h" /* Include config.h so that _() works: */ #ifdef HAVE_CONFIG_H @@ -261,13 +261,15 @@ on_picker_button_value_changed (HildonPickerButton *widget, gpointer user_data) */ static GtkWidget* create_captioned (ModestEasysetupWizardDialog *self, - GtkSizeGroup *group, + GtkSizeGroup *title_size_group, + GtkSizeGroup *value_size_group, const gchar *value, GtkWidget *control) { GtkWidget *result; - result = modest_maemo_utils_create_captioned (group, value, control); + result = modest_maemo_utils_create_captioned (title_size_group, value_size_group, + value, control); /* Connect to the appropriate changed signal for the widget, * so we can ask for the prev/next buttons to be enabled/disabled appropriately: @@ -318,19 +320,19 @@ on_account_country_selector_changed (HildonTouchSelector *widget, gint column, g } static void -on_account_serviceprovider_selector_changed (HildonTouchSelector *widget, gint column, gpointer user_data) +update_user_email_from_provider (ModestEasysetupWizardDialog *self) { - ModestEasysetupWizardDialog *self = MODEST_EASYSETUP_WIZARD_DIALOG (user_data); + ModestEasysetupWizardDialogPrivate *priv; + gchar* provider_id; + gchar* domain_name = NULL; + g_assert(self); - ModestEasysetupWizardDialogPrivate *priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE (self); - - priv->dirty = TRUE; - + priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE (self); + /* Fill the providers combo, based on the selected country: */ - gchar* provider_id = modest_provider_picker_get_active_provider_id ( + provider_id = modest_provider_picker_get_active_provider_id ( MODEST_PROVIDER_PICKER (priv->account_serviceprovider_picker)); - gchar* domain_name = NULL; if(provider_id) domain_name = modest_presets_get_domain (priv->presets, provider_id); @@ -346,6 +348,18 @@ on_account_serviceprovider_selector_changed (HildonTouchSelector *widget, gint c } static void +on_account_serviceprovider_selector_changed (HildonTouchSelector *widget, gint column, gpointer user_data) +{ + ModestEasysetupWizardDialog *self = MODEST_EASYSETUP_WIZARD_DIALOG (user_data); + g_assert(self); + ModestEasysetupWizardDialogPrivate *priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE (self); + + priv->dirty = TRUE; + + update_user_email_from_provider (self); +} + +static void on_entry_max (ModestValidatingEntry *self, gpointer user_data) { modest_platform_information_banner (GTK_WIDGET (self), NULL, @@ -368,12 +382,14 @@ create_page_account_details (ModestEasysetupWizardDialog *self) /* Create a size group to be used by all captions. * Note that HildonCaption does not create a default size group if we do not specify one. * We use GTK_SIZE_GROUP_HORIZONTAL, so that the widths are the same. */ - GtkSizeGroup* sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + GtkSizeGroup* title_sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + GtkSizeGroup* value_sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); /* The country widgets: */ priv->account_country_picker = GTK_WIDGET (modest_country_picker_new (MODEST_EDITABLE_SIZE, - MODEST_EDITABLE_ARRANGEMENT)); - hildon_button_set_title (HILDON_BUTTON (priv->account_country_picker), _("mcen_fi_country")); + HILDON_BUTTON_ARRANGEMENT_HORIZONTAL)); + modest_maemo_utils_set_hbutton_layout (title_sizegroup, value_sizegroup, + _("mcen_fi_country"), priv->account_country_picker); g_signal_connect (G_OBJECT (priv->account_country_picker), "value-changed", G_CALLBACK (on_picker_button_value_changed), self); gtk_box_pack_start (GTK_BOX (box), priv->account_country_picker, FALSE, FALSE, MODEST_MARGIN_HALF); @@ -385,8 +401,10 @@ create_page_account_details (ModestEasysetupWizardDialog *self) /* The service provider widgets: */ priv->account_serviceprovider_picker = GTK_WIDGET (modest_provider_picker_new (MODEST_EDITABLE_SIZE, - MODEST_EDITABLE_ARRANGEMENT)); - hildon_button_set_title (HILDON_BUTTON (priv->account_serviceprovider_picker), _("mcen_fi_serviceprovider")); + HILDON_BUTTON_ARRANGEMENT_HORIZONTAL)); + modest_maemo_utils_set_hbutton_layout (title_sizegroup, value_sizegroup, + _("mcen_fi_serviceprovider"), + priv->account_serviceprovider_picker); g_signal_connect (G_OBJECT (priv->account_serviceprovider_picker), "value-changed", G_CALLBACK (on_picker_button_value_changed), self); gtk_box_pack_start (GTK_BOX (box), priv->account_serviceprovider_picker, FALSE, FALSE, MODEST_MARGIN_HALF); @@ -412,7 +430,7 @@ create_page_account_details (ModestEasysetupWizardDialog *self) g_free (default_account_name); default_account_name = NULL; - caption = create_captioned (self, sizegroup, _("mcen_fi_account_title"), + caption = create_captioned (self, title_sizegroup, value_sizegroup, _("mcen_fi_account_title"), priv->entry_account_title); gtk_widget_show (priv->entry_account_title); gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); @@ -446,6 +464,9 @@ create_page_account_details (ModestEasysetupWizardDialog *self) on_entry_max, self); gtk_widget_show (GTK_WIDGET (box)); + + g_object_unref (title_sizegroup); + g_object_unref (value_sizegroup); return GTK_WIDGET (box); } @@ -453,7 +474,8 @@ create_page_account_details (ModestEasysetupWizardDialog *self) static GtkWidget* create_page_user_details (ModestEasysetupWizardDialog *self) { - GtkSizeGroup* sizegroup; + GtkSizeGroup* title_sizegroup; + GtkSizeGroup* value_sizegroup; GtkWidget *box; ModestEasysetupWizardDialogPrivate *priv; @@ -463,7 +485,8 @@ create_page_user_details (ModestEasysetupWizardDialog *self) * Note that HildonCaption does not create a default size group if we do not specify one. * We use GTK_SIZE_GROUP_HORIZONTAL, so that the widths are the same. */ box = gtk_vbox_new (FALSE, MODEST_MARGIN_NONE); - sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + title_sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + value_sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); /* The name widgets: (use auto cap) */ priv->entry_user_name = GTK_WIDGET (modest_validating_entry_new ()); @@ -475,7 +498,7 @@ create_page_user_details (ModestEasysetupWizardDialog *self) gtk_entry_set_max_length (GTK_ENTRY (priv->entry_user_name), 64); modest_validating_entry_set_max_func (MODEST_VALIDATING_ENTRY (priv->entry_user_name), on_entry_max, self); - GtkWidget *caption = create_captioned (self, sizegroup, + GtkWidget *caption = create_captioned (self, title_sizegroup, value_sizegroup, _("mcen_li_emailsetup_name"), priv->entry_user_name); g_signal_connect(G_OBJECT(priv->entry_user_name), "changed", G_CALLBACK(on_easysetup_changed), self); @@ -499,7 +522,7 @@ create_page_user_details (ModestEasysetupWizardDialog *self) /* Auto-capitalization is the default, so let's turn it off: */ hildon_gtk_entry_set_input_mode (GTK_ENTRY (priv->entry_user_username), HILDON_GTK_INPUT_MODE_FULL); - caption = create_captioned (self, sizegroup, _("mail_fi_username"), + caption = create_captioned (self, title_sizegroup, value_sizegroup, _("mail_fi_username"), priv->entry_user_username); gtk_widget_show (priv->entry_user_username); gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); @@ -527,7 +550,7 @@ create_page_user_details (ModestEasysetupWizardDialog *self) HILDON_GTK_INPUT_MODE_FULL | HILDON_GTK_INPUT_MODE_INVISIBLE); gtk_entry_set_visibility (GTK_ENTRY (priv->entry_user_password), FALSE); /* gtk_entry_set_invisible_char (GTK_ENTRY (priv->entry_user_password), '*'); */ - caption = create_captioned (self, sizegroup, + caption = create_captioned (self, title_sizegroup, value_sizegroup, _("mail_fi_password"), priv->entry_user_password); g_signal_connect(G_OBJECT(priv->entry_user_password), "changed", G_CALLBACK(on_easysetup_changed), self); @@ -539,9 +562,9 @@ create_page_user_details (ModestEasysetupWizardDialog *self) priv->entry_user_email = GTK_WIDGET (modest_validating_entry_new ()); /* Auto-capitalization is the default, so let's turn it off: */ hildon_gtk_entry_set_input_mode (GTK_ENTRY (priv->entry_user_email), HILDON_GTK_INPUT_MODE_FULL); - caption = create_captioned (self, sizegroup, + caption = create_captioned (self, title_sizegroup, value_sizegroup, _("mcen_li_emailsetup_email_address"), priv->entry_user_email); - gtk_entry_set_text (GTK_ENTRY (priv->entry_user_email), MODEST_EXAMPLE_EMAIL_ADDRESS); /* Default text. */ + update_user_email_from_provider (self); gtk_widget_show (priv->entry_user_email); gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); g_signal_connect(G_OBJECT(priv->entry_user_email), "changed", @@ -556,6 +579,8 @@ create_page_user_details (ModestEasysetupWizardDialog *self) gtk_widget_show (GTK_WIDGET (box)); + g_object_unref (title_sizegroup); + g_object_unref (value_sizegroup); return GTK_WIDGET (box); } @@ -611,7 +636,6 @@ update_incoming_server_title (ModestEasysetupWizardDialog *self) protocol_display_name = modest_protocol_get_display_name (modest_protocol_registry_get_protocol_by_type (protocol_registry, protocol_type)); incomingserver_title = g_strdup_printf(_("mcen_li_emailsetup_servertype"), protocol_display_name); - g_object_set (G_OBJECT (priv->caption_incoming), "label", incomingserver_title, NULL); g_free(incomingserver_title); } } @@ -677,7 +701,8 @@ create_page_custom_incoming (ModestEasysetupWizardDialog *self) GtkWidget *box; GtkWidget *scrolled_window; GtkWidget *label; - GtkSizeGroup *sizegroup; + GtkSizeGroup *title_sizegroup; + GtkSizeGroup *value_sizegroup; priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE(self); protocol_registry = modest_runtime_get_protocol_registry (); @@ -699,11 +724,12 @@ create_page_custom_incoming (ModestEasysetupWizardDialog *self) /* Create a size group to be used by all captions. * Note that HildonCaption does not create a default size group if we do not specify one. * We use GTK_SIZE_GROUP_HORIZONTAL, so that the widths are the same. */ - sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + title_sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + value_sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); /* The incoming server widgets: */ priv->incoming_servertype_picker = GTK_WIDGET (modest_servertype_picker_new (MODEST_EDITABLE_SIZE, - MODEST_EDITABLE_ARRANGEMENT, + HILDON_BUTTON_ARRANGEMENT_HORIZONTAL, TRUE)); hildon_button_set_title (HILDON_BUTTON (priv->incoming_servertype_picker), _("mcen_li_emailsetup_type")); g_signal_connect (G_OBJECT (priv->incoming_servertype_picker), "value-changed", @@ -720,7 +746,7 @@ create_page_custom_incoming (ModestEasysetupWizardDialog *self) /* The caption title will be updated in update_incoming_server_title(). * so this default text will never be seen: */ /* (Note: Changing the title seems pointless. murrayc) */ - priv->caption_incoming = create_captioned (self, sizegroup, + priv->caption_incoming = create_captioned (self, title_sizegroup, value_sizegroup, "Incoming Server", priv->entry_incomingserver); update_incoming_server_title (self); @@ -742,9 +768,10 @@ create_page_custom_incoming (ModestEasysetupWizardDialog *self) protocols with security */ priv->incoming_security = modest_maemo_security_options_view_new (MODEST_SECURITY_OPTIONS_INCOMING, - FALSE, sizegroup); + FALSE, title_sizegroup, value_sizegroup); gtk_box_pack_start (GTK_BOX (box), priv->incoming_security, FALSE, FALSE, MODEST_MARGIN_HALF); + gtk_widget_show_all (priv->incoming_security); /* Set default selection */ modest_servertype_picker_set_active_servertype ( @@ -757,29 +784,32 @@ create_page_custom_incoming (ModestEasysetupWizardDialog *self) gtk_widget_show (GTK_WIDGET (box)); gtk_widget_show (scrolled_window); + g_object_unref (title_sizegroup); + g_object_unref (value_sizegroup); + return GTK_WIDGET (scrolled_window); } static void -on_toggle_button_changed (GtkToggleButton *togglebutton, gpointer user_data) +on_check_button_changed (HildonCheckButton *button, gpointer user_data) { GtkWidget *widget = GTK_WIDGET (user_data); - /* Enable the widget only if the toggle button is active: */ - const gboolean enable = gtk_toggle_button_get_active (togglebutton); + /* Enable the widget only if the check button is active: */ + const gboolean enable = hildon_check_button_get_active (button); gtk_widget_set_sensitive (widget, enable); } -/* Make the sensitivity of a widget depend on a toggle button. +/* Make the sensitivity of a widget depend on a check button. */ static void -enable_widget_for_togglebutton (GtkWidget *widget, GtkToggleButton* button) +enable_widget_for_checkbutton (GtkWidget *widget, HildonCheckButton* button) { g_signal_connect (G_OBJECT (button), "toggled", - G_CALLBACK (on_toggle_button_changed), widget); + G_CALLBACK (on_check_button_changed), widget); /* Set the starting sensitivity: */ - on_toggle_button_changed (button, widget); + on_check_button_changed (button, widget); } static void @@ -819,7 +849,8 @@ create_page_custom_outgoing (ModestEasysetupWizardDialog *self) /* Create a size group to be used by all captions. * Note that HildonCaption does not create a default size group if we do not specify one. * We use GTK_SIZE_GROUP_HORIZONTAL, so that the widths are the same. */ - GtkSizeGroup *sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + GtkSizeGroup *title_sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + GtkSizeGroup *value_sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); /* The outgoing server widgets: */ priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE (self); @@ -828,7 +859,7 @@ create_page_custom_outgoing (ModestEasysetupWizardDialog *self) G_CALLBACK (on_easysetup_changed), self); /* Auto-capitalization is the default, so let's turn it off: */ hildon_gtk_entry_set_input_mode (GTK_ENTRY (priv->entry_outgoingserver), HILDON_GTK_INPUT_MODE_FULL); - GtkWidget *caption = create_captioned (self, sizegroup, + GtkWidget *caption = create_captioned (self, title_sizegroup, value_sizegroup, _("mcen_li_emailsetup_smtp"), priv->entry_outgoingserver); gtk_widget_show (priv->entry_outgoingserver); gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); @@ -839,7 +870,7 @@ create_page_custom_outgoing (ModestEasysetupWizardDialog *self) protocols with security */ priv->outgoing_security = modest_maemo_security_options_view_new (MODEST_SECURITY_OPTIONS_OUTGOING, - FALSE, sizegroup); + FALSE, title_sizegroup, value_sizegroup); gtk_box_pack_start (GTK_BOX (box), priv->outgoing_security, FALSE, FALSE, MODEST_MARGIN_HALF); gtk_widget_show (priv->outgoing_security); @@ -849,30 +880,31 @@ create_page_custom_outgoing (ModestEasysetupWizardDialog *self) gtk_widget_show (separator); /* connection-specific checkbox: */ - priv->checkbox_outgoing_smtp_specific = gtk_check_button_new (); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->checkbox_outgoing_smtp_specific), - FALSE); + priv->checkbox_outgoing_smtp_specific = hildon_check_button_new (HILDON_SIZE_FINGER_HEIGHT); + hildon_check_button_set_active (HILDON_CHECK_BUTTON (priv->checkbox_outgoing_smtp_specific), + FALSE); + gtk_button_set_label (GTK_BUTTON (priv->checkbox_outgoing_smtp_specific), + _("mcen_fi_advsetup_connection_smtp")); + gtk_button_set_alignment (GTK_BUTTON (priv->checkbox_outgoing_smtp_specific), + 0.0, 0.5); g_signal_connect (G_OBJECT (priv->checkbox_outgoing_smtp_specific), "toggled", G_CALLBACK (on_easysetup_changed), self); - caption = modest_maemo_utils_create_captioned (sizegroup, _("mcen_fi_advsetup_connection_smtp"), - priv->checkbox_outgoing_smtp_specific); gtk_widget_show (priv->checkbox_outgoing_smtp_specific); - gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); - gtk_widget_show (caption); + gtk_box_pack_start (GTK_BOX (box), priv->checkbox_outgoing_smtp_specific, + FALSE, FALSE, MODEST_MARGIN_HALF); /* Connection-specific SMTP-Severs Edit button: */ - priv->button_outgoing_smtp_servers = gtk_button_new_with_label (_("mcen_bd_edit")); - caption = modest_maemo_utils_create_captioned (sizegroup, _("mcen_fi_advsetup_optional_smtp"), - priv->button_outgoing_smtp_servers); - hildon_caption_set_child_expand (HILDON_CAPTION (caption), FALSE); + priv->button_outgoing_smtp_servers = gtk_button_new_with_label (_("mcen_fi_advsetup_optional_smtp")); + hildon_gtk_widget_set_theme_size (priv->button_outgoing_smtp_servers, + HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH); gtk_widget_show (priv->button_outgoing_smtp_servers); - gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); - gtk_widget_show (caption); + gtk_box_pack_start (GTK_BOX (box), priv->button_outgoing_smtp_servers, + FALSE, FALSE, MODEST_MARGIN_HALF); /* Only enable the button when the checkbox is checked: */ - enable_widget_for_togglebutton (priv->button_outgoing_smtp_servers, - GTK_TOGGLE_BUTTON (priv->checkbox_outgoing_smtp_specific)); + enable_widget_for_checkbutton (priv->button_outgoing_smtp_servers, + HILDON_CHECK_BUTTON (priv->checkbox_outgoing_smtp_specific)); g_signal_connect (G_OBJECT (priv->button_outgoing_smtp_servers), "clicked", G_CALLBACK (on_button_outgoing_smtp_servers), self); @@ -882,6 +914,9 @@ create_page_custom_outgoing (ModestEasysetupWizardDialog *self) gtk_widget_show (GTK_WIDGET (box)); + + g_object_unref (title_sizegroup); + g_object_unref (value_sizegroup); return GTK_WIDGET (box); } @@ -937,9 +972,9 @@ create_page_complete_custom (ModestEasysetupWizardDialog *self) gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0); gtk_widget_show (label); - GtkWidget *caption = modest_maemo_utils_create_captioned (NULL, _("mcen_fi_advanced_settings"), + GtkWidget *caption = modest_maemo_utils_create_captioned (NULL, NULL, + _("mcen_fi_advanced_settings"), button_edit); - hildon_caption_set_child_expand (HILDON_CAPTION (caption), FALSE); gtk_widget_show (button_edit); gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); gtk_widget_show (caption); @@ -1872,10 +1907,15 @@ save_to_settings (ModestEasysetupWizardDialog *self) /* we check if there is a *special* port */ special_port = modest_presets_get_port (priv->presets, provider_id, TRUE /* incoming */); - if (special_port != 0) + if (special_port != 0) { store_port = special_port; - else - store_port = get_port_from_protocol(store_provider_server_type, store_security); + } else { + gboolean use_alternate_port = FALSE; + if (modest_protocol_registry_protocol_type_is_secure (modest_runtime_get_protocol_registry (), + store_security)) + use_alternate_port = TRUE; + store_port = get_port_from_protocol(store_provider_server_type, use_alternate_port); + } modest_server_account_settings_set_security_protocol (store_settings, store_security); @@ -1993,7 +2033,7 @@ save_to_settings (ModestEasysetupWizardDialog *self) /* Save the connection-specific SMTP server accounts. */ modest_account_settings_set_use_connection_specific_smtp (priv->settings, - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->checkbox_outgoing_smtp_specific))); + hildon_check_button_get_active(HILDON_CHECK_BUTTON(priv->checkbox_outgoing_smtp_specific))); display_name = get_entered_account_title (self); modest_account_settings_set_display_name (priv->settings, display_name);