audio: Save and restore the current track through the settings module
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
0fde1f58e2
commit
d29f4c1b47
|
@ -1,4 +1,5 @@
|
|||
# Copyright 2021 (c) Anna Schumaker.
|
||||
from lib import settings
|
||||
from gi.repository import Gst
|
||||
import trackdb
|
||||
|
||||
|
@ -11,7 +12,10 @@ class Player:
|
|||
self.bus = self.playbin.get_bus()
|
||||
self.bus.add_signal_watch()
|
||||
|
||||
self.track = None
|
||||
track = trackdb.Tracks[settings.get_int("audio.trackid")]
|
||||
self.load_set_state(track, Gst.State.PAUSED)
|
||||
if self.track:
|
||||
self.track.add_to_playlist("Previous")
|
||||
|
||||
def get_state(self):
|
||||
(ret, state, pending) = self.playbin.get_state(Gst.CLOCK_TIME_NONE)
|
||||
|
@ -22,13 +26,15 @@ class Player:
|
|||
def load_track(self, track):
|
||||
self.track = track
|
||||
if track is not None:
|
||||
settings.set("audio.trackid", track.trackid)
|
||||
uri = track.filepath().absolute().as_uri()
|
||||
self.playbin.set_property("uri", uri)
|
||||
|
||||
def load_set_state(self, track, state):
|
||||
self.playbin.set_state(Gst.State.READY)
|
||||
self.load_track(track)
|
||||
self.playbin.set_state(state)
|
||||
if track is not None:
|
||||
self.playbin.set_state(state)
|
||||
|
||||
def next(self, *args):
|
||||
(track, cont) = trackdb.Stack.next()
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# Copyright 2021 (c) Anna Schumaker.
|
||||
from . import player
|
||||
from lib import settings
|
||||
from gi.repository import Gst
|
||||
import pathlib
|
||||
import trackdb
|
||||
|
@ -16,6 +17,7 @@ class TestPlayer(unittest.TestCase):
|
|||
lib.scan().join()
|
||||
|
||||
def setUp(self):
|
||||
settings.reset()
|
||||
self.library = trackdb.Library.store[test_album]
|
||||
self.track = [ t for t in self.library.tracks if t.tracknumber == 1 ][0]
|
||||
|
||||
|
@ -36,17 +38,25 @@ class TestPlayer(unittest.TestCase):
|
|||
uri = test_track.absolute().as_uri()
|
||||
|
||||
self.assertEqual(play.playbin.get_property("uri"), None)
|
||||
|
||||
play.load_track(self.track)
|
||||
self.assertEqual(play.playbin.get_property("uri"), uri)
|
||||
self.assertEqual(play.get_state(), Gst.State.NULL)
|
||||
self.assertEqual(play.track, self.track)
|
||||
self.assertEqual(settings.get_int("audio.trackid"), self.track.trackid)
|
||||
self.assertEqual(play.get_state(), Gst.State.READY)
|
||||
self.assertFalse(play.play_track(self.track))
|
||||
|
||||
trackdb.tags.User["Previous"].tracks.clear()
|
||||
play2 = player.Player()
|
||||
self.assertEqual(play2.track, self.track)
|
||||
self.assertIn(self.track, trackdb.tags.User["Previous"].tracks)
|
||||
|
||||
def test_player_play_pause(self):
|
||||
play = player.Player()
|
||||
|
||||
play.load_track(self.track)
|
||||
self.assertEqual(play.track, self.track)
|
||||
self.assertEqual(play.get_state(), Gst.State.NULL)
|
||||
self.assertEqual(play.get_state(), Gst.State.READY)
|
||||
|
||||
play.pause()
|
||||
self.assertEqual(play.get_state(), Gst.State.PAUSED)
|
||||
|
|
Loading…
Reference in New Issue