DowloadsTab: Emit a signal from each group on widget deletion to avoid counting to-be-deleted widgets
This commit is contained in:
parent
c219f347d1
commit
a96a51f110
|
@ -34,8 +34,8 @@ class TabWidget(QTabWidget):
|
|||
self.downloads_tab = DownloadsTab(self)
|
||||
# update dl tab text
|
||||
self.addTab(self.downloads_tab, "")
|
||||
self.__on_downloads_update_title(self.downloads_tab.queues_count())
|
||||
self.downloads_tab.update_title.connect(self.__on_downloads_update_title)
|
||||
self.downloads_tab.update_queues_count()
|
||||
self.store = Shop(self.core)
|
||||
self.addTab(self.store, self.tr("Store (Beta)"))
|
||||
|
||||
|
|
|
@ -48,12 +48,13 @@ class DownloadsTab(QWidget):
|
|||
self.ui.kill_button.clicked.connect(self.stop_download)
|
||||
|
||||
self.queue_group = QueueGroup(self)
|
||||
# lk: todo recreate update widget
|
||||
self.queue_group.update_count.connect(self.update_queues_count)
|
||||
self.queue_group.removed.connect(self.__on_queue_removed)
|
||||
self.queue_group.force.connect(self.__on_queue_force)
|
||||
self.ui.queue_scroll_contents_layout.addWidget(self.queue_group)
|
||||
|
||||
self.updates_group = UpdateGroup(self)
|
||||
self.updates_group.update_count.connect(self.update_queues_count)
|
||||
self.updates_group.enqueue.connect(self.__get_install_options)
|
||||
self.ui.queue_scroll_contents_layout.addWidget(self.updates_group)
|
||||
|
||||
|
@ -73,6 +74,12 @@ class DownloadsTab(QWidget):
|
|||
for rgame in self.rcore.updates:
|
||||
self.__add_update(rgame)
|
||||
|
||||
@pyqtSlot()
|
||||
@pyqtSlot(int)
|
||||
def update_queues_count(self):
|
||||
count = self.updates_group.count() + self.queue_group.count()
|
||||
self.update_title.emit(count)
|
||||
|
||||
@pyqtSlot(str)
|
||||
@pyqtSlot(RareGame)
|
||||
def __add_update(self, update: Union[str,RareGame]):
|
||||
|
@ -84,7 +91,7 @@ class DownloadsTab(QWidget):
|
|||
)
|
||||
else:
|
||||
self.updates_group.append(update.game, update.igame)
|
||||
self.update_title.emit(self.queues_count())
|
||||
self.update_queues_count()
|
||||
|
||||
@pyqtSlot(str)
|
||||
def __remove_update(self, app_name):
|
||||
|
@ -94,7 +101,6 @@ class DownloadsTab(QWidget):
|
|||
self.queue_group.remove(app_name)
|
||||
if self.updates_group.contains(app_name):
|
||||
self.updates_group.remove(app_name)
|
||||
self.update_title.emit(self.queues_count())
|
||||
|
||||
@pyqtSlot(str)
|
||||
def __on_queue_removed(self, app_name: str):
|
||||
|
@ -148,9 +154,6 @@ class DownloadsTab(QWidget):
|
|||
self.ui.kill_button.setDisabled(False)
|
||||
self.ui.dl_name.setText(item.download.game.app_title)
|
||||
|
||||
def queues_count(self) -> int:
|
||||
return self.updates_group.count() + self.queue_group.count()
|
||||
|
||||
@property
|
||||
def is_download_active(self):
|
||||
return self.thread is not None
|
||||
|
@ -217,8 +220,6 @@ class DownloadsTab(QWidget):
|
|||
else:
|
||||
return
|
||||
|
||||
self.update_title.emit(self.queues_count())
|
||||
|
||||
# lk: if we finished a repair, and we have a disabled update, re-enable it
|
||||
if self.updates_group.contains(result.item.options.app_name):
|
||||
self.updates_group.set_widget_enabled(result.item.options.app_name, True)
|
||||
|
|
|
@ -21,6 +21,7 @@ logger = getLogger("QueueGroup")
|
|||
|
||||
|
||||
class UpdateGroup(QGroupBox):
|
||||
update_count = pyqtSignal(int)
|
||||
enqueue = pyqtSignal(InstallOptionsModel)
|
||||
|
||||
def __init__(self, parent=None):
|
||||
|
@ -49,8 +50,10 @@ class UpdateGroup(QGroupBox):
|
|||
return self.__find_widget(app_name) is not None
|
||||
|
||||
def __update_group(self):
|
||||
self.__text.setVisible(not bool(self.count()))
|
||||
self.__container.setVisible(bool(self.count()))
|
||||
count = self.count()
|
||||
self.__text.setVisible(not count)
|
||||
self.__container.setVisible(bool(count))
|
||||
self.update_count.emit(count)
|
||||
|
||||
def append(self, game: Game, igame: InstalledGame):
|
||||
self.__text.setVisible(False)
|
||||
|
@ -79,6 +82,7 @@ class UpdateGroup(QGroupBox):
|
|||
|
||||
|
||||
class QueueGroup(QGroupBox):
|
||||
update_count = pyqtSignal(int)
|
||||
removed = pyqtSignal(str)
|
||||
force = pyqtSignal(InstallQueueItemModel)
|
||||
|
||||
|
@ -114,8 +118,10 @@ class QueueGroup(QGroupBox):
|
|||
return False
|
||||
|
||||
def __update_group(self):
|
||||
self.__text.setVisible(not bool(self.count()))
|
||||
self.__container.setVisible(bool(self.count()))
|
||||
count = self.count()
|
||||
self.__text.setVisible(not count)
|
||||
self.__container.setVisible(bool(count))
|
||||
self.update_count.emit(count)
|
||||
|
||||
def __create_widget(self, item: InstallQueueItemModel, old_igame: InstalledGame) -> QueueWidget:
|
||||
widget: QueueWidget = QueueWidget(item, old_igame, parent=self.__container)
|
||||
|
|
Loading…
Reference in a new issue