WIP: moving to signals

This commit is contained in:
Keith Edmunds 2025-04-08 16:11:39 +01:00
parent 5e492f4569
commit f9c8541b17
2 changed files with 29 additions and 11 deletions

View File

@ -36,6 +36,7 @@ from classes import (
InsertRows,
InsertTrack,
MusicMusterSignals,
PlayTrack,
)
from config import Config
from helpers import (
@ -98,6 +99,7 @@ class PlaylistModel(QAbstractTableModel):
self.signals.signal_end_insert_rows.connect(self.end_insert_rows)
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)
# Populate self.playlist_rows
for dto in repository.get_playlist_rows(self.playlist_id):
@ -255,7 +257,7 @@ class PlaylistModel(QAbstractTableModel):
return len(Col)
@log_call
def current_track_started(self) -> None:
def track_started(self, play_track: PlayTrack) -> None:
"""
Notification from musicmuster that the current track has just
started playing
@ -270,22 +272,30 @@ class PlaylistModel(QAbstractTableModel):
- update track times
"""
if not self.track_sequence.current:
if play_track.playlist_id != self.playlist_id:
# Not for us
return
track_id = play_track.track_id
# Sanity check - 1
if not track_id:
raise ApplicationError("current_track_started() called with no track_id")
# Sanity check - 2
if self.track_sequence.current is None:
raise ApplicationError("track_started callced with no current track")
row_number = self.track_sequence.current.row_number
playlist_dto = self.playlist_rows[row_number]
# Sanity check - 3
if playlist_dto.track_id != track_id:
raise ApplicationError("track_id mismatch between playlist_rows and signal")
# Check for OBS scene change
self.obs_scene_change(row_number)
# Sanity check that we have a track_id
track_id = playlist_dto.track_id
if not track_id:
raise ApplicationError(
f"current_track_started() called with no track_id ({playlist_dto=})"
)
# Update Playdates in database
repository.update_playdates(track_id)
# Mark track as played in playlist
@ -1271,6 +1281,7 @@ class PlaylistModel(QAbstractTableModel):
self.selected_rows = [self.playlist_rows[a] for a in selected_row_numbers]
@log_call
def set_next_row(self, playlist_id: int) -> None:
"""
Handle signal_set_next_row

View File

@ -40,6 +40,7 @@ from classes import (
Col,
MusicMusterSignals,
PlaylistStyle,
PlayTrack,
TrackInfo
)
from config import Config
@ -310,6 +311,7 @@ class PlaylistTab(QTableView):
self.signals = MusicMusterSignals()
self.signals.resize_rows_signal.connect(self.resize_rows)
self.signals.span_cells_signal.connect(self._span_cells)
self.signals.signal_track_started.connect(self.track_started)
# Selection model
self.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection)
@ -722,12 +724,17 @@ class PlaylistTab(QTableView):
cb.setText(track_path, mode=cb.Mode.Clipboard)
@log_call
def current_track_started(self) -> None:
def track_started(self, play_track: PlayTrack) -> None:
"""
Called when track starts playing
"""
self.get_base_model().current_track_started()
if play_track.playlist_id != self.playlist_id:
# Not for us
return
# TODO - via signal
# self.get_base_model().current_track_started()
# Scroll to current section if hide mode is by section
if (
self.musicmuster.hide_played_tracks