From 96956c730db939107b1074f610d71c7942b65fd7 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Thu, 18 Nov 2021 11:38:55 -0500 Subject: [PATCH] audio: Give the AutoPauseScale a keep_playing property And a function to find out if we are about to pause or not. Signed-off-by: Anna Schumaker --- audio/scale.py | 8 ++++++++ audio/test_scale.py | 25 +++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/audio/scale.py b/audio/scale.py index fe9c71c..6b18547 100644 --- a/audio/scale.py +++ b/audio/scale.py @@ -65,8 +65,12 @@ class SeekScale(ScalePlus): class AutoPauseScale(ScalePlus): def __init__(self): ScalePlus.__init__(self, -1, 99, 1, 5) + self.keep_playing = True self.set_digits(0) + def about_to_pause(self): + return self.get_value() == 0 + def format_value(self, scale, value): value = int(value) if value == -1: return "Keep Playing" @@ -74,6 +78,10 @@ class AutoPauseScale(ScalePlus): elif value == 1: return "Next Track" return f"{value} Tracks" + def decrement(self): + self.keep_playing = not self.about_to_pause() + super().decrement() + class VolumeScale(ScalePlus): def __init__(self, player): diff --git a/audio/test_scale.py b/audio/test_scale.py index f71fd9b..47a0d4d 100644 --- a/audio/test_scale.py +++ b/audio/test_scale.py @@ -145,6 +145,7 @@ class TestAutoPauseScale(unittest.TestCase): self.assertEqual(adj.get_upper(), 99) self.assertEqual(adj.get_step_increment(), 1) self.assertEqual(adj.get_page_increment(), 5) + self.assertTrue(pause.keep_playing) def test_autopause_scale_values(self): pause = scale.AutoPauseScale() @@ -153,6 +154,30 @@ class TestAutoPauseScale(unittest.TestCase): self.assertEqual(pause.format_value(pause, 1), "Next Track") self.assertEqual(pause.format_value(pause, 2), "2 Tracks") + def test_keep_playing(self): + pause = scale.AutoPauseScale() + pause.set_value(2) + + pause.decrement() + self.assertEqual(pause.get_value(), 1) + self.assertFalse(pause.about_to_pause()) + self.assertTrue(pause.keep_playing) + + pause.decrement() + self.assertEqual(pause.get_value(), 0) + self.assertTrue(pause.about_to_pause()) + self.assertTrue(pause.keep_playing) + + pause.decrement() + self.assertEqual(pause.get_value(), -1) + self.assertFalse(pause.about_to_pause()) + self.assertFalse(pause.keep_playing) + + pause.decrement() + self.assertEqual(pause.get_value(), -1) + self.assertFalse(pause.about_to_pause()) + self.assertTrue(pause.keep_playing) + class TestVolumeScale(unittest.TestCase): def test_volume_scale_init(self):