2021-06-30 16:10:37 -04:00
|
|
|
# Copyright 2021 (c) Anna Schumaker.
|
2021-09-07 15:51:59 -04:00
|
|
|
import lib
|
|
|
|
import tagdb
|
|
|
|
from gi.repository import GObject
|
2021-09-03 11:34:01 -04:00
|
|
|
from . import bass
|
2021-09-02 16:10:39 -04:00
|
|
|
from . import scale
|
2021-09-19 11:48:38 -04:00
|
|
|
from . import selector
|
2021-06-30 16:10:37 -04:00
|
|
|
|
2021-09-03 11:34:01 -04:00
|
|
|
|
|
|
|
class Player(bass.BassPlayer):
|
2021-06-30 16:10:37 -04:00
|
|
|
def __init__(self):
|
2021-09-03 11:34:01 -04:00
|
|
|
bass.BassPlayer.__init__(self)
|
2021-09-02 16:10:39 -04:00
|
|
|
self.Autopause = scale.AutoPauseScale()
|
2021-09-19 11:48:38 -04:00
|
|
|
self.Selector = selector.TagdbSelector()
|
2021-06-30 16:10:37 -04:00
|
|
|
|
2021-09-07 11:35:26 -04:00
|
|
|
self.emit("track-changed", None,
|
2021-09-07 15:51:59 -04:00
|
|
|
tagdb.Tracks[lib.settings.get_int("audio.trackid")])
|
2021-09-07 11:35:26 -04:00
|
|
|
self.playing = False
|
2021-07-05 17:46:12 -04:00
|
|
|
if self.track:
|
|
|
|
self.track.add_to_playlist("Previous")
|
2021-06-30 16:10:37 -04:00
|
|
|
|
2021-09-07 15:39:15 -04:00
|
|
|
def do_about_to_finish(self):
|
|
|
|
if self.Autopause.get_value() != 0:
|
2021-09-19 11:48:38 -04:00
|
|
|
track = self.Selector.next()
|
2021-09-07 15:39:15 -04:00
|
|
|
self.emit("track-changed", self.track, track)
|
|
|
|
self.Autopause.decrement()
|
|
|
|
|
2021-09-07 11:35:26 -04:00
|
|
|
def do_eos(self):
|
|
|
|
self.next()
|
|
|
|
|
2021-06-30 16:10:37 -04:00
|
|
|
def load_track(self, track):
|
2021-09-03 11:58:48 -04:00
|
|
|
self.uri = None
|
2021-09-06 16:16:12 -04:00
|
|
|
self.emit("track-changed", self.track, track)
|
2021-09-07 11:35:26 -04:00
|
|
|
self.playing = (self.Autopause.decrement() != -1)
|
2021-06-30 16:10:37 -04:00
|
|
|
|
2021-09-07 11:35:26 -04:00
|
|
|
def next(self):
|
2021-09-19 11:48:38 -04:00
|
|
|
self.load_track(self.Selector.next())
|
2021-06-30 16:10:37 -04:00
|
|
|
|
2021-09-03 12:10:40 -04:00
|
|
|
def play(self): self.playing = True
|
|
|
|
def pause(self): self.playing = False
|
2021-09-07 11:35:26 -04:00
|
|
|
def playpause(self): self.playing = not self.playing
|
2021-08-02 10:24:12 -04:00
|
|
|
|
2021-09-07 11:35:26 -04:00
|
|
|
def previous(self):
|
2021-09-19 11:48:38 -04:00
|
|
|
self.load_track(self.Selector.previous())
|
2021-07-09 16:48:06 -04:00
|
|
|
|
2021-08-30 16:27:33 -04:00
|
|
|
@GObject.Signal(arg_types=(tagdb.track.Track, tagdb.track.Track))
|
|
|
|
def track_changed(self, prev, new):
|
2021-09-06 16:16:12 -04:00
|
|
|
if prev and self.play_percent > (2 / 3):
|
|
|
|
prev.played()
|
|
|
|
|
|
|
|
self.track = new
|
|
|
|
if self.track:
|
2021-09-07 15:51:59 -04:00
|
|
|
lib.settings.set("audio.trackid", new.trackid)
|
2021-09-06 16:16:12 -04:00
|
|
|
self.uri = new.filepath().absolute().as_uri()
|