V3 tweaks and polishes

This commit is contained in:
Keith Edmunds 2023-11-28 19:59:45 +00:00
parent f8093bc642
commit f9b8f1d8d3
2 changed files with 35 additions and 25 deletions

View File

@ -65,7 +65,7 @@ from dbconfig import (
from dialogs import TrackSelectDialog
from log import log
from models import Base, Carts, Playdates, PlaylistRows, Playlists, Settings, Tracks
from playlistmodel import PlaylistModel
from playlistmodel import PlaylistModel, PlaylistProxyModel
from playlists import PlaylistTab
from ui.dlg_cart_ui import Ui_DialogCartEdit # type: ignore
from ui.dlg_SelectPlaylist_ui import Ui_dlgSelectPlaylist # type: ignore
@ -218,7 +218,7 @@ class Window(QMainWindow, Ui_MainWindow):
self.active_tab = lambda: self.tabPlaylist.currentWidget()
self.active_model = lambda: self.tabPlaylist.currentWidget().model()
self.move_source_rows: Optional[List[int]] = None
self.move_source_model: Optional[PlaylistModel] = None
self.move_source_model: Optional[PlaylistProxyModel] = None
self.load_last_playlists()
if Config.CARTS_HIDE:
@ -1021,7 +1021,7 @@ class Window(QMainWindow, Ui_MainWindow):
else:
destination_row = self.active_model().rowCount()
if to_playlist_id == self.move_source_model.playlist_id:
if to_playlist_id == self.move_source_model.data_model.playlist_id:
self.move_source_model.move_rows(self.move_source_rows, destination_row)
else:
self.move_source_model.move_rows_between_playlists(

View File

@ -356,7 +356,7 @@ class PlaylistModel(QAbstractTableModel):
PlaylistRows.fixup_rownumbers(session, self.playlist_id)
self.refresh_data(session)
self.row_order_changed(self.playlist_id)
self.reset_track_sequence_row_numbers()
def display_role(self, row: int, column: int, prd: PlaylistRowData) -> QVariant:
"""
@ -414,7 +414,7 @@ class PlaylistModel(QAbstractTableModel):
with Session() as session:
self.refresh_data(session)
super().endResetModel()
self.row_order_changed(self.playlist_id)
self.reset_track_sequence_row_numbers()
def edit_role(self, row: int, column: int, prd: PlaylistRowData) -> QVariant:
"""
@ -708,7 +708,7 @@ class PlaylistModel(QAbstractTableModel):
self.refresh_data(session)
super().endInsertRows()
self.row_order_changed(self.playlist_id)
self.reset_track_sequence_row_numbers()
self.invalidate_rows(list(range(new_row_number, len(self.playlist_rows))))
def invalidate_row(self, modified_row: int) -> None:
@ -819,7 +819,7 @@ class PlaylistModel(QAbstractTableModel):
self.refresh_data(session)
# Update display
self.signals.row_order_changed_signal.emit(self.playlist_id)
self.reset_track_sequence_row_numbers()
self.invalidate_rows(list(row_map.keys()))
def mark_unplayed(self, row_numbers: List[int]) -> None:
@ -887,7 +887,7 @@ class PlaylistModel(QAbstractTableModel):
self.refresh_data(session)
# Reset of model must come after session has been closed
self.signals.row_order_changed_signal.emit(self.playlist_id)
self.reset_track_sequence_row_numbers()
self.signals.row_order_changed_signal.emit(to_playlist_id)
self.signals.end_reset_model_signal.emit(to_playlist_id)
self.update_track_times()
@ -1033,6 +1033,31 @@ class PlaylistModel(QAbstractTableModel):
self.invalidate_row(row_number)
self.signals.resize_rows_signal.emit(self.playlist_id)
def reset_track_sequence_row_numbers(self) -> None:
"""
Signal handler for when row ordering has changed
"""
# Check the track_sequence next, now and previous plrs and
# update the row number
with Session() as session:
if track_sequence.next.plr_rownum:
next_plr = session.get(PlaylistRows, track_sequence.next.plr_id)
if next_plr:
track_sequence.next.plr_rownum = next_plr.plr_rownum
if track_sequence.now.plr_rownum:
now_plr = session.get(PlaylistRows, track_sequence.now.plr_id)
if now_plr:
track_sequence.now.plr_rownum = now_plr.plr_rownum
if track_sequence.previous.plr_rownum:
previous_plr = session.get(
PlaylistRows, track_sequence.previous.plr_id
)
if previous_plr:
track_sequence.previous.plr_rownum = previous_plr.plr_rownum
self.update_track_times()
def _reversed_contiguous_row_groups(
self, row_numbers: List[int]
) -> List[List[int]]:
@ -1071,26 +1096,11 @@ class PlaylistModel(QAbstractTableModel):
Signal handler for when row ordering has changed
"""
# Only action if this is for us
if playlist_id != self.playlist_id:
return
with Session() as session:
if track_sequence.next.plr_rownum:
next_plr = session.get(PlaylistRows, track_sequence.next.plr_rownum)
if next_plr:
track_sequence.next.plr_rownum = next_plr.plr_rownum
if track_sequence.now.plr_rownum:
now_plr = session.get(PlaylistRows, track_sequence.now.plr_rownum)
if now_plr:
track_sequence.now.plr_rownum = now_plr.plr_rownum
if track_sequence.previous.plr_rownum:
previous_plr = session.get(
PlaylistRows, track_sequence.previous.plr_rownum
)
if previous_plr:
track_sequence.previous.plr_rownum = previous_plr.plr_rownum
self.update_track_times()
self.reset_track_sequence_row_numbers()
def selection_is_sortable(self, row_numbers: List[int]) -> bool:
"""