X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmaemo%2Fmodest-account-settings-dialog.c;h=67bec94d0cd47ee4f7a0104ee8b9c4a991df8ea7;hp=7d28d4f8ca0dce26bb89d3773fe9fc674e18b8a3;hb=882063a897449f5c8a9e26bf771ec9da440bd8dd;hpb=b7551fb4c697c9137d93d4a1be0b3d8336d34f41 diff --git a/src/maemo/modest-account-settings-dialog.c b/src/maemo/modest-account-settings-dialog.c index 7d28d4f..67bec94 100644 --- a/src/maemo/modest-account-settings-dialog.c +++ b/src/maemo/modest-account-settings-dialog.c @@ -137,9 +137,6 @@ modest_account_settings_dialog_finalize (GObject *object) if (self->account_manager) g_object_unref (G_OBJECT (self->account_manager)); - if (self->specific_window) - gtk_widget_destroy (self->specific_window); - if (self->signature_dialog) gtk_widget_destroy (self->signature_dialog); @@ -432,7 +429,8 @@ static void on_button_signature (GtkButton *button, gpointer user_data) { ModestAccountSettingsDialog * self = MODEST_ACCOUNT_SETTINGS_DIALOG (user_data); - + gint response; + /* Create the window, if necessary: */ if (!(self->signature_dialog)) { self->signature_dialog = GTK_WIDGET (modest_signature_editor_dialog_new ()); @@ -450,19 +448,19 @@ on_button_signature (GtkButton *button, gpointer user_data) } /* Show the window: */ - gtk_window_set_transient_for (GTK_WINDOW (self->signature_dialog), GTK_WINDOW (self)); - gtk_window_set_modal (GTK_WINDOW (self->signature_dialog), TRUE); - const gint response = gtk_dialog_run (GTK_DIALOG (self->signature_dialog)); - gtk_widget_hide (self->signature_dialog); - if (response != GTK_RESPONSE_OK) { - /* Destroy the widget now, and its data: */ - gtk_widget_destroy (self->signature_dialog); - self->signature_dialog = NULL; - } - else { - /* Mark modified, so we use the dialog's data later: */ - self->modified = TRUE; - } + modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), + GTK_WINDOW (self->signature_dialog)); + + response = gtk_dialog_run (GTK_DIALOG (self->signature_dialog)); + gtk_widget_hide (self->signature_dialog); + if (response != GTK_RESPONSE_OK) { + /* Destroy the widget now, and its data: */ + gtk_widget_destroy (self->signature_dialog); + self->signature_dialog = NULL; + } else { + /* Mark modified, so we use the dialog's data later: */ + self->modified = TRUE; + } } static GtkWidget* @@ -523,6 +521,9 @@ create_page_user_details (ModestAccountSettingsDialog *self) * as required by our UI specification: */ modest_validating_entry_set_unallowed_characters_whitespace ( MODEST_VALIDATING_ENTRY (self->entry_user_username)); + modest_validating_entry_set_func (MODEST_VALIDATING_ENTRY (self->entry_user_username), + modest_maemo_utils_on_entry_invalid_character, + self); /* Set max length as in the UI spec: * The UI spec seems to want us to show a dialog if we hit the maximum. */ @@ -715,18 +716,15 @@ static void on_button_outgoing_smtp_servers (GtkButton *button, gpointer user_data) { ModestAccountSettingsDialog * self = MODEST_ACCOUNT_SETTINGS_DIALOG (user_data); - + ModestConnectionSpecificSmtpWindow *smtp_win; + /* Create the window if necessary: */ - 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); - } + smtp_win = modest_connection_specific_smtp_window_new (); + modest_connection_specific_smtp_window_fill_with_connections (smtp_win, self->account_manager); /* Show the window: */ - gtk_window_set_transient_for (GTK_WINDOW (self->specific_window), GTK_WINDOW (self)); - gtk_window_set_modal (GTK_WINDOW (self->specific_window), TRUE); - gtk_widget_show (self->specific_window); + modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (smtp_win)); + gtk_widget_show (GTK_WIDGET (smtp_win)); self->modified = TRUE; } @@ -763,8 +761,10 @@ static void on_combo_incoming_security_changed (GtkComboBox *widget, gpointer user_data) { ModestAccountSettingsDialog *self = MODEST_ACCOUNT_SETTINGS_DIALOG (user_data); + ModestConnectionProtocol protocol_security_incoming; + gint port_number; - const gint port_number = + port_number = modest_serversecurity_combo_box_get_active_serversecurity_port ( MODEST_SERVERSECURITY_COMBO_BOX (self->combo_incoming_security)); @@ -772,6 +772,12 @@ on_combo_incoming_security_changed (GtkComboBox *widget, gpointer user_data) hildon_number_editor_set_value ( HILDON_NUMBER_EDITOR (self->entry_incoming_port), port_number); } + + protocol_security_incoming = modest_serversecurity_combo_box_get_active_serversecurity ( + MODEST_SERVERSECURITY_COMBO_BOX (self->combo_incoming_security)); + gtk_widget_set_sensitive (self->checkbox_incoming_auth, !modest_protocol_info_is_secure (protocol_security_incoming)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->checkbox_incoming_auth), modest_protocol_info_is_secure (protocol_security_incoming)); + } @@ -1002,14 +1008,9 @@ check_data (ModestAccountSettingsDialog *self) HILDON_NUMBER_EDITOR (self->entry_incoming_port)); const gchar* username = gtk_entry_get_text (GTK_ENTRY (self->entry_user_username)); - /* const ModestConnectionProtocol protocol_security_incoming = modest_serversecurity_combo_box_get_active_serversecurity ( MODEST_SERVERSECURITY_COMBO_BOX (self->combo_incoming_security)); - */ - /* If we use an encrypted protocol then there is no need to encrypt the password */ - /* I don't think this is a good assumption. It overrides the user's request. murrayc: - * if (!modest_protocol_info_is_secure(protocol_security_incoming)) */ - if (TRUE) + if (!modest_protocol_info_is_secure(protocol_security_incoming)) { if (gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON (self->checkbox_incoming_auth))) { @@ -1041,7 +1042,7 @@ check_data (ModestAccountSettingsDialog *self) if(error == NULL || error->domain != modest_utils_get_supported_secure_authentication_error_quark() || error->code != MODEST_UTILS_GET_SUPPORTED_SECURE_AUTHENTICATION_ERROR_CANCELED) hildon_banner_show_information(GTK_WIDGET (self), NULL, - _("Could not discover supported secure authentication methods.")); + _("mcen_ib_unableto_discover_auth_methods")); if(error != NULL) g_error_free(error); @@ -1242,8 +1243,7 @@ void modest_account_settings_dialog_set_account (ModestAccountSettingsDialog *di null_means_empty (modest_account_settings_get_fullname (settings))); gtk_entry_set_text( GTK_ENTRY (dialog->entry_user_email), null_means_empty (modest_account_settings_get_email_address (settings))); - modest_retrieve_combo_box_fill (MODEST_RETRIEVE_COMBO_BOX (dialog->combo_retrieve), - modest_server_account_settings_get_protocol (incoming_account)); + modest_retrieve_combo_box_fill (MODEST_RETRIEVE_COMBO_BOX (dialog->combo_retrieve), modest_server_account_settings_get_protocol (incoming_account)); modest_retrieve_combo_box_set_active_retrieve_conf (MODEST_RETRIEVE_COMBO_BOX (dialog->combo_retrieve), modest_account_settings_get_retrieve_type (settings)); modest_limit_retrieve_combo_box_set_active_limit_retrieve ( @@ -1298,7 +1298,8 @@ void modest_account_settings_dialog_set_account (ModestAccountSettingsDialog *di const ModestAuthProtocol secure_auth = modest_server_account_settings_get_auth_protocol (incoming_account); dialog->protocol_authentication_incoming = (secure_auth != MODEST_PROTOCOL_AUTH_NONE)? secure_auth:MODEST_PROTOCOL_AUTH_PASSWORD; - if (modest_protocol_info_auth_is_secure(secure_auth)) + ModestConnectionProtocol secure_protocol = modest_server_account_settings_get_security (incoming_account); + if (modest_protocol_info_is_secure (secure_protocol) || modest_protocol_info_auth_is_secure(secure_auth)) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (dialog->checkbox_incoming_auth), TRUE); @@ -1308,6 +1309,8 @@ void modest_account_settings_dialog_set_account (ModestAccountSettingsDialog *di gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (dialog->checkbox_incoming_auth), FALSE); }; + + gtk_widget_set_sensitive (dialog->checkbox_incoming_auth, !modest_protocol_info_is_secure (secure_protocol)); update_incoming_server_title (dialog, dialog->incoming_protocol); @@ -1480,8 +1483,13 @@ save_configuration (ModestAccountSettingsDialog *dialog) const ModestConnectionProtocol protocol_security_incoming = modest_serversecurity_combo_box_get_active_serversecurity ( MODEST_SERVERSECURITY_COMBO_BOX (dialog->combo_incoming_security)); - modest_server_account_settings_set_security (store_settings, protocol_security_incoming); - modest_server_account_settings_set_auth_protocol (store_settings, dialog->protocol_authentication_incoming); + modest_server_account_settings_set_security (store_settings, protocol_security_incoming); + if (modest_protocol_info_is_secure (protocol_security_incoming)) { + modest_server_account_settings_set_auth_protocol (store_settings, FALSE); + } else { + modest_server_account_settings_set_auth_protocol (store_settings, + dialog->protocol_authentication_incoming); + } g_object_unref (store_settings); @@ -1532,13 +1540,7 @@ save_configuration (ModestAccountSettingsDialog *dialog) if (account_name != NULL) modest_account_mgr_save_account_settings (dialog->account_manager, dialog->settings); - if (dialog->specific_window) { - return modest_connection_specific_smtp_window_save_server_accounts ( - MODEST_CONNECTION_SPECIFIC_SMTP_WINDOW (dialog->specific_window)); - } else { - return TRUE; - } - + return TRUE; } static gboolean entry_is_empty (GtkWidget *entry) @@ -1609,6 +1611,42 @@ enable_buttons (ModestAccountSettingsDialog *self) enable_ok); } +void +modest_account_settings_dialog_check_allow_changes (ModestAccountSettingsDialog *self) +{ + ModestServerAccountSettings *incoming_settings; + const gchar *server_account_name; + gboolean username_known; + + if (!G_IS_OBJECT (self->settings)) + return; + + incoming_settings = modest_account_settings_get_store_settings (self->settings); + server_account_name = modest_server_account_settings_get_account_name (incoming_settings); + + username_known = modest_account_mgr_get_server_account_username_has_succeeded (self->account_manager, + server_account_name); + + /* Enable or disable widgets */ + gtk_widget_set_sensitive (self->entry_user_username, !username_known); + gtk_widget_set_sensitive (self->entry_incomingserver, !username_known); + /* gtk_widget_set_sensitive (self->entry_outgoingserver, !username_known); */ + /* gtk_widget_set_sensitive (self->entry_outgoing_username, !username_known); */ + gtk_widget_set_sensitive (self->entry_incoming_port, !username_known); +/* gtk_widget_set_sensitive (self->entry_outgoing_port, !username_known); */ + gtk_widget_set_sensitive (self->combo_incoming_security, !username_known); +/* gtk_widget_set_sensitive (self->combo_outgoing_security, !username_known); */ +} + +void +modest_account_settings_dialog_set_modified (ModestAccountSettingsDialog *dialog, gboolean modified) +{ + g_return_if_fail (MODEST_IS_ACCOUNT_SETTINGS_DIALOG (dialog)); + + dialog->modified = modified; + +} + static void modest_account_settings_dialog_class_init (ModestAccountSettingsDialogClass *klass) {