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=""
)
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 # # # # # # # # # #
@ -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"""

View File

@ -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:

View File

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

View File

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