playlist: Update the visible and runtime labels
I do this whenever items_changed() is called so it updates whenever we update the model. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
9dd017dc43
commit
c5a4db041c
|
@ -1,4 +1,5 @@
|
|||
# Copyright 2021 (c) Anna Schumaker.
|
||||
from . import runtime
|
||||
from lib import bus
|
||||
from gi.repository import GObject, Gio
|
||||
|
||||
|
@ -35,6 +36,11 @@ class TagModel(GObject.GObject, Gio.ListModel):
|
|||
if n < len(self.items):
|
||||
return self.items[n]
|
||||
|
||||
def items_changed(self, pos, removed, added):
|
||||
super().items_changed(pos, removed, added)
|
||||
runtime.set_runtime(self.tag.runtime)
|
||||
runtime.set_visible_count(len(self.items))
|
||||
|
||||
def switch_tag(self, tag):
|
||||
removed = self.__unset_tag__()
|
||||
added = self.__set_tag__(tag)
|
||||
|
@ -49,7 +55,7 @@ class TagModel(GObject.GObject, Gio.ListModel):
|
|||
|
||||
def do_track_removed(self, tag, track, pos):
|
||||
self.items.remove(track)
|
||||
return self.items_changed(pos, 1, 0)
|
||||
self.items_changed(pos, 1, 0)
|
||||
|
||||
def track_removed(self, tag, track, pos):
|
||||
self.bus.board(self.do_track_removed, tag, track, pos)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# Copyright 2021 (c) Anna Schumaker.
|
||||
from . import model
|
||||
from . import runtime
|
||||
from lib import bus
|
||||
from lib import fake
|
||||
from lib import tag
|
||||
|
@ -39,12 +40,16 @@ class TestTagModel(unittest.TestCase):
|
|||
self.assertEqual(m.items, [ track ])
|
||||
self.assertEqual(m.get_n_items(), 1)
|
||||
self.assertEqual(m.get_item(0), fake.Track(1))
|
||||
self.assertEqual(runtime.Runtime.get_text(), "1 second")
|
||||
self.assertEqual(runtime.Visible.get_text(), "Showing 1 track")
|
||||
|
||||
t.remove_track(track)
|
||||
m.bus.complete()
|
||||
self.assertEqual(m.items, [ ])
|
||||
self.assertEqual(m.get_n_items(), 0)
|
||||
self.assertIsNone(m.get_item(0))
|
||||
self.assertEqual(runtime.Runtime.get_text(), "0 seconds")
|
||||
self.assertEqual(runtime.Visible.get_text(), "Showing 0 tracks")
|
||||
|
||||
def test_tag_model_init_none(self):
|
||||
m = model.TagModel()
|
||||
|
@ -59,7 +64,7 @@ class TestTagModel(unittest.TestCase):
|
|||
t.add_track(fake.Track(2))
|
||||
|
||||
u = tag.Tag("B")
|
||||
u.add_track(fake.Track(3))
|
||||
u.add_track(fake.Track(5))
|
||||
|
||||
m = model.TagModel()
|
||||
m.connect("items-changed", self.items_changed_cb)
|
||||
|
@ -67,8 +72,12 @@ class TestTagModel(unittest.TestCase):
|
|||
m.switch_tag(t)
|
||||
self.assertEqual(self.changed, (0, 0, 2))
|
||||
self.assertIn(m.track_added, t.TrackAdded.subscribers)
|
||||
self.assertEqual(runtime.Visible.get_text(), "Showing 2 tracks")
|
||||
self.assertEqual(runtime.Runtime.get_text(), "3 seconds")
|
||||
|
||||
m.switch_tag(u)
|
||||
self.assertEqual(self.changed, (0, 2, 1))
|
||||
self.assertIn(m.track_added, u.TrackAdded.subscribers)
|
||||
self.assertNotIn(m.track_added, t.TrackAdded.subscribers)
|
||||
self.assertEqual(runtime.Visible.get_text(), "Showing 1 track")
|
||||
self.assertEqual(runtime.Runtime.get_text(), "5 seconds")
|
||||
|
|
|
@ -4,6 +4,10 @@ from gi.repository import Gtk
|
|||
import unittest
|
||||
|
||||
class TestPlaylistRuntime(unittest.TestCase):
|
||||
def setUp(self):
|
||||
runtime.set_runtime(0)
|
||||
runtime.set_visible_count(0)
|
||||
|
||||
def test_runtime_init(self):
|
||||
self.assertIsInstance(runtime.Runtime, Gtk.Label)
|
||||
self.assertIsInstance(runtime.Visible, Gtk.Label)
|
||||
|
|
Loading…
Reference in New Issue