mirror of
https://github.com/fergalmoran/picard.git
synced 2026-04-19 10:55:14 +00:00
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:
committed by
Philipp Wolfer
parent
7de2dbdc6d
commit
17bccbe1a8
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user