--- /usr/lib/python2.6/site-packages/quodlibet/browsers/albums.py.original 2010-02-10 20:14:54.750755436 +0200+++ /usr/lib/python2.6/site-packages/quodlibet/browsers/albums.py 2010-02-10 20:32:01.230641701 +0200@@ -242,6 +242,7 @@ self.songs = set() self.title = title self.sort = sort+ self.added = 0 # The key uniquely identifies the album; this way, albums # with different MBIDs or different label IDs but the same # title are different, and albums with different MBIDs@@ -342,6 +343,7 @@ self.discs = max(self.discs, song("~#disc", 0)) self.length += song.get("~#length", 0)+ self.added = max( self.discs, song( "~#added", 0)) self.people = sorted(people.keys(), key=people.__getitem__)[:100] self.peoplesort = sorted(@@ -386,8 +388,9 @@ model.set_sort_func(100, self.__compare_title) model.set_sort_func(101, self.__compare_artist) model.set_sort_func(102, self.__compare_date)+ model.set_sort_func(103, self.__compare_added)- for text in [_("Title"), _("Artist"), _("Date")]:+ for text in [_("Title"), _("Artist"), _("Date"), _("Added")]: cbmodel.append(row=[text]) self.connect_object('changed', self.__set_cmp_func, model)@@ -429,6 +432,15 @@ else: return (cmp(a1.date, a2.date) or cmp((a1.human, a1.key), (a2.human, a2.key)))+ def __compare_added(self, model, i1, i2):+ a1, a2 = model[i1][0], model[i2][0]+ if (a1 and a2) is None: return cmp(a1, a2)+ elif not a1.sort: return 1+ elif not a2.sort: return -1+ elif not a1.added and a2.added: return 1+ elif not a2.added and a1.added: return -1+ else: return (cmp(a1.added, a2.added) or cmp(a1.key, a2.key))+ class _AlbumStore(gtk.ListStore): __gsignals__ = { "row-changed": "override" }