static void on_combo_servertype_changed(GtkComboBox *combobox, gpointer user_data);
static gint get_serverport_incoming(ModestPresetsServerType servertype_incoming,
- ModestPresetsSecurity security_incoming)
+ ModestPresetsSecurity security_incoming)
{
int serverport_incoming = 0;
/* We don't check for SMTP here as that is impossible for an incoming server. */
static GList* check_for_supported_auth_methods(ModestEasysetupWizardDialog* account_wizard)
{
- const ModestTransportStoreProtocol protocol =
+ GError *error = NULL;
+ const ModestTransportStoreProtocol protocol =
easysetup_servertype_combo_box_get_active_servertype (
EASYSETUP_SERVERTYPE_COMBO_BOX (account_wizard->combo_incoming_servertype));
- const gchar* hostname = gtk_entry_get_text(GTK_ENTRY(account_wizard->entry_incomingserver));
- const ModestConnectionProtocol protocol_security_incoming =
+ const gchar* hostname = gtk_entry_get_text(GTK_ENTRY(account_wizard->entry_incomingserver));
+ const gchar* username = gtk_entry_get_text(GTK_ENTRY(account_wizard->entry_user_username));
+ const ModestConnectionProtocol protocol_security_incoming =
modest_serversecurity_combo_box_get_active_serversecurity (
- MODEST_SERVERSECURITY_COMBO_BOX (
- account_wizard->combo_incoming_security));
- int port_num = get_serverport_incoming(protocol, protocol_security_incoming);
- GList *list_auth_methods =
+ MODEST_SERVERSECURITY_COMBO_BOX (
+ account_wizard->combo_incoming_security));
+ int port_num = get_serverport_incoming(protocol, protocol_security_incoming);
+ GList *list_auth_methods =
modest_maemo_utils_get_supported_secure_authentication_methods (
protocol,
- hostname, port_num, GTK_WINDOW (account_wizard));
- if (list_auth_methods) {
- /* TODO: Select the correct method */
- GList* list = NULL;
- GList* method;
- for (method = list_auth_methods; method != NULL; method = g_list_next(method))
- {
- ModestAuthProtocol auth = (ModestAuthProtocol) (GPOINTER_TO_INT(method->data));
- if (modest_protocol_info_auth_is_secure(auth))
- {
- g_list_append(list, GINT_TO_POINTER(auth));
- }
- }
- g_list_free(list_auth_methods);
- if (list)
- return list;
- }
- /* no secure methods supported */
- GtkWidget* error_dialog = gtk_message_dialog_new(GTK_WINDOW(account_wizard),
- GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK, _("Server does not support secure authentication!"));
- gtk_dialog_run(GTK_DIALOG(error_dialog));
- gtk_widget_destroy(error_dialog);
- return NULL;
+ hostname, port_num, username, GTK_WINDOW (account_wizard), &error);
+ if (list_auth_methods) {
+ /* TODO: Select the correct method */
+ GList* list = NULL;
+ GList* method;
+ for (method = list_auth_methods; method != NULL; method = g_list_next(method)) {
+ ModestAuthProtocol auth = (ModestAuthProtocol) (GPOINTER_TO_INT(method->data));
+ if (modest_protocol_info_auth_is_secure(auth)) {
+ list = g_list_append(list, GINT_TO_POINTER(auth));
+ }
+ }
+ g_list_free(list_auth_methods);
+ if (list)
+ return list;
+ }
+
+ if(error == NULL || error->domain != modest_maemo_utils_get_supported_secure_authentication_error_quark() ||
+ error->code != MODEST_MAEMO_UTILS_GET_SUPPORTED_SECURE_AUTHENTICATION_ERROR_CANCELED)
+ {
+ GtkWidget* error_dialog = gtk_message_dialog_new(GTK_WINDOW(account_wizard),
+ GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_OK, (error != NULL) ? error->message : _("Server does not support secure authentication!"));
+ gtk_dialog_run(GTK_DIALOG(error_dialog));
+ gtk_widget_destroy(error_dialog);
+ }
+
+ if(error != NULL) g_error_free(error);
+ return NULL;
}
static void
gpointer user_data)
{
ModestEasysetupWizardDialog *self = MODEST_EASYSETUP_WIZARD_DIALOG (wizard_dialog);
-
if (response_id == GTK_RESPONSE_CANCEL) {
/* Remove any temporarily-saved account that will not actually be needed: */
if (self->saved_account_name) {
modest_account_mgr_remove_account (self->account_manager,
self->saved_account_name, FALSE);
- }
+ }
}
-
+
invoke_enable_buttons_vfunc (self);
}
+static void
+on_response_before (ModestWizardDialog *wizard_dialog,
+ gint response_id,
+ gpointer user_data)
+{
+ ModestEasysetupWizardDialog *self = MODEST_EASYSETUP_WIZARD_DIALOG (wizard_dialog);
+ if (response_id == GTK_RESPONSE_CANCEL) {
+ /* This is mostly copied from
+ * src/maemo/modest-account-settings-dialog.c */
+ GtkDialog *dialog = GTK_DIALOG (hildon_note_new_confirmation (GTK_WINDOW (self),
+ _("imum_nc_wizard_confirm_lose_changes")));
+ /* TODO: These button names will be ambiguous, and not specified in the UI specification. */
+
+ const gint dialog_response = gtk_dialog_run (dialog);
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+
+ if (dialog_response != GTK_RESPONSE_OK)
+ {
+ /* This is a nasty hack. murrayc. */
+ /* Don't let the dialog close */
+ g_signal_stop_emission_by_name (wizard_dialog, "response");
+ }
+ }
+}
+
static void
modest_easysetup_wizard_dialog_init (ModestEasysetupWizardDialog *self)
{
g_signal_connect_after (G_OBJECT (self), "response",
G_CALLBACK (on_response), self);
+ /* This is to show a confirmation dialog when the user hits cancel */
+ g_signal_connect (G_OBJECT (self), "response",
+ G_CALLBACK (on_response_before), self);
+
/* 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 (
if (name_in_use) {
/* Warn the user via a dialog: */
- show_error (GTK_WINDOW (account_wizard), _("mail_ib_account_name_already_existing"));
+ hildon_banner_show_information(NULL, NULL, _("mail_ib_account_name_already_existing"));
return FALSE;
}
if (!modest_text_utils_validate_email_address (email_address)) {
/* Warn the user via a dialog: */
- show_error (GTK_WINDOW (account_wizard), _("mcen_ib_invalid_email"));
+ hildon_banner_show_information (NULL, NULL, _("mcen_ib_invalid_email"));
/* Return focus to the email address entry: */
gtk_widget_grab_focus (account_wizard->entry_user_email);
-
+ gtk_editable_select_region (GTK_EDITABLE (account_wizard->entry_user_email), 0, -1);
+
return FALSE;
}
/* Create the account, which will contain the two "server accounts": */
- created = modest_account_mgr_add_account (self->account_manager, display_name,
+ created = modest_account_mgr_add_account (self->account_manager, account_name,
store_name, /* The name of our POP/IMAP server account. */
transport_name, /* The name of our SMTP server account. */
enabled);
return FALSE;
}
-
/* Sanity check: */
/* There must be at least one account now: */
/* Note, when this fails is is caused by a Maemo gconf bug that has been
* fixed in versions after 3.1. */
- GSList *account_names = modest_account_mgr_account_names (self->account_manager, FALSE);
- if(!account_names)
- {
+ if(!modest_account_mgr_has_accounts (self->account_manager, FALSE))
g_warning ("modest_account_mgr_account_names() returned NULL after adding an account.");
- }
- g_slist_free (account_names);
-
-
-
+
/* The user name and email address must be set additionally: */
const gchar* user_name = gtk_entry_get_text (GTK_ENTRY (self->entry_user_name));
modest_account_mgr_set_string (self->account_manager, account_name,