rind: Set pause label text

I use my time remaining estimate to tell the user how many more tracks
until we pause.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2019-04-14 09:48:58 -04:00
parent 40a353681c
commit a7802b8794
2 changed files with 18 additions and 11 deletions

View File

@ -52,6 +52,7 @@ class EmmentalAudio:
self.finish_cb = self.playbin.connect("about-to-finish",
self.about_to_finish)
self.timeout_cb = GLib.timeout_add(100, self.update_progress)
self.popover_cb = None
def about_to_finish(self, playbin):
if self.pause_count != 0 and self.have_next == False:
@ -72,6 +73,8 @@ class EmmentalAudio:
PrevButton.disconnect(self.prev_cb)
ProgScale.disconnect(self.seek_cb)
GLib.source_remove(self.timeout_cb)
if self.popover_cb != None:
GLib.source_remove(self.popover_cb)
self.playbin.set_state(Gst.State.NULL)
def duration(self):
@ -174,15 +177,17 @@ class EmmentalAudio:
self.pause_popup()
def pause_popup(self):
if self.pause_pop == 0:
PauseLabel.set_text(self.pause_time())
if self.popover_cb == None:
PausePopup.popup()
GLib.timeout_add_seconds(1, self.pause_popdown)
self.popover_cb = GLib.timeout_add_seconds(1, self.pause_popdown)
self.pause_pop = 5
def pause_popdown(self):
self.pause_pop = max(0, self.pause_pop - 1)
if self.pause_pop > 0:
return GLib.SOURCE_CONTINUE
self.popover_cb = None
PausePopup.popdown()
return GLib.SOURCE_REMOVE

View File

@ -27,7 +27,9 @@ class TestGst(unittest.TestCase):
def tearDown(self):
self.audio.playbin.set_state(Gst.State.READY)
self.audio.seek(value=0)
self.audio.have_next = False
self.audio.pause_count = -1
self.audio.pause_pop = 0
self.audio.pause_changed(Gst.State.PAUSED)
gtk.main_loop(delay=0.1)
self.audio.disconnect()
@ -223,9 +225,9 @@ class TestGst(unittest.TestCase):
self.assertEqual(self.audio.pause_time(), "About 0 seconds")
self.assertEqual(self.audio.pause_pop, 5)
self.assertTrue( gst.PausePopup.is_visible())
self.assertEqual(gst.PauseLabel.get_text(), self.audio.pause_time())
gtk.main_loop(delay=1.25)
gtk.main_loop()
self.assertEqual(self.audio.pause_pop, 4)
self.assertTrue( gst.PausePopup.is_visible())
@ -233,7 +235,8 @@ class TestGst(unittest.TestCase):
self.assertEqual(self.audio.pause_count, 1)
self.assertEqual(gst.PauseEntry.get_text(), "Next Track")
self.assertEqual(self.audio.pause_time(), f"About 0 seconds")
self.assertTrue(gst.PausePopup.is_visible())
self.assertTrue( gst.PausePopup.is_visible())
self.assertEqual(gst.PauseLabel.get_text(), self.audio.pause_time())
self.audio.pause_count = 11
self.assertEqual(self.audio.pause_time(), "About 1 minute")
@ -247,7 +250,8 @@ class TestGst(unittest.TestCase):
self.assertTrue( gst.PauseDown.is_sensitive())
self.assertFalse(gst.PauseUp.is_sensitive())
self.assertEqual(self.audio.pause_time(), "About 9 minutes")
self.assertTrue(gst.PausePopup.is_visible())
self.assertTrue( gst.PausePopup.is_visible())
self.assertEqual(gst.PauseLabel.get_text(), self.audio.pause_time())
gst.PauseUp.clicked()
self.assertEqual(self.audio.pause_count, 99)
@ -255,8 +259,6 @@ class TestGst(unittest.TestCase):
self.audio.pause_pop = 0
self.audio.pause_popdown()
gtk.main_loop(iteration_delay=0.1)
self.assertFalse(gst.PausePopup.is_visible())
def test_gst_automatic_pause_down(self):
plist = curds.PlaylistManager.lookup("Collection")
@ -276,6 +278,7 @@ class TestGst(unittest.TestCase):
self.assertEqual(self.audio.pause_time(), "About 9 minutes")
self.assertEqual(self.audio.pause_pop, 5)
self.assertTrue( gst.PausePopup.is_visible())
self.assertEqual(gst.PauseLabel.get_text(), self.audio.pause_time())
self.audio.pause_count = 1
self.audio.pause_changed(self.audio.playbin.get_state(Gst.Format.TIME))
@ -287,6 +290,7 @@ class TestGst(unittest.TestCase):
self.assertEqual(self.audio.pause_time(), "About 0 seconds")
self.assertEqual(self.audio.pause_pop, 5)
self.assertTrue( gst.PausePopup.is_visible())
self.assertEqual(gst.PauseLabel.get_text(), self.audio.pause_time())
gst.PauseDown.clicked()
self.assertEqual(self.audio.pause_count, -1)
@ -296,14 +300,13 @@ class TestGst(unittest.TestCase):
self.assertEqual(self.audio.pause_time(), "About 0 seconds")
self.assertEqual(self.audio.pause_pop, 5)
self.assertTrue( gst.PausePopup.is_visible())
self.assertEqual(gst.PauseLabel.get_text(), self.audio.pause_time())
gst.PauseDown.clicked()
self.assertEqual(self.audio.pause_count, -1)
self.assertEqual(self.audio.pause_pop, 5)
self.assertTrue( gst.PausePopup.is_visible())
self.audio.pause_pop = 0
self.audio.pause_popdown()
self.assertEqual(gst.PauseLabel.get_text(), self.audio.pause_time())
def test_gst_automatic_pause_entry(self):
plist = curds.PlaylistManager.lookup("Collection")
@ -340,7 +343,6 @@ class TestGst(unittest.TestCase):
curds.playlist.library.join()
self.audio.next()
self.main_loop_until(Gst.State.PLAYING)
self.assertFalse(self.audio.have_next)
self.assertEqual(curds.PlaylistManager.track, plist[0])