Use symbolic names for columns
This commit is contained in:
parent
b42ffcec69
commit
84d746bd2f
106
app/playlists.py
106
app/playlists.py
@ -74,8 +74,8 @@ class RowMeta:
|
|||||||
Column = namedtuple("Column", ['idx', 'heading'])
|
Column = namedtuple("Column", ['idx', 'heading'])
|
||||||
columns = {}
|
columns = {}
|
||||||
columns["userdata"] = Column(idx=0, heading=Config.COLUMN_NAME_AUTOPLAY)
|
columns["userdata"] = Column(idx=0, heading=Config.COLUMN_NAME_AUTOPLAY)
|
||||||
columns["start_gap"] = Column(
|
columns["start_gap"] = Column(idx=1,
|
||||||
idx=1, heading=Config.COLUMN_NAME_LEADING_SILENCE)
|
heading=Config.COLUMN_NAME_LEADING_SILENCE)
|
||||||
columns["title"] = Column(idx=2, heading=Config.COLUMN_NAME_TITLE)
|
columns["title"] = Column(idx=2, heading=Config.COLUMN_NAME_TITLE)
|
||||||
columns["artist"] = Column(idx=3, heading=Config.COLUMN_NAME_ARTIST)
|
columns["artist"] = Column(idx=3, heading=Config.COLUMN_NAME_ARTIST)
|
||||||
columns["duration"] = Column(idx=4, heading=Config.COLUMN_NAME_LENGTH)
|
columns["duration"] = Column(idx=4, heading=Config.COLUMN_NAME_LENGTH)
|
||||||
@ -85,6 +85,17 @@ columns["lastplayed"] = Column(idx=7, heading=Config.COLUMN_NAME_LAST_PLAYED)
|
|||||||
columns["bitrate"] = Column(idx=8, heading=Config.COLUMN_NAME_BITRATE)
|
columns["bitrate"] = Column(idx=8, heading=Config.COLUMN_NAME_BITRATE)
|
||||||
columns["row_notes"] = Column(idx=9, heading=Config.COLUMN_NAME_NOTES)
|
columns["row_notes"] = Column(idx=9, heading=Config.COLUMN_NAME_NOTES)
|
||||||
|
|
||||||
|
USERDATA = columns["userdata"].idx
|
||||||
|
START_GAP = columns["start_gap"].idx
|
||||||
|
TITLE = columns["title"].idx
|
||||||
|
ARTIST = columns["artist"].idx
|
||||||
|
DURATION = columns["duration"].idx
|
||||||
|
START_TIME = columns["start_time"].idx
|
||||||
|
END_TIME = columns["end_time"].idx
|
||||||
|
LASTPLAYED = columns["lastplayed"].idx
|
||||||
|
BITRATE = columns["bitrate"].idx
|
||||||
|
ROW_NOTES = columns["row_notes"].idx
|
||||||
|
|
||||||
|
|
||||||
class NoSelectDelegate(QStyledItemDelegate):
|
class NoSelectDelegate(QStyledItemDelegate):
|
||||||
"""
|
"""
|
||||||
@ -465,11 +476,11 @@ class PlaylistTab(QTableWidget):
|
|||||||
# If a track row, we only allow editing of title, artist and
|
# If a track row, we only allow editing of title, artist and
|
||||||
# note. Check that this column is one of those.
|
# note. Check that this column is one of those.
|
||||||
self.edit_cell_type = None
|
self.edit_cell_type = None
|
||||||
if column == columns['title'].idx:
|
if column == TITLE:
|
||||||
self.edit_cell_type = "title"
|
self.edit_cell_type = "title"
|
||||||
elif column == columns['artist'].idx:
|
elif column == ARTIST:
|
||||||
self.edit_cell_type = "artist"
|
self.edit_cell_type = "artist"
|
||||||
elif column == columns['row_notes'].idx:
|
elif column == ROW_NOTES:
|
||||||
self.edit_cell_type = "row_notes"
|
self.edit_cell_type = "row_notes"
|
||||||
else:
|
else:
|
||||||
# Can't edit other columns
|
# Can't edit other columns
|
||||||
@ -477,7 +488,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
|
|
||||||
# Check whether we're editing a notes row for later
|
# Check whether we're editing a notes row for later
|
||||||
if self.edit_cell_type == "row_notes":
|
if self.edit_cell_type == "row_notes":
|
||||||
note_column = columns['row_notes'].idx
|
note_column = ROW_NOTES
|
||||||
else:
|
else:
|
||||||
# This is a section header.
|
# This is a section header.
|
||||||
if column != HEADER_NOTES_COLUMN:
|
if column != HEADER_NOTES_COLUMN:
|
||||||
@ -580,7 +591,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
userdata_item.setData(self.ROW_FLAGS, 0)
|
userdata_item.setData(self.ROW_FLAGS, 0)
|
||||||
userdata_item.setData(self.PLAYLISTROW_ID, row_data.id)
|
userdata_item.setData(self.PLAYLISTROW_ID, row_data.id)
|
||||||
userdata_item.setData(self.ROW_TRACK_ID, row_data.track_id)
|
userdata_item.setData(self.ROW_TRACK_ID, row_data.track_id)
|
||||||
self.setItem(row, columns['userdata'].idx, userdata_item)
|
self.setItem(row, USERDATA, userdata_item)
|
||||||
|
|
||||||
if row_data.track_id:
|
if row_data.track_id:
|
||||||
# Add track details to items
|
# Add track details to items
|
||||||
@ -591,41 +602,41 @@ class PlaylistTab(QTableWidget):
|
|||||||
start_gap_item = QTableWidgetItem(str(start_gap))
|
start_gap_item = QTableWidgetItem(str(start_gap))
|
||||||
if start_gap and start_gap >= 500:
|
if start_gap and start_gap >= 500:
|
||||||
start_gap_item.setBackground(QColor(Config.COLOUR_LONG_START))
|
start_gap_item.setBackground(QColor(Config.COLOUR_LONG_START))
|
||||||
self.setItem(row, columns['start_gap'].idx, start_gap_item)
|
self.setItem(row, START_GAP, start_gap_item)
|
||||||
|
|
||||||
title_item = QTableWidgetItem(row_data.track.title)
|
title_item = QTableWidgetItem(row_data.track.title)
|
||||||
self.setItem(row, columns['title'].idx, title_item)
|
self.setItem(row, TITLE, title_item)
|
||||||
|
|
||||||
artist_item = QTableWidgetItem(row_data.track.artist)
|
artist_item = QTableWidgetItem(row_data.track.artist)
|
||||||
self.setItem(row, columns['artist'].idx, artist_item)
|
self.setItem(row, ARTIST, artist_item)
|
||||||
|
|
||||||
duration_item = QTableWidgetItem(
|
duration_item = QTableWidgetItem(
|
||||||
ms_to_mmss(row_data.track.duration))
|
ms_to_mmss(row_data.track.duration))
|
||||||
self.setItem(row, columns['duration'].idx, duration_item)
|
self.setItem(row, DURATION, duration_item)
|
||||||
self._set_row_duration(row, row_data.track.duration)
|
self._set_row_duration(row, row_data.track.duration)
|
||||||
|
|
||||||
start_item = QTableWidgetItem()
|
start_item = QTableWidgetItem()
|
||||||
self.setItem(row, columns['start_time'].idx, start_item)
|
self.setItem(row, START_TIME, start_item)
|
||||||
|
|
||||||
end_item = QTableWidgetItem()
|
end_item = QTableWidgetItem()
|
||||||
self.setItem(row, columns['end_time'].idx, end_item)
|
self.setItem(row, END_TIME, end_item)
|
||||||
|
|
||||||
if row_data.track.bitrate:
|
if row_data.track.bitrate:
|
||||||
bitrate = str(row_data.track.bitrate)
|
bitrate = str(row_data.track.bitrate)
|
||||||
else:
|
else:
|
||||||
bitrate = ""
|
bitrate = ""
|
||||||
bitrate_item = QTableWidgetItem(bitrate)
|
bitrate_item = QTableWidgetItem(bitrate)
|
||||||
self.setItem(row, columns['bitrate'].idx, bitrate_item)
|
self.setItem(row, BITRATE, bitrate_item)
|
||||||
|
|
||||||
# As we have track info, any notes should be contained in
|
# As we have track info, any notes should be contained in
|
||||||
# the notes column
|
# the notes column
|
||||||
notes_item = QTableWidgetItem(row_data.note)
|
notes_item = QTableWidgetItem(row_data.note)
|
||||||
self.setItem(row, columns['row_notes'].idx, notes_item)
|
self.setItem(row, ROW_NOTES, notes_item)
|
||||||
|
|
||||||
last_playtime = Playdates.last_played(session, row_data.track.id)
|
last_playtime = Playdates.last_played(session, row_data.track.id)
|
||||||
last_played_str = get_relative_date(last_playtime)
|
last_played_str = get_relative_date(last_playtime)
|
||||||
last_played_item = QTableWidgetItem(last_played_str)
|
last_played_item = QTableWidgetItem(last_played_str)
|
||||||
self.setItem(row, columns['lastplayed'].idx, last_played_item)
|
self.setItem(row, LASTPLAYED, last_played_item)
|
||||||
|
|
||||||
# Mark track if file is unreadable
|
# Mark track if file is unreadable
|
||||||
if not file_is_readable(row_data.track.path):
|
if not file_is_readable(row_data.track.path):
|
||||||
@ -1053,7 +1064,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
|
|
||||||
# Colour any note
|
# Colour any note
|
||||||
if note_colour:
|
if note_colour:
|
||||||
(self.item(row, columns['row_notes'].idx)
|
(self.item(row, ROW_NOTES)
|
||||||
.setBackground(QColor(note_colour)))
|
.setBackground(QColor(note_colour)))
|
||||||
|
|
||||||
# Highlight low bitrates
|
# Highlight low bitrates
|
||||||
@ -1065,7 +1076,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
else:
|
else:
|
||||||
cell_colour = Config.COLOUR_BITRATE_OK
|
cell_colour = Config.COLOUR_BITRATE_OK
|
||||||
brush = QBrush(QColor(cell_colour))
|
brush = QBrush(QColor(cell_colour))
|
||||||
self.item(row, columns['bitrate'].idx).setBackground(brush)
|
self.item(row, BITRATE).setBackground(brush)
|
||||||
|
|
||||||
# Render playing track
|
# Render playing track
|
||||||
if row == current_row:
|
if row == current_row:
|
||||||
@ -1073,7 +1084,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
self._set_row_start_time(
|
self._set_row_start_time(
|
||||||
row, self.current_track_start_time)
|
row, self.current_track_start_time)
|
||||||
# Set last played time to "Today"
|
# Set last played time to "Today"
|
||||||
self.item(row, columns['lastplayed'].idx).setText("Today")
|
self.item(row, LASTPLAYED).setText("Today")
|
||||||
# Calculate next_start_time
|
# Calculate next_start_time
|
||||||
next_start_time = self._calculate_end_time(
|
next_start_time = self._calculate_end_time(
|
||||||
self.current_track_start_time, track.duration)
|
self.current_track_start_time, track.duration)
|
||||||
@ -1114,7 +1125,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
|
|
||||||
if row in played:
|
if row in played:
|
||||||
# Played today, so update last played column
|
# Played today, so update last played column
|
||||||
self.item(row, columns['lastplayed'].idx).setText(
|
self.item(row, LASTPLAYED).setText(
|
||||||
Config.LAST_PLAYED_TODAY_STRING)
|
Config.LAST_PLAYED_TODAY_STRING)
|
||||||
if self.musicmuster.hide_played_tracks:
|
if self.musicmuster.hide_played_tracks:
|
||||||
self.hideRow(row)
|
self.hideRow(row)
|
||||||
@ -1199,7 +1210,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
ms_to_mmss(track.duration))
|
ms_to_mmss(track.duration))
|
||||||
last_playtime = Playdates.last_played(session, track.id)
|
last_playtime = Playdates.last_played(session, track.id)
|
||||||
last_played_str = get_relative_date(last_playtime)
|
last_played_str = get_relative_date(last_playtime)
|
||||||
self.item(row, columns['lastplayed'].idx).setText(last_played_str)
|
self.item(row, LASTPLAYED).setText(last_played_str)
|
||||||
|
|
||||||
# Reset row span
|
# Reset row span
|
||||||
self.setSpan(row, 1, 1, 1)
|
self.setSpan(row, 1, 1, 1)
|
||||||
@ -1391,8 +1402,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
def _get_playlistrow_id(self, row: int) -> int:
|
def _get_playlistrow_id(self, row: int) -> int:
|
||||||
"""Return the playlistrow_id associated with this row"""
|
"""Return the playlistrow_id associated with this row"""
|
||||||
|
|
||||||
playlistrow_id = (self.item(row, columns['userdata'].idx)
|
playlistrow_id = (self.item(row, USERDATA).data(self.PLAYLISTROW_ID))
|
||||||
.data(self.PLAYLISTROW_ID))
|
|
||||||
|
|
||||||
return playlistrow_id
|
return playlistrow_id
|
||||||
|
|
||||||
@ -1403,14 +1413,13 @@ class PlaylistTab(QTableWidget):
|
|||||||
if not track_id:
|
if not track_id:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
item_artist = self.item(row, columns['artist'].idx)
|
item_artist = self.item(row, ARTIST)
|
||||||
return item_artist.text()
|
return item_artist.text()
|
||||||
|
|
||||||
def _get_row_duration(self, row: int) -> int:
|
def _get_row_duration(self, row: int) -> int:
|
||||||
"""Return duration associated with this row"""
|
"""Return duration associated with this row"""
|
||||||
|
|
||||||
duration = (self.item(row, columns['userdata'].idx)
|
duration = (self.item(row, USERDATA).data(self.ROW_DURATION))
|
||||||
.data(self.ROW_DURATION))
|
|
||||||
if duration:
|
if duration:
|
||||||
return duration
|
return duration
|
||||||
else:
|
else:
|
||||||
@ -1421,16 +1430,16 @@ class PlaylistTab(QTableWidget):
|
|||||||
|
|
||||||
track_id = self._get_row_track_id(row)
|
track_id = self._get_row_track_id(row)
|
||||||
if track_id:
|
if track_id:
|
||||||
item_note = self.item(row, columns['row_notes'].idx)
|
item_note = self.item(row, ROW_NOTES)
|
||||||
else:
|
else:
|
||||||
item_note = self.item(row, HEADER_NOTES_COLUMN)
|
item_note = self.item(row, HEADER_NOTES_COLUMN)
|
||||||
return item_note.text()
|
return item_note.text()
|
||||||
|
|
||||||
def _get_row_start_time(self, row: int) -> Optional[datetime]:
|
def _get_row_start_time(self, row: int) -> Optional[datetime]:
|
||||||
try:
|
try:
|
||||||
if self.item(row, columns['start_time'].idx):
|
if self.item(row, START_TIME):
|
||||||
return datetime.strptime(self.item(
|
return datetime.strptime(self.item(
|
||||||
row, columns['start_time'].idx).text(),
|
row, START_TIME).text(),
|
||||||
Config.NOTE_TIME_FORMAT
|
Config.NOTE_TIME_FORMAT
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
@ -1445,14 +1454,14 @@ class PlaylistTab(QTableWidget):
|
|||||||
if not track_id:
|
if not track_id:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
item_title = self.item(row, columns['title'].idx)
|
item_title = self.item(row, TITLE)
|
||||||
return item_title.text()
|
return item_title.text()
|
||||||
|
|
||||||
def _get_row_track_id(self, row: int) -> int:
|
def _get_row_track_id(self, row: int) -> int:
|
||||||
"""Return the track_id associated with this row or None"""
|
"""Return the track_id associated with this row or None"""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
track_id = (self.item(row, columns['userdata'].idx)
|
track_id = (self.item(row, USERDATA)
|
||||||
.data(self.ROW_TRACK_ID))
|
.data(self.ROW_TRACK_ID))
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
return None
|
return None
|
||||||
@ -1535,8 +1544,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
raise ValueError(f"_meta_clear_attribute({row=}, {attribute=})")
|
raise ValueError(f"_meta_clear_attribute({row=}, {attribute=})")
|
||||||
|
|
||||||
new_metadata: int = self._meta_get(row) & ~(1 << attribute)
|
new_metadata: int = self._meta_get(row) & ~(1 << attribute)
|
||||||
self.item(row, columns['userdata'].idx).setData(
|
self.item(row, USERDATA).setData(self.ROW_FLAGS, new_metadata)
|
||||||
self.ROW_FLAGS, new_metadata)
|
|
||||||
|
|
||||||
def _meta_clear_next(self) -> None:
|
def _meta_clear_next(self) -> None:
|
||||||
"""
|
"""
|
||||||
@ -1550,8 +1558,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
def _meta_get(self, row: int) -> int:
|
def _meta_get(self, row: int) -> int:
|
||||||
"""Return row metadata"""
|
"""Return row metadata"""
|
||||||
|
|
||||||
return (self.item(row, columns['userdata'].idx)
|
return (self.item(row, USERDATA).data(self.ROW_FLAGS))
|
||||||
.data(self.ROW_FLAGS))
|
|
||||||
|
|
||||||
def _meta_search(self, metadata: int, one: bool = True) -> List[int]:
|
def _meta_search(self, metadata: int, one: bool = True) -> List[int]:
|
||||||
"""
|
"""
|
||||||
@ -1592,8 +1599,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
new_metadata: int = (1 << attribute)
|
new_metadata: int = (1 << attribute)
|
||||||
else:
|
else:
|
||||||
new_metadata = self._meta_get(row) | (1 << attribute)
|
new_metadata = self._meta_get(row) | (1 << attribute)
|
||||||
self.item(row, columns['userdata'].idx).setData(
|
self.item(row, USERDATA).setData(self.ROW_FLAGS, new_metadata)
|
||||||
self.ROW_FLAGS, new_metadata)
|
|
||||||
|
|
||||||
def _mplayer_play(self, track_id: int) -> None:
|
def _mplayer_play(self, track_id: int) -> None:
|
||||||
"""Play track with mplayer"""
|
"""Play track with mplayer"""
|
||||||
@ -1651,8 +1657,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
# Remove row duration
|
# Remove row duration
|
||||||
self._set_row_duration(row, 0)
|
self._set_row_duration(row, 0)
|
||||||
# Remote track_id from row
|
# Remote track_id from row
|
||||||
self.item(row, columns['userdata'].idx).setData(
|
self.item(row, USERDATA).setData(self.ROW_TRACK_ID, 0)
|
||||||
self.ROW_TRACK_ID, 0)
|
|
||||||
# Span the rows
|
# Span the rows
|
||||||
self.setSpan(row, 1, 1, len(columns))
|
self.setSpan(row, 1, 1, len(columns))
|
||||||
# And refresh display
|
# And refresh display
|
||||||
@ -1800,7 +1805,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
boldfont = QFont()
|
boldfont = QFont()
|
||||||
boldfont.setBold(bold)
|
boldfont.setBold(bold)
|
||||||
for column in range(self.columnCount()):
|
for column in range(self.columnCount()):
|
||||||
if column == columns['row_notes'].idx:
|
if column == ROW_NOTES:
|
||||||
continue
|
continue
|
||||||
if self.item(row, column):
|
if self.item(row, column):
|
||||||
self.item(row, column).setFont(boldfont)
|
self.item(row, column).setFont(boldfont)
|
||||||
@ -1820,7 +1825,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
|
|
||||||
for column in range(1, self.columnCount()):
|
for column in range(1, self.columnCount()):
|
||||||
# Don't change colour on start gap columns
|
# Don't change colour on start gap columns
|
||||||
if column == columns['start_gap'].idx:
|
if column == START_GAP:
|
||||||
continue
|
continue
|
||||||
if self.item(row, column):
|
if self.item(row, column):
|
||||||
self.item(row, column).setBackground(brush)
|
self.item(row, column).setBackground(brush)
|
||||||
@ -1828,7 +1833,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
def _set_row_duration(self, row: int, ms: int) -> None:
|
def _set_row_duration(self, row: int, ms: int) -> None:
|
||||||
"""Set duration of this row in row metadata"""
|
"""Set duration of this row in row metadata"""
|
||||||
|
|
||||||
self.item(row, columns['userdata'].idx).setData(self.ROW_DURATION, ms)
|
self.item(row, USERDATA).setData(self.ROW_DURATION, ms)
|
||||||
|
|
||||||
def _set_row_end_time(self, row: int, time: Optional[datetime]) -> None:
|
def _set_row_end_time(self, row: int, time: Optional[datetime]) -> None:
|
||||||
"""Set passed row end time to passed time"""
|
"""Set passed row end time to passed time"""
|
||||||
@ -1838,7 +1843,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
except AttributeError:
|
except AttributeError:
|
||||||
time_str = ""
|
time_str = ""
|
||||||
item = QTableWidgetItem(time_str)
|
item = QTableWidgetItem(time_str)
|
||||||
self.setItem(row, columns['end_time'].idx, item)
|
self.setItem(row, END_TIME, item)
|
||||||
|
|
||||||
def _set_row_not_bold(self, row: int) -> None:
|
def _set_row_not_bold(self, row: int) -> None:
|
||||||
"""Set row to not be bold"""
|
"""Set row to not be bold"""
|
||||||
@ -1853,7 +1858,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
except AttributeError:
|
except AttributeError:
|
||||||
time_str = ""
|
time_str = ""
|
||||||
item = QTableWidgetItem(time_str)
|
item = QTableWidgetItem(time_str)
|
||||||
self.setItem(row, columns['start_time'].idx, item)
|
self.setItem(row, START_TIME, item)
|
||||||
|
|
||||||
def _set_unreadable_row(self, row: int) -> None:
|
def _set_unreadable_row(self, row: int) -> None:
|
||||||
"""Mark this row as unreadable"""
|
"""Mark this row as unreadable"""
|
||||||
@ -1884,7 +1889,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
# Column to update is either HEADER_NOTES_COLUMN for a section
|
# Column to update is either HEADER_NOTES_COLUMN for a section
|
||||||
# header or the appropriate row_notes column for a track row
|
# header or the appropriate row_notes column for a track row
|
||||||
if playlist_row.track_id:
|
if playlist_row.track_id:
|
||||||
column = columns['row_notes'].idx
|
column = ROW_NOTES
|
||||||
else:
|
else:
|
||||||
column = HEADER_NOTES_COLUMN
|
column = HEADER_NOTES_COLUMN
|
||||||
|
|
||||||
@ -1897,24 +1902,23 @@ class PlaylistTab(QTableWidget):
|
|||||||
Update the passed row with info from the passed track.
|
Update the passed row with info from the passed track.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
columns['start_time'].idx
|
item_startgap = self.item(row, START_GAP)
|
||||||
item_startgap = self.item(row, columns['start_gap'].idx)
|
|
||||||
item_startgap.setText(str(track.start_gap))
|
item_startgap.setText(str(track.start_gap))
|
||||||
if track.start_gap >= 500:
|
if track.start_gap >= 500:
|
||||||
item_startgap.setBackground(QColor(Config.COLOUR_LONG_START))
|
item_startgap.setBackground(QColor(Config.COLOUR_LONG_START))
|
||||||
else:
|
else:
|
||||||
item_startgap.setBackground(QColor("white"))
|
item_startgap.setBackground(QColor("white"))
|
||||||
|
|
||||||
item_title = self.item(row, columns['title'].idx)
|
item_title = self.item(row, TITLE)
|
||||||
item_title.setText(track.title)
|
item_title.setText(track.title)
|
||||||
|
|
||||||
item_artist = self.item(row, columns['artist'].idx)
|
item_artist = self.item(row, ARTIST)
|
||||||
item_artist.setText(track.artist)
|
item_artist.setText(track.artist)
|
||||||
|
|
||||||
item_duration = self.item(row, columns['duration'].idx)
|
item_duration = self.item(row, DURATION)
|
||||||
item_duration.setText(ms_to_mmss(track.duration))
|
item_duration.setText(ms_to_mmss(track.duration))
|
||||||
|
|
||||||
item_bitrate = self.item(row, columns['bitrate'].idx)
|
item_bitrate = self.item(row, BITRATE)
|
||||||
item_bitrate.setText(str(track.bitrate))
|
item_bitrate.setText(str(track.bitrate))
|
||||||
|
|
||||||
self.update_display(session)
|
self.update_display(session)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user