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):