Skip to content
Snippets Groups Projects
Commit 5e60aeda authored by Alexandre Savard's avatar Alexandre Savard
Browse files

[#3854] Perform addressbook search if entry not empty on selecting new books

parent 8ac64bc1
Branches
Tags
No related merge requests found
...@@ -113,9 +113,7 @@ addressbook_config_books() ...@@ -113,9 +113,7 @@ addressbook_config_books()
book_data = books_get_book_data_by_uid (*config_book_uid); book_data = books_get_book_data_by_uid (*config_book_uid);
// If book_data exists // If book_data exists
if (book_data) if (!book_data)
book_data->active = TRUE;
else
ERROR ("Addressbook: Error: Could not open book"); ERROR ("Addressbook: Error: Could not open book");
} }
......
...@@ -68,6 +68,7 @@ int remaining_books_to_open; ...@@ -68,6 +68,7 @@ int remaining_books_to_open;
*/ */
static gchar *current_uri = NULL; static gchar *current_uri = NULL;
static gchar *current_uid = NULL; static gchar *current_uid = NULL;
static gchar *current_name = NULL;
/** /**
* Freeing a hit instance * Freeing a hit instance
...@@ -450,10 +451,17 @@ init (OpenAsyncHandler callback UNUSED) ...@@ -450,10 +451,17 @@ init (OpenAsyncHandler callback UNUSED)
current_uid = NULL; current_uid = NULL;
} }
if (current_name) {
g_free (current_name);
current_name = NULL;
}
gchar *absuri, *reluri; gchar *absuri, *reluri;
absuri = g_strdup (e_source_peek_absolute_uri (default_source)); absuri = g_strdup (e_source_peek_absolute_uri (default_source));
reluri = g_strdup (e_source_peek_relative_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)); current_uid = g_strdup (e_source_peek_uid (default_source));
if (strcmp (absuri+strlen (absuri)-1, "/") == 0) if (strcmp (absuri+strlen (absuri)-1, "/") == 0)
...@@ -499,7 +507,6 @@ fill_books_data () ...@@ -499,7 +507,6 @@ fill_books_data ()
ESourceGroup *group = l->data; ESourceGroup *group = l->data;
GSList *sources = NULL, *m; GSList *sources = NULL, *m;
gchar *absuri; gchar *absuri;
GError *err;
absuri = g_strdup (e_source_group_peek_base_uri (group)); absuri = g_strdup (e_source_group_peek_base_uri (group));
...@@ -519,8 +526,6 @@ fill_books_data () ...@@ -519,8 +526,6 @@ fill_books_data ()
else else
book_data->uri = g_strjoin ("/", absuri, e_source_peek_relative_uri (source), NULL); 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); books_data = g_slist_prepend (books_data, book_data);
} }
...@@ -604,6 +609,17 @@ set_current_addressbook (const gchar *name) ...@@ -604,6 +609,17 @@ set_current_addressbook (const gchar *name)
if (strcmp (book_data->name, name) == 0) { if (strcmp (book_data->name, name) == 0) {
current_uri = book_data->uri; current_uri = book_data->uri;
current_uid = book_data->uid; 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";
} }
...@@ -70,10 +70,9 @@ typedef struct _Hit { ...@@ -70,10 +70,9 @@ typedef struct _Hit {
*/ */
typedef struct { typedef struct {
gchar *uid; gchar *uid;
gchar *name;
gchar *uri; gchar *uri;
gchar *name;
gboolean active; gboolean active;
EBook *ebook;
} book_data_t; } book_data_t;
GSList *books_data; GSList *books_data;
...@@ -152,6 +151,12 @@ addressbook_get_books_data(); ...@@ -152,6 +151,12 @@ addressbook_get_books_data();
void void
set_current_addressbook (const gchar *name); set_current_addressbook (const gchar *name);
/**
* Return current addressbook name
*/
const gchar *
get_current_addressbook (void);
G_END_DECLS G_END_DECLS
#endif /* __EDS_H__ */ #endif /* __EDS_H__ */
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include <contacts/addressbook/eds.h> #include <contacts/addressbook/eds.h>
GtkWidget * searchbox; GtkWidget * searchbox;
GtkWidget * addressbookentry;
static GtkWidget *menu = NULL; static GtkWidget *menu = NULL;
...@@ -73,6 +74,16 @@ static void select_addressbook (GtkWidget *item, GtkEntry *entry) ...@@ -73,6 +74,16 @@ static void select_addressbook (GtkWidget *item, GtkEntry *entry)
DEBUG ("Searchbar: Selected item label %s", gtk_menu_item_get_label (item)); DEBUG ("Searchbar: Selected item label %s", gtk_menu_item_get_label (item));
set_current_addressbook (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) static void search_all (GtkWidget *item UNUSED, GtkEntry *entry)
...@@ -288,43 +299,47 @@ GtkWidget* contacts_searchbar_new () ...@@ -288,43 +299,47 @@ GtkWidget* contacts_searchbar_new ()
GdkPixbuf *pixbuf; GdkPixbuf *pixbuf;
searchbox = gtk_entry_new(); gchar *current_addressbook = get_current_addressbook();
gtk_entry_set_icon_from_stock (GTK_ENTRY (searchbox), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR); 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); 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_from_pixbuf (GTK_ENTRY (addressbookentry), GTK_ENTRY_ICON_PRIMARY, pixbuf);
gtk_entry_set_icon_tooltip_text (GTK_ENTRY (searchbox), GTK_ENTRY_ICON_PRIMARY, gtk_entry_set_icon_tooltip_text (GTK_ENTRY (addressbookentry), GTK_ENTRY_ICON_PRIMARY,
"Search contacts\n" tooltip_text);
"GNOME evolution backend");
// Set the clean insensitive // 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 (addressbookentry, "notify::text", G_CALLBACK (text_changed_cb), NULL);
g_signal_connect (searchbox, "icon-press", G_CALLBACK (icon_press_cb), NULL); g_signal_connect (addressbookentry, "icon-press", G_CALLBACK (icon_press_cb), NULL);
#else #else
GtkWidget *image; 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); 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_set_icon (SEXY_ICON_ENTRY (addressbookentry), SEXY_ICON_ENTRY_PRIMARY , GTK_IMAGE (image));
sexy_icon_entry_add_clear_button (SEXY_ICON_ENTRY (searchbox)); sexy_icon_entry_add_clear_button (SEXY_ICON_ENTRY (addressbookentry));
#endif #endif
gtk_entry_set_activates_default (GTK_ENTRY (searchbox), TRUE); gtk_entry_set_activates_default (GTK_ENTRY (addressbookentry), TRUE);
g_signal_connect_after (GTK_ENTRY (searchbox), "activate", G_CALLBACK (searchbar_addressbook_activated), NULL); 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_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); 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; return ret;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment