audio: Give the BassPlayer a uri property
With both setter and getter to change the playbin uri Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
574e49ef09
commit
c2c6ac7890
|
@ -15,3 +15,14 @@ class BassPlayer(GObject.GObject):
|
|||
@GObject.Property
|
||||
def bus(self):
|
||||
return self.playbin.get_bus()
|
||||
|
||||
@GObject.Property
|
||||
def uri(self):
|
||||
return self.playbin.get_property("uri")
|
||||
|
||||
@uri.setter
|
||||
def uri(self, uri):
|
||||
if uri:
|
||||
self.playbin.set_property("uri", uri)
|
||||
else:
|
||||
self.playbin.set_state(Gst.State.READY)
|
||||
|
|
|
@ -44,12 +44,11 @@ class Player(bass.BassPlayer):
|
|||
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)
|
||||
self.uri = track.filepath().absolute().as_uri()
|
||||
self.emit("track-changed", prev, self.track)
|
||||
|
||||
def load_set_state(self, track, state):
|
||||
self.playbin.set_state(Gst.State.READY)
|
||||
self.uri = None
|
||||
self.load_track(track)
|
||||
if track is not None:
|
||||
self.playbin.set_state(state)
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
# Copyright 2021 (c) Anna Schumaker.
|
||||
import pathlib
|
||||
import unittest
|
||||
from gi.repository import GObject
|
||||
from gi.repository import Gst
|
||||
from . import bass
|
||||
|
||||
test_album = pathlib.Path("./data/Test Album/")
|
||||
test_track = test_album / "01 - Test Track.ogg"
|
||||
test_uri = test_track.absolute().as_uri()
|
||||
|
||||
class TestBassPlayer(unittest.TestCase):
|
||||
def test_bass_player_init(self):
|
||||
base = bass.BassPlayer()
|
||||
|
@ -17,3 +22,15 @@ class TestBassPlayer(unittest.TestCase):
|
|||
def test_bass_player_bus(self):
|
||||
base = bass.BassPlayer()
|
||||
self.assertIsInstance(base.bus, Gst.Bus)
|
||||
|
||||
def test_bass_player_uri(self):
|
||||
base = bass.BassPlayer()
|
||||
|
||||
self.assertIsNone(base.get_property("uri"))
|
||||
base.set_property("uri", test_uri)
|
||||
self.assertEqual(base.get_property("uri"), test_uri)
|
||||
|
||||
base.playbin.set_state(Gst.State.PAUSED)
|
||||
base.set_property("uri", None)
|
||||
self.assertEqual(base.playbin.get_state(Gst.CLOCK_TIME_NONE)[1],
|
||||
Gst.State.READY)
|
||||
|
|
|
@ -17,6 +17,7 @@ import unittest
|
|||
main_context = GLib.main_context_default()
|
||||
test_album = pathlib.Path("./data/Test Album/")
|
||||
test_track = test_album / "01 - Test Track.ogg"
|
||||
test_uri = test_track.absolute().as_uri()
|
||||
|
||||
|
||||
class TestPlayer(unittest.TestCase):
|
||||
|
@ -51,13 +52,12 @@ class TestPlayer(unittest.TestCase):
|
|||
|
||||
def test_player_load_track(self):
|
||||
play = player.Player()
|
||||
uri = test_track.absolute().as_uri()
|
||||
play.connect("track-changed", self.on_track_changed)
|
||||
|
||||
self.assertEqual(play.playbin.get_property("uri"), None)
|
||||
self.assertEqual(play.get_property("uri"), None)
|
||||
|
||||
play.load_track(self.track)
|
||||
self.assertEqual(play.playbin.get_property("uri"), uri)
|
||||
self.assertEqual(play.get_property("uri"), test_uri)
|
||||
self.assertEqual(play.track, self.track)
|
||||
self.assertEqual(settings.get_int("audio.trackid"), self.track.trackid)
|
||||
self.assertEqual(play.get_state(), Gst.State.READY)
|
||||
|
|
Loading…
Reference in New Issue