Compare commits

...

3 Commits

Author SHA1 Message Date
Keith Edmunds
199dada246 Save playlist column widths correctly 2021-07-03 10:15:39 +01:00
Keith Edmunds
8838c23c59 Add end times column. Fixes #24 2021-07-03 10:15:08 +01:00
Keith Edmunds
5b6db24692 Clear fade b/g colour explicity - should fix #25 2021-07-03 09:51:54 +01:00
2 changed files with 44 additions and 24 deletions

View File

@ -124,6 +124,8 @@ class Window(QMainWindow, Ui_MainWindow):
if record.f_int != self.y(): if record.f_int != self.y():
record.update(session, {'f_int': self.y()}) record.update(session, {'f_int': self.y()})
self.visible_playlist_tab().close(session)
event.accept() event.accept()
def connect_signals_slots(self): def connect_signals_slots(self):
@ -631,6 +633,7 @@ class Window(QMainWindow, Ui_MainWindow):
self.enable_play_next_controls() self.enable_play_next_controls()
else: else:
self.frame_silent.setStyleSheet("") self.frame_silent.setStyleSheet("")
self.frame_fade.setStyleSheet("")
self.label_silent_timer.setText( self.label_silent_timer.setText(
helpers.ms_to_mmss(time_to_silence) helpers.ms_to_mmss(time_to_silence)

View File

@ -29,9 +29,10 @@ class PlaylistTab(QTableWidget):
COL_ARTIST = 3 COL_ARTIST = 3
COL_DURATION = 4 COL_DURATION = 4
COL_START_TIME = 5 COL_START_TIME = 5
COL_PATH = 6 COL_END_TIME = 6
COL_PATH = 7
NOTE_COL_SPAN = 3 NOTE_COL_SPAN = 4
NOTE_ROW_SPAN = 1 NOTE_ROW_SPAN = 1
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -44,7 +45,7 @@ class PlaylistTab(QTableWidget):
self.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) self.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel) self.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
self.setRowCount(0) self.setRowCount(0)
self.setColumnCount(7) self.setColumnCount(8)
item = QtWidgets.QTableWidgetItem() item = QtWidgets.QTableWidgetItem()
self.setHorizontalHeaderItem(0, item) self.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem() item = QtWidgets.QTableWidgetItem()
@ -59,11 +60,13 @@ class PlaylistTab(QTableWidget):
self.setHorizontalHeaderItem(5, item) self.setHorizontalHeaderItem(5, item)
item = QtWidgets.QTableWidgetItem() item = QtWidgets.QTableWidgetItem()
self.setHorizontalHeaderItem(6, item) self.setHorizontalHeaderItem(6, item)
item = QtWidgets.QTableWidgetItem()
self.setHorizontalHeaderItem(7, item)
self.horizontalHeader().setMinimumSectionSize(0) self.horizontalHeader().setMinimumSectionSize(0)
self._set_column_widths() self._set_column_widths()
self.setHorizontalHeaderLabels(["ID", "Lead", "Title", "Artist", self.setHorizontalHeaderLabels(["ID", "Lead", "Title", "Artist",
"Len", "Start", "Path"]) "Len", "Start", "End", "Path"])
self.setDragEnabled(True) self.setDragEnabled(True)
self.setAcceptDrops(True) self.setAcceptDrops(True)
@ -88,19 +91,6 @@ class PlaylistTab(QTableWidget):
# ########## Events ########## # ########## Events ##########
def closeEvent(self, event):
"Save column widths"
for column in range(self.columnCount()):
width = self.columnWidth(column)
name = f"playlist_col_{str(column)}_width"
with Session() as session:
record = Settings.get_int(session, name)
if record.f_int != self.columnWidth(column):
record.update(session, {'f_int': width})
event.accept()
def dropEvent(self, event: QDropEvent): def dropEvent(self, event: QDropEvent):
if not event.isAccepted() and event.source() == self: if not event.isAccepted() and event.source() == self:
drop_row = self._drop_on(event) drop_row = self._drop_on(event)
@ -167,6 +157,16 @@ class PlaylistTab(QTableWidget):
# ########## Externally called functions ########## # ########## Externally called functions ##########
def close(self, session):
"Save column widths"
for column in range(self.columnCount()):
width = self.columnWidth(column)
name = f"playlist_col_{str(column)}_width"
record = Settings.get_int(session, name)
if record.f_int != self.columnWidth(column):
record.update(session, {'f_int': width})
def insert_note(self, session, note, repaint=True): def insert_note(self, session, note, repaint=True):
""" """
Add note to playlist Add note to playlist
@ -203,9 +203,11 @@ class PlaylistTab(QTableWidget):
self.setSpan(row, self.COL_NOTE, self.NOTE_ROW_SPAN, self.setSpan(row, self.COL_NOTE, self.NOTE_ROW_SPAN,
self.NOTE_COL_SPAN) self.NOTE_COL_SPAN)
# Add start times or empty items as background # Add start/end times or empty items as background
# colour won't be set for columns without items # colour won't be set for columns without items
self._set_row_time(row, start_time) self._set_row_start_time(row, start_time)
item = QTableWidgetItem()
self.setItem(row, self.COL_END_TIME, item)
item = QTableWidgetItem() item = QTableWidgetItem()
self.setItem(row, self.COL_PATH, item) self.setItem(row, self.COL_PATH, item)
@ -804,10 +806,13 @@ class PlaylistTab(QTableWidget):
elif row == current: elif row == current:
# Set start time # Set start time
self._set_row_time(row, self.current_track_start_time) self._set_row_start_time(
row, self.current_track_start_time)
# Calculate next_start_time # Calculate next_start_time
next_start_time = self._calculate_next_start_time( next_start_time = self._calculate_next_start_time(
session, row, self.current_track_start_time) session, row, self.current_track_start_time)
# Set end time
self._set_row_end_time(row, next_start_time)
# Set colour # Set colour
self._set_row_colour(row, QColor( self._set_row_colour(row, QColor(
Config.COLOUR_CURRENT_PLAYLIST)) Config.COLOUR_CURRENT_PLAYLIST))
@ -826,7 +831,7 @@ class PlaylistTab(QTableWidget):
if not start_time: if not start_time:
start_time = next_start_time start_time = next_start_time
# Now set it # Now set it
self._set_row_time(row, start_time) self._set_row_start_time(row, start_time)
next_start_time = self._calculate_next_start_time( next_start_time = self._calculate_next_start_time(
session, row, start_time) session, row, start_time)
# Set colour # Set colour
@ -846,11 +851,13 @@ class PlaylistTab(QTableWidget):
if self._get_row_id(row) in self.played_tracks: if self._get_row_id(row) in self.played_tracks:
self._set_row_not_bold(row) self._set_row_not_bold(row)
else: else:
# Set time only if we haven't played it yet # Set start/end times only if we haven't played it yet
if next_start_time: if next_start_time:
self._set_row_time(row, next_start_time) self._set_row_start_time(row, next_start_time)
next_start_time = self._calculate_next_start_time( next_start_time = self._calculate_next_start_time(
session, row, next_start_time) session, row, next_start_time)
# Set end time
self._set_row_end_time(row, next_start_time)
# Don't dim unplayed tracks # Don't dim unplayed tracks
self._set_row_bold(row) self._set_row_bold(row)
@ -955,7 +962,17 @@ class PlaylistTab(QTableWidget):
def _set_row_not_bold(self, row): def _set_row_not_bold(self, row):
self._set_row_bold(row, False) self._set_row_bold(row, False)
def _set_row_time(self, row, time): def _set_row_end_time(self, row, time):
"Set passed row end time to passed time"
try:
time_str = time.strftime("%H:%M:%S")
except AttributeError:
time_str = ""
item = QTableWidgetItem(time_str)
self.setItem(row, self.COL_END_TIME, item)
def _set_row_start_time(self, row, time):
"Set passed row start time to passed time"
try: try:
time_str = time.strftime("%H:%M:%S") time_str = time.strftime("%H:%M:%S")
except AttributeError: except AttributeError: