diff --git a/sflphone-client-gnome/src/contacts/addressbook.c b/sflphone-client-gnome/src/contacts/addressbook.c index d6d40876fa2b72553bf1e098a5425096d1216aa7..2d202a05f110bdf1e460f55074a3ce8d5594bc7e 100644 --- a/sflphone-client-gnome/src/contacts/addressbook.c +++ b/sflphone-client-gnome/src/contacts/addressbook.c @@ -113,9 +113,7 @@ addressbook_config_books() book_data = books_get_book_data_by_uid (*config_book_uid); // If book_data exists - if (book_data) - book_data->active = TRUE; - else + if (!book_data) ERROR ("Addressbook: Error: Could not open book"); } diff --git a/sflphone-client-gnome/src/contacts/addressbook/eds.c b/sflphone-client-gnome/src/contacts/addressbook/eds.c index c4b89b5ac32e9b20e16bbc00005d6128ebd6269a..2e5b879ca189e151f90afaa94d02eadcea84d7ba 100644 --- a/sflphone-client-gnome/src/contacts/addressbook/eds.c +++ b/sflphone-client-gnome/src/contacts/addressbook/eds.c @@ -68,6 +68,7 @@ int remaining_books_to_open; */ static gchar *current_uri = NULL; static gchar *current_uid = NULL; +static gchar *current_name = NULL; /** * Freeing a hit instance @@ -450,10 +451,17 @@ init (OpenAsyncHandler callback UNUSED) current_uid = NULL; } + if (current_name) { + g_free (current_name); + current_name = NULL; + } + gchar *absuri, *reluri; absuri = g_strdup (e_source_peek_absolute_uri (default_source)); reluri = g_strdup (e_source_peek_relative_uri (default_source)); + current_name = g_strdup (e_source_peek_name (default_source)); + current_uid = g_strdup (e_source_peek_uid (default_source)); if (strcmp (absuri+strlen (absuri)-1, "/") == 0) @@ -499,7 +507,6 @@ fill_books_data () ESourceGroup *group = l->data; GSList *sources = NULL, *m; gchar *absuri; - GError *err; absuri = g_strdup (e_source_group_peek_base_uri (group)); @@ -519,8 +526,6 @@ fill_books_data () else book_data->uri = g_strjoin ("/", absuri, e_source_peek_relative_uri (source), NULL); - book_data->ebook = e_book_new (source, &err); - books_data = g_slist_prepend (books_data, book_data); } @@ -604,6 +609,17 @@ set_current_addressbook (const gchar *name) if (strcmp (book_data->name, name) == 0) { current_uri = book_data->uri; current_uid = book_data->uid; + current_name = book_data->name; } } } + + +const gchar * +get_current_addressbook (void) +{ + if (current_name) + return current_name; + else + return "Default"; +} diff --git a/sflphone-client-gnome/src/contacts/addressbook/eds.h b/sflphone-client-gnome/src/contacts/addressbook/eds.h index 4cac91d1be8f1d711a16553bbeff3975ed9af394..6e4ca02177da61f5486ca28af1d8699de8156471 100644 --- a/sflphone-client-gnome/src/contacts/addressbook/eds.h +++ b/sflphone-client-gnome/src/contacts/addressbook/eds.h @@ -70,10 +70,9 @@ typedef struct _Hit { */ typedef struct { gchar *uid; - gchar *name; gchar *uri; + gchar *name; gboolean active; - EBook *ebook; } book_data_t; GSList *books_data; @@ -152,6 +151,12 @@ addressbook_get_books_data(); void set_current_addressbook (const gchar *name); +/** + * Return current addressbook name + */ +const gchar * +get_current_addressbook (void); + G_END_DECLS #endif /* __EDS_H__ */ diff --git a/sflphone-client-gnome/src/contacts/searchbar.c b/sflphone-client-gnome/src/contacts/searchbar.c index 4f62b64bb09a2fb62a2410fabeb0aefb6c361302..21ee1724b35ef77176b2336b26e286f9743b5e04 100644 --- a/sflphone-client-gnome/src/contacts/searchbar.c +++ b/sflphone-client-gnome/src/contacts/searchbar.c @@ -36,6 +36,7 @@ #include <contacts/addressbook/eds.h> GtkWidget * searchbox; +GtkWidget * addressbookentry; static GtkWidget *menu = NULL; @@ -73,6 +74,16 @@ static void select_addressbook (GtkWidget *item, GtkEntry *entry) DEBUG ("Searchbar: Selected item label %s", gtk_menu_item_get_label (item)); set_current_addressbook (gtk_menu_item_get_label (item)); + + gchar *name = get_current_addressbook(); + gchar *searching = g_strjoin ("", "Search contacts in\n", name, NULL); + + gtk_entry_set_icon_tooltip_text (GTK_ENTRY (addressbookentry), GTK_ENTRY_ICON_PRIMARY, + searching); + + addressbook_search (GTK_ENTRY (addressbookentry)); + + g_free (searching); } static void search_all (GtkWidget *item UNUSED, GtkEntry *entry) @@ -288,43 +299,47 @@ GtkWidget* contacts_searchbar_new () GdkPixbuf *pixbuf; - searchbox = gtk_entry_new(); - gtk_entry_set_icon_from_stock (GTK_ENTRY (searchbox), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR); + gchar *current_addressbook = get_current_addressbook(); + gchar *tooltip_text = g_strjoin ("", "Search contacts in\n", current_addressbook, NULL); + + addressbookentry = gtk_entry_new(); + gtk_entry_set_icon_from_stock (GTK_ENTRY (addressbookentry), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR); pixbuf = gdk_pixbuf_new_from_file (ICONS_DIR "/stock_person.svg", NULL); - gtk_entry_set_icon_from_pixbuf (GTK_ENTRY (searchbox), GTK_ENTRY_ICON_PRIMARY, pixbuf); - gtk_entry_set_icon_tooltip_text (GTK_ENTRY (searchbox), GTK_ENTRY_ICON_PRIMARY, - "Search contacts\n" - "GNOME evolution backend"); + gtk_entry_set_icon_from_pixbuf (GTK_ENTRY (addressbookentry), GTK_ENTRY_ICON_PRIMARY, pixbuf); + gtk_entry_set_icon_tooltip_text (GTK_ENTRY (addressbookentry), GTK_ENTRY_ICON_PRIMARY, + tooltip_text); // Set the clean insensitive - text_changed_cb (GTK_ENTRY (searchbox), NULL); + text_changed_cb (GTK_ENTRY (addressbookentry), NULL); - g_signal_connect (searchbox, "notify::text", G_CALLBACK (text_changed_cb), NULL); - g_signal_connect (searchbox, "icon-press", G_CALLBACK (icon_press_cb), NULL); + g_signal_connect (addressbookentry, "notify::text", G_CALLBACK (text_changed_cb), NULL); + g_signal_connect (addressbookentry, "icon-press", G_CALLBACK (icon_press_cb), NULL); #else GtkWidget *image; - searchbox = sexy_icon_entry_new(); + addressbookentry = sexy_icon_entry_new(); image = gtk_image_new_from_stock (GTK_STOCK_FIND , GTK_ICON_SIZE_SMALL_TOOLBAR); - sexy_icon_entry_set_icon (SEXY_ICON_ENTRY (searchbox), SEXY_ICON_ENTRY_PRIMARY , GTK_IMAGE (image)); - sexy_icon_entry_add_clear_button (SEXY_ICON_ENTRY (searchbox)); + sexy_icon_entry_set_icon (SEXY_ICON_ENTRY (addressbookentry), SEXY_ICON_ENTRY_PRIMARY , GTK_IMAGE (image)); + sexy_icon_entry_add_clear_button (SEXY_ICON_ENTRY (addressbookentry)); #endif - gtk_entry_set_activates_default (GTK_ENTRY (searchbox), TRUE); - g_signal_connect_after (GTK_ENTRY (searchbox), "activate", G_CALLBACK (searchbar_addressbook_activated), NULL); + gtk_entry_set_activates_default (GTK_ENTRY (addressbookentry), TRUE); + g_signal_connect_after (GTK_ENTRY (addressbookentry), "activate", G_CALLBACK (searchbar_addressbook_activated), NULL); - g_signal_connect_after (GTK_ENTRY (searchbox), "changed", G_CALLBACK (searchbar_entry_changed), NULL); + g_signal_connect_after (GTK_ENTRY (addressbookentry), "changed", G_CALLBACK (searchbar_entry_changed), NULL); - g_signal_connect_after (G_OBJECT (searchbox), "focus-in-event", + g_signal_connect_after (G_OBJECT (addressbookentry), "focus-in-event", G_CALLBACK (focus_on_searchbar_in), NULL); - g_signal_connect_after (G_OBJECT (searchbox), "focus-out-event", + g_signal_connect_after (G_OBJECT (addressbookentry), "focus-out-event", G_CALLBACK (focus_on_searchbar_out), NULL); - gtk_box_pack_start (GTK_BOX (ret), searchbox, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (ret), addressbookentry, TRUE, TRUE, 0); + + g_free (tooltip_text); return ret; }