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,7 +1396,7 @@ class Window(QMainWindow):
new_row_number, existing_prd, note="" new_row_number, existing_prd, note=""
) )
else: else:
base_model.insert_row(track_id) base_model.insert_row(new_row_number, track_id)
new_row_number += 1 new_row_number += 1
@ -1896,7 +1896,10 @@ 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(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: 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,18 +566,24 @@ class PlaylistModel(QAbstractTableModel):
return result return result
@log_call @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 If proposed_row_number given, ensure it is valid.
return row number to add to end of model. If not given, return row number to add to end of model.
""" """
if not self.selected_rows: if proposed_row_number is None or proposed_row_number > len(self.playlist_rows):
return 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: def get_row_info(self, row_number: int) -> PlaylistRow:
""" """
@ -704,12 +710,17 @@ class PlaylistModel(QAbstractTableModel):
self.invalidate_row(row_number, roles) self.invalidate_row(row_number, roles)
@log_call @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. 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) super().beginInsertRows(QModelIndex(), new_row_number, new_row_number)
@ -1474,7 +1485,7 @@ class PlaylistModel(QAbstractTableModel):
] ]
self.invalidate_rows(track_rows, roles) self.invalidate_rows(track_rows, roles)
else: else:
self.insert_row(track_id=track_id) self.insert_row(proposed_row_number=row_number, track_id=track_id)
@log_call @log_call
def update_track_times(self) -> None: def update_track_times(self) -> None:

View File

@ -37,7 +37,8 @@ from helpers import (
ms_to_mmss, ms_to_mmss,
show_warning, show_warning,
) )
from log import log, log_call from log import log
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( playlist_row = PlaylistRows.insert_row(
session=session, session=session,
playlist_id=playlist_id, playlist_id=playlist_id,
row_number=row_number, new_row_number=row_number,
note=note, note=note,
track_id=track_id, track_id=track_id,
) )