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())