aboutsummaryrefslogtreecommitdiffstats
path: root/modules/addressbook/e-book-shell-view.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2009-12-19 07:23:48 +0800
committerMatthew Barnes <mbarnes@redhat.com>2009-12-19 11:38:00 +0800
commit4cbbdedf522a6ac10df93a128bbf25f67173d66e (patch)
treefab7bf95e0927e4fa98c58a659e310afff7153ee /modules/addressbook/e-book-shell-view.c
parenta1efb837566cdac798cd8777dd34e06e9782cf61 (diff)
downloadgsoc2013-evolution-4cbbdedf522a6ac10df93a128bbf25f67173d66e.tar
gsoc2013-evolution-4cbbdedf522a6ac10df93a128bbf25f67173d66e.tar.gz
gsoc2013-evolution-4cbbdedf522a6ac10df93a128bbf25f67173d66e.tar.bz2
gsoc2013-evolution-4cbbdedf522a6ac10df93a128bbf25f67173d66e.tar.lz
gsoc2013-evolution-4cbbdedf522a6ac10df93a128bbf25f67173d66e.tar.xz
gsoc2013-evolution-4cbbdedf522a6ac10df93a128bbf25f67173d66e.tar.zst
gsoc2013-evolution-4cbbdedf522a6ac10df93a128bbf25f67173d66e.zip
Refactor the EShell search API.
Move the search interface to a new widget: EShellSearchbar The current search rule is now stored in EShellView, and the search context in EShellViewClass similar to GalViewCollection (since it's class-specific, not instance-specific). Also add a couple new signals to EShellView: "clear-search" and "custom-search" ("custom" refers to an advanced search or a saved search -- something more complex than a quick search). Still working out a few kinks. The search entry is clearly trying to be too many things. We need a different way of indicating that you're looking at search results. Perhaps a search results banner similar to Nautilus.
Diffstat (limited to 'modules/addressbook/e-book-shell-view.c')
-rw-r--r--modules/addressbook/e-book-shell-view.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/modules/addressbook/e-book-shell-view.c b/modules/addressbook/e-book-shell-view.c
index ebbf3e79d0..fa5e5bbe29 100644
--- a/modules/addressbook/e-book-shell-view.c
+++ b/modules/addressbook/e-book-shell-view.c
@@ -127,6 +127,8 @@ book_shell_view_execute_search (EShellView *shell_view)
EBookShellContent *book_shell_content;
EShellWindow *shell_window;
EShellContent *shell_content;
+ EShellSearchbar *searchbar;
+ EActionComboBox *combo_box;
GtkRadioAction *action;
EAddressbookView *view;
EAddressbookModel *model;
@@ -141,25 +143,29 @@ book_shell_view_execute_search (EShellView *shell_view)
if (priv->search_locked)
return;
- shell_content = e_shell_view_get_shell_content (shell_view);
shell_window = e_shell_view_get_shell_window (shell_view);
+ shell_content = e_shell_view_get_shell_content (shell_view);
+
+ book_shell_content = E_BOOK_SHELL_CONTENT (shell_content);
+ searchbar = e_book_shell_content_get_searchbar (book_shell_content);
+
action = GTK_RADIO_ACTION (ACTION (CONTACT_SEARCH_ANY_FIELD_CONTAINS));
search_id = gtk_radio_action_get_current_value (action);
if (search_id == CONTACT_SEARCH_ADVANCED) {
- query = e_shell_content_get_search_rule_as_string (shell_content);
+ query = e_shell_view_get_search_query (shell_view);
- if (!query)
+ if (query == NULL)
query = g_strdup ("");
/* internal pointer, no need to free it */
- advanced_search = e_shell_content_get_search_rule (shell_content);
+ advanced_search = e_shell_view_get_search_rule (shell_view);
} else {
const gchar *text;
const gchar *format;
GString *string;
- text = e_shell_content_get_search_text (shell_content);
+ text = e_shell_searchbar_get_search_text (searchbar);
if (text == NULL || *text == '\0') {
text = "";
@@ -194,7 +200,8 @@ book_shell_view_execute_search (EShellView *shell_view)
}
/* Apply selected filter. */
- filter_id = e_shell_content_get_filter_value (shell_content);
+ combo_box = e_shell_searchbar_get_filter_combo_box (searchbar);
+ filter_id = e_action_combo_box_get_current_value (combo_box);
switch (filter_id) {
case CONTACT_FILTER_ANY_CATEGORY:
break;
@@ -226,11 +233,11 @@ book_shell_view_execute_search (EShellView *shell_view)
}
/* Submit the query. */
- book_shell_content = E_BOOK_SHELL_CONTENT (shell_content);
view = e_book_shell_content_get_current_view (book_shell_content);
model = e_addressbook_view_get_model (view);
e_addressbook_model_set_query (model, query);
- e_addressbook_view_set_search (view, filter_id, search_id, search_text, advanced_search);
+ e_addressbook_view_set_search (
+ view, filter_id, search_id, search_text, advanced_search);
g_free (query);
g_free (search_text);