diff options
author | Srinivasa Ragavan <sragavan@novell.com> | 2009-05-22 19:37:09 +0800 |
---|---|---|
committer | Srinivasa Ragavan <sragavan@novell.com> | 2009-05-22 20:13:57 +0800 |
commit | ff25805086bbd20226e4684f028912bdb29f0ae1 (patch) | |
tree | d653c21f6a4bb9d5799b0e16ee27bc6538c9f13c | |
parent | 9b0e9dc0aeffd627ce2bdea049cc7c47bb7418f0 (diff) | |
download | gsoc2013-evolution-ff25805086bbd20226e4684f028912bdb29f0ae1.tar.gz gsoc2013-evolution-ff25805086bbd20226e4684f028912bdb29f0ae1.tar.zst gsoc2013-evolution-ff25805086bbd20226e4684f028912bdb29f0ae1.zip |
Filter/Search bar changes for Anjal.
-rw-r--r-- | widgets/misc/Makefile.am | 5 | ||||
-rw-r--r-- | widgets/misc/e-filter-bar.c | 16 | ||||
-rw-r--r-- | widgets/misc/e-filter-bar.h | 6 | ||||
-rw-r--r-- | widgets/misc/e-search-bar.c | 153 | ||||
-rw-r--r-- | widgets/misc/e-search-bar.h | 3 | ||||
-rw-r--r-- | widgets/misc/e-spinner.c | 7 |
6 files changed, 134 insertions, 56 deletions
diff --git a/widgets/misc/Makefile.am b/widgets/misc/Makefile.am index 261a45f934..e40664be05 100644 --- a/widgets/misc/Makefile.am +++ b/widgets/misc/Makefile.am @@ -19,6 +19,7 @@ privsolib_LTLIBRARIES = \ libefilterbar.la widgetsincludedir = $(privincludedir)/misc +filterbarincludedir = $(privincludedir)/misc if ENABLE_PILOT_CONDUITS pilot_sources = e-pilot-settings.c @@ -157,9 +158,11 @@ libemiscwidgets_la_LIBADD = $(top_builddir)/e-util/libeutil.la \ $(EVOLUTON_MAIL_LIBS) \ $(ICONV_LIBS) +filterbarinclude_HEADERS = e-filter-bar.h + libefilterbar_la_SOURCES = \ e-filter-bar.c \ - e-filter-bar.h + $(filterbarinclude_HEADERS) libefilterbar_la_LDFLAGS = $(NO_UNDEFINED) diff --git a/widgets/misc/e-filter-bar.c b/widgets/misc/e-filter-bar.c index aeb4fa36f3..ad688d3305 100644 --- a/widgets/misc/e-filter-bar.c +++ b/widgets/misc/e-filter-bar.c @@ -960,12 +960,28 @@ e_filter_bar_new (RuleContext *context, EFilterBar *bar; bar = g_object_new (e_filter_bar_get_type (), NULL); + ((ESearchBar *)bar)->lite = FALSE; e_filter_bar_new_construct (context, systemrules, userrules, config, data, bar); return bar; } +EFilterBar * +e_filter_bar_lite_new (RuleContext *context, + const char *systemrules, + const char *userrules, + EFilterBarConfigRule config, + void *data) +{ + EFilterBar *bar; + + bar = g_object_new (e_filter_bar_get_type (), NULL); + ((ESearchBar *)bar)->lite = TRUE; + e_filter_bar_new_construct (context, systemrules, userrules, config, data, bar); + + return bar; +} void e_filter_bar_new_construct (RuleContext *context, diff --git a/widgets/misc/e-filter-bar.h b/widgets/misc/e-filter-bar.h index 41e3bde4ba..6d1b082e0f 100644 --- a/widgets/misc/e-filter-bar.h +++ b/widgets/misc/e-filter-bar.h @@ -124,6 +124,12 @@ EFilterBar *e_filter_bar_new (RuleContext *context, const char *userrules, EFilterBarConfigRule config, void *data); +EFilterBar *e_filter_bar_lite_new (RuleContext *context, + const char *systemrules, + const char *userrules, + EFilterBarConfigRule config, + void *data); + void e_filter_bar_new_construct (RuleContext *context, const char *systemrules, diff --git a/widgets/misc/e-search-bar.c b/widgets/misc/e-search-bar.c index 9cf158021c..d3d579178d 100644 --- a/widgets/misc/e-search-bar.c +++ b/widgets/misc/e-search-bar.c @@ -101,7 +101,8 @@ clear_button_state_changed (GtkWidget *clear_button, GtkStateType state, ESearch { g_return_if_fail (clear_button != NULL && search_bar != NULL); - update_clear_menuitem_sensitive (search_bar); + if (!search_bar->lite) + update_clear_menuitem_sensitive (search_bar); } static char * @@ -156,7 +157,8 @@ static void emit_query_changed (ESearchBar *esb) { g_signal_emit (esb, esb_signals [QUERY_CHANGED], 0); - update_clear_menuitem_sensitive (esb); + if (!esb->lite) + update_clear_menuitem_sensitive (esb); } static void @@ -169,8 +171,10 @@ emit_search_activated(ESearchBar *esb) g_signal_emit (esb, esb_signals [SEARCH_ACTIVATED], 0); - set_find_now_sensitive (esb, FALSE); - update_clear_menuitem_sensitive (esb); + if (!esb->lite) { + set_find_now_sensitive (esb, FALSE); + update_clear_menuitem_sensitive (esb); + } } static void @@ -368,12 +372,14 @@ entry_activated_cb (GtkWidget *widget, gtk_widget_modify_base (esb->entry, GTK_STATE_NORMAL, &(style->base[GTK_STATE_SELECTED])); gtk_widget_modify_text (esb->entry, GTK_STATE_NORMAL, &(style->text[GTK_STATE_SELECTED])); gtk_widget_modify_base (esb->icon_entry, GTK_STATE_NORMAL, &(style->base[GTK_STATE_SELECTED])); - gtk_widget_modify_base (esb->viewoption, GTK_STATE_NORMAL, &(style->base[GTK_STATE_SELECTED])); + if (!esb->lite) + gtk_widget_modify_base (esb->viewoption, GTK_STATE_NORMAL, &(style->base[GTK_STATE_SELECTED])); } else { gtk_widget_modify_base (esb->entry, GTK_STATE_NORMAL, NULL); gtk_widget_modify_text (esb->entry, GTK_STATE_NORMAL, NULL); gtk_widget_modify_base (esb->icon_entry, GTK_STATE_NORMAL, NULL); - gtk_widget_set_sensitive (esb->clear_button, FALSE); + if (!esb->lite) + gtk_widget_set_sensitive (esb->clear_button, FALSE); } emit_search_activated (esb); @@ -665,7 +671,7 @@ set_menu (ESearchBar *esb, esb->menu_items = g_slist_append (esb->menu_items, new_item); } - if (esb->ui_component != NULL) + if (!esb->lite && esb->ui_component != NULL) update_bonobo_menus (esb); } @@ -818,7 +824,7 @@ impl_dispose (GObject *object) /* These three we do need to unref, because we explicitly hold references to them. */ - if (esb->ui_component != NULL) { + if (!esb->lite && esb->ui_component != NULL) { bonobo_object_unref (BONOBO_OBJECT (esb->ui_component)); esb->ui_component = NULL; } @@ -989,60 +995,76 @@ e_search_bar_construct (ESearchBar *search_bar, g_signal_connect (G_OBJECT (search_bar->option_button), "button-press-event", G_CALLBACK(option_button_clicked_cb), search_bar); e_icon_entry_pack_widget (E_ICON_ENTRY (search_bar->icon_entry), search_bar->option_button, TRUE); - gtk_box_pack_start (GTK_BOX(search_bar->entry_box), search_bar->icon_entry, FALSE, FALSE, 0); + if (!search_bar->lite) + gtk_box_pack_start (GTK_BOX(search_bar->entry_box), search_bar->icon_entry, FALSE, FALSE, 0); + else + gtk_box_pack_start (GTK_BOX(search_bar->entry_box), search_bar->icon_entry, TRUE, TRUE, 0); + gtk_widget_show_all (search_bar->entry_box); gtk_widget_set_sensitive (search_bar->clear_button, FALSE); - /* Current View filter */ - search_bar->viewoption_box = gtk_hbox_new (0, FALSE); + if (!search_bar->lite) { + /* Current View filter */ + search_bar->viewoption_box = gtk_hbox_new (0, FALSE); - /* To Translators: The "Show: " label is followed by the Quick Search Dropdown Menu where you can choose - to display "All Messages", "Unread Messages", "Message with 'Important' Label" and so on... */ - label = gtk_label_new_with_mnemonic (_("Sho_w: ")); - gtk_widget_show (label); - gtk_box_pack_start (GTK_BOX(search_bar->viewoption_box), label, FALSE, FALSE, 0); + /* To Translators: The "Show: " label is followed by the Quick Search Dropdown Menu where you can choose + to display "All Messages", "Unread Messages", "Message with 'Important' Label" and so on... */ + label = gtk_label_new_with_mnemonic (_("Sho_w: ")); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX(search_bar->viewoption_box), label, FALSE, FALSE, 0); - search_bar->viewoption = gtk_option_menu_new (); - gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->viewoption); - gtk_box_pack_start (GTK_BOX(search_bar->viewoption_box), search_bar->viewoption, FALSE, TRUE, 0); - gtk_widget_show_all (search_bar->viewoption_box); - gtk_box_pack_start (GTK_BOX(search_bar), search_bar->viewoption_box, FALSE, FALSE, 0); + search_bar->viewoption = gtk_option_menu_new (); + gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->viewoption); + gtk_box_pack_start (GTK_BOX(search_bar->viewoption_box), search_bar->viewoption, FALSE, TRUE, 0); + gtk_widget_show_all (search_bar->viewoption_box); + gtk_box_pack_start (GTK_BOX(search_bar), search_bar->viewoption_box, FALSE, FALSE, 0); - hbox = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX(search_bar), hbox, FALSE, FALSE, 0); + hbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX(search_bar), hbox, FALSE, FALSE, 0); + } /* Search entry */ hbox = gtk_hbox_new (FALSE, 0); /* To Translators: The "Show: " label is followed by the Quick Search Text input field where one enters the term to search for */ - label = gtk_label_new_with_mnemonic (_("Sear_ch: ")); - gtk_widget_show (label); - gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX(hbox), search_bar->entry_box, FALSE, FALSE, 0); + if (!search_bar->lite) { + label = gtk_label_new_with_mnemonic (_("Sear_ch: ")); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX(hbox), search_bar->entry_box, FALSE, FALSE, 0); + gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->entry); + } else { + gtk_box_pack_start (GTK_BOX(hbox), search_bar->entry_box, TRUE, TRUE, 0); + } gtk_widget_show (search_bar->entry_box); - gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->entry); - - /* Search Scope Widgets */ - search_bar->scopeoption_box = gtk_hbox_new (0, FALSE); - gtk_box_set_spacing (GTK_BOX (search_bar->scopeoption_box), 3); - /* To Translators: The " in " label is part of the Quick Search Bar, example: - Search: | <user's_search_term> | in | Current Folder/All Accounts/Current Account */ - label = gtk_label_new_with_mnemonic (_(" i_n ")); - gtk_widget_show (label); - gtk_box_pack_start (GTK_BOX(search_bar->scopeoption_box), label, FALSE, FALSE, 0); - - search_bar->scopeoption = gtk_option_menu_new (); -/* g_signal_connect (GTK_OPTION_MENU (search_bar->scopeoption), "changed", scopeoption_changed_cb, search_bar); */ - gtk_box_pack_start (GTK_BOX(search_bar->scopeoption_box), search_bar->scopeoption, FALSE, FALSE, 0); - gtk_widget_show_all (search_bar->scopeoption_box); - gtk_widget_hide (hbox); - gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->scopeoption); - - gtk_box_pack_end (GTK_BOX(hbox), search_bar->scopeoption_box, FALSE, FALSE, 0); - gtk_widget_hide (search_bar->scopeoption_box); - - gtk_box_pack_end (GTK_BOX(search_bar), hbox, FALSE, FALSE, 0); + + if (!search_bar->lite) { + /* Search Scope Widgets */ + search_bar->scopeoption_box = gtk_hbox_new (0, FALSE); + gtk_box_set_spacing (GTK_BOX (search_bar->scopeoption_box), 3); + /* To Translators: The " in " label is part of the Quick Search Bar, example: + Search: | <user's_search_term> | in | Current Folder/All Accounts/Current Account */ + label = gtk_label_new_with_mnemonic (_(" i_n ")); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX(search_bar->scopeoption_box), label, FALSE, FALSE, 0); + + search_bar->scopeoption = gtk_option_menu_new (); + /* g_signal_connect (GTK_OPTION_MENU (search_bar->scopeoption), "changed", scopeoption_changed_cb, search_bar); */ + gtk_box_pack_start (GTK_BOX(search_bar->scopeoption_box), search_bar->scopeoption, FALSE, FALSE, 0); + gtk_widget_show_all (search_bar->scopeoption_box); + gtk_widget_hide (hbox); + gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->scopeoption); + + gtk_box_pack_end (GTK_BOX(hbox), search_bar->scopeoption_box, FALSE, FALSE, 0); + gtk_widget_hide (search_bar->scopeoption_box); + + } + if (!search_bar->lite) + gtk_box_pack_end (GTK_BOX(search_bar), hbox, FALSE, FALSE, 0); + else + gtk_box_pack_end (GTK_BOX(search_bar), hbox, TRUE, TRUE, 0); + gtk_widget_show (hbox); /* Set the menu */ @@ -1056,8 +1078,8 @@ e_search_bar_construct (ESearchBar *search_bar, * so we can't emit here. Thus we launch a one-shot idle function that will * emit the changed signal, so that the proper callback will get invoked. */ - - search_bar->pending_activate = g_idle_add (idle_activate_hack, search_bar); + if (!search_bar->lite) + search_bar->pending_activate = g_idle_add (idle_activate_hack, search_bar); } void @@ -1268,12 +1290,31 @@ e_search_bar_new (ESearchBarItem *menu_items, return widget; } +GtkWidget * +e_search_bar_lite_new (ESearchBarItem *menu_items, + ESearchBarItem *option_items) +{ + GtkWidget *widget; + + g_return_val_if_fail (option_items != NULL, NULL); + + widget = g_object_new (e_search_bar_get_type (), NULL); + E_SEARCH_BAR(widget)->lite = TRUE; + + e_search_bar_construct (E_SEARCH_BAR (widget), menu_items, option_items); + + return widget; +} + void e_search_bar_set_ui_component (ESearchBar *search_bar, BonoboUIComponent *ui_component) { g_return_if_fail (E_IS_SEARCH_BAR (search_bar)); + if (search_bar->lite) + return; + if (search_bar->ui_component != NULL) { remove_bonobo_menus (search_bar); bonobo_object_unref (BONOBO_OBJECT (search_bar->ui_component)); @@ -1293,6 +1334,9 @@ e_search_bar_set_menu_sensitive (ESearchBar *search_bar, int id, gboolean state) char *verb_name; char *path; + if (search_bar->lite) + return; + verb_name = verb_name_from_id (id); path = g_strconcat ("/commands/", verb_name, NULL); g_free (verb_name); @@ -1334,6 +1378,8 @@ e_search_bar_set_viewitem_id (ESearchBar *search_bar, int id) int row; g_return_if_fail (E_IS_SEARCH_BAR (search_bar)); + if (!search_bar->viewoption_menu) + return; row = find_id (search_bar->viewoption_menu, id, "EsbItemId", NULL); if (row == -1) @@ -1358,6 +1404,8 @@ e_search_bar_set_item_id (ESearchBar *search_bar, int id) g_return_if_fail (E_IS_SEARCH_BAR (search_bar)); + if (!search_bar->option_menu) + return; row = find_id (search_bar->option_menu, id, "EsbItemId", NULL); if (row == -1) return; @@ -1370,7 +1418,8 @@ e_search_bar_set_item_id (ESearchBar *search_bar, int id) if (!search_bar->block_search) emit_query_changed (search_bar); - update_clear_menuitem_sensitive (search_bar); + if (!search_bar->lite) + update_clear_menuitem_sensitive (search_bar); } void diff --git a/widgets/misc/e-search-bar.h b/widgets/misc/e-search-bar.h index 105777311c..2d01598541 100644 --- a/widgets/misc/e-search-bar.h +++ b/widgets/misc/e-search-bar.h @@ -105,6 +105,7 @@ struct _ESearchBar int last_search_option; gboolean block_search; + gboolean lite; }; struct _ESearchBarClass @@ -133,6 +134,8 @@ void e_search_bar_construct (ESearchBar *search_bar, ESearchBarItem *option_items); GtkWidget *e_search_bar_new (ESearchBarItem *menu_items, ESearchBarItem *option_items); +GtkWidget *e_search_bar_lite_new (ESearchBarItem *menu_items, + ESearchBarItem *option_items); void e_search_bar_set_ui_component (ESearchBar *search_bar, BonoboUIComponent *ui_component); diff --git a/widgets/misc/e-spinner.c b/widgets/misc/e-spinner.c index 56990d71a1..d980991b03 100644 --- a/widgets/misc/e-spinner.c +++ b/widgets/misc/e-spinner.c @@ -888,9 +888,10 @@ e_spinner_dispose (GObject *object) { ESpinner *spinner = E_SPINNER (object); - g_signal_handlers_disconnect_by_func - (spinner->details->icon_theme, - G_CALLBACK (icon_theme_changed_cb), spinner); + if (spinner->details->icon_theme) + g_signal_handlers_disconnect_by_func + (spinner->details->icon_theme, + G_CALLBACK (icon_theme_changed_cb), spinner); G_OBJECT_CLASS (parent_class)->dispose (object); } |