playlist: Configure playlist random and loop buttons
Sometimes the user is able to change them, but sometimes not. We also need to set to the current state when changing the current playlist. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
e61adceafb
commit
0952eeccde
|
@ -1,9 +1,11 @@
|
|||
# Copyright 2021 (c) Anna Schumaker.
|
||||
from gi.repository import Gtk
|
||||
import trackdb
|
||||
|
||||
class Controls(Gtk.Box):
|
||||
def __init__(self):
|
||||
Gtk.Box.__init__(self)
|
||||
self.tag = None
|
||||
|
||||
self.search = Gtk.SearchEntry()
|
||||
self.search.set_property("placeholder-text", "Type to filter tracks")
|
||||
|
@ -12,10 +14,31 @@ class Controls(Gtk.Box):
|
|||
|
||||
self.random = Gtk.ToggleButton()
|
||||
self.random.set_icon_name("media-playlist-shuffle")
|
||||
self.random.connect("toggled", self.random_toggled)
|
||||
self.random.set_sensitive(False)
|
||||
self.append(self.random)
|
||||
|
||||
self.loop = Gtk.ToggleButton()
|
||||
self.loop.set_icon_name("media-playlist-repeat")
|
||||
self.loop.connect("toggled", self.loop_toggled)
|
||||
self.loop.set_sensitive(False)
|
||||
self.append(self.loop)
|
||||
|
||||
self.add_css_class("linked")
|
||||
|
||||
def set_tag(self, tag):
|
||||
self.tag = tag
|
||||
|
||||
self.random.set_sensitive(tag.can_random())
|
||||
self.random.set_active(tag.random)
|
||||
|
||||
self.loop.set_sensitive(tag.can_loop())
|
||||
self.loop.set_active(tag.loop)
|
||||
|
||||
def random_toggled(self, toggle):
|
||||
self.tag.random = toggle.get_active()
|
||||
trackdb.save()
|
||||
|
||||
def loop_toggled(self, toggle):
|
||||
self.tag.loop = toggle.get_active()
|
||||
trackdb.save()
|
||||
|
|
|
@ -24,3 +24,30 @@ class TestPlaylistControls(unittest.TestCase):
|
|||
self.assertIn(ctrl.search, ctrl)
|
||||
self.assertIn(ctrl.random, ctrl)
|
||||
self.assertIn(ctrl.loop, ctrl)
|
||||
|
||||
def test_playlist_controls_set_tag(self):
|
||||
ctrl = controls.Controls()
|
||||
fav = trackdb.tags.User["Favorites"]
|
||||
prev = trackdb.tags.User["Previous"]
|
||||
|
||||
self.assertIsNone(ctrl.tag)
|
||||
self.assertFalse(ctrl.random.get_sensitive())
|
||||
self.assertFalse(ctrl.random.get_active())
|
||||
self.assertFalse(ctrl.loop.get_sensitive())
|
||||
self.assertFalse(ctrl.loop.get_active())
|
||||
|
||||
fav.random = True
|
||||
fav.loop = True
|
||||
ctrl.set_tag(fav)
|
||||
self.assertEqual(ctrl.tag, fav)
|
||||
self.assertTrue(ctrl.random.get_sensitive())
|
||||
self.assertTrue(ctrl.random.get_active())
|
||||
self.assertTrue(ctrl.loop.get_sensitive())
|
||||
self.assertTrue(ctrl.loop.get_active())
|
||||
|
||||
ctrl.set_tag(prev)
|
||||
self.assertEqual(ctrl.tag, prev)
|
||||
self.assertFalse(ctrl.random.get_sensitive())
|
||||
self.assertFalse(ctrl.random.get_active())
|
||||
self.assertFalse(ctrl.loop.get_sensitive())
|
||||
self.assertFalse(ctrl.loop.get_active())
|
||||
|
|
Loading…
Reference in New Issue