WIP: moving to signals
This commit is contained in:
parent
5e492f4569
commit
f9c8541b17
@ -36,6 +36,7 @@ from classes import (
|
|||||||
InsertRows,
|
InsertRows,
|
||||||
InsertTrack,
|
InsertTrack,
|
||||||
MusicMusterSignals,
|
MusicMusterSignals,
|
||||||
|
PlayTrack,
|
||||||
)
|
)
|
||||||
from config import Config
|
from config import Config
|
||||||
from helpers import (
|
from helpers import (
|
||||||
@ -98,6 +99,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
self.signals.signal_end_insert_rows.connect(self.end_insert_rows)
|
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_playlist_selected_rows.connect(self.set_selected_rows)
|
||||||
self.signals.signal_set_next_row.connect(self.set_next_row)
|
self.signals.signal_set_next_row.connect(self.set_next_row)
|
||||||
|
self.signals.signal_track_started.connect(self.track_started)
|
||||||
|
|
||||||
# Populate self.playlist_rows
|
# Populate self.playlist_rows
|
||||||
for dto in repository.get_playlist_rows(self.playlist_id):
|
for dto in repository.get_playlist_rows(self.playlist_id):
|
||||||
@ -255,7 +257,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
return len(Col)
|
return len(Col)
|
||||||
|
|
||||||
@log_call
|
@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
|
Notification from musicmuster that the current track has just
|
||||||
started playing
|
started playing
|
||||||
@ -270,22 +272,30 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
- update track times
|
- update track times
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if not self.track_sequence.current:
|
if play_track.playlist_id != self.playlist_id:
|
||||||
|
# Not for us
|
||||||
return
|
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
|
row_number = self.track_sequence.current.row_number
|
||||||
playlist_dto = self.playlist_rows[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
|
# Check for OBS scene change
|
||||||
self.obs_scene_change(row_number)
|
self.obs_scene_change(row_number)
|
||||||
|
|
||||||
# Sanity check that we have a track_id
|
# Update Playdates in database
|
||||||
track_id = playlist_dto.track_id
|
|
||||||
if not track_id:
|
|
||||||
raise ApplicationError(
|
|
||||||
f"current_track_started() called with no track_id ({playlist_dto=})"
|
|
||||||
)
|
|
||||||
|
|
||||||
repository.update_playdates(track_id)
|
repository.update_playdates(track_id)
|
||||||
|
|
||||||
# Mark track as played in playlist
|
# 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]
|
self.selected_rows = [self.playlist_rows[a] for a in selected_row_numbers]
|
||||||
|
|
||||||
|
@log_call
|
||||||
def set_next_row(self, playlist_id: int) -> None:
|
def set_next_row(self, playlist_id: int) -> None:
|
||||||
"""
|
"""
|
||||||
Handle signal_set_next_row
|
Handle signal_set_next_row
|
||||||
|
|||||||
@ -40,6 +40,7 @@ from classes import (
|
|||||||
Col,
|
Col,
|
||||||
MusicMusterSignals,
|
MusicMusterSignals,
|
||||||
PlaylistStyle,
|
PlaylistStyle,
|
||||||
|
PlayTrack,
|
||||||
TrackInfo
|
TrackInfo
|
||||||
)
|
)
|
||||||
from config import Config
|
from config import Config
|
||||||
@ -310,6 +311,7 @@ class PlaylistTab(QTableView):
|
|||||||
self.signals = MusicMusterSignals()
|
self.signals = MusicMusterSignals()
|
||||||
self.signals.resize_rows_signal.connect(self.resize_rows)
|
self.signals.resize_rows_signal.connect(self.resize_rows)
|
||||||
self.signals.span_cells_signal.connect(self._span_cells)
|
self.signals.span_cells_signal.connect(self._span_cells)
|
||||||
|
self.signals.signal_track_started.connect(self.track_started)
|
||||||
|
|
||||||
# Selection model
|
# Selection model
|
||||||
self.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection)
|
self.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection)
|
||||||
@ -722,12 +724,17 @@ class PlaylistTab(QTableView):
|
|||||||
cb.setText(track_path, mode=cb.Mode.Clipboard)
|
cb.setText(track_path, mode=cb.Mode.Clipboard)
|
||||||
|
|
||||||
@log_call
|
@log_call
|
||||||
def current_track_started(self) -> None:
|
def track_started(self, play_track: PlayTrack) -> None:
|
||||||
"""
|
"""
|
||||||
Called when track starts playing
|
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
|
# Scroll to current section if hide mode is by section
|
||||||
if (
|
if (
|
||||||
self.musicmuster.hide_played_tracks
|
self.musicmuster.hide_played_tracks
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user