Compare commits

..

No commits in common. "9a6bb038e10cc9e2eb9630575ceb6cbe323cca30" and "199abc9c0ccfed6f94de8ae6203f7a08021e56a4" have entirely different histories.

4 changed files with 31 additions and 16 deletions

View File

@ -1396,9 +1396,9 @@ class Window(QMainWindow):
new_row_number, existing_prd, note=""
)
else:
base_model.insert_row(track_id)
base_model.insert_row(new_row_number, track_id)
new_row_number += 1
new_row_number += 1
# # # # # # # # # # Playlist management functions # # # # # # # # # #
@ -1896,7 +1896,10 @@ class Window(QMainWindow):
dlg.resize(500, 100)
ok = dlg.exec()
if ok:
self.current.base_model.insert_row(note=dlg.textValue())
self.current.base_model.insert_row(
proposed_row_number=self.current_row_or_end(),
note=dlg.textValue(),
)
def insert_track(self, checked: bool = False) -> None:
"""Show dialog box to select and add track from database"""

View File

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

View File

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

View File

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