Show track start times rather than end times
This commit is contained in:
parent
04f5a07c3e
commit
1c078a2d69
@ -34,7 +34,7 @@ class Playlist(QTableWidget):
|
|||||||
COL_TITLE = 2
|
COL_TITLE = 2
|
||||||
COL_ARTIST = 3
|
COL_ARTIST = 3
|
||||||
COL_DURATION = 4
|
COL_DURATION = 4
|
||||||
COL_ENDTIME = 5
|
COL_START_TIME = 5
|
||||||
COL_PATH = 6
|
COL_PATH = 6
|
||||||
|
|
||||||
NOTE_COL_SPAN = 3
|
NOTE_COL_SPAN = 3
|
||||||
@ -213,7 +213,7 @@ class Playlist(QTableWidget):
|
|||||||
item = QTableWidgetItem(start_time.strftime("%H:%M:%S"))
|
item = QTableWidgetItem(start_time.strftime("%H:%M:%S"))
|
||||||
else:
|
else:
|
||||||
item = QTableWidgetItem()
|
item = QTableWidgetItem()
|
||||||
self.setItem(row, self.COL_ENDTIME, item)
|
self.setItem(row, self.COL_START_TIME, item)
|
||||||
item = QTableWidgetItem()
|
item = QTableWidgetItem()
|
||||||
self.setItem(row, self.COL_PATH, item)
|
self.setItem(row, self.COL_PATH, item)
|
||||||
|
|
||||||
@ -348,7 +348,7 @@ class Playlist(QTableWidget):
|
|||||||
except AttributeError:
|
except AttributeError:
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
def calculate_row_endtime(self, row, start):
|
def calculate_next_start_time(self, row, start):
|
||||||
"Return this row's end time given its start time"
|
"Return this row's end time given its start time"
|
||||||
|
|
||||||
duration = Tracks.get_duration(
|
duration = Tracks.get_duration(
|
||||||
@ -497,8 +497,6 @@ class Playlist(QTableWidget):
|
|||||||
else:
|
else:
|
||||||
title = ""
|
title = ""
|
||||||
DEBUG(f"meta_set(row={row}, title={title}, metadata={metadata})")
|
DEBUG(f"meta_set(row={row}, title={title}, metadata={metadata})")
|
||||||
if metadata is None and self.current_track and title == self.current_track.title:
|
|
||||||
import ipdb; ipdb.set_trace()
|
|
||||||
if row is None:
|
if row is None:
|
||||||
raise ValueError(f"meta_set() with row=None")
|
raise ValueError(f"meta_set() with row=None")
|
||||||
|
|
||||||
@ -541,6 +539,7 @@ class Playlist(QTableWidget):
|
|||||||
|
|
||||||
# Play (new) current.
|
# Play (new) current.
|
||||||
self.music.play(self.current_track.path)
|
self.music.play(self.current_track.path)
|
||||||
|
self.current_track.start_time = datetime.now()
|
||||||
|
|
||||||
# Update metadata
|
# Update metadata
|
||||||
self.meta_set_current(self.meta_get_next())
|
self.meta_set_current(self.meta_get_next())
|
||||||
@ -614,24 +613,29 @@ class Playlist(QTableWidget):
|
|||||||
def repaint(self, clear_selection=True):
|
def repaint(self, clear_selection=True):
|
||||||
"Set row colours, fonts, etc, and save playlist"
|
"Set row colours, fonts, etc, and save playlist"
|
||||||
|
|
||||||
|
DEBUG(f"repaint(clear_selection={clear_selection})")
|
||||||
|
|
||||||
self.save_playlist()
|
self.save_playlist()
|
||||||
|
|
||||||
if clear_selection:
|
if clear_selection:
|
||||||
self.clearSelection()
|
self.clearSelection()
|
||||||
current = self.meta_get_current()
|
current = self.meta_get_current()
|
||||||
next = self.meta_get_next()
|
next = self.meta_get_next() or 0
|
||||||
notes = self.meta_get_notes()
|
notes = self.meta_get_notes()
|
||||||
|
|
||||||
# Set colours and start times
|
# Set colours and start times
|
||||||
running_end_time = None
|
next_start_time = None
|
||||||
for row in range(self.rowCount()):
|
|
||||||
|
|
||||||
if row == current:
|
# Set current row if there is one
|
||||||
# Set end time
|
row = current
|
||||||
running_end_time = datetime.now() + timedelta(
|
if row is not None:
|
||||||
milliseconds=self.current_track.silence_at)
|
# Set start time
|
||||||
item = QTableWidgetItem(running_end_time.strftime("%H:%M:%S"))
|
next_start_time = self.calculate_next_start_time(
|
||||||
self.setItem(row, self.COL_ENDTIME, item)
|
row, self.current_track.start_time)
|
||||||
|
item = QTableWidgetItem(
|
||||||
|
self.current_track.start_time.strftime("%H:%M:%S")
|
||||||
|
)
|
||||||
|
self.setItem(row, self.COL_START_TIME, item)
|
||||||
# Set colour
|
# Set colour
|
||||||
self.set_row_colour(
|
self.set_row_colour(
|
||||||
current, QColor(Config.COLOUR_CURRENT_PLAYLIST)
|
current, QColor(Config.COLOUR_CURRENT_PLAYLIST)
|
||||||
@ -639,27 +643,21 @@ class Playlist(QTableWidget):
|
|||||||
# Make bold
|
# Make bold
|
||||||
self.set_row_bold(current)
|
self.set_row_bold(current)
|
||||||
|
|
||||||
elif row == next:
|
# Now from the top, but ignore timing until either next or current
|
||||||
# Set end time
|
for row in range(self.rowCount()):
|
||||||
if running_end_time:
|
# Current row is already set
|
||||||
running_end_time = self.calculate_row_endtime(
|
if row == current:
|
||||||
row, running_end_time)
|
continue
|
||||||
item = QTableWidgetItem(
|
|
||||||
running_end_time.strftime("%H:%M:%S")
|
|
||||||
)
|
|
||||||
self.setItem(row, self.COL_ENDTIME, item)
|
|
||||||
# Set colour
|
|
||||||
self.set_row_colour(
|
|
||||||
row, QColor(Config.COLOUR_NEXT_PLAYLIST)
|
|
||||||
)
|
|
||||||
# Make bold
|
|
||||||
self.set_row_bold(row)
|
|
||||||
|
|
||||||
elif row in notes:
|
set_time = row >= min(next or 0, current or 0)
|
||||||
# Set/reset end time
|
|
||||||
|
# Handle notes
|
||||||
|
if row in notes:
|
||||||
|
if set_time:
|
||||||
try:
|
try:
|
||||||
running_end_time = datetime.strptime(
|
next_start_time = datetime.strptime(
|
||||||
self.item(row, self.COL_ENDTIME).text(), "%H:%M:%S"
|
self.item(row, self.COL_START_TIME).text(),
|
||||||
|
"%H:%M:%S"
|
||||||
)
|
)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
@ -669,6 +667,23 @@ class Playlist(QTableWidget):
|
|||||||
)
|
)
|
||||||
self.set_row_bold(row)
|
self.set_row_bold(row)
|
||||||
|
|
||||||
|
# Handle next
|
||||||
|
elif row == next:
|
||||||
|
if set_time and next_start_time:
|
||||||
|
item = QTableWidgetItem(
|
||||||
|
next_start_time.strftime("%H:%M:%S")
|
||||||
|
)
|
||||||
|
self.setItem(row, self.COL_START_TIME, item)
|
||||||
|
next_start_time = self.calculate_next_start_time(
|
||||||
|
row, next_start_time)
|
||||||
|
# Set colour
|
||||||
|
self.set_row_colour(
|
||||||
|
row, QColor(Config.COLOUR_NEXT_PLAYLIST)
|
||||||
|
)
|
||||||
|
# Make bold
|
||||||
|
self.set_row_bold(row)
|
||||||
|
|
||||||
|
# Handle other rows
|
||||||
else:
|
else:
|
||||||
# Stripe rows
|
# Stripe rows
|
||||||
if row % 2:
|
if row % 2:
|
||||||
@ -677,15 +692,13 @@ class Playlist(QTableWidget):
|
|||||||
colour = QColor(Config.COLOUR_EVEN_PLAYLIST)
|
colour = QColor(Config.COLOUR_EVEN_PLAYLIST)
|
||||||
self.set_row_colour(row, colour)
|
self.set_row_colour(row, colour)
|
||||||
|
|
||||||
# Add running end time
|
# Set time
|
||||||
if self.item(row, self.COL_INDEX):
|
if set_time and next_start_time:
|
||||||
if int(self.item(row, self.COL_INDEX).text()) > 0:
|
|
||||||
if running_end_time:
|
|
||||||
running_end_time = self.calculate_row_endtime(
|
|
||||||
row, running_end_time)
|
|
||||||
item = QTableWidgetItem(
|
item = QTableWidgetItem(
|
||||||
running_end_time.strftime("%H:%M:%S"))
|
next_start_time.strftime("%H:%M:%S"))
|
||||||
self.setItem(row, self.COL_ENDTIME, item)
|
self.setItem(row, self.COL_START_TIME, item)
|
||||||
|
next_start_time = self.calculate_next_start_time(
|
||||||
|
row, next_start_time)
|
||||||
|
|
||||||
# Dim played tracks
|
# Dim played tracks
|
||||||
track_id = int(self.item(row, self.COL_INDEX).text())
|
track_id = int(self.item(row, self.COL_INDEX).text())
|
||||||
|
|||||||
@ -491,7 +491,7 @@ border: 1px solid rgb(85, 87, 83);</string>
|
|||||||
</column>
|
</column>
|
||||||
<column>
|
<column>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>End time</string>
|
<string>Start</string>
|
||||||
</property>
|
</property>
|
||||||
</column>
|
</column>
|
||||||
<column>
|
<column>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user