X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmaemo%2Fmodest-connection-specific-smtp-edit-window.c;h=4f49954e3cd0c2e6957eff9d579f420abe90f28c;hp=cdaab5955bc1e57f406775392d8a3b82b5858cc5;hb=9047ba28c2aeacd7fa7c092044390b1c5912cdea;hpb=49b6485b7693b07b4de3067d4a9c4e048da1be48 diff --git a/src/maemo/modest-connection-specific-smtp-edit-window.c b/src/maemo/modest-connection-specific-smtp-edit-window.c index cdaab59..4f49954 100644 --- a/src/maemo/modest-connection-specific-smtp-edit-window.c +++ b/src/maemo/modest-connection-specific-smtp-edit-window.c @@ -1,10 +1,37 @@ -/* connection-specific-smtp-window.c */ +/* Copyright (c) 2006, Nokia Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Nokia Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ #include "modest-connection-specific-smtp-edit-window.h" -#include -#include "maemo/easysetup/modest-easysetup-country-combo-box.h" -#include "maemo/easysetup/modest-easysetup-provider-combo-box.h" -#include "maemo/easysetup/modest-easysetup-servertype-combo-box.h" +#include "widgets/modest-ui-constants.h" +#include "modest-hildon-includes.h" +#include "modest-runtime.h" + #include "widgets/modest-serversecurity-combo-box.h" #include "widgets/modest-secureauth-combo-box.h" #include "widgets/modest-validating-entry.h" @@ -34,6 +61,8 @@ struct _ModestConnectionSpecificSmtpEditWindowPrivate GtkWidget *button_ok; GtkWidget *button_cancel; + + gboolean is_dirty; }; static void @@ -89,6 +118,14 @@ enum MODEL_COLS { }; static void +on_change(GtkWidget* widget, ModestConnectionSpecificSmtpEditWindow *self) +{ + ModestConnectionSpecificSmtpEditWindowPrivate *priv = + CONNECTION_SPECIFIC_SMTP_EDIT_WINDOW_GET_PRIVATE (self); + priv->is_dirty = TRUE; +} + +static void on_combo_security_changed (GtkComboBox *widget, gpointer user_data) { ModestConnectionSpecificSmtpEditWindow *self = @@ -96,14 +133,15 @@ on_combo_security_changed (GtkComboBox *widget, gpointer user_data) ModestConnectionSpecificSmtpEditWindowPrivate *priv = CONNECTION_SPECIFIC_SMTP_EDIT_WINDOW_GET_PRIVATE (self); + on_change(GTK_WIDGET(widget), self); + const gint port_number = modest_serversecurity_combo_box_get_active_serversecurity_port ( MODEST_SERVERSECURITY_COMBO_BOX (priv->combo_outgoing_security)); if(port_number != 0) { - gchar* str = g_strdup_printf ("%d", port_number); - gtk_entry_set_text (GTK_ENTRY (priv->entry_port), str); - g_free (str); + hildon_number_editor_set_value ( + HILDON_NUMBER_EDITOR (priv->entry_port), port_number); } } @@ -113,7 +151,9 @@ modest_connection_specific_smtp_edit_window_init (ModestConnectionSpecificSmtpEd ModestConnectionSpecificSmtpEditWindowPrivate *priv = CONNECTION_SPECIFIC_SMTP_EDIT_WINDOW_GET_PRIVATE (self); - GtkWidget *box = GTK_DIALOG(self)->vbox; /* gtk_vbox_new (FALSE, 2); */ + 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); /* 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. @@ -123,37 +163,41 @@ modest_connection_specific_smtp_edit_window_init (ModestConnectionSpecificSmtpEd /* The outgoing server widgets: */ if (!priv->entry_outgoingserver) priv->entry_outgoingserver = gtk_entry_new (); + /* 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); + g_signal_connect(G_OBJECT(priv->entry_outgoingserver), "changed", G_CALLBACK(on_change), self); + 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, 2); + gtk_box_pack_start (GTK_BOX (box), 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: */ - g_signal_connect (G_OBJECT (priv->combo_outgoing_security), "changed", (GCallback)on_combo_security_changed, self); - - /* The secure authentication widgets: */ if (!priv->combo_outgoing_auth) priv->combo_outgoing_auth = GTK_WIDGET (modest_secureauth_combo_box_new ()); caption = hildon_caption_new (sizegroup, _("mcen_li_emailsetup_secure_authentication"), 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, 2); + gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); gtk_widget_show (caption); /* The username widgets: */ - priv->entry_user_username = GTK_WIDGET (easysetup_validating_entry_new ()); + priv->entry_user_username = 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_username), HILDON_GTK_INPUT_MODE_FULL); caption = hildon_caption_new (sizegroup, _("mail_fi_username"), 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, 2); + gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); gtk_widget_show (caption); /* Prevent the use of some characters in the username, * as required by our UI specification: */ - easysetup_validating_entry_set_unallowed_characters_whitespace ( - EASYSETUP_VALIDATING_ENTRY (priv->entry_user_username)); + modest_validating_entry_set_unallowed_characters_whitespace ( + MODEST_VALIDATING_ENTRY (priv->entry_user_username)); /* Set max length as in the UI spec: * TODO: The UI spec seems to want us to show a dialog if we hit the maximum. */ @@ -161,12 +205,16 @@ modest_connection_specific_smtp_edit_window_init (ModestConnectionSpecificSmtpEd /* The password widgets: */ priv->entry_user_password = gtk_entry_new (); + /* Auto-capitalization is the default, so let's turn it off: */ + hildon_gtk_entry_set_input_mode (GTK_ENTRY (priv->entry_user_password), + 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 = hildon_caption_new (sizegroup, _("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, 2); + gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); gtk_widget_show (caption); /* The secure connection widgets: */ @@ -175,28 +223,40 @@ modest_connection_specific_smtp_edit_window_init (ModestConnectionSpecificSmtpEd modest_serversecurity_combo_box_fill ( MODEST_SERVERSECURITY_COMBO_BOX (priv->combo_outgoing_security), MODEST_PROTOCOL_TRANSPORT_SMTP); modest_serversecurity_combo_box_set_active_serversecurity ( - MODEST_SERVERSECURITY_COMBO_BOX (priv->combo_outgoing_security), MODEST_PROTOCOL_SECURITY_NONE); + MODEST_SERVERSECURITY_COMBO_BOX (priv->combo_outgoing_security), MODEST_PROTOCOL_CONNECTION_NORMAL); 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, 2); + gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, MODEST_MARGIN_HALF); gtk_widget_show (caption); /* The port number widgets: */ if (!priv->entry_port) - priv->entry_port = gtk_entry_new (); + priv->entry_port = GTK_WIDGET (hildon_number_editor_new (0, 65535)); caption = hildon_caption_new (sizegroup, _("mcen_li_emailsetup_smtp"), priv->entry_port, NULL, HILDON_CAPTION_OPTIONAL); + g_signal_connect(G_OBJECT(priv->entry_port), "changed", G_CALLBACK(on_change), self); gtk_widget_show (priv->entry_port); - gtk_box_pack_start (GTK_BOX (box), caption, FALSE, FALSE, 2); + gtk_box_pack_start (GTK_BOX (box), 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: */ + g_signal_connect (G_OBJECT (priv->combo_outgoing_security), "changed", (GCallback)on_combo_security_changed, self); + on_combo_security_changed (GTK_COMBO_BOX (priv->combo_outgoing_security), self); + /* Add the buttons: */ gtk_dialog_add_button (GTK_DIALOG (self), GTK_STOCK_OK, GTK_RESPONSE_OK); gtk_dialog_add_button (GTK_DIALOG (self), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); + priv->is_dirty = FALSE; gtk_widget_show (box); + + + /* When this window is shown, hibernation should not be possible, + * because there is no sensible way to save the state: */ + modest_window_mgr_prevent_hibernation_while_window_is_shown ( + modest_runtime_get_window_mgr (), GTK_WINDOW (self)); } ModestConnectionSpecificSmtpEditWindow* @@ -231,9 +291,12 @@ modest_connection_specific_smtp_edit_window_set_connection ( MODEST_SECUREAUTH_COMBO_BOX (priv->combo_outgoing_auth), data->secure_auth); /* port: */ - gchar * port_str = g_strdup_printf ("%d", data->port); - gtk_entry_set_text (GTK_ENTRY (priv->entry_port), port_str); - g_free (port_str); + hildon_number_editor_set_value ( + HILDON_NUMBER_EDITOR (priv->entry_port), data->port); + + + /* This will cause changed signals so we set dirty back to FALSE */ + priv->is_dirty = FALSE; } } @@ -242,13 +305,11 @@ modest_connection_specific_smtp_edit_window_set_connection ( ModestServerAccountData* modest_connection_specific_smtp_edit_window_get_settings ( ModestConnectionSpecificSmtpEditWindow *window, - ModestAccountMgr *account_manager, const gchar* server_account_name) + ModestAccountMgr *account_manager) { ModestConnectionSpecificSmtpEditWindowPrivate *priv = CONNECTION_SPECIFIC_SMTP_EDIT_WINDOW_GET_PRIVATE (window); - g_assert (server_account_name); - /* Use g_slice_new0(), because that's what modest_account_mgr_free_server_account_data() * expects us to use. */ ModestServerAccountData *result = g_slice_new0 (ModestServerAccountData); @@ -264,9 +325,17 @@ modest_connection_specific_smtp_edit_window_get_settings ( MODEST_SECUREAUTH_COMBO_BOX (priv->combo_outgoing_auth)); /* port: */ - const gchar * port_str = gtk_entry_get_text (GTK_ENTRY (priv->entry_port)); - if (port_str) - result->port = atoi (port_str); + result->port = hildon_number_editor_get_value ( + HILDON_NUMBER_EDITOR (priv->entry_port)); return result; } + +gboolean modest_connection_specific_smtp_edit_window_is_dirty( + ModestConnectionSpecificSmtpEditWindow *window) +{ + ModestConnectionSpecificSmtpEditWindowPrivate *priv = + CONNECTION_SPECIFIC_SMTP_EDIT_WINDOW_GET_PRIVATE (window); + + return priv->is_dirty; +}