typedef struct _ModestEasysetupWizardDialogPrivate ModestEasysetupWizardDialogPrivate;
+
typedef enum {
MODEST_EASYSETUP_WIZARD_DIALOG_INCOMING_CHANGED = 0x01,
MODEST_EASYSETUP_WIZARD_DIALOG_OUTGOING_CHANGED = 0x02
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);
+ MODEST_SERVERSECURITY_COMBO_BOX (
+ account_wizard->combo_incoming_security));
+ const int port_num = get_serverport_incoming(protocol, protocol_security_incoming);
GList *list_auth_methods =
modest_maemo_utils_get_supported_secure_authentication_methods (
protocol,
list = g_list_append(list, GINT_TO_POINTER(auth));
}
}
+
g_list_free(list_auth_methods);
+
if (list)
return list;
}
show_error (GTK_WIDGET(account_wizard), _("Could not discover supported secure authentication methods."));
}
- if(error != NULL) g_error_free(error);
+ if(error != NULL)
+ g_error_free(error);
+
return NULL;
}
+static gboolean check_has_supported_auth_methods(ModestEasysetupWizardDialog* account_wizard)
+{
+ GList* methods = check_for_supported_auth_methods(account_wizard);
+ if (!methods)
+ {
+ return FALSE;
+ }
+
+ g_list_free(methods);
+ return TRUE;
+}
+
+static ModestAuthProtocol check_first_supported_auth_method(ModestEasysetupWizardDialog* account_wizard)
+{
+ ModestAuthProtocol result = MODEST_PROTOCOL_AUTH_PASSWORD;
+
+ GList* methods = check_for_supported_auth_methods(account_wizard);
+ if (methods)
+ {
+ /* Use the first one: */
+ result = (ModestAuthProtocol) (GPOINTER_TO_INT(methods->data));
+ g_list_free(methods);
+ }
+
+ return result;
+}
+
static void
invoke_enable_buttons_vfunc (ModestEasysetupWizardDialog *wizard_dialog)
{
GtkWidget *label = gtk_label_new(_("mcen_ia_emailsetup_intro"));
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
/* So that it is not truncated: */
- gtk_label_set_max_width_chars (GTK_LABEL (label), 40);
+ gtk_widget_set_size_request (label, 600, -1);
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
gtk_widget_show (label);
gtk_widget_show (GTK_WIDGET (box));
on_entry_invalid_character (ModestValidatingEntry *self, const gchar* character, gpointer user_data)
{
/* ModestEasysetupWizardDialog *dialog = MODEST_EASYSETUP_WIZARD_DIALOG (user_data); */
- /* We could add a special case for whitespace here
- if (character == NULL) ...
- */
+
+ const gchar *show_char = NULL;
+ if (character)
+ show_char = character;
+ else {
+ /* TODO: We need a logical ID for this: */
+ show_char = _("whitespace");
+ }
+
/* TODO: Should this show just this one bad character or all the not-allowed characters? */
- gchar *message = g_strdup_printf (_CS("ckdg_ib_illegal_characters_entered"), character);
+ gchar *message = g_strdup_printf (_CS("ckdg_ib_illegal_characters_entered"), show_char);
show_error (GTK_WIDGET (self), message);
}
GtkWidget *box = gtk_vbox_new (FALSE, MODEST_MARGIN_NONE);
GtkWidget *label = gtk_label_new(_("mcen_ia_accountdetails"));
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
- gtk_label_set_max_width_chars (GTK_LABEL (label), 40);
+ gtk_widget_set_size_request (label, 600, -1);
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, MODEST_MARGIN_HALF);
gtk_widget_show (label);
modest_validating_entry_set_unallowed_characters (
MODEST_VALIDATING_ENTRY (self->entry_user_name), list_prevent);
modest_validating_entry_set_func(MODEST_VALIDATING_ENTRY(self->entry_user_name),
- on_entry_invalid_character, self);
+ on_entry_invalid_character, self);
g_list_free (list_prevent);
/* The username widgets: */
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),
- on_entry_invalid_character, self);
+ 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. */
GtkWidget *label = gtk_label_new(_("mcen_ia_emailsetup_setup_complete"));
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
- gtk_label_set_max_width_chars (GTK_LABEL (label), 40);
+ gtk_widget_set_size_request (label, 600, -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_label_set_max_width_chars (GTK_LABEL (label), 40);
-
- /* 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_widget_set_size_request (label, 400, -1);
+ gtk_widget_set_size_request (label, 600, -1);
gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
static GtkWidget* create_page_custom_incoming (ModestEasysetupWizardDialog *self)
{
GtkWidget *box = gtk_vbox_new (FALSE, MODEST_MARGIN_NONE);
+ GtkWidget *scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
+ GTK_POLICY_NEVER,
+ GTK_POLICY_AUTOMATIC);
/* Show note that account type cannot be changed in future: */
GtkWidget *label = gtk_label_new (_("mcen_ia_emailsetup_account_type"));
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
- gtk_label_set_max_width_chars (GTK_LABEL (label), 40);
+ gtk_widget_set_size_request (label, 600, -1);
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
gtk_widget_show (label);
gtk_widget_show (caption);
gtk_widget_show (GTK_WIDGET (box));
+
+ gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), box);
+ gtk_container_set_focus_vadjustment (GTK_CONTAINER (box),
+ gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled_window)));
+ gtk_widget_show (scrolled_window);
- return GTK_WIDGET (box);
+ return GTK_WIDGET (scrolled_window);
}
static void
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,
- NULL /* account_name, not known yet. */);
+ MODEST_CONNECTION_SPECIFIC_SMTP_WINDOW (self->specific_window), self->account_manager);
}
/* Show the window: */
GtkWidget *box = gtk_vbox_new (FALSE, MODEST_MARGIN_NONE);
GtkWidget *label = gtk_label_new(_("mcen_ia_emailsetup_setup_complete"));
gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+ gtk_widget_set_size_request (label, 600, -1);
+ 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.5);
+ gtk_widget_set_size_request (label, 600, -1);
+ gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
gtk_widget_show (label);
/* 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);
+ self->saved_account_name);
}
}
/* Add the common pages: */
gtk_notebook_append_page (notebook, self->page_welcome,
gtk_label_new (_("mcen_ti_emailsetup_welcome")));
+ gtk_container_child_set (GTK_CONTAINER (notebook),
+ self->page_welcome,
+ "tab-expand", TRUE,
+ "tab-fill", TRUE,
+ NULL);
+
gtk_notebook_append_page (notebook, self->page_account_details,
gtk_label_new (_("mcen_ti_accountdetails")));
+ gtk_container_child_set (GTK_CONTAINER (notebook),
+ self->page_account_details,
+ "tab-expand", TRUE,
+ "tab-fill", TRUE,
+ NULL);
+
gtk_notebook_append_page (notebook, self->page_user_details,
gtk_label_new (_("mcen_ti_emailsetup_userdetails")));
+ gtk_container_child_set (GTK_CONTAINER (notebook),
+ self->page_user_details,
+ "tab-expand", TRUE,
+ "tab-fill", TRUE,
+ NULL);
/* Create and add the easysetup-specific pages,
* because we need _some_ final page to enable the Next and Finish buttons: */
ModestEasysetupWizardDialog*
modest_easysetup_wizard_dialog_new (void)
-{
+{
+
return g_object_new (MODEST_TYPE_EASYSETUP_WIZARD_DIALOG, NULL);
}
gtk_notebook_append_page (notebook, self->page_custom_outgoing,
gtk_label_new (_("mcen_ti_emailsetup_outgoingdetails")));
- if (!gtk_widget_get_parent (GTK_WIDGET (self->page_complete_customsetup)))
+ if (!gtk_widget_get_parent (GTK_WIDGET (self->page_complete_customsetup))) {
gtk_notebook_append_page (notebook, self->page_complete_customsetup,
gtk_label_new (_("mcen_ti_emailsetup_complete")));
+ gtk_container_child_set (GTK_CONTAINER (notebook),
+ self->page_complete_customsetup,
+ "tab-expand", TRUE,
+ "tab-fill", TRUE,
+ NULL);
+ }
/* This is unnecessary with GTK+ 2.10: */
modest_wizard_dialog_force_title_update (MODEST_WIZARD_DIALOG(self));
if(!self->page_complete_easysetup)
self->page_complete_easysetup = create_page_complete_easysetup (self);
- if (!gtk_widget_get_parent (GTK_WIDGET (self->page_complete_easysetup)))
+ if (!gtk_widget_get_parent (GTK_WIDGET (self->page_complete_easysetup))) {
gtk_notebook_append_page (notebook, self->page_complete_easysetup,
gtk_label_new (_("mcen_ti_emailsetup_complete")));
+ gtk_container_child_set (GTK_CONTAINER (notebook),
+ self->page_complete_easysetup,
+ "tab-expand", TRUE,
+ "tab-fill", TRUE,
+ NULL);
+ }
/* This is unnecessary with GTK+ 2.10: */
modest_wizard_dialog_force_title_update (MODEST_WIZARD_DIALOG(self));
}
}
+static gchar*
+get_entered_account_title (ModestEasysetupWizardDialog *account_wizard)
+{
+ const gchar* account_title =
+ gtk_entry_get_text (GTK_ENTRY (account_wizard->entry_account_title));
+ if (!account_title || (strlen (account_title) == 0))
+ return NULL;
+ else {
+ /* Strip it of whitespace at the start and end: */
+ gchar *result = g_strdup (account_title);
+ result = g_strstrip (result);
+
+ if (!result)
+ return NULL;
+
+ if (strlen (result) == 0) {
+ g_free (result);
+ return NULL;
+ }
+
+ return result;
+ }
+}
+
static gboolean
on_before_next (ModestWizardDialog *dialog, GtkWidget *current_page, GtkWidget *next_page)
{
*/
if (current_page == account_wizard->page_account_details) {
/* Check that the title is not already in use: */
- const gchar* account_title = gtk_entry_get_text (GTK_ENTRY (account_wizard->entry_account_title));
- if ((!account_title) || (strlen(account_title) == 0))
+ gchar* account_title = get_entered_account_title (account_wizard);
+ if (!account_title)
return FALSE;
/* Aavoid a clash with an existing display name: */
}
else if (next_page == account_wizard->page_custom_outgoing) {
set_default_custom_servernames (account_wizard);
- /* Check if the server supports secure authentication */
+
+ /* Check if the server supports secure authentication */
const ModestConnectionProtocol security_incoming =
modest_serversecurity_combo_box_get_active_serversecurity (
MODEST_SERVERSECURITY_COMBO_BOX (
GTK_TOGGLE_BUTTON (account_wizard->checkbox_incoming_auth))
&& !modest_protocol_info_is_secure(security_incoming))
{
- GList* methods = check_for_supported_auth_methods(account_wizard);
- if (!methods)
- {
- g_list_free(methods);
+ if (!check_has_supported_auth_methods (account_wizard))
return FALSE;
- }
- g_list_free(methods);
}
}
const gchar* text = gtk_entry_get_text (GTK_ENTRY (entry));
if ((!text) || (strlen(text) == 0))
return TRUE;
- else
- return FALSE;
+ else {
+ /* Strip it of whitespace at the start and end: */
+ gchar *stripped = g_strdup (text);
+ stripped = g_strstrip (stripped);
+
+ if (!stripped)
+ return TRUE;
+
+ const gboolean result = (strlen (stripped) == 0);
+
+ g_free (stripped);
+ return result;
+ }
}
static void
static void
show_error (GtkWidget *parent_widget, const gchar* text)
{
+ //TODO: Apparently this doesn't show anything in Maemo Bora:
hildon_banner_show_information(parent_widget, NULL, text);
#if 0
{
ModestEasysetupWizardDialogPrivate *priv = WIZARD_DIALOG_GET_PRIVATE (self);
- const gchar* display_name = gtk_entry_get_text (GTK_ENTRY (self->entry_account_title));
+ gchar* display_name = get_entered_account_title (self);
/* Some checks: */
if (!display_name)
* and changed that name accordingly,
* but let's check again just in case:
*/
- if (modest_account_mgr_account_with_display_name_exists (self->account_manager, display_name))
+ if (modest_account_mgr_account_with_display_name_exists (self->account_manager, display_name)) {
+ g_free (display_name);
return FALSE;
+ }
/* Increment the non-user visible name if necessary,
* based on the display name: */
*/
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->checkbox_incoming_auth)) &&
- !modest_protocol_info_is_secure(protocol_security_incoming))
- {
- GList* methods = check_for_supported_auth_methods(self);
- if (!methods)
- return FALSE;
- else
- protocol_authentication_incoming = (ModestAuthProtocol) (GPOINTER_TO_INT(methods->data));
+ !modest_protocol_info_is_secure(protocol_security_incoming)) {
+ protocol_authentication_incoming = check_first_supported_auth_method (self);
}
- else
+ else {
protocol_authentication_incoming = MODEST_PROTOCOL_AUTH_PASSWORD;
+ }
}
/* First we add the 2 server accounts, and then we add the account that uses them.
if (!created) {
/* TODO: Provide a Logical ID for the text: */
show_error (GTK_WIDGET (self), _("An error occurred while creating the incoming account."));
+ g_free (display_name);
return FALSE;
}
if (!created) {
/* TODO: Provide a Logical ID for the text: */
show_error (GTK_WIDGET (self), _("An error occurred while creating the outgoing account."));
+ g_free (display_name);
return FALSE;
}
if (!created) {
/* TODO: Provide a Logical ID for the text: */
show_error (GTK_WIDGET (self), _("An error occurred while creating the account."));
+ g_free (display_name);
return FALSE;
}
MODEST_ACCOUNT_RETRIEVE, retrieve, FALSE /* not server account */);
/* Save the connection-specific SMTP server accounts. */
+ modest_account_mgr_set_use_connection_specific_smtp(self->account_manager, account_name,
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self->checkbox_outgoing_smtp_specific)));
gboolean result = TRUE;
if (self->specific_window)
result = modest_connection_specific_smtp_window_save_server_accounts (
- MODEST_CONNECTION_SPECIFIC_SMTP_WINDOW (self->specific_window), account_name);
+ MODEST_CONNECTION_SPECIFIC_SMTP_WINDOW (self->specific_window));
g_free (self->saved_account_name);
self->saved_account_name = g_strdup (account_name);
g_free (account_name);
-
+ g_free (display_name);
+
return result;
}