--- /usr/lib/python2.5/site-packages/quodlibet/browsers/albums.py 2008-09-14 05:19:55.000000000 +0200+++ albums.py 2008-11-09 00:21:38.000000000 +0100@@ -238,6 +238,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@@ -315,6 +316,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(@@ -381,9 +383,11 @@ 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 [- _("Sort by title"), _("Sort by artist"), _("Sort by date")+ _("Sort by title"), _("Sort by artist"),+ _("Sort by date"), _("Sort by added") ]: cbmodel.append(row=[text]) self.connect_object('changed', self.__set_cmp_func, model)@@ -424,6 +428,15 @@ elif not a2.date and a1.date: return -1 else: return (cmp(a1.date, a2.date) or cmp(a1.key, 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" }