Revision: 2156
http://gtkpod.svn.sourceforge.net/gtkpod/?rev=2156&view=rev
Author: jcsjcs
Date: 2008-12-07 11:39:42 +0000 (Sun, 07 Dec 2008)
Log Message:
-----------
* data/gtkpod.glade
src/display.c: Add an item to the View menu to show/hide the
filter bar (AKA: search bar)
* src/display_tracks:
Fix a number of bugs relating to the filter bar. Thanks to
Andrea for the pointer.
Remove filter text when switching from one playlist to another:
leaving the filter in place immensely increases the time for display.
Modified Paths:
--------------
gtkpod/trunk/ChangeLog
gtkpod/trunk/data/gtkpod.glade
gtkpod/trunk/src/display.c
gtkpod/trunk/src/display_tracks.c
Modified: gtkpod/trunk/ChangeLog
===================================================================
--- gtkpod/trunk/ChangeLog 2008-11-30 10:50:14 UTC (rev 2155)
+++ gtkpod/trunk/ChangeLog 2008-12-07 11:39:42 UTC (rev 2156)
@@ -1,3 +1,16 @@
+2008-12-07 Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+ * data/gtkpod.glade
+ src/display.c: Add an item to the View menu to show/hide the
+ filter bar (AKA: search bar)
+
+ * src/display_tracks:
+ Fix a number of bugs relating to the filter bar. Thanks to
+ Andrea for the pointer.
+
+ Remove filter text when switching from one playlist to another:
+ leaving the filter in place immensely increases the time for display.
+
2008-11-08 Jorg Schuler <jcsjcs at users.sourceforge.net>
* src/display_tracks.c
Modified: gtkpod/trunk/data/gtkpod.glade
===================================================================
--- gtkpod/trunk/data/gtkpod.glade 2008-11-30 10:50:14 UTC (rev 2155)
+++ gtkpod/trunk/data/gtkpod.glade 2008-12-07 11:39:42 UTC (rev 2156)
@@ -793,6 +793,14 @@
</widget>
</child>
<child>
+ <widget class="GtkCheckMenuItem" id="filterbar_menu">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Filter
Bar</property>
+ <property name="use_underline">True</property>
+ <signal name="activate"
handler="on_filterbar_menu_activate"/>
+ </widget>
+ </child>
+ <child>
<widget class="GtkCheckMenuItem" id="tooltips_menu">
<property name="visible">True</property>
<property name="label"
translatable="yes">_Tooltips</property>
@@ -801,6 +809,11 @@
</widget>
</child>
<child>
+ <widget class="GtkSeparatorMenuItem" id="menuitem4">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ <child>
<widget class="GtkCheckMenuItem" id="info_window_menu">
<property name="visible">True</property>
<property name="label" translatable="yes">_Info
Window</property>
@@ -1464,7 +1477,7 @@
<widget class="GtkLabel" id="label22">
<property name="visible">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="label"
translatable="yes">Search:</property>
+ <property name="label"
translatable="yes">Filter:</property>
</widget>
<packing>
<property name="expand">False</property>
Modified: gtkpod/trunk/src/display.c
===================================================================
--- gtkpod/trunk/src/display.c 2008-11-30 10:50:14 UTC (rev 2155)
+++ gtkpod/trunk/src/display.c 2008-12-07 11:39:42 UTC (rev 2156)
@@ -1,4 +1,4 @@
-/* Time-stamp: <2008-06-29 21:57:29 jcs>
+/* Time-stamp: <2008-12-07 19:10:37 jcs>
|
| Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net>
| Part of the gtkpod project.
@@ -388,19 +388,24 @@
{
GtkWidget *upbutton = gtkpod_xml_get_widget (main_window_xml,
"searchbar_up_button");
GtkWidget *searchbar = gtkpod_xml_get_widget (main_window_xml,
"searchbar_hpanel");
+ GtkCheckMenuItem *mi = GTK_CHECK_MENU_ITEM (gtkpod_xml_get_widget
(main_window_xml, "filterbar_menu"));
+
g_return_if_fail (upbutton);
g_return_if_fail (searchbar);
+ g_return_if_fail (mi);
if (prefs_get_int ("display_search_entry"))
{
gtk_widget_show_all (searchbar);
gtk_widget_hide (upbutton);
+ gtk_check_menu_item_set_active (mi, TRUE);
}
else
{
gtk_widget_hide_all (searchbar);
gtk_widget_show (upbutton);
gtk_widget_set_sensitive (upbutton, TRUE);
+ gtk_check_menu_item_set_active (mi, FALSE);
}
}
@@ -1256,6 +1261,16 @@
G_MODULE_EXPORT void
+on_filterbar_menu_activate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+ prefs_set_int("display_search_entry",
+ gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (menuitem)));
+ display_show_hide_searchbar ();
+}
+
+
+G_MODULE_EXPORT void
on_more_sort_tabs_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
Modified: gtkpod/trunk/src/display_tracks.c
===================================================================
--- gtkpod/trunk/src/display_tracks.c 2008-11-30 10:50:14 UTC (rev 2155)
+++ gtkpod/trunk/src/display_tracks.c 2008-12-07 11:39:42 UTC (rev 2156)
@@ -93,9 +93,12 @@
int i;
gtk_tree_model_get(model, iter, READOUT_COL, &tr, -1);
-
- for (i = 0; i < TM_NUM_COLUMNS; i++)
- {
+
+ if (tr)
+ {
+ if (text[0] == 0x0) return TRUE;
+ for (i = 0; i < TM_NUM_COLUMNS; i++)
+ {
gint visible = prefs_get_int_index("col_visible", i);
gchar *data;
@@ -112,6 +115,7 @@
}
g_free (data);
+ }
}
return result;
@@ -133,11 +137,11 @@
gtk_tree_model_filter_convert_iter_to_child_iter
(GTK_TREE_MODEL_FILTER (model), to, from);
}
-static void update_model_view (GtkTreeModel *model)
+/*static void update_model_view (GtkTreeModel *model)
{
if (GTK_IS_TREE_MODEL_FILTER (model))
gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (model));
-}
+}*/
static GtkTreeModelFilter *get_filter (GtkTreeView *tree)
{
@@ -265,7 +269,7 @@
g_free (link->data);
g_list_free (iterlist);
- update_model_view (model);
+/* update_model_view (model); -- not needed */
tm_rows_reordered ();
return TRUE;
}
@@ -746,10 +750,12 @@
convert_iter (model, into_iter, &iter);
}
else
+ {
gtk_list_store_append (get_model_as_store (model), &iter);
+ }
gtk_list_store_set (get_model_as_store (model), &iter, READOUT_COL, track,
-1);
- update_model_view (model);
+/* update_model_view (model); -- not needed */
}
@@ -778,7 +784,7 @@
convert_iter (model, iter, &temp);
gtk_list_store_remove (get_model_as_store (model), &temp);
- update_model_view (model);
+/* update_model_view (model); -- not needed */
return TRUE;
}
return FALSE;
@@ -793,7 +799,7 @@
if (model)
{
gtk_tree_model_foreach (model, tm_delete_track, track);
- update_model_view (model);
+/* update_model_view (model); -- not needed */
}
}
@@ -802,17 +808,29 @@
void tm_remove_all_tracks ()
{
GtkTreeModel *model = gtk_tree_view_get_model (track_treeview);
+ GtkTreeModel *realmodel;
GtkTreeIter iter;
+ GtkWidget *search_entry = gtkpod_xml_get_widget (main_window_xml,
"search_entry");
- while (gtk_tree_model_get_iter_first (model, &iter))
+ /* remove all tracks, including tracks filtered out */
+ if (GTK_IS_TREE_MODEL_FILTER (model))
{
- GtkTreeIter temp;
+ realmodel = gtk_tree_model_filter_get_model
(GTK_TREE_MODEL_FILTER(model));
+ }
+ else
+ {
+ realmodel = model;
+ }
- convert_iter (model, &iter, &temp);
- gtk_list_store_remove (get_model_as_store (model), &temp);
+ while (gtk_tree_model_get_iter_first (realmodel, &iter))
+ {
+ gtk_list_store_remove (get_model_as_store (realmodel), &iter);
}
- update_model_view (model);
+ /* reset filter text -- if many tracks are added with the filter
+ * activated, a lot of time is needed */
+ gtk_entry_set_text (GTK_ENTRY (search_entry), "");
+
tm_store_col_order ();
tm_update_default_sizes ();
}
@@ -1981,6 +1999,11 @@
{
GtkTreeModel *model= gtk_tree_view_get_model (track_treeview);
+ if (GTK_IS_TREE_MODEL_FILTER (model))
+ {
+ model = gtk_tree_model_filter_get_model
(GTK_TREE_MODEL_FILTER(model));
+ }
+
prefs_set_int("tm_sort", SORT_NONE);
if (!BROKEN_GTK_TREE_SORT)
{
@@ -2157,6 +2180,12 @@
if (track_treeview)
{
GtkTreeModel *model= gtk_tree_view_get_model (track_treeview);
+
+ if (GTK_IS_TREE_MODEL_FILTER (model))
+ {
+ model = gtk_tree_model_filter_get_model
(GTK_TREE_MODEL_FILTER(model));
+ }
+
if (order != SORT_NONE)
{
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (model),
@@ -2698,6 +2727,12 @@
{
/* Re-enable sorting */
GtkTreeModel *model = gtk_tree_view_get_model (track_treeview);
+
+ if (GTK_IS_TREE_MODEL_FILTER (model))
+ {
+ model = gtk_tree_model_filter_get_model
(GTK_TREE_MODEL_FILTER(model));
+ }
+
if (BROKEN_GTK_TREE_SORT)
{
gtk_tree_sortable_set_sort_func (
@@ -2723,6 +2758,12 @@
{
/* Disable sorting */
GtkTreeModel *model = gtk_tree_view_get_model (track_treeview);
+
+ if (GTK_IS_TREE_MODEL_FILTER (model))
+ {
+ model = gtk_tree_model_filter_get_model
(GTK_TREE_MODEL_FILTER(model));
+ }
+
if (BROKEN_GTK_TREE_SORT)
{
gtk_tree_sortable_set_sort_func (
@@ -2853,7 +2894,7 @@
NULL, NULL);
}
- update_model_view (model);
+/* update_model_view (model); -- not needed */
tm_rows_reordered ();
C_FREE (buf);
return TRUE;
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you. Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2