Tab info for previous / current / next track
This commit is contained in:
parent
8fa85dd47f
commit
834ad68e00
@ -22,6 +22,7 @@ class Config(object):
|
||||
ERRORS_TO = ['kae@midnighthax.com']
|
||||
FADE_STEPS = 20
|
||||
FADE_TIME = 3000
|
||||
INFO_TAB_TITLE_LENGTH = 15
|
||||
LOG_LEVEL_STDERR = logging.INFO
|
||||
LOG_LEVEL_SYSLOG = logging.DEBUG
|
||||
LOG_NAME = "musicmuster"
|
||||
@ -30,6 +31,7 @@ class Config(object):
|
||||
MAIL_SERVER = os.environ.get('MAIL_SERVER') or "woodlands.midnighthax.com"
|
||||
MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
|
||||
MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS') is not None
|
||||
MAX_INFO_TABS = 3
|
||||
MILLISECOND_SIGFIGS = 0
|
||||
MYSQL_CONNECT = os.environ.get('MYSQL_CONNECT') or "mysql+mysqldb://musicmuster:musicmuster@localhost/musicmuster_dev" # noqa E501
|
||||
NORMALISE_ON_IMPORT = True
|
||||
|
||||
@ -9,8 +9,9 @@ import urllib.parse
|
||||
from datetime import datetime, timedelta
|
||||
from log import DEBUG, EXCEPTION
|
||||
|
||||
from PyQt5.QtCore import Qt, QTimer
|
||||
from PyQt5.QtCore import Qt, QTimer, QUrl
|
||||
from PyQt5.QtGui import QFontMetrics, QPainter
|
||||
from PyQt5.QtWebEngineWidgets import QWebEngineView as QWebView
|
||||
from PyQt5.QtWidgets import (
|
||||
QApplication,
|
||||
QDialog,
|
||||
@ -63,6 +64,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
self.music = music.Music()
|
||||
self.current_track = None
|
||||
self.current_track_playlist_tab = None
|
||||
self.info_tabs = {}
|
||||
self.next_track = None
|
||||
self.next_track_playlist_tab = None
|
||||
self.previous_track = None
|
||||
@ -263,6 +265,42 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
# Enable controls
|
||||
self.enable_play_next_controls()
|
||||
|
||||
def ensure_info_tabs(self, title_list):
|
||||
"""
|
||||
Ensure we have info tabs for each of the passed titles
|
||||
"""
|
||||
|
||||
for title in title_list:
|
||||
if title in self.info_tabs.keys():
|
||||
# We already have a tab for this track
|
||||
continue
|
||||
# import ipdb; ipdb.set_trace()
|
||||
if len(self.info_tabs) >= Config.MAX_INFO_TABS:
|
||||
# Find an unneeded info tab
|
||||
try:
|
||||
old_title = list(
|
||||
set(self.info_tabs.keys()) - set(title_list)
|
||||
)[0]
|
||||
except IndexError:
|
||||
DEBUG(
|
||||
f"ensure_info_tabs({title_list}): unable to add "
|
||||
f"{title=}"
|
||||
)
|
||||
return
|
||||
# Assign redundant widget a new title
|
||||
widget = self.info_tabs[title] = self.info_tabs[old_title]
|
||||
idx = self.tabPlaylist.indexOf(widget)
|
||||
self.tabPlaylist.setTabText(
|
||||
idx, title[:Config.INFO_TAB_TITLE_LENGTH])
|
||||
del self.info_tabs[old_title]
|
||||
else:
|
||||
widget = self.info_tabs[title] = QWebView()
|
||||
self.tabPlaylist.addTab(
|
||||
widget, title[:Config.INFO_TAB_TITLE_LENGTH])
|
||||
str = urllib.parse.quote_plus(title)
|
||||
url = f"https://www.wikipedia.org/w/index.php?search={str}"
|
||||
widget.setUrl(QUrl(url))
|
||||
|
||||
def export_playlist_tab(self):
|
||||
"Export the current playlist to an m3u file"
|
||||
|
||||
@ -667,32 +705,39 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
self.stop_playing()
|
||||
|
||||
def update_headers(self):
|
||||
"Update last / current / next track headers"
|
||||
"""
|
||||
Update last / current / next track headers.
|
||||
Ensure a Wikipedia tab for each title.
|
||||
"""
|
||||
|
||||
titles = []
|
||||
|
||||
try:
|
||||
self.hdrPreviousTrack.setText(
|
||||
f"{self.previous_track.title} - "
|
||||
f"{self.previous_track.artist}"
|
||||
f"{self.previous_track.title} - {self.previous_track.artist}"
|
||||
)
|
||||
titles.append(self.previous_track.title)
|
||||
except AttributeError:
|
||||
self.hdrPreviousTrack.setText("")
|
||||
|
||||
try:
|
||||
self.hdrCurrentTrack.setText(
|
||||
f"{self.current_track.title} - "
|
||||
f"{self.current_track.artist}"
|
||||
f"{self.current_track.title} - {self.current_track.artist}"
|
||||
)
|
||||
titles.append(self.current_track.title)
|
||||
except AttributeError:
|
||||
self.hdrCurrentTrack.setText("")
|
||||
|
||||
try:
|
||||
self.hdrNextTrack.setText(
|
||||
f"{self.next_track.title} - "
|
||||
f"{self.next_track.artist}"
|
||||
f"{self.next_track.title} - {self.next_track.artist}"
|
||||
)
|
||||
titles.append(self.next_track.title)
|
||||
except AttributeError:
|
||||
self.hdrNextTrack.setText("")
|
||||
|
||||
self.ensure_info_tabs(titles)
|
||||
|
||||
|
||||
class DbDialog(QDialog):
|
||||
def __init__(self, parent, session):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user