diff options
author | Jon Trowbridge <trow@ximian.com> | 2001-04-17 04:28:13 +0800 |
---|---|---|
committer | Jon Trowbridge <trow@src.gnome.org> | 2001-04-17 04:28:13 +0800 |
commit | a35d86361dbbf29c3b7da3a481c77c6a876ae8f4 (patch) | |
tree | 79a784b7f0a5272341c60890ecafe75be47d5b40 /addressbook/gui/component/select-names/e-select-names-completion.c | |
parent | a8d2769cabc1889fd35e97d8494b824d06c0cde1 (diff) | |
download | gsoc2013-evolution-a35d86361dbbf29c3b7da3a481c77c6a876ae8f4.tar.gz gsoc2013-evolution-a35d86361dbbf29c3b7da3a481c77c6a876ae8f4.tar.zst gsoc2013-evolution-a35d86361dbbf29c3b7da3a481c77c6a876ae8f4.zip |
Added.
2001-04-16 Jon Trowbridge <trow@ximian.com>
* backend/ebook/e-destination.c (e_destination_get_name): Added.
* gui/component/select-names/e-select-names.c
(real_add_address_cb): Use e_select_names_model_append. It's
nicer.
* gui/component/select-names/e-select-names-model.c
(e_select_names_model_append): Added.
* gui/component/select-names/e-select-names-completion.c
(book_query_process_card_list): Filter out completion matches that
don't have an associated e-mail address.
(book_query_score): Give a bonus to the primary address, so that
it always comes up first in the completion results.
* gui/component/e-address-popup.c (e_address_popup_refresh_names):
Convert utf8 strings into gtk strings before displaying.
svn path=/trunk/; revision=9390
Diffstat (limited to 'addressbook/gui/component/select-names/e-select-names-completion.c')
-rw-r--r-- | addressbook/gui/component/select-names/e-select-names-completion.c | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/addressbook/gui/component/select-names/e-select-names-completion.c b/addressbook/gui/component/select-names/e-select-names-completion.c index 88ab176bf6..cebd57791f 100644 --- a/addressbook/gui/component/select-names/e-select-names-completion.c +++ b/addressbook/gui/component/select-names/e-select-names-completion.c @@ -36,6 +36,7 @@ #include <addressbook/backend/ebook/e-book-util.h> #include <addressbook/backend/ebook/e-destination.h> +#include <addressbook/backend/ebook/e-card-simple.h> #include "e-select-names-completion.h" struct _ESelectNamesCompletionPrivate { @@ -416,12 +417,30 @@ book_query_score (ESelectNamesCompletion *comp, EDestination *dest, double *scor if (best_string) { ECard *card = e_destination_get_card (dest); if (e_list_length (card->email) > 1) { + ECardSimple *simp; const gchar *email = e_destination_get_email (dest); + const gchar *simp_email; + if (email && strstr (best_string, email) == NULL) { gchar *tmp = g_strdup_printf ("%s <%s>", best_string, email); g_free (best_string); best_string = tmp; } + + /* Give a small bonus to the primary/secondary e-mail address, so that they will + always come in the correct order in the listing. */ + if (email) { + simp = e_card_simple_new (card); + simp_email = e_card_simple_get_email (simp, E_CARD_SIMPLE_EMAIL_ID_EMAIL); + if (simp_email && !g_strcasecmp (simp_email, email)) { + best_score += 0.2; + } + simp_email = e_card_simple_get_email (simp, E_CARD_SIMPLE_EMAIL_ID_EMAIL_2); + if (simp_email && !g_strcasecmp (simp_email, email)) { + best_score += 0.1; + } + gtk_object_unref (GTK_OBJECT (simp)); + } } } @@ -439,20 +458,27 @@ book_query_process_card_list (ESelectNamesCompletion *comp, const GList *cards) gint i; for (i=0; i<e_list_length (card->email); ++i) { EDestination *dest = e_destination_new (); + const gchar *email; gchar *match_text; double score = -1; e_destination_set_card (dest, card, i); + email = e_destination_get_email (dest); + + if (email && *email) { - match_text = book_query_score (comp, dest, &score); - if (match_text && score > 0) { - - e_completion_found_match_full (E_COMPLETION (comp), match_text, score, dest, - (GtkDestroyNotify) gtk_object_unref); + match_text = book_query_score (comp, dest, &score); + if (match_text && score > 0) { + + e_completion_found_match_full (E_COMPLETION (comp), match_text, score, dest, + (GtkDestroyNotify) gtk_object_unref); + } else { + gtk_object_unref (GTK_OBJECT (dest)); + } + g_free (match_text); } else { gtk_object_unref (GTK_OBJECT (dest)); } - g_free (match_text); } } @@ -902,7 +928,7 @@ e_select_names_completion_begin (ECompletion *comp, const gchar *text, gint pos, ESelectNamesCompletion *selcomp = E_SELECT_NAMES_COMPLETION (comp); const gchar *str; gint index, j; - + g_return_if_fail (comp != NULL); g_return_if_fail (E_IS_SELECT_NAMES_COMPLETION (comp)); g_return_if_fail (text != NULL); |