Compare commits

...

2 Commits

Author SHA1 Message Date
Keith Edmunds
9a6bb038e1 WIP: fix insert tracks from query at selected row 2025-04-12 10:31:11 +01:00
Keith Edmunds
0478e25109 Fix bug inserting multiple tracks from query 2025-04-12 09:28:22 +01:00
4 changed files with 16 additions and 31 deletions

View File

@ -1396,9 +1396,9 @@ 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
# # # # # # # # # # Playlist management functions # # # # # # # # # # # # # # # # # # # # Playlist management functions # # # # # # # # # #
@ -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

@ -37,8 +37,7 @@ from helpers import (
ms_to_mmss, ms_to_mmss,
show_warning, show_warning,
) )
from log import log from log import log, log_call
from models import db, Playdates
from playlistrow import PlaylistRow from playlistrow import PlaylistRow
import repository import repository

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,
) )