On Sat, 2005-11-05 at 12:46 +0100, Martin Jeppesen wrote: > On 11/5/05, Artem Baguinski <femistofel gmail com> wrote: > > + you can add smarter sort orders, not just by single column. > > Are you thinking of the bug about the album list sorted alphabetically > or by year? In most cases where you want to sort with multiple columns, it should always do that. For example when you sort by artist, it then sorts by album within a particular artist, and by track# within an album. Probably what we should do is make it so when you sort by year, it sorts by album within a particular year - I've whipped up a quick patch to make it do that. There is a small caveat in that Rhythmbox doesn't actually sort by year but by /date/, which could be different for formats that let you store a day/month as well. > > > Disadvantages: > > > * No column titles. > > > > + hence can't add context menu for switching the columns on/off > > I wouldn't vote for putting it in the context menu, but why wouldn't > that be possible? Presumably if we didn't have column headers you would change it in the context menu you get when you click inside the entry view. Banshee has a "visible columns" item in it's context menu which brings up a window. James "Doc" Livingston -- The human genome is about 3 gigabases long, which boils down to 750 megabytes. Depressingly enough, this is only 2.8 Mozilla browsers." -- Jamie Zawinski
Index: widgets/rb-entry-view.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/widgets/rb-entry-view.c,v
retrieving revision 1.106
diff -u -u -r1.106 rb-entry-view.c
--- widgets/rb-entry-view.c 5 Nov 2005 05:03:19 -0000 1.106
+++ widgets/rb-entry-view.c 5 Nov 2005 12:56:30 -0000
@@ -893,6 +893,25 @@
}
static gint
+rb_entry_view_date_sort_func (RhythmDBEntry *a, RhythmDBEntry *b,
+ RBEntryView *view)
+{
+ gulong a_val, b_val;
+ gint ret;
+
+ a_val = rhythmdb_entry_get_ulong (a, RHYTHMDB_PROP_DATE);
+ b_val = rhythmdb_entry_get_ulong (b, RHYTHMDB_PROP_DATE);
+
+ ret = (a_val == b_val ? 0 : (a_val > b_val ? 1 : -1));
+ if (a_val > b_val)
+ return 1;
+ else if (a_val < b_val)
+ return -1;
+ else
+ return rb_entry_view_album_sort_func (a, b, view);
+}
+
+static gint
rb_entry_view_string_sort_func (RhythmDBEntry *a, RhythmDBEntry *b,
struct RBEntryViewCellDataFuncData *data)
{
@@ -1352,7 +1371,7 @@
cell_data->propid = propid;
cell_data_func = (GtkTreeCellDataFunc) rb_entry_view_year_cell_data_func;
sort_data->propid = cell_data->propid;
- sort_func = (GCompareDataFunc) rb_entry_view_ulong_sort_func;
+ sort_func = (GCompareDataFunc) rb_entry_view_date_sort_func;
title = _("_Year");
key = "Year";
break;
Attachment:
signature.asc
Description: This is a digitally signed message part