| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- from PyQt5.QtCore import pyqtSignal
- from PyQt5.QtWidgets import QTableWidgetItem
- from core.repositories import TrackRepository, SessionTrackRepository
- from ui.qt.widgets.DragDropTableWidget import DragDropTableWidget
- class PlaylistTable(DragDropTableWidget):
- trackSelected = pyqtSignal(object)
- trackDoubleClicked = pyqtSignal(object)
- def __init__(self, parent):
- super().__init__(parent)
- self.playlist = None
- self.count = -1
- self.cellPressed.connect(self._cellPressed)
- self.cellDoubleClicked.connect(self._cellDoubleClicked)
- def populate(self, playlist=None):
- if playlist:
- self.playlist = playlist
- if not self.playlist:
- return
- session_track_repo = SessionTrackRepository()
- track_repo = TrackRepository()
- self.clear()
- self.hideColumn(0)
- self.hideColumn(1)
- session_tracks = session_track_repo.get_by_session_id(self.playlist.id)
- if not session_tracks:
- # self.insertRow(0)
- # self.setItem(0, 2, QTableWidgetItem("(la liste est vide, ajoutez y vos morceaux)"))
- return
- i = 0
- for session_track in session_tracks:
- track = track_repo.get_by_id(session_track.track_id)
- self.insertRow(i)
- item = QTableWidgetItem()
- item.setData(0, session_track.id)
- self.setItem(i, 0, item)
- item = QTableWidgetItem()
- item.setData(0, track.id)
- self.setItem(i, 1, item)
- self.setItem(i, 2, QTableWidgetItem(track.title))
- i += 1
- self.count = i
- def clear(self):
- while self.rowCount():
- self.removeRow(0)
- super().clear()
- def _cellPressed(self, row, _):
- track_id = int(self.item(row, 1).data(0))
- if track_id:
- track = TrackRepository().get_by_id(track_id)
- self.trackSelected.emit(track)
- def _cellDoubleClicked(self, row, _):
- track_id = int(self.item(row, 1).data(0))
- if track_id:
- track = TrackRepository().get_by_id(int(track_id))
- self.trackDoubleClicked.emit(track)
- def selected_session_track(self):
- session_track_id = self.item(self.currentRow(), 0).data(0)
- if not session_track_id:
- return None
- return SessionTrackRepository().get_by_id(int(session_track_id))
|