From 2311a3a6979acb2f3ab50fc55e4b427d4d01fe1b Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Wed, 3 Nov 2021 16:03:49 -0400 Subject: [PATCH] playlist: Add a LastPlayed column to the PlaylistView Signed-off-by: Anna Schumaker --- playlist/column.py | 7 +++++++ playlist/test_column.py | 13 +++++++++++++ playlist/view.py | 1 + 3 files changed, 21 insertions(+) diff --git a/playlist/column.py b/playlist/column.py index acfe252..fa84599 100644 --- a/playlist/column.py +++ b/playlist/column.py @@ -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): diff --git a/playlist/test_column.py b/playlist/test_column.py index 6100ece..a486dfc 100644 --- a/playlist/test_column.py +++ b/playlist/test_column.py @@ -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): diff --git a/playlist/view.py b/playlist/view.py index bdcca4d..7b6331d 100644 --- a/playlist/view.py +++ b/playlist/view.py @@ -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()