playlist: Add a LastPlayed column to the PlaylistView

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-11-03 16:03:49 -04:00
parent 67d0ba4e44
commit 2311a3a697
3 changed files with 21 additions and 0 deletions

View File

@ -73,6 +73,12 @@ class PlayCountFactory(LabelFactory):
def get_track_text(self, track): return str(track.playcount)
class LastPlayedFactory(LabelFactory):
def __init__(self): LabelFactory.__init__(self, xalign=0)
def get_track_text(self, track):
return "Never" if track.playcount == 0 else str(track.lastplayed)
class Column(Gtk.ColumnViewColumn):
def __init__(self, title, factory, width=-1, **kwargs):
Gtk.ColumnViewColumn.__init__(self, title=title, **kwargs)
@ -95,6 +101,7 @@ def AlbumColumn(): return Column("Album", AlbumFactory(), width=150, expand=True
def SubtitleColumn(): return Column("Subtitle", SubtitleFactory(), width=150, expand=True)
def YearColumn(): return Column("Year", YearFactory())
def PlayCountColumn(): return Column("Count", PlayCountFactory())
def LastPlayedColumn(): return Column("Last Played", LastPlayedFactory())
class OldColumn(Gtk.ColumnViewColumn):

View File

@ -94,6 +94,13 @@ class TestColumnFactories(unittest.TestCase):
self.assertEqual(factory.get_track_text(self.track), "0")
self.assertEqual(factory.xalign, 1)
def test_lastplayed(self):
factory = column.LastPlayedFactory()
self.assertIsInstance(factory, column.LabelFactory)
self.assertEqual(factory.get_track_text(self.track), "Never")
self.track.played()
self.assertNotEqual(factory.get_track_text(self.track), "Never")
class TestColumn(unittest.TestCase):
def test_init(self):
@ -178,6 +185,12 @@ class TestColumns(unittest.TestCase):
self.assertIsInstance(col.get_factory(), column.PlayCountFactory)
self.assertEqual(col.get_title(), "Count")
def test_lastplayed(self):
col = column.LastPlayedColumn()
self.assertIsInstance(col, column.Column)
self.assertIsInstance(col.get_factory(), column.LastPlayedFactory)
self.assertEqual(col.get_title(), "Last Played")
class TestPlaylistColumn(unittest.TestCase):
def tearDown(self):

View File

@ -20,6 +20,7 @@ class PlaylistView(Gtk.ColumnView):
self.append_column(column.SubtitleColumn())
self.append_column(column.YearColumn())
self.append_column(column.PlayCountColumn())
self.append_column(column.LastPlayedColumn())
def get_filter_model(self): return self.get_model().get_filter_model()
def get_playlist(self): return self.get_model().get_playlist()