X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmaemo%2Fmodest-address-book.c;h=53626b403bb9c537a3790187e2f03036078ac8b9;hb=87596c5aa5517ac7ba37e50664a969fcaaea72f9;hp=584884072ff07847bcca1d8e0e8edfeba74f94e1;hpb=4101edcca626f2e9621bfea4c9893178f74d5d90;p=modest diff --git a/src/maemo/modest-address-book.c b/src/maemo/modest-address-book.c index 5848840..53626b4 100644 --- a/src/maemo/modest-address-book.c +++ b/src/maemo/modest-address-book.c @@ -37,6 +37,7 @@ #include #include #include "modest-hildon-includes.h" +#include "modest-platform.h" #include #include #include @@ -132,16 +133,19 @@ modest_address_book_add_address (const gchar *address) } account = osso_abook_account_get (EVC_EMAIL, NULL, address); - dialog = osso_abook_add_to_contacts_dialog_new (contact_model, account); - g_object_unref (account); - gtk_dialog_run (GTK_DIALOG (dialog)); + if (account) + { + dialog = osso_abook_add_to_contacts_dialog_new (contact_model, account); + g_object_unref (account); + gtk_dialog_run (GTK_DIALOG (dialog)); - if (contact_model) { - g_object_unref (contact_model); - contact_model = NULL; - } + if (contact_model) { + g_object_unref (contact_model); + contact_model = NULL; + } - gtk_widget_destroy (dialog); + gtk_widget_destroy (dialog); + } } @@ -160,7 +164,6 @@ modest_address_book_select_addresses (ModestRecptEditor *recpt_editor) toplevel = gtk_widget_get_toplevel (GTK_WIDGET (recpt_editor)); - contact_model = osso_abook_contact_model_new (); if (!open_addressbook ()) { if (contact_model) { g_object_unref (contact_model); @@ -168,12 +171,12 @@ modest_address_book_select_addresses (ModestRecptEditor *recpt_editor) } return; } + contact_model = osso_abook_contact_model_new (); contact_view = osso_abook_contact_selector_new_basic (contact_model); osso_abook_contact_selector_set_minimum_selection (OSSO_ABOOK_CONTACT_SELECTOR (contact_view), 1); contact_dialog = osso_abook_select_dialog_new (OSSO_ABOOK_TREE_VIEW (contact_view)); - osso_abook_select_dialog_set_new_contact (OSSO_ABOOK_SELECT_DIALOG (contact_dialog), TRUE); gtk_window_set_title (GTK_WINDOW (contact_dialog), _("mcen_ti_select_recipients")); gtk_widget_show (contact_dialog); @@ -204,11 +207,6 @@ modest_address_book_select_addresses (ModestRecptEditor *recpt_editor) g_list_free (contacts_list); } - if (contact_view) { - g_object_unref (contact_view); - contact_view = NULL; - } - if (contact_model) { g_object_unref (contact_model); contact_model = NULL; @@ -328,7 +326,7 @@ commit_contact(EContact * contact) if (!contact || !book) return; -#ifdef MODEST_HILDON_VERSION_0 +#ifdef MODEST_HAVE_OLD_ABOOK osso_abook_contact_commit(contact, FALSE, book); #else osso_abook_contact_commit(contact, FALSE, book, NULL); @@ -452,13 +450,24 @@ run_add_email_addr_to_contact_dlg(const gchar * contact_name) result = gtk_dialog_run(GTK_DIALOG(add_email_addr_to_contact_dlg)); if (result == GTK_RESPONSE_ACCEPT) { + const gchar *invalid_char_offset = NULL; new_email_addr = g_strdup(gtk_entry_get_text(GTK_ENTRY(email_entry))); new_email_addr = g_strstrip(new_email_addr); - if (!modest_text_utils_validate_email_address (new_email_addr)) { + if (!modest_text_utils_validate_email_address (new_email_addr, &invalid_char_offset)) { gtk_widget_grab_focus(email_entry); + if ((invalid_char_offset != NULL)&&(*invalid_char_offset != '\0')) { + gchar *char_in_string = g_strdup_printf ("%c", *invalid_char_offset); + gchar *message = g_strdup_printf( + dgettext("hildon-common-strings", "ckdg_ib_illegal_characters_entered"), + char_in_string); + hildon_banner_show_information ( + add_email_addr_to_contact_dlg, NULL, message ); + g_free (message); + } else { + hildon_banner_show_information (add_email_addr_to_contact_dlg, NULL, _("mcen_ib_invalid_email")); + run_dialog = TRUE; + } gtk_editable_select_region((GtkEditable *) email_entry, 0, -1); - hildon_banner_show_information (add_email_addr_to_contact_dlg, NULL, _("mcen_ib_invalid_email")); - run_dialog = TRUE; g_free(new_email_addr); new_email_addr = NULL; } @@ -505,6 +514,10 @@ select_email_addrs_for_contact(GList * email_addr_list) _("mcen_bd_dialog_cancel"), GTK_RESPONSE_REJECT, NULL); gtk_dialog_set_has_separator(GTK_DIALOG(select_email_addr_dlg), FALSE); + /* Make the window approximately big enough, because it doesn't resize to be big enough + * for the window title text: */ + gtk_window_set_default_size (GTK_WINDOW (select_email_addr_dlg), 400, -1); + scrolledwindow = gtk_scrolled_window_new(NULL, NULL); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(select_email_addr_dlg)->vbox), scrolledwindow, TRUE, TRUE, 0); @@ -574,7 +587,6 @@ modest_address_book_check_names (ModestRecptEditor *recpt_editor) recipients = modest_recpt_editor_get_recipients (recpt_editor); last_length = g_utf8_strlen (recipients, -1); - /* g_message ("LENGTH %d", last_length); */ modest_text_utils_get_addresses_indexes (recipients, &start_indexes, &end_indexes); if (start_indexes == NULL) { @@ -591,6 +603,7 @@ modest_address_book_check_names (ModestRecptEditor *recpt_editor) gchar *address; gchar *start_ptr, *end_ptr; gint start_pos, end_pos; + const gchar *invalid_char_position = NULL; start_pos = (*((gint*) current_start->data)) + offset_delta; end_pos = (*((gint*) current_end->data)) + offset_delta; @@ -603,15 +616,19 @@ modest_address_book_check_names (ModestRecptEditor *recpt_editor) gtk_text_buffer_get_iter_at_offset (buffer, &end_iter, end_pos); gtk_text_buffer_select_range (buffer, &start_iter, &end_iter); -/* - g_message ("RANGE %d - %d", start_pos, end_pos); - - g_message ("ADDRESS %s", address); -*/ - if (!modest_text_utils_validate_recipient (address)) { - if (strstr (address, "@") == NULL) { + if (!modest_text_utils_validate_recipient (address, &invalid_char_position)) { + if ((invalid_char_position != NULL) && (*invalid_char_position != '\0')) { + gchar *char_in_string = g_strdup_printf("%c", *invalid_char_position); + gchar *message = g_strdup_printf( + dgettext("hildon-common-strings", "ckdg_ib_illegal_characters_entered"), + char_in_string); + g_free (char_in_string); + hildon_banner_show_information (NULL, NULL, message ); + g_free (message); + result = FALSE; + } else if (strstr (address, "@") == NULL) { /* here goes searching in addressbook */ - gchar *contact_id = NULL;; + gchar *contact_id = NULL; GSList *resolved_addresses = NULL; result = resolve_address (address, &resolved_addresses, &contact_id); @@ -631,12 +648,11 @@ modest_address_book_check_names (ModestRecptEditor *recpt_editor) new_length = g_utf8_strlen (recipients, -1); offset_delta = offset_delta + new_length - last_length; last_length = new_length; - /* g_message ("LENGTH %d", last_length); */ } } else { /* this address is not valid, select it and return control to user showing banner */ - hildon_banner_show_information (NULL, NULL, _("mcen_ib_invalid_mail")); + hildon_banner_show_information (NULL, NULL, _("mcen_ib_invalid_email")); result = FALSE; } } @@ -738,7 +754,7 @@ resolve_address (const gchar *address, GSList **resolved_addresses, gchar **cont if (resolved_contacts == NULL) { /* no matching contacts for the search string */ - hildon_banner_show_information (NULL, NULL, _("mcen_nc_no_matching_contacts")); + modest_platform_run_information_dialog (NULL, _("mcen_nc_no_matching_contacts")); return FALSE; }