Compare commits
2 Commits
af40e419ff
...
5d7b55a0ab
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5d7b55a0ab | ||
|
|
0124ca6018 |
@ -291,7 +291,7 @@ class MusicMusterSignals(QObject):
|
||||
status_message_signal = pyqtSignal(str, int)
|
||||
|
||||
# Emitted when track ends or is manually faded
|
||||
track_ended_signal = pyqtSignal(int)
|
||||
signal_track_ended = pyqtSignal(int)
|
||||
|
||||
def __post_init__(self):
|
||||
super().__init__()
|
||||
|
||||
@ -168,7 +168,7 @@ class Music:
|
||||
|
||||
if helpers.file_is_unreadable(path):
|
||||
log.error(f"play({path}): path not readable")
|
||||
return None
|
||||
return
|
||||
|
||||
self.player = vlc.MediaPlayer(self.vlc_instance, path)
|
||||
if self.player is None:
|
||||
@ -217,11 +217,12 @@ class Music:
|
||||
# reset to zero within 200mS or so of starting play. This
|
||||
# only happened since moving to Debian 12, which uses
|
||||
# Pipewire for sound (which may be irrelevant).
|
||||
# Update 19 April 2025: this may no longer be occuring
|
||||
for _ in range(3):
|
||||
current_volume = self.player.audio_get_volume()
|
||||
if current_volume < volume:
|
||||
self.player.audio_set_volume(volume)
|
||||
log.debug(f"Reset from {volume=}")
|
||||
log.debug(f"Volume reset from {volume=}")
|
||||
sleep(0.1)
|
||||
|
||||
def signal_track_ended(self) -> None:
|
||||
@ -236,7 +237,7 @@ class Music:
|
||||
with lock:
|
||||
if self.end_of_track_signalled:
|
||||
return
|
||||
self.signals.track_ended_signal.emit(self.playlist_id)
|
||||
self.signals.signal_track_ended.emit(self.playlist_id)
|
||||
self.end_of_track_signalled = True
|
||||
|
||||
def stop(self) -> None:
|
||||
@ -253,6 +254,7 @@ class Music:
|
||||
self.player.stop()
|
||||
self.player.release()
|
||||
self.player = None
|
||||
self.signal_track_ended()
|
||||
|
||||
def track_end_event_handler(self, event: vlc.Event) -> None:
|
||||
"""
|
||||
|
||||
@ -144,8 +144,8 @@ class SignalMonitor:
|
||||
self.signals.status_message_signal.connect(
|
||||
partial(self.show_signal, "status_message_signal ")
|
||||
)
|
||||
self.signals.track_ended_signal.connect(
|
||||
partial(self.show_signal, "track_ended_signal ")
|
||||
self.signals.signal_track_ended.connect(
|
||||
partial(self.show_signal, "signal_track_ended ")
|
||||
)
|
||||
|
||||
def show_signal(self, name: str, *args: Any) -> None:
|
||||
@ -1745,7 +1745,7 @@ class Window(QMainWindow):
|
||||
self.signals.signal_next_track_changed.connect(self.signal_next_track_changed_handler)
|
||||
self.signals.signal_set_next_track.connect(self.signal_set_next_track_handler)
|
||||
self.signals.status_message_signal.connect(self.show_status_message)
|
||||
self.signals.track_ended_signal.connect(self.end_of_track_actions)
|
||||
self.signals.signal_track_ended.connect(self.end_of_track_actions)
|
||||
|
||||
self.timer10.timeout.connect(self.tick_10ms)
|
||||
self.timer500.timeout.connect(self.tick_500ms)
|
||||
@ -1760,6 +1760,8 @@ class Window(QMainWindow):
|
||||
of the playlist.
|
||||
"""
|
||||
|
||||
# TODO should be able to have the model handle row depending on
|
||||
# how current_row_or_end is used
|
||||
if self.current.selected_row_numbers:
|
||||
return self.current.selected_row_numbers[0]
|
||||
return self.current.base_model.rowCount()
|
||||
@ -1818,7 +1820,7 @@ class Window(QMainWindow):
|
||||
# @log_call
|
||||
def end_of_track_actions(self) -> None:
|
||||
"""
|
||||
Called by track_ended_signal
|
||||
Called by signal_track_ended
|
||||
|
||||
Actions required:
|
||||
- Reset track_sequence objects
|
||||
@ -1903,6 +1905,9 @@ class Window(QMainWindow):
|
||||
def hide_played(self):
|
||||
"""Toggle hide played tracks"""
|
||||
|
||||
# TODO: handle this with signals, but first decide how to better
|
||||
# handle hide tracks / sections
|
||||
|
||||
if self.hide_played_tracks:
|
||||
self.hide_played_tracks = False
|
||||
self.current.base_model.hide_played_tracks(False)
|
||||
@ -1940,7 +1945,7 @@ class Window(QMainWindow):
|
||||
if ok:
|
||||
self.signals.signal_insert_track.emit(
|
||||
InsertTrack(
|
||||
playlist_id=self.current.base_model.playlist_id,
|
||||
playlist_id=self.current.playlist_id,
|
||||
track_id=None,
|
||||
note=dlg.textValue(),
|
||||
)
|
||||
|
||||
@ -100,7 +100,7 @@ class PlaylistModel(QAbstractTableModel):
|
||||
self.signals.signal_playlist_selected_rows.connect(self.set_selected_rows)
|
||||
self.signals.signal_set_next_row.connect(self.set_next_row)
|
||||
self.signals.signal_track_started.connect(self.track_started)
|
||||
self.signals.track_ended_signal.connect(self.previous_track_ended)
|
||||
self.signals.signal_track_ended.connect(self.previous_track_ended)
|
||||
self.signals.signal_next_track_changed.connect(self.signal_next_track_changed_handler)
|
||||
|
||||
# Populate self.playlist_rows
|
||||
@ -983,7 +983,7 @@ class PlaylistModel(QAbstractTableModel):
|
||||
# @log_call
|
||||
def previous_track_ended(self, playlist_id: int) -> None:
|
||||
"""
|
||||
Notification from track_ended_signal that the previous track has ended.
|
||||
Notification from signal_track_ended that the previous track has ended.
|
||||
|
||||
Actions required:
|
||||
- sanity check
|
||||
|
||||
@ -238,18 +238,6 @@ class PlaylistRow:
|
||||
|
||||
self.resume_marker = self.music.get_position()
|
||||
self.music.fade(fade_seconds)
|
||||
self.signals.track_ended_signal.emit(self.playlist_id)
|
||||
self.end_of_track_signalled = True
|
||||
|
||||
def is_playing(self) -> bool:
|
||||
"""
|
||||
Return True if we're currently playing else False
|
||||
"""
|
||||
|
||||
if self.start_time is None:
|
||||
return False
|
||||
|
||||
return self.music.is_playing()
|
||||
|
||||
def play(self, position: float | None = None) -> None:
|
||||
"""Play track"""
|
||||
@ -368,7 +356,7 @@ class PlaylistRow:
|
||||
"""
|
||||
|
||||
if (
|
||||
not self.is_playing()
|
||||
not self.music.is_playing()
|
||||
or not self.fade_graph_start_updates
|
||||
or not self.fade_graph
|
||||
):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user