From 23a9eff43bd64aecb14b00ef34c6f297869af7dc Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Thu, 23 Nov 2023 18:28:10 +0000 Subject: [PATCH] WIP V3 wire in QSortFilterProxyModel --- app/playlistmodel.py | 18 ++++++++++++++++++ app/playlists.py | 5 ++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/app/playlistmodel.py b/app/playlistmodel.py index 1e36770..c38aaa5 100644 --- a/app/playlistmodel.py +++ b/app/playlistmodel.py @@ -8,6 +8,7 @@ from typing import List, Optional from PyQt6.QtCore import ( QAbstractTableModel, QModelIndex, + QSortFilterProxyModel, Qt, QVariant, ) @@ -94,6 +95,23 @@ class StartEndTimes: end_time: Optional[datetime] = None +class PlaylistProxyModel(QSortFilterProxyModel): + """ + For searching and filtering + """ + + def __init__( + self, + playlist_id: int, + *args, + **kwargs, + ): + self.playlist_id = playlist_id + super().__init__(*args, **kwargs) + + self.setSourceModel(PlaylistModel(playlist_id)) + + class PlaylistModel(QAbstractTableModel): """ The Playlist Model diff --git a/app/playlists.py b/app/playlists.py index 7ab8876..cccc1c5 100644 --- a/app/playlists.py +++ b/app/playlists.py @@ -55,7 +55,7 @@ from models import PlaylistRows, Settings, Tracks, NoteColours if TYPE_CHECKING: from musicmuster import Window -from playlistmodel import PlaylistModel +from playlistmodel import PlaylistModel, PlaylistProxyModel # HEADER_NOTES_COLUMN = 2 @@ -203,7 +203,7 @@ class PlaylistTab(QTableView): # self.edit_cell_type: Optional[int] # Load playlist rows - self.setModel(PlaylistModel(playlist_id)) + self.setModel(PlaylistProxyModel(playlist_id)) self._set_column_widths() def closeEditor( @@ -536,7 +536,6 @@ class PlaylistTab(QTableView): ) # Add track to section header (ie, make this a track row) - # TODO if header_row: self._add_context_menu("Add a track", lambda: self._add_track())