WIP: moving to signals
This commit is contained in:
parent
5e492f4569
commit
f9c8541b17
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user