Compare commits

..

No commits in common. "2f13099bda51bc5295000ab8db1ebd8c179a9dc6" and "5b0d604edf03b3dd7a4c408be73c16720862935e" have entirely different histories.

3 changed files with 4 additions and 48 deletions

View File

@ -16,7 +16,6 @@ class Config(object):
COLOUR_BITRATE_OK = "#dcedc8" COLOUR_BITRATE_OK = "#dcedc8"
COLOUR_CART_ERROR = "#dc3545" COLOUR_CART_ERROR = "#dc3545"
COLOUR_CART_PLAYING = "#248f24" COLOUR_CART_PLAYING = "#248f24"
COLOUR_CART_PROGRESSBAR = "#000000"
COLOUR_CART_READY = "#ffc107" COLOUR_CART_READY = "#ffc107"
COLOUR_CART_UNCONFIGURED = "#f2f2f2" COLOUR_CART_UNCONFIGURED = "#f2f2f2"
COLOUR_CURRENT_HEADER = "#d4edda" COLOUR_CURRENT_HEADER = "#d4edda"

View File

@ -7,11 +7,10 @@ import sys
import threading import threading
from datetime import datetime, timedelta from datetime import datetime, timedelta
from time import sleep
from typing import List, Optional from typing import List, Optional
from PyQt5.QtCore import QDate, QEvent, Qt, QSize, QTime, QTimer from PyQt5.QtCore import QDate, QEvent, Qt, QSize, QTime, QTimer
from PyQt5.QtGui import QColor, QFont, QPalette, QResizeEvent from PyQt5.QtGui import QColor, QPalette, QFont
from PyQt5.QtWidgets import ( from PyQt5.QtWidgets import (
QApplication, QApplication,
QDialog, QDialog,
@ -23,7 +22,6 @@ from PyQt5.QtWidgets import (
QMainWindow, QMainWindow,
QMessageBox, QMessageBox,
QPushButton, QPushButton,
QProgressBar,
) )
from dbconfig import engine, Session from dbconfig import engine, Session
@ -59,10 +57,6 @@ class CartButton(QPushButton):
super().__init__(parent) super().__init__(parent)
self.parent = parent self.parent = parent
self.cart_id = cart.id self.cart_id = cart.id
if cart.path and cart.enabled and not cart.duration:
tags = helpers.get_tags(cart.path)
cart.duration = tags['duration']
self.duration = cart.duration
self.path = cart.path self.path = cart.path
self.player = None self.player = None
self.is_playing = False self.is_playing = False
@ -74,17 +68,6 @@ class CartButton(QPushButton):
self.setFont(font) self.setFont(font)
self.setObjectName("cart_" + str(cart.cart_number)) self.setObjectName("cart_" + str(cart.cart_number))
self.pgb = QProgressBar(self, textVisible=False)
self.pgb.setVisible(False)
palette = self.pgb.palette()
palette.setColor(QPalette.Highlight,
QColor(Config.COLOUR_CART_PROGRESSBAR))
self.pgb.setPalette(palette)
self.pgb.setGeometry(0, 0, self.width(), 10)
self.pgb.setMinimum(0)
self.pgb.setMaximum(1)
self.pgb.setValue(0)
def __repr__(self) -> str: def __repr__(self) -> str:
return ( return (
f"<CartButton(cart_id={self.cart_id} " f"<CartButton(cart_id={self.cart_id} "
@ -101,11 +84,6 @@ class CartButton(QPushButton):
return super().event(event) return super().event(event)
def resizeEvent(self, event: QResizeEvent) -> None:
"""Resize progess bar when button size changes"""
self.pgb.setGeometry(0, 0, self.width(), 10)
class TrackData: class TrackData:
def __init__(self, track): def __init__(self, track):
@ -166,7 +144,6 @@ class Window(QMainWindow, Ui_MainWindow):
"""Configure button with cart data""" """Configure button with cart data"""
btn.setEnabled(False) btn.setEnabled(False)
btn.pgb.setVisible(False)
if cart.path: if cart.path:
if helpers.file_is_readable(cart.path): if helpers.file_is_readable(cart.path):
colour = Config.COLOUR_CART_READY colour = Config.COLOUR_CART_READY
@ -175,7 +152,6 @@ class Window(QMainWindow, Ui_MainWindow):
btn.player.audio_set_volume(Config.VOLUME_VLC_DEFAULT) btn.player.audio_set_volume(Config.VOLUME_VLC_DEFAULT)
if cart.enabled: if cart.enabled:
btn.setEnabled(True) btn.setEnabled(True)
btn.pgb.setVisible(True)
else: else:
colour = Config.COLOUR_CART_ERROR colour = Config.COLOUR_CART_ERROR
else: else:
@ -188,20 +164,13 @@ class Window(QMainWindow, Ui_MainWindow):
"""Handle cart click""" """Handle cart click"""
btn = self.sender() btn = self.sender()
if helpers.file_is_readable(btn.path): if helpers.file_is_readable(btn.path):
# Don't allow clicks while we're playing
btn.setEnabled(False)
btn.player.play() btn.player.play()
btn.is_playing = True btn.is_playing = True
colour = Config.COLOUR_CART_PLAYING colour = Config.COLOUR_CART_PLAYING
thread = threading.Thread(target=self.cart_progressbar,
args=(btn,))
thread.start()
else: else:
colour = Config.COLOUR_CART_ERROR colour = Config.COLOUR_CART_ERROR
btn.setStyleSheet("background-color: " + colour + ";\n") btn.setStyleSheet("background-color: " + colour + ";\n")
btn.pgb.minimum = 0
def cart_edit(self, btn: CartButton, event: QEvent): def cart_edit(self, btn: CartButton, event: QEvent):
"""Handle context menu for cart button""" """Handle context menu for cart button"""
@ -254,16 +223,6 @@ class Window(QMainWindow, Ui_MainWindow):
# Configure button # Configure button
self.cart_configure(cart, btn) self.cart_configure(cart, btn)
def cart_progressbar(self, btn: CartButton) -> None:
"""Manage progress bar"""
ms = 0
btn.pgb.setMaximum(btn.duration)
while ms <= btn.duration:
btn.pgb.setValue(ms)
ms += 100
sleep(0.1)
def cart_tick(self) -> None: def cart_tick(self) -> None:
"""Cart clock actions""" """Cart clock actions"""
@ -275,13 +234,11 @@ class Window(QMainWindow, Ui_MainWindow):
if not btn.player.is_playing(): if not btn.player.is_playing():
# Cart has finished playing # Cart has finished playing
btn.is_playing = False btn.is_playing = False
btn.setEnabled(True)
# Setting to position 0 doesn't seem to work # Setting to position 0 doesn't seem to work
btn.player = self.music.VLC.media_player_new(btn.path) btn.player = self.music.VLC.media_player_new(btn.path)
btn.player.audio_set_volume(Config.VOLUME_VLC_DEFAULT) btn.player.audio_set_volume(Config.VOLUME_VLC_DEFAULT)
colour = Config.COLOUR_CART_READY colour = Config.COLOUR_CART_READY
btn.setStyleSheet("background-color: " + colour + ";\n") btn.setStyleSheet("background-color: " + colour + ";\n")
btn.pgb.setValue(0)
def clear_selection(self) -> None: def clear_selection(self) -> None:
""" Clear selected row""" """ Clear selected row"""
@ -1154,8 +1111,7 @@ class Window(QMainWindow, Ui_MainWindow):
""" """
Carry out clock tick actions. Carry out clock tick actions.
The Time of Day clock and any cart progress bars are updated The Time of Day clock is updated every tick (500ms).
every tick (500ms).
All other timers are updated every second. As the timer displays All other timers are updated every second. As the timer displays
have a one-second resolution, updating every 500ms can result in have a one-second resolution, updating every 500ms can result in
@ -1164,7 +1120,6 @@ class Window(QMainWindow, Ui_MainWindow):
Actions required: Actions required:
- Update TOD clock - Update TOD clock
- Call cart_tick
- If track is playing: - If track is playing:
update track clocks time and colours update track clocks time and colours
- Else: - Else:

View File

@ -823,6 +823,7 @@ class PlaylistTab(QTableWidget):
def scroll_current_to_top(self) -> None: def scroll_current_to_top(self) -> None:
"""Scroll currently-playing row to top""" """Scroll currently-playing row to top"""
log.debug("KAE: playlists.scroll_current_to_top()")
current_row = self._get_current_track_row() current_row = self._get_current_track_row()
log.debug(f"KAE: playlists.scroll_current_to_top(), {current_row=}") log.debug(f"KAE: playlists.scroll_current_to_top(), {current_row=}")
self._scroll_to_top(current_row) self._scroll_to_top(current_row)
@ -830,6 +831,7 @@ class PlaylistTab(QTableWidget):
def scroll_next_to_top(self) -> None: def scroll_next_to_top(self) -> None:
"""Scroll nextly-playing row to top""" """Scroll nextly-playing row to top"""
log.debug("KAE: playlists.scroll_next_to_top()")
next_row = self._get_next_track_row() next_row = self._get_next_track_row()
log.debug(f"KAE: playlists.scroll_next_to_top(), {next_row=}") log.debug(f"KAE: playlists.scroll_next_to_top(), {next_row=}")
self._scroll_to_top(next_row) self._scroll_to_top(next_row)