X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fhildon2%2Fmodest-easysetup-wizard-dialog.c;h=c81aa9060cc55f22f545e6b6c945b3f0563cf72c;hb=9c2a37dd25558a3a70d49388b63424bc96cf2cab;hp=9f1040fdfd0f24bb0ccb7b176ca55483fedbac9c;hpb=2c42e651cc7c81b3b48adbab9a9a3c80cc32b215;p=modest diff --git a/src/hildon2/modest-easysetup-wizard-dialog.c b/src/hildon2/modest-easysetup-wizard-dialog.c index 9f1040f..c81aa90 100644 --- a/src/hildon2/modest-easysetup-wizard-dialog.c +++ b/src/hildon2/modest-easysetup-wizard-dialog.c @@ -139,6 +139,7 @@ struct _ModestEasysetupWizardDialogPrivate static void save_to_settings (ModestEasysetupWizardDialog *self); static void real_enable_buttons (ModestWizardDialog *dialog, gboolean enable_next); +static void on_save_settings (ModestWizardDialog *dialog); static GList* check_for_supported_auth_methods (ModestEasysetupWizardDialog* self); static gboolean check_has_supported_auth_methods(ModestEasysetupWizardDialog* self); @@ -619,33 +620,31 @@ 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); } -static GtkWidget* +static GtkWidget* create_page_complete_easysetup (ModestEasysetupWizardDialog *self) { GtkWidget *box = gtk_vbox_new (FALSE, MODEST_MARGIN_NONE); - + GtkWidget *label = gtk_label_new(_("mcen_ia_emailsetup_setup_complete")); gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); gtk_widget_set_size_request (label, LABELS_WIDTH, -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_widget_set_size_request (label, LABELS_WIDTH, -1); - + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0); gtk_widget_show (label); - + gtk_widget_show (GTK_WIDGET (box)); return GTK_WIDGET (box); } @@ -744,7 +743,7 @@ create_page_custom_incoming (ModestEasysetupWizardDialog *self) ModestProtocolRegistry *protocol_registry; ModestEasysetupWizardDialogPrivate* priv; GtkWidget *box; - GtkWidget *scrolled_window; + GtkWidget *pannable; GtkWidget *label; GtkSizeGroup *title_sizegroup; GtkSizeGroup *value_sizegroup; @@ -753,11 +752,7 @@ create_page_custom_incoming (ModestEasysetupWizardDialog *self) protocol_registry = modest_runtime_get_protocol_registry (); box = gtk_vbox_new (FALSE, MODEST_MARGIN_NONE); - scrolled_window = gtk_scrolled_window_new (NULL, NULL); - - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), - GTK_POLICY_NEVER, - GTK_POLICY_AUTOMATIC); + pannable = hildon_pannable_area_new (); /* Show note that account type cannot be changed in future: */ label = gtk_label_new (_("mcen_ia_emailsetup_account_type")); @@ -822,16 +817,16 @@ create_page_custom_incoming (ModestEasysetupWizardDialog *self) MODEST_SERVERTYPE_PICKER (priv->incoming_servertype_picker), MODEST_PROTOCOLS_STORE_POP); - gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), box); + hildon_pannable_area_add_with_viewport (HILDON_PANNABLE_AREA (pannable), box); gtk_container_set_focus_vadjustment (GTK_CONTAINER (box), - gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled_window))); + hildon_pannable_area_get_vadjustment (HILDON_PANNABLE_AREA (pannable))); gtk_widget_show (GTK_WIDGET (box)); - gtk_widget_show (scrolled_window); + gtk_widget_show (pannable); g_object_unref (title_sizegroup); g_object_unref (value_sizegroup); - return GTK_WIDGET (scrolled_window); + return GTK_WIDGET (pannable); } static void @@ -889,7 +884,10 @@ create_page_custom_outgoing (ModestEasysetupWizardDialog *self) { ModestEasysetupWizardDialogPrivate *priv; gchar *smtp_caption_label; + GtkWidget *pannable; GtkWidget *box = gtk_vbox_new (FALSE, MODEST_MARGIN_NONE); + + pannable = hildon_pannable_area_new (); /* 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. @@ -958,12 +956,18 @@ create_page_custom_outgoing (ModestEasysetupWizardDialog *self) g_signal_connect (G_OBJECT (priv->entry_outgoingserver), "changed", G_CALLBACK (on_entry_outgoing_servername_changed), self); + + + hildon_pannable_area_add_with_viewport (HILDON_PANNABLE_AREA (pannable), box); + gtk_container_set_focus_vadjustment (GTK_CONTAINER (box), + hildon_pannable_area_get_vadjustment (HILDON_PANNABLE_AREA (pannable))); gtk_widget_show (GTK_WIDGET (box)); + gtk_widget_show (pannable); g_object_unref (title_sizegroup); g_object_unref (value_sizegroup); - return GTK_WIDGET (box); + return GTK_WIDGET (pannable); } static gboolean @@ -1001,7 +1005,7 @@ on_button_edit_advanced_settings (GtkButton *button, gpointer user_data) static GtkWidget* create_page_complete_custom (ModestEasysetupWizardDialog *self) { - GtkWidget *box = gtk_vbox_new (FALSE, MODEST_MARGIN_NONE); + GtkWidget *box = gtk_vbox_new (FALSE, MODEST_MARGIN_DEFAULT); GtkWidget *label = gtk_label_new(_("mcen_ia_emailsetup_setup_complete")); GtkWidget *button_edit = gtk_button_new_with_label (_("mcen_fi_advanced_settings")); hildon_gtk_widget_set_theme_size (button_edit, HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH); @@ -1010,20 +1014,20 @@ create_page_complete_custom (ModestEasysetupWizardDialog *self) 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, 0.0); gtk_widget_set_size_request (label, LABELS_WIDTH, -1); gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0); gtk_widget_show (label); - + gtk_widget_show (button_edit); gtk_box_pack_start (GTK_BOX (box), button_edit, FALSE, FALSE, MODEST_MARGIN_HALF); - + g_signal_connect (G_OBJECT (button_edit), "clicked", G_CALLBACK (on_button_edit_advanced_settings), self); - + gtk_widget_show (GTK_WIDGET (box)); return GTK_WIDGET (box); } @@ -1213,7 +1217,7 @@ modest_easysetup_wizard_dialog_init (ModestEasysetupWizardDialog *self) /* Create the notebook to be used by the ModestWizardDialog base class: * Each page of the notebook will be a page of the wizard: */ GtkNotebook *notebook = GTK_NOTEBOOK (gtk_notebook_new()); - gtk_widget_set_size_request (GTK_WIDGET (notebook), DIALOG_WIDTH, -1); + gtk_widget_set_size_request (GTK_WIDGET (notebook), -1, MODEST_DIALOG_WINDOW_MAX_HEIGHT); /* Set the notebook used by the ModestWizardDialog base class: */ g_object_set (G_OBJECT(self), "wizard-notebook", notebook, NULL); @@ -1411,6 +1415,9 @@ create_subsequent_pages (ModestEasysetupWizardDialog *self) picker = MODEST_PROVIDER_PICKER (priv->account_serviceprovider_picker); id_type = modest_provider_picker_get_active_id_type (picker); g_object_get (self, "wizard-notebook", ¬ebook, NULL); + modest_wizard_dialog_set_response_override_handler (MODEST_WIZARD_DIALOG (self), + NULL); + if (id_type == MODEST_PROVIDER_PICKER_ID_OTHER) { /* "Other..." was selected: */ @@ -1467,26 +1474,39 @@ create_subsequent_pages (ModestEasysetupWizardDialog *self) proto_type != priv->last_plugin_protocol_selected) { ModestPairList *tabs; GSList *tmp; + gboolean first_page = TRUE; + ModestWizardDialogResponseOverrideFunc response_override; /* Remember the last selected plugin protocol */ priv->last_plugin_protocol_selected = proto_type; /* Get tabs */ tabs = modest_account_protocol_get_easysetupwizard_tabs (MODEST_ACCOUNT_PROTOCOL (protocol)); + response_override = modest_account_protocol_get_wizard_response_override + (MODEST_ACCOUNT_PROTOCOL (protocol)); + modest_wizard_dialog_set_response_override_handler (MODEST_WIZARD_DIALOG (self), + response_override); tmp = (GSList *) tabs; while (tmp) { ModestPair *pair = (ModestPair *) tmp->data; modest_easysetup_wizard_dialog_append_page (notebook, GTK_WIDGET (pair->second), (const gchar *) pair->first); + if (first_page) { + gtk_container_set_focus_child (GTK_CONTAINER (notebook), + GTK_WIDGET (pair->second)); + first_page = FALSE; + } /* Connect signals */ - priv->missing_data_signals = - modest_signal_mgr_connect (priv->missing_data_signals, - G_OBJECT (pair->second), - "missing-mandatory-data", - G_CALLBACK (on_missing_mandatory_data), - self); + if (MODEST_IS_EASYSETUP_WIZARD_PAGE (pair->second)) { + priv->missing_data_signals = + modest_signal_mgr_connect (priv->missing_data_signals, + G_OBJECT (pair->second), + "missing-mandatory-data", + G_CALLBACK (on_missing_mandatory_data), + self); + } g_free (pair->first); tmp = g_slist_next (tmp); @@ -1834,6 +1854,7 @@ modest_easysetup_wizard_dialog_class_init (ModestEasysetupWizardDialogClass *kla ModestWizardDialogClass *base_klass = (ModestWizardDialogClass*)(klass); base_klass->before_next = on_before_next; base_klass->enable_buttons = on_enable_buttons; + base_klass->save_settings = on_save_settings; } /** @@ -1868,7 +1889,7 @@ save_to_settings (ModestEasysetupWizardDialog *self) /* Get details from the specified presets: */ id_type = modest_provider_picker_get_active_id_type (picker); provider_id = modest_provider_picker_get_active_provider_id (picker); - + /* Let the plugin save the settings. We do a return in order to save an indentation level */ if (id_type == MODEST_PROVIDER_PICKER_ID_PLUGIN_PROTOCOL) { @@ -1923,20 +1944,20 @@ save_to_settings (ModestEasysetupWizardDialog *self) ModestProtocolType store_provider_server_type; gboolean store_provider_use_alternate_port; /* Use presets: */ - store_hostname = modest_presets_get_server (priv->presets, provider_id, + store_hostname = modest_presets_get_server (priv->presets, provider_id, TRUE /* store */); - + store_provider_server_type = modest_presets_get_info_server_type (priv->presets, - provider_id, + provider_id, TRUE /* store */); store_security = modest_presets_get_info_server_security (priv->presets, - provider_id, - TRUE /* store */); + provider_id, + TRUE /* store */); store_auth_protocol = modest_presets_get_info_server_auth (priv->presets, - provider_id, - TRUE /* store */); + provider_id, + TRUE /* store */); store_provider_use_alternate_port = modest_presets_get_info_server_use_alternate_port (priv->presets, - provider_id, + provider_id, TRUE /* store */); /* We don't check for SMTP here as that is impossible for an incoming server. */ @@ -2062,18 +2083,20 @@ save_to_settings (ModestEasysetupWizardDialog *self) g_object_unref (transport_settings); g_free (transport_hostname); - + fullname = hildon_entry_get_text (HILDON_ENTRY (priv->entry_user_name)); email_address = hildon_entry_get_text (HILDON_ENTRY (priv->entry_user_email)); modest_account_settings_set_fullname (priv->settings, fullname); modest_account_settings_set_email_address (priv->settings, email_address); /* we don't set retrieve type to preserve advanced settings if any. By default account settings are set to headers only */ - + /* Save the connection-specific SMTP server accounts. */ - modest_account_settings_set_use_connection_specific_smtp - (priv->settings, - hildon_check_button_get_active(HILDON_CHECK_BUTTON(priv->checkbox_outgoing_smtp_specific))); + if (priv->checkbox_outgoing_smtp_specific) { + modest_account_settings_set_use_connection_specific_smtp + (priv->settings, + 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); @@ -2081,6 +2104,16 @@ save_to_settings (ModestEasysetupWizardDialog *self) g_free (provider_id); } + +static void +on_save_settings (ModestWizardDialog *dialog) +{ + ModestEasysetupWizardDialog *self = MODEST_EASYSETUP_WIZARD_DIALOG (dialog); + save_to_settings (self); + +} + + static GList* check_for_supported_auth_methods (ModestEasysetupWizardDialog* self) {