aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/misc/e-filter-bar.c
diff options
context:
space:
mode:
authorPeter Williams <peterw@ximian.com>2002-07-24 00:03:07 +0800
committerPeter Williams <peterw@src.gnome.org>2002-07-24 00:03:07 +0800
commitef539c50b7678a286964ee8051b4ce4127dc0837 (patch)
treee27cdea6d54152b57b1b17b91c3e87c3f0bd33e8 /widgets/misc/e-filter-bar.c
parent7f9b336892181f3e1d25883804ac7f059d21071a (diff)
downloadgsoc2013-evolution-ef539c50b7678a286964ee8051b4ce4127dc0837.tar
gsoc2013-evolution-ef539c50b7678a286964ee8051b4ce4127dc0837.tar.gz
gsoc2013-evolution-ef539c50b7678a286964ee8051b4ce4127dc0837.tar.bz2
gsoc2013-evolution-ef539c50b7678a286964ee8051b4ce4127dc0837.tar.lz
gsoc2013-evolution-ef539c50b7678a286964ee8051b4ce4127dc0837.tar.xz
gsoc2013-evolution-ef539c50b7678a286964ee8051b4ce4127dc0837.tar.zst
gsoc2013-evolution-ef539c50b7678a286964ee8051b4ce4127dc0837.zip
Also perform a search on the query_changed signal, which is what gets
2002-07-22 Peter Williams <peterw@ximian.com> * folder-browser.c (folder_browser_gui_init): Also perform a search on the query_changed signal, which is what gets emitted when the Search menu is used. 2002-07-22 Peter Williams <peterw@ximian.com> * e-filter-bar.c (do_advanced): Break out the code for creating the advanced rule editor into a separate function, so that... (menubar_activated): ... can also create an Advanced dialog; needed when the Search menu's advanced button is used. (option_changed): Change this to call the function instead of having all the code to itself. * e-search-bar.h: Add id's for the FIND_NOW and CLEAR actions so that other code (eg, EFilterBar) doesn't get confused by an old id being used when the search-activated signal gets emitted. * e-search-bar.c (clear_search): Set the item_id to CLEAR before emitting the signal. (search_now_verb_cb): Just make this emit query_changed, as the button in the toolbar does. svn path=/trunk/; revision=17550
Diffstat (limited to 'widgets/misc/e-filter-bar.c')
-rw-r--r--widgets/misc/e-filter-bar.c85
1 files changed, 48 insertions, 37 deletions
diff --git a/widgets/misc/e-filter-bar.c b/widgets/misc/e-filter-bar.c
index 9863b8f294..261147d03c 100644
--- a/widgets/misc/e-filter-bar.c
+++ b/widgets/misc/e-filter-bar.c
@@ -132,6 +132,48 @@ rule_advanced_clicked (GtkWidget *dialog, int button, void *data)
}
static void
+do_advanced (ESearchBar *esb)
+{
+ EFilterBar *efb = (EFilterBar *)esb;
+
+ d(printf("Advanced search!\n"));
+
+ if (!efb->save_dialogue && !efb->setquery) {
+ GtkWidget *w, *gd;
+ FilterRule *rule;
+
+ if (efb->current_query)
+ rule = filter_rule_clone (efb->current_query);
+ else
+ rule = filter_rule_new ();
+
+ w = filter_rule_get_widget (rule, efb->context);
+ filter_rule_set_source (rule, FILTER_SOURCE_INCOMING);
+ gd = gnome_dialog_new (_("Advanced Search"),
+ GNOME_STOCK_BUTTON_OK,
+ _("Save"),
+ GNOME_STOCK_BUTTON_CANCEL,
+ NULL);
+ efb->save_dialogue = gd;
+ gnome_dialog_set_default (GNOME_DIALOG (gd), 0);
+
+ gtk_window_set_policy (GTK_WINDOW (gd), FALSE, TRUE, FALSE);
+ gtk_window_set_default_size (GTK_WINDOW (gd), 600, 300);
+ gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (gd)->vbox), w, TRUE, TRUE, 0);
+ gtk_widget_show (gd);
+ gtk_object_ref (GTK_OBJECT (rule));
+ gtk_object_set_data_full (GTK_OBJECT (gd), "rule", rule, (GtkDestroyNotify)gtk_object_unref);
+ gtk_signal_connect (GTK_OBJECT (gd), "clicked", rule_advanced_clicked, efb);
+ gtk_signal_connect (GTK_OBJECT (gd), "destroy", rule_editor_destroyed, efb);
+
+ e_search_bar_set_menu_sensitive (esb, E_FILTERBAR_SAVE_ID, FALSE);
+ gtk_widget_set_sensitive (esb->entry, FALSE);
+
+ gtk_widget_show (gd);
+ }
+}
+
+static void
menubar_activated (ESearchBar *esb, int id, void *data)
{
EFilterBar *efb = (EFilterBar *)esb;
@@ -181,6 +223,9 @@ menubar_activated (ESearchBar *esb, int id, void *data)
d(printf("Save menu\n"));
break;
+ case E_FILTERBAR_ADVANCED_ID:
+ do_advanced (esb);
+ break;
default:
if (id >= efb->menu_base && id < efb->menu_base + efb->menu_rules->len) {
GString *out = g_string_new ("");
@@ -214,43 +259,9 @@ option_changed (ESearchBar *esb, void *data)
d(printf("option changed, id = %d\n", id));
switch (id) {
- case E_FILTERBAR_ADVANCED_ID: {
- d(printf("Advanced search!\n"));
-
- if (!efb->save_dialogue && !efb->setquery) {
- GtkWidget *w, *gd;
- FilterRule *rule;
-
- if (efb->current_query)
- rule = filter_rule_clone (efb->current_query);
- else
- rule = filter_rule_new ();
-
- w = filter_rule_get_widget (rule, efb->context);
- filter_rule_set_source (rule, FILTER_SOURCE_INCOMING);
- gd = gnome_dialog_new (_("Advanced Search"),
- GNOME_STOCK_BUTTON_OK,
- _("Save"),
- GNOME_STOCK_BUTTON_CANCEL,
- NULL);
- efb->save_dialogue = gd;
- gnome_dialog_set_default (GNOME_DIALOG (gd), 0);
-
- gtk_window_set_policy (GTK_WINDOW (gd), FALSE, TRUE, FALSE);
- gtk_window_set_default_size (GTK_WINDOW (gd), 600, 300);
- gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (gd)->vbox), w, TRUE, TRUE, 0);
- gtk_widget_show (gd);
- gtk_object_ref (GTK_OBJECT (rule));
- gtk_object_set_data_full (GTK_OBJECT (gd), "rule", rule, (GtkDestroyNotify)gtk_object_unref);
- gtk_signal_connect (GTK_OBJECT (gd), "clicked", rule_advanced_clicked, efb);
- gtk_signal_connect (GTK_OBJECT (gd), "destroy", rule_editor_destroyed, efb);
-
- e_search_bar_set_menu_sensitive (esb, E_FILTERBAR_SAVE_ID, FALSE);
- gtk_widget_set_sensitive (esb->entry, FALSE);
-
- gtk_widget_show (gd);
- }
- } break;
+ case E_FILTERBAR_ADVANCED_ID:
+ do_advanced (esb);
+ break;
default:
if (id >= efb->option_base && id < efb->option_base + efb->option_rules->len) {
efb->current_query = (FilterRule *)efb->option_rules->pdata[id - efb->option_base];