WIP: fix insert tracks from query at selected row

This commit is contained in:
Keith Edmunds 2025-04-12 10:31:11 +01:00
parent 0478e25109
commit 9a6bb038e1
3 changed files with 14 additions and 28 deletions

View File

@ -1396,7 +1396,7 @@ class Window(QMainWindow):
new_row_number, existing_prd, note="" new_row_number, existing_prd, note=""
) )
else: else:
base_model.insert_row(new_row_number, track_id) base_model.insert_row(track_id)
new_row_number += 1 new_row_number += 1
@ -1896,10 +1896,7 @@ 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( self.current.base_model.insert_row(note=dlg.textValue())
proposed_row_number=self.current_row_or_end(),
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"""

View File

@ -566,24 +566,18 @@ class PlaylistModel(QAbstractTableModel):
return result return result
@log_call @log_call
def _get_new_row_number(self, proposed_row_number: Optional[int]) -> int: def _get_new_row_number(self) -> int:
""" """
Sanitises proposed new row number. Get row number for new row.
If proposed_row_number given, ensure it is valid. If any rows are selected, return the first such row number, else
If not given, return row number to add to end of model. return row number to add to end of model.
""" """
if proposed_row_number is None or proposed_row_number > len(self.playlist_rows): if not self.selected_rows:
# We are adding to the end of the list return len(self.playlist_rows)
new_row_number = len(self.playlist_rows)
elif proposed_row_number < 0:
# Add to start of list
new_row_number = 0
else:
new_row_number = proposed_row_number
return new_row_number return self.selected_rows[0].row_number
def get_row_info(self, row_number: int) -> PlaylistRow: def get_row_info(self, row_number: int) -> PlaylistRow:
""" """
@ -710,17 +704,12 @@ class PlaylistModel(QAbstractTableModel):
self.invalidate_row(row_number, roles) self.invalidate_row(row_number, roles)
@log_call @log_call
def insert_row( def insert_row(self, track_id: Optional[int] = None, note: str = "",) -> None:
self,
proposed_row_number: Optional[int],
track_id: Optional[int] = None,
note: str = "",
) -> None:
""" """
Insert a row. Insert a row.
""" """
new_row_number = self._get_new_row_number(proposed_row_number) new_row_number = self._get_new_row_number()
super().beginInsertRows(QModelIndex(), new_row_number, new_row_number) super().beginInsertRows(QModelIndex(), new_row_number, new_row_number)
@ -1485,7 +1474,7 @@ class PlaylistModel(QAbstractTableModel):
] ]
self.invalidate_rows(track_rows, roles) self.invalidate_rows(track_rows, roles)
else: else:
self.insert_row(proposed_row_number=row_number, track_id=track_id) self.insert_row(track_id=track_id)
@log_call @log_call
def update_track_times(self) -> None: def update_track_times(self) -> None:

View File

@ -799,10 +799,10 @@ def insert_row(
shift_by=1, shift_by=1,
) )
playlist_row = PlaylistRows.insert_row( playlist_row = PlaylistRows(
session=session, session=session,
playlist_id=playlist_id, playlist_id=playlist_id,
new_row_number=row_number, row_number=row_number,
note=note, note=note,
track_id=track_id, track_id=track_id,
) )