2025-01-25 17:21:43 +01:00
|
|
|
#!/usr/bin/python3
|
|
|
|
|
|
|
|
from PyQt6.QtCore import Qt
|
2025-02-22 18:25:17 +01:00
|
|
|
from PyQt6.QtGui import QFont, QIcon, QPalette
|
2025-01-25 17:21:43 +01:00
|
|
|
from PyQt6.QtWidgets import QTreeWidgetItem
|
|
|
|
|
|
|
|
|
|
|
|
class TrackItem(QTreeWidgetItem):
|
2025-02-22 18:25:17 +01:00
|
|
|
normal_font = QFont()
|
|
|
|
bold_font = QFont()
|
|
|
|
bold_font.setBold(True)
|
|
|
|
|
|
|
|
playing_mark = QIcon.fromTheme(QIcon.ThemeIcon.MediaPlaybackStart)
|
|
|
|
|
2025-01-25 18:04:46 +01:00
|
|
|
def __init__(self, track, index, parent=None):
|
2025-01-25 17:21:43 +01:00
|
|
|
super().__init__(parent)
|
|
|
|
|
|
|
|
self.track = track
|
2025-01-25 18:04:46 +01:00
|
|
|
self.index_user_sort = index
|
2025-01-26 16:49:09 +01:00
|
|
|
self.index = index
|
|
|
|
|
|
|
|
self.playlist = parent.playlist
|
|
|
|
|
2025-02-22 18:25:17 +01:00
|
|
|
palette = parent.palette()
|
|
|
|
|
|
|
|
self.highlight_color = palette.color(QPalette.ColorRole.Highlight)
|
|
|
|
self.base_color = palette.color(QPalette.ColorRole.Base)
|
|
|
|
|
2025-01-26 16:49:09 +01:00
|
|
|
track.items.append(self)
|
|
|
|
|
|
|
|
track.set_occurrences()
|
2025-01-25 17:21:43 +01:00
|
|
|
|
|
|
|
self.setFlags(
|
|
|
|
Qt.ItemFlag.ItemIsEnabled |
|
|
|
|
Qt.ItemFlag.ItemIsSelectable |
|
|
|
|
Qt.ItemFlag.ItemIsDragEnabled
|
|
|
|
)
|
|
|
|
|
2025-01-26 17:18:42 +01:00
|
|
|
self.setText(0, str(self.index + 1))
|
|
|
|
self.setText(1, track.tags.title)
|
|
|
|
self.setText(2, track.tags.artist)
|
|
|
|
self.setText(3, track.tags.album)
|
|
|
|
self.setText(4, str(self.index_user_sort + 1))
|
2025-01-25 17:26:55 +01:00
|
|
|
|
2025-02-22 18:25:17 +01:00
|
|
|
def mark(self):
|
|
|
|
self.setIcon(0, self.playing_mark)
|
|
|
|
self.setFont(1, self.bold_font)
|
|
|
|
self.setFont(2, self.bold_font)
|
|
|
|
self.setFont(3, self.normal_font)
|
|
|
|
|
|
|
|
|
|
|
|
def unmark(self):
|
|
|
|
self.setIcon(0, QIcon(None))
|
|
|
|
self.setFont(1, self.normal_font)
|
|
|
|
self.setFont(2, self.normal_font)
|
|
|
|
self.setFont(3, self.normal_font)
|
|
|
|
|