X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmaemo%2Fmodest-connection-specific-smtp-edit-window.c;h=91a788b4bf99fa1d59beb086d63192b08411a346;hb=d4cf31dfb2ee36ca99ffb1f08ee2ebddf57d81ed;hp=72d2f166c40b54dc9afac356cb58ec1678c39497;hpb=2b15100d0ee501b971c66c2cbbee6cd66755bcfb;p=modest diff --git a/src/maemo/modest-connection-specific-smtp-edit-window.c b/src/maemo/modest-connection-specific-smtp-edit-window.c index 72d2f16..91a788b 100644 --- a/src/maemo/modest-connection-specific-smtp-edit-window.c +++ b/src/maemo/modest-connection-specific-smtp-edit-window.c @@ -52,6 +52,10 @@ G_DEFINE_TYPE (ModestConnectionSpecificSmtpEditWindow, modest_connection_specifi #define CONNECTION_SPECIFIC_SMTP_EDIT_WINDOW_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEST_TYPE_CONNECTION_SPECIFIC_SMTP_EDIT_WINDOW, ModestConnectionSpecificSmtpEditWindowPrivate)) +static void on_response (GtkDialog *dialog, + gint arg1, + gpointer user_data); + typedef struct _ModestConnectionSpecificSmtpEditWindowPrivate ModestConnectionSpecificSmtpEditWindowPrivate; struct _ModestConnectionSpecificSmtpEditWindowPrivate @@ -70,7 +74,6 @@ struct _ModestConnectionSpecificSmtpEditWindowPrivate gboolean is_dirty; gboolean range_error_occured; - guint range_error_banner_timeout; }; static void @@ -109,10 +112,6 @@ modest_connection_specific_smtp_edit_window_finalize (GObject *object) ModestConnectionSpecificSmtpEditWindowPrivate *priv = CONNECTION_SPECIFIC_SMTP_EDIT_WINDOW_GET_PRIVATE (self); - if (priv->range_error_banner_timeout > 0) { - g_source_remove (priv->range_error_banner_timeout); - priv->range_error_banner_timeout = 0; - } if (priv->account_name) { g_free (priv->account_name); priv->account_name = NULL; @@ -157,26 +156,10 @@ on_value_changed(GtkWidget* widget, GValue* value, ModestConnectionSpecificSmtpE on_change(widget, self); } -gboolean -show_banner_handler (gpointer userdata) -{ - ModestConnectionSpecificSmtpEditWindow *self = userdata; - ModestConnectionSpecificSmtpEditWindowPrivate *priv = - CONNECTION_SPECIFIC_SMTP_EDIT_WINDOW_GET_PRIVATE (self); - gchar *msg; - - msg = g_strdup_printf (dgettext("hildon-libs", "ckct_ib_set_a_value_within_range"), PORT_RANGE_MIN, PORT_RANGE_MAX); - - hildon_banner_show_information (NULL, NULL, msg); - g_free (msg); - - priv->range_error_banner_timeout = 0; - return FALSE; -} - static gboolean on_range_error (GtkWidget *widget, HildonNumberEditorErrorType type, gpointer user_data) { + gchar *msg; ModestConnectionSpecificSmtpEditWindow *self = user_data; ModestConnectionSpecificSmtpEditWindowPrivate *priv = CONNECTION_SPECIFIC_SMTP_EDIT_WINDOW_GET_PRIVATE (self); @@ -185,8 +168,16 @@ on_range_error (GtkWidget *widget, HildonNumberEditorErrorType type, gpointer us * the hildon number editor already resets the value to the default value, so we have to * remember that such an error occured. */ priv->range_error_occured = TRUE; - if (priv->range_error_banner_timeout == 0) - priv->range_error_banner_timeout = g_timeout_add (200, show_banner_handler, self); + + if (type == HILDON_NUMBER_EDITOR_ERROR_MAXIMUM_VALUE_EXCEED) { + msg = g_strdup (_HL("ckct_ib_maximum_value")); + } else if (type == HILDON_NUMBER_EDITOR_ERROR_MINIMUM_VALUE_EXCEED) { + msg = g_strdup (_HL("ckct_ib_minimum_value")); + } else { + msg = g_strdup_printf (_HL("ckct_ib_set_a_value_within_range"), PORT_RANGE_MIN, PORT_RANGE_MAX); + } + modest_platform_information_banner (widget, NULL, msg); + g_free (msg); /* Show error message by not returning TRUE */ return TRUE; @@ -202,12 +193,6 @@ on_response (GtkDialog *dialog, int response_id, gpointer user_data) hostname = gtk_entry_get_text (GTK_ENTRY (priv->entry_outgoingserver)); - if ((response_id == GTK_RESPONSE_CANCEL) && - (priv->range_error_banner_timeout > 0)) { - g_source_remove (priv->range_error_banner_timeout); - priv->range_error_banner_timeout = 0; - } - /* Don't close the dialog if a range error occured */ if(response_id == GTK_RESPONSE_OK && priv->range_error_occured) { @@ -227,8 +212,16 @@ on_response (GtkDialog *dialog, int response_id, gpointer user_data) gtk_editable_select_region (GTK_EDITABLE (priv->entry_outgoingserver), 0, -1); return; } + } else { + /* Ask user if they want to discard changes */ + if (priv->is_dirty) { + gint response; + response = modest_platform_run_confirmation_dialog (GTK_WINDOW (user_data), + _("imum_nc_wizard_confirm_lose_changes")); + if (response == GTK_RESPONSE_CANCEL) + g_signal_stop_emission_by_name (dialog, "response"); + } } - } static void on_set_focus_child (GtkContainer *container, GtkWidget *widget, gpointer user_data) @@ -266,12 +259,19 @@ on_combo_security_changed (GtkComboBox *widget, gpointer user_data) static void modest_connection_specific_smtp_edit_window_init (ModestConnectionSpecificSmtpEditWindow *self) { - ModestConnectionSpecificSmtpEditWindowPrivate *priv = - CONNECTION_SPECIFIC_SMTP_EDIT_WINDOW_GET_PRIVATE (self); - - GtkWidget *box = GTK_DIALOG(self)->vbox; /* gtk_vbox_new (FALSE, MODEST_MARGIN_HALF); */ - gtk_box_set_spacing (GTK_BOX (box), MODEST_MARGIN_NONE); - gtk_container_set_border_width (GTK_CONTAINER (box), MODEST_MARGIN_HALF); + ModestConnectionSpecificSmtpEditWindowPrivate *priv; + GtkWidget *dialog_box; + GtkWidget *scrolled_window, *vbox; + + /* The title of this dialog is quite long, so make the window wide enough */ + gtk_widget_set_size_request (GTK_WIDGET (self), 600, -1); + + priv = CONNECTION_SPECIFIC_SMTP_EDIT_WINDOW_GET_PRIVATE (self); + dialog_box = GTK_DIALOG(self)->vbox; /* gtk_vbox_new (FALSE, MODEST_MARGIN_HALF); */ + gtk_box_set_spacing (GTK_BOX (dialog_box), MODEST_MARGIN_NONE); + gtk_container_set_border_width (GTK_CONTAINER (dialog_box), MODEST_MARGIN_HALF); + + vbox = gtk_vbox_new (FALSE, 0); /* 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. @@ -288,7 +288,7 @@ modest_connection_specific_smtp_edit_window_init (ModestConnectionSpecificSmtpEd GtkWidget *caption = hildon_caption_new (sizegroup, _("mcen_li_emailsetup_smtp"), priv->entry_outgoingserver, NULL, HILDON_CAPTION_OPTIONAL); gtk_widget_show (priv->entry_outgoingserver); - gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); + gtk_box_pack_start (GTK_BOX (vbox), caption, FALSE, FALSE, MODEST_MARGIN_HALF); gtk_widget_show (caption); /* The secure authentication widgets: */ @@ -298,7 +298,7 @@ modest_connection_specific_smtp_edit_window_init (ModestConnectionSpecificSmtpEd priv->combo_outgoing_auth, NULL, HILDON_CAPTION_OPTIONAL); g_signal_connect (G_OBJECT (priv->combo_outgoing_auth), "changed", G_CALLBACK(on_change), self); gtk_widget_show (priv->combo_outgoing_auth); - gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); + gtk_box_pack_start (GTK_BOX (vbox), caption, FALSE, FALSE, MODEST_MARGIN_HALF); gtk_widget_show (caption); /* The username widgets: */ @@ -309,7 +309,7 @@ modest_connection_specific_smtp_edit_window_init (ModestConnectionSpecificSmtpEd priv->entry_user_username, NULL, HILDON_CAPTION_MANDATORY); g_signal_connect(G_OBJECT(priv->entry_user_username), "changed", G_CALLBACK(on_change), self); gtk_widget_show (priv->entry_user_username); - gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); + gtk_box_pack_start (GTK_BOX (vbox), caption, FALSE, FALSE, MODEST_MARGIN_HALF); gtk_widget_show (caption); /* Prevent the use of some characters in the username, @@ -332,20 +332,20 @@ modest_connection_specific_smtp_edit_window_init (ModestConnectionSpecificSmtpEd _("mail_fi_password"), priv->entry_user_password, NULL, HILDON_CAPTION_OPTIONAL); g_signal_connect(G_OBJECT(priv->entry_user_password), "changed", G_CALLBACK(on_change), self); gtk_widget_show (priv->entry_user_password); - gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); + gtk_box_pack_start (GTK_BOX (vbox), caption, FALSE, FALSE, MODEST_MARGIN_HALF); gtk_widget_show (caption); /* The secure connection widgets: */ if (!priv->combo_outgoing_security) priv->combo_outgoing_security = GTK_WIDGET (modest_serversecurity_combo_box_new ()); modest_serversecurity_combo_box_fill ( - MODEST_SERVERSECURITY_COMBO_BOX (priv->combo_outgoing_security), MODEST_PROTOCOL_TRANSPORT_SMTP); + MODEST_SERVERSECURITY_COMBO_BOX (priv->combo_outgoing_security), MODEST_PROTOCOLS_TRANSPORT_SMTP); modest_serversecurity_combo_box_set_active_serversecurity ( - MODEST_SERVERSECURITY_COMBO_BOX (priv->combo_outgoing_security), MODEST_PROTOCOL_CONNECTION_NORMAL); + MODEST_SERVERSECURITY_COMBO_BOX (priv->combo_outgoing_security), MODEST_PROTOCOLS_CONNECTION_NONE); caption = hildon_caption_new (sizegroup, _("mcen_li_emailsetup_secure_connection"), priv->combo_outgoing_security, NULL, HILDON_CAPTION_OPTIONAL); gtk_widget_show (priv->combo_outgoing_security); - gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); + gtk_box_pack_start (GTK_BOX (vbox), caption, FALSE, FALSE, MODEST_MARGIN_HALF); gtk_widget_show (caption); /* The port number widgets: */ @@ -357,7 +357,7 @@ modest_connection_specific_smtp_edit_window_init (ModestConnectionSpecificSmtpEd g_signal_connect(G_OBJECT(priv->entry_port), "range-error", G_CALLBACK(on_range_error), self); g_signal_connect(G_OBJECT(priv->entry_port), "notify::value", G_CALLBACK(on_value_changed), self); gtk_widget_show (priv->entry_port); - gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); + gtk_box_pack_start (GTK_BOX (vbox), caption, FALSE, FALSE, MODEST_MARGIN_HALF); gtk_widget_show (caption); /* Show a default port number when the security method changes, as per the UI spec: */ @@ -371,12 +371,19 @@ modest_connection_specific_smtp_edit_window_init (ModestConnectionSpecificSmtpEd priv->is_dirty = FALSE; priv->range_error_occured = FALSE; g_signal_connect(G_OBJECT(self), "response", G_CALLBACK(on_response), self); - g_signal_connect(G_OBJECT(box), "set-focus-child", G_CALLBACK(on_set_focus_child), self); + g_signal_connect(G_OBJECT(vbox), "set-focus-child", G_CALLBACK(on_set_focus_child), self); - priv->range_error_banner_timeout = 0; priv->account_name = NULL; + + scrolled_window = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), vbox); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + gtk_box_pack_start (GTK_BOX (dialog_box), scrolled_window, TRUE, TRUE, 0); + gtk_container_set_focus_vadjustment (GTK_CONTAINER (vbox), + gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled_window))); - gtk_widget_show (box); + gtk_widget_show_all (dialog_box); + gtk_window_set_default_size (GTK_WINDOW (self), -1, 220); /* When this window is shown, hibernation should not be possible, @@ -423,7 +430,7 @@ modest_connection_specific_smtp_edit_window_set_connection ( modest_serversecurity_combo_box_set_active_serversecurity ( MODEST_SERVERSECURITY_COMBO_BOX (priv->combo_outgoing_security), - modest_server_account_settings_get_security (server_settings)); + modest_server_account_settings_get_security_protocol (server_settings)); modest_secureauth_combo_box_set_active_secureauth ( MODEST_SECUREAUTH_COMBO_BOX (priv->combo_outgoing_auth), @@ -437,11 +444,6 @@ modest_connection_specific_smtp_edit_window_set_connection ( /* This will cause changed signals so we set dirty back to FALSE */ priv->is_dirty = FALSE; - if (priv->range_error_banner_timeout > 0) { - g_source_remove (priv->range_error_banner_timeout); - priv->range_error_banner_timeout = 0; - } - } } @@ -466,13 +468,13 @@ modest_connection_specific_smtp_edit_window_get_settings (ModestConnectionSpecif modest_server_account_settings_set_hostname (server_settings, gtk_entry_get_text (GTK_ENTRY (priv->entry_outgoingserver))); modest_server_account_settings_set_protocol (server_settings, - MODEST_PROTOCOL_TRANSPORT_SMTP); + MODEST_PROTOCOLS_TRANSPORT_SMTP); modest_server_account_settings_set_username (server_settings, gtk_entry_get_text (GTK_ENTRY (priv->entry_user_username))); modest_server_account_settings_set_password (server_settings, gtk_entry_get_text (GTK_ENTRY (priv->entry_user_password))); - modest_server_account_settings_set_security (server_settings, + modest_server_account_settings_set_security_protocol (server_settings, modest_serversecurity_combo_box_get_active_serversecurity ( MODEST_SERVERSECURITY_COMBO_BOX (priv->combo_outgoing_security))); modest_server_account_settings_set_auth_protocol (server_settings, @@ -488,8 +490,8 @@ modest_connection_specific_smtp_edit_window_get_settings (ModestConnectionSpecif return server_settings; } -gboolean modest_connection_specific_smtp_edit_window_is_dirty( - ModestConnectionSpecificSmtpEditWindow *window) +gboolean +modest_connection_specific_smtp_edit_window_is_dirty(ModestConnectionSpecificSmtpEditWindow *window) { ModestConnectionSpecificSmtpEditWindowPrivate *priv = CONNECTION_SPECIFIC_SMTP_EDIT_WINDOW_GET_PRIVATE (window);