Display of countdown timer works

This commit is contained in:
Keith Edmunds 2024-06-02 16:50:49 +01:00
parent 983716e009
commit 09fdd7e4dc
2 changed files with 37 additions and 41 deletions

View File

@ -1000,7 +1000,7 @@ class Window(QMainWindow, Ui_MainWindow):
# when starting to play at track. # when starting to play at track.
# Resolution appears to be to disable timer10 for the first ten # Resolution appears to be to disable timer10 for the first ten
# seconds of playback. Re-enabled tick_1000ms # seconds of playback. Re-enable in update_clocks.
self.timer10.stop() self.timer10.stop()
log.debug("10ms timer disabled", 0) log.debug("10ms timer disabled", 0)
@ -1478,54 +1478,32 @@ class Window(QMainWindow, Ui_MainWindow):
if track_sequence.current: if track_sequence.current:
track_sequence.current.update_fade_graph() track_sequence.current.update_fade_graph()
def tick_500ms(self) -> None:
"""
Called every 500ms
"""
self.lblTOD.setText(dt.datetime.now().strftime(Config.TOD_TIME_FORMAT))
def tick_100ms(self) -> None: def tick_100ms(self) -> None:
""" """
Called every 100ms Called every 100ms
""" """
if track_sequence.current: if track_sequence.current:
track_sequence.current.check_for_end_of_track() try:
track_sequence.current.check_for_end_of_track()
return # Update intro counter if applicable and, if updated, return
# Update intro counter if applicable and, if updated, return # because playing an intro takes precedence over timing a
# because playing an intro takes precedence over timing a # preview.
# preview. remaining_ms = track_sequence.current.time_remaining_intro()
if self.music.is_playing() and track_sequence.current.intro: if remaining_ms > 0:
remaining_ms = track_sequence.current.intro - self.music.get_playtime() self.label_intro_timer.setText(f"{remaining_ms / 1000:.1f}")
if remaining_ms > 0: if remaining_ms <= Config.INTRO_SECONDS_WARNING_MS:
self.label_intro_timer.setText(f"{remaining_ms / 1000:.1f}") self.label_intro_timer.setStyleSheet(
if remaining_ms <= Config.INTRO_SECONDS_WARNING_MS: f"background: {Config.COLOUR_WARNING_TIMER}"
self.label_intro_timer.setStyleSheet( )
f"background: {Config.COLOUR_WARNING_TIMER}" return
) else:
return self.label_intro_timer.setStyleSheet("")
else: except AttributeError:
self.label_intro_timer.setStyleSheet("") # currnent track ended during servicing tick
pass
# Ensure preview button is reset if preview finishes playing
self.btnPreview.setChecked(self.preview_player.is_playing())
# Update preview timer
if self.preview_player.is_playing():
playtime = self.preview_player.get_playtime()
self.label_intro_timer.setText(f"{playtime / 1000:.1f}")
if playtime <= 0:
self.label_intro_timer.setStyleSheet(
f"background: {Config.COLOUR_ENDING_TIMER}"
)
elif playtime <= Config.INTRO_SECONDS_WARNING_MS:
self.label_intro_timer.setStyleSheet(
f"background: {Config.COLOUR_WARNING_TIMER}"
)
else:
self.label_intro_timer.setText("0.0")
def tick_1000ms(self) -> None: def tick_1000ms(self) -> None:
""" """
@ -1537,6 +1515,13 @@ class Window(QMainWindow, Ui_MainWindow):
self.update_clocks() self.update_clocks()
def tick_500ms(self) -> None:
"""
Called every 500ms
"""
self.lblTOD.setText(dt.datetime.now().strftime(Config.TOD_TIME_FORMAT))
def update_clocks(self) -> None: def update_clocks(self) -> None:
""" """
Update track clocks. Update track clocks.

View File

@ -503,6 +503,17 @@ class _TrackManager:
return self.player.get_playtime() return self.player.get_playtime()
def time_remaining_intro(self) -> int:
"""
Return milliseconds of intro remaining. Return 0 if no intro time in track
record or if intro has finished.
"""
if not self.intro:
return 0
return max(0, self.intro - self.time_playing())
def time_to_fade(self) -> int: def time_to_fade(self) -> int:
""" """
Return milliseconds until fade time. Return zero if we're not playing. Return milliseconds until fade time. Return zero if we're not playing.