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