playlist: Create a FieldLabel label

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-11-10 10:27:50 -05:00
parent 768a3388d7
commit 5d4ad35131
2 changed files with 91 additions and 0 deletions

View File

@ -38,3 +38,34 @@ class DirectionButton(Gtk.Button):
sort = "ascending" if direction == "ASC" else "descending"
self.set_icon_name(f"view-sort-{sort}")
self.set_sensitive(active)
class FieldLabel(Gtk.Label):
def __init__(self):
Gtk.Label.__init__(self, sensitive=False, hexpand=True)
def set_field(self, field, active):
self.set_sensitive(active)
self.set_text({ "tracks.number" : "Track Number",
"tracks.title" : "Track Title",
"tracks.length" : "Track Length",
"artists.sort" : "Artist Name",
"albums.sort" : "Album Name",
"discs.subtitle" : "Disc Subtitle",
"albums.release" : "Release Date",
"tracks.playcount" : "Play Count",
"tracks.lastplayed" : "Last Played",
"playlist_map.rowid" : "Order Added"}.get(field, field))
def get_field(self):
text = self.get_text()
return { "Track Number" : "tracks.number",
"Track Title" : "tracks.title",
"Track Length" : "tracks.length",
"Artist Name" : "artists.sort",
"Album Name" : "albums.sort",
"Disc Subtitle" : "discs.subtitle",
"Release Date" : "albums.release",
"Play Count" : "tracks.playcount",
"Last Played" : "tracks.lastplayed",
"Order Added" : "playlist_map.rowid"}.get(text, text)

View File

@ -67,3 +67,63 @@ class TestDirectionButton(unittest.TestCase):
button.set_direction("ASC", active=False)
self.assertEqual(button.get_icon_name(), "view-sort-ascending")
self.assertFalse(button.get_sensitive())
class TestFieldLabel(unittest.TestCase):
def test_init(self):
label = sort.FieldLabel()
self.assertIsInstance(label, Gtk.Label)
self.assertFalse(label.get_sensitive())
self.assertTrue(label.get_hexpand())
def test_set_field(self):
label = sort.FieldLabel()
label.set_field("tracks.number", active=True)
self.assertEqual(label.get_text(), "Track Number")
self.assertEqual(label.get_field(), "tracks.number")
self.assertTrue(label.get_sensitive())
label.set_field("tracks.title", active=False),
self.assertEqual(label.get_text(), "Track Title")
self.assertEqual(label.get_field(), "tracks.title")
self.assertFalse(label.get_sensitive())
label.set_field("tracks.length", active=True),
self.assertEqual(label.get_text(), "Track Length")
self.assertEqual(label.get_field(), "tracks.length")
self.assertTrue(label.get_sensitive())
label.set_field("artists.sort", active=False),
self.assertEqual(label.get_text(), "Artist Name")
self.assertEqual(label.get_field(), "artists.sort")
self.assertFalse(label.get_sensitive())
label.set_field("albums.sort", active=True),
self.assertEqual(label.get_text(), "Album Name")
self.assertEqual(label.get_field(), "albums.sort")
self.assertTrue(label.get_sensitive())
label.set_field("discs.subtitle", active=False),
self.assertEqual(label.get_text(), "Disc Subtitle")
self.assertEqual(label.get_field(), "discs.subtitle")
self.assertFalse(label.get_sensitive())
label.set_field("albums.release", active=True),
self.assertEqual(label.get_text(), "Release Date")
self.assertEqual(label.get_field(), "albums.release")
self.assertTrue(label.get_sensitive())
label.set_field("tracks.playcount", active=False),
self.assertEqual(label.get_text(), "Play Count")
self.assertEqual(label.get_field(), "tracks.playcount")
self.assertFalse(label.get_sensitive())
label.set_field("tracks.lastplayed", active=True)
self.assertEqual(label.get_text(), "Last Played")
self.assertEqual(label.get_field(), "tracks.lastplayed")
self.assertTrue(label.get_sensitive())
label.set_field("playlist_map.rowid", active=False)
self.assertEqual(label.get_text(), "Order Added")
self.assertEqual(label.get_field(), "playlist_map.rowid")
self.assertFalse(label.get_sensitive())