From 9a6bb038e10cc9e2eb9630575ceb6cbe323cca30 Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Sat, 12 Apr 2025 10:31:11 +0100 Subject: [PATCH] WIP: fix insert tracks from query at selected row --- app/musicmuster.py | 7 ++----- app/playlistmodel.py | 31 ++++++++++--------------------- app/repository.py | 4 ++-- 3 files changed, 14 insertions(+), 28 deletions(-) diff --git a/app/musicmuster.py b/app/musicmuster.py index 9d2bbda..a34213c 100755 --- a/app/musicmuster.py +++ b/app/musicmuster.py @@ -1396,7 +1396,7 @@ class Window(QMainWindow): new_row_number, existing_prd, note="" ) else: - base_model.insert_row(new_row_number, track_id) + base_model.insert_row(track_id) new_row_number += 1 @@ -1896,10 +1896,7 @@ class Window(QMainWindow): dlg.resize(500, 100) ok = dlg.exec() if ok: - self.current.base_model.insert_row( - proposed_row_number=self.current_row_or_end(), - note=dlg.textValue(), - ) + self.current.base_model.insert_row(note=dlg.textValue()) def insert_track(self, checked: bool = False) -> None: """Show dialog box to select and add track from database""" diff --git a/app/playlistmodel.py b/app/playlistmodel.py index 60416a1..0af7b31 100644 --- a/app/playlistmodel.py +++ b/app/playlistmodel.py @@ -566,24 +566,18 @@ class PlaylistModel(QAbstractTableModel): return result @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 not given, return row number to add to end of model. + If any rows are selected, return the first such row number, else + return row number to add to end of model. """ - if proposed_row_number is None or proposed_row_number > len(self.playlist_rows): - # We are adding to the end of the list - 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 + if not self.selected_rows: + return len(self.playlist_rows) - return new_row_number + return self.selected_rows[0].row_number def get_row_info(self, row_number: int) -> PlaylistRow: """ @@ -710,17 +704,12 @@ class PlaylistModel(QAbstractTableModel): self.invalidate_row(row_number, roles) @log_call - def insert_row( - self, - proposed_row_number: Optional[int], - track_id: Optional[int] = None, - note: str = "", - ) -> None: + def insert_row(self, track_id: Optional[int] = None, note: str = "",) -> None: """ 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) @@ -1485,7 +1474,7 @@ class PlaylistModel(QAbstractTableModel): ] self.invalidate_rows(track_rows, roles) else: - self.insert_row(proposed_row_number=row_number, track_id=track_id) + self.insert_row(track_id=track_id) @log_call def update_track_times(self) -> None: diff --git a/app/repository.py b/app/repository.py index 0a87edf..6cd29b4 100644 --- a/app/repository.py +++ b/app/repository.py @@ -799,10 +799,10 @@ def insert_row( shift_by=1, ) - playlist_row = PlaylistRows.insert_row( + playlist_row = PlaylistRows( session=session, playlist_id=playlist_id, - new_row_number=row_number, + row_number=row_number, note=note, track_id=track_id, )