Generalized update of pending status in statusbar

This allows adding alternative implementations to display the status of
currently loaded and pending items.
This commit is contained in:
Philipp Wolfer
2019-11-19 17:59:44 +01:00
committed by Philipp Wolfer
parent 7de2dbdc6d
commit 17bccbe1a8
2 changed files with 25 additions and 11 deletions

View File

@@ -66,16 +66,22 @@ class InfoStatus(QtWidgets.QWidget, Ui_InfoStatus):
self.val4.setToolTip(t4)
self.label4.setToolTip(t4)
def setFiles(self, num):
def update(self, files=0, albums=0, pending_files=0, pending_requests=0):
self.set_files(files)
self.set_albums(albums)
self.set_pending_files(pending_files)
self.set_pending_requests(pending_requests)
def set_files(self, num):
self.val1.setText(str(num))
def setAlbums(self, num):
def set_albums(self, num):
self.val2.setText(str(num))
def setPendingFiles(self, num):
def set_pending_files(self, num):
self.val3.setText(str(num))
def setPendingRequests(self, num):
def set_pending_requests(self, num):
if num <= 0:
enabled = QtGui.QIcon.Disabled
else:

View File

@@ -115,6 +115,7 @@ class MainWindow(QtWidgets.QMainWindow, PreserveGeometry):
self.ignore_selection_changes = False
self.toolbar = None
self.player = None
self.status_indicators = []
player = Player(self)
if player.available:
self.player = player
@@ -213,6 +214,9 @@ class MainWindow(QtWidgets.QMainWindow, PreserveGeometry):
self.saveWindowState()
event.accept()
def register_status_indicator(self, indicator):
self.status_indicators.append(indicator)
def show_quit_confirmation(self):
unsaved_files = sum(a.get_num_unsaved_files() for a in self.tagger.albums.values())
QMessageBox = QtWidgets.QMessageBox
@@ -267,7 +271,7 @@ class MainWindow(QtWidgets.QMainWindow, PreserveGeometry):
def create_statusbar(self):
"""Creates a new status bar."""
self.statusBar().showMessage(_("Ready"))
self.infostatus = InfoStatus(self)
infostatus = InfoStatus(self)
self.listening_label = QtWidgets.QLabel()
self.listening_label.setVisible(False)
self.listening_label.setToolTip("<qt/>" + _(
@@ -275,20 +279,24 @@ class MainWindow(QtWidgets.QMainWindow, PreserveGeometry):
"you \"Search\" or \"Open in Browser\" from Picard, clicking the "
"\"Tagger\" button on the web page loads the release into Picard."
))
self.statusBar().addPermanentWidget(self.infostatus)
self.statusBar().addPermanentWidget(infostatus)
self.statusBar().addPermanentWidget(self.listening_label)
self.tagger.tagger_stats_changed.connect(self.update_statusbar_stats)
self.tagger.listen_port_changed.connect(self.update_statusbar_listen_port)
self.register_status_indicator(infostatus)
self.update_statusbar_stats()
@throttle(100)
def update_statusbar_stats(self):
"""Updates the status bar information."""
self.infostatus.setFiles(len(self.tagger.files))
self.infostatus.setAlbums(len(self.tagger.albums))
self.infostatus.setPendingFiles(File.num_pending_files)
ws = self.tagger.webservice
self.infostatus.setPendingRequests(ws.num_pending_web_requests)
total_files = len(self.tagger.files)
total_albums = len(self.tagger.albums)
pending_files = File.num_pending_files
pending_requests = self.tagger.webservice.num_pending_web_requests
for indicator in self.status_indicators:
indicator.update(files=total_files, albums=total_albums,
pending_files=pending_files, pending_requests=pending_requests)
def update_statusbar_listen_port(self, listen_port):
if listen_port: