Connect up signal_insert_track
This commit is contained in:
parent
b34e0a014a
commit
498923c3b3
@ -65,6 +65,7 @@ import stackprinter # type: ignore
|
||||
from classes import (
|
||||
ApplicationError,
|
||||
Filter,
|
||||
InsertTrack,
|
||||
MusicMusterSignals,
|
||||
PlaylistDTO,
|
||||
QueryDTO,
|
||||
@ -1402,8 +1403,13 @@ class Window(QMainWindow):
|
||||
new_row_number, existing_prd, note=""
|
||||
)
|
||||
else:
|
||||
base_model.insert_row(track_id)
|
||||
|
||||
self.signals.signal_insert_track.emit(
|
||||
InsertTrack(
|
||||
playlist_id=base_model.playlist_id,
|
||||
track_id=track_id,
|
||||
note="",
|
||||
)
|
||||
)
|
||||
new_row_number += 1
|
||||
|
||||
# # # # # # # # # # Playlist management functions # # # # # # # # # #
|
||||
@ -1903,7 +1909,13 @@ class Window(QMainWindow):
|
||||
dlg.resize(500, 100)
|
||||
ok = dlg.exec()
|
||||
if ok:
|
||||
self.current.base_model.insert_row(note=dlg.textValue())
|
||||
self.signals.signal_insert_track.emit(
|
||||
InsertTrack(
|
||||
playlist_id=self.current.base_model.playlist_id,
|
||||
track_id=None,
|
||||
note=dlg.textValue()
|
||||
)
|
||||
)
|
||||
|
||||
def insert_track(self, checked: bool = False) -> None:
|
||||
"""Show dialog box to select and add track from database"""
|
||||
|
||||
@ -96,6 +96,7 @@ class PlaylistModel(QAbstractTableModel):
|
||||
self.signals.signal_add_track_to_header.connect(self.add_track_to_header)
|
||||
self.signals.signal_begin_insert_rows.connect(self.begin_insert_rows)
|
||||
self.signals.signal_end_insert_rows.connect(self.end_insert_rows)
|
||||
self.signals.signal_insert_track.connect(self.insert_row)
|
||||
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)
|
||||
@ -295,7 +296,9 @@ class PlaylistModel(QAbstractTableModel):
|
||||
# Update previous row in case we're hiding played rows
|
||||
if self.track_sequence.previous and self.track_sequence.previous.row_number:
|
||||
# only invalidate required roles
|
||||
self.invalidate_row(self.track_sequence.previous.row_number, roles_to_invalidate)
|
||||
self.invalidate_row(
|
||||
self.track_sequence.previous.row_number, roles_to_invalidate
|
||||
)
|
||||
|
||||
# Update all other track times
|
||||
self.update_track_times()
|
||||
@ -678,7 +681,7 @@ class PlaylistModel(QAbstractTableModel):
|
||||
self.invalidate_row(row_number, roles)
|
||||
|
||||
# @log_call
|
||||
def insert_row(self, track_id: Optional[int] = None, note: str = "",) -> None:
|
||||
def insert_row(self, row_data: InsertTrack) -> None:
|
||||
"""
|
||||
Insert a row.
|
||||
"""
|
||||
@ -690,8 +693,8 @@ class PlaylistModel(QAbstractTableModel):
|
||||
_ = ds.playlist_insert_row(
|
||||
playlist_id=self.playlist_id,
|
||||
row_number=new_row_number,
|
||||
track_id=track_id,
|
||||
note=note,
|
||||
track_id=row_data.track_id,
|
||||
note=row_data.note,
|
||||
)
|
||||
# Need to refresh self.playlist_rows because row numbers will have
|
||||
# changed
|
||||
@ -797,14 +800,16 @@ class PlaylistModel(QAbstractTableModel):
|
||||
if self.track_sequence.current:
|
||||
current_row = self.track_sequence.current.row_number
|
||||
if current_row in from_rows:
|
||||
log.debug(
|
||||
"move_rows: Removing {current_row=} from {from_rows=}"
|
||||
)
|
||||
log.debug("move_rows: Removing {current_row=} from {from_rows=}")
|
||||
from_rows.remove(self.track_sequence.current.row_number)
|
||||
|
||||
from_rows = sorted(set(from_rows))
|
||||
if (min(from_rows) < 0 or max(from_rows) >= self.rowCount()
|
||||
or to_row_number < 0 or to_row_number > self.rowCount()):
|
||||
if (
|
||||
min(from_rows) < 0
|
||||
or max(from_rows) >= self.rowCount()
|
||||
or to_row_number < 0
|
||||
or to_row_number > self.rowCount()
|
||||
):
|
||||
log.debug("move_rows: invalid indexes")
|
||||
return False
|
||||
|
||||
@ -862,15 +867,16 @@ class PlaylistModel(QAbstractTableModel):
|
||||
# Prepare source model
|
||||
super().beginRemoveRows(QModelIndex(), min(row_group), max(row_group))
|
||||
# Prepare destination model
|
||||
insert_rows = InsertRows(to_playlist_id,
|
||||
to_row_number,
|
||||
to_row_number + len(row_group)
|
||||
insert_rows = InsertRows(
|
||||
to_playlist_id, to_row_number, to_row_number + len(row_group)
|
||||
)
|
||||
self.signals.signal_begin_insert_rows.emit(insert_rows)
|
||||
ds.playlist_move_rows(from_rows=row_group,
|
||||
ds.playlist_move_rows(
|
||||
from_rows=row_group,
|
||||
from_playlist_id=self.playlist_id,
|
||||
to_row=to_row_number,
|
||||
to_playlist_id=to_playlist_id)
|
||||
to_playlist_id=to_playlist_id,
|
||||
)
|
||||
self.signals.signal_end_insert_rows.emit(to_playlist_id)
|
||||
super().endRemoveRows()
|
||||
|
||||
@ -1014,7 +1020,9 @@ class PlaylistModel(QAbstractTableModel):
|
||||
plrid = self.playlist_rows[row_number].playlistrow_id
|
||||
refreshed_row = ds.playlistrow_by_id(plrid)
|
||||
if not refreshed_row:
|
||||
raise ApplicationError(f"Failed to retrieve row {self.playlist_id=}, {row_number=}")
|
||||
raise ApplicationError(
|
||||
f"Failed to retrieve row {self.playlist_id=}, {row_number=}"
|
||||
)
|
||||
|
||||
self.playlist_rows[row_number] = PlaylistRow(refreshed_row)
|
||||
|
||||
@ -1451,7 +1459,9 @@ class PlaylistModel(QAbstractTableModel):
|
||||
]
|
||||
self.invalidate_rows(track_rows, roles)
|
||||
else:
|
||||
self.insert_row(track_id=track_id)
|
||||
self.insert_row(
|
||||
InsertTrack(playlist_id=self.playlist_id, track_id=track_id, note="")
|
||||
)
|
||||
|
||||
# @log_call
|
||||
def update_track_times(self) -> None:
|
||||
@ -1477,7 +1487,10 @@ class PlaylistModel(QAbstractTableModel):
|
||||
update_rows, self.track_sequence.current.start_time
|
||||
)
|
||||
|
||||
if self.track_sequence.next and self.track_sequence.next.playlist_id == self.playlist_id:
|
||||
if (
|
||||
self.track_sequence.next
|
||||
and self.track_sequence.next.playlist_id == self.playlist_id
|
||||
):
|
||||
next_track_row = self.track_sequence.next.row_number
|
||||
|
||||
for row_number in range(row_count):
|
||||
@ -1582,15 +1595,22 @@ class PlaylistProxyModel(QSortFilterProxyModel):
|
||||
):
|
||||
# This row isn't our previous track: hide it
|
||||
return False
|
||||
if self.track_sequence.current and self.track_sequence.current.start_time:
|
||||
if (
|
||||
self.track_sequence.current
|
||||
and self.track_sequence.current.start_time
|
||||
):
|
||||
# This row is our previous track. Don't hide it
|
||||
# until HIDE_AFTER_PLAYING_OFFSET milliseconds
|
||||
# after current track has started
|
||||
if self.track_sequence.current.start_time and dt.datetime.now() > (
|
||||
if (
|
||||
self.track_sequence.current.start_time
|
||||
and dt.datetime.now()
|
||||
> (
|
||||
self.track_sequence.current.start_time
|
||||
+ dt.timedelta(
|
||||
milliseconds=Config.HIDE_AFTER_PLAYING_OFFSET
|
||||
)
|
||||
)
|
||||
):
|
||||
return False
|
||||
else:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user