From 32e3d1fd55f4926b2708e315c0afa4a768d4b8d0 Mon Sep 17 00:00:00 2001 From: Dummerle <44114474+Dummerle@users.noreply.github.com> Date: Sun, 5 Dec 2021 20:36:29 +0100 Subject: [PATCH] Remove games in dl_tab, when game uninstalled. --- rare/components/tabs/downloads/__init__.py | 25 +++++++++++++++++++--- rare/components/tabs/games/__init__.py | 3 ++- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/rare/components/tabs/downloads/__init__.py b/rare/components/tabs/downloads/__init__.py index 7d536e47..94553e15 100644 --- a/rare/components/tabs/downloads/__init__.py +++ b/rare/components/tabs/downloads/__init__.py @@ -1,13 +1,14 @@ import datetime from logging import getLogger +from typing import List, Dict from PyQt5.QtCore import QThread, pyqtSignal, QSettings from PyQt5.QtWidgets import QWidget, QMessageBox, QVBoxLayout, QLabel, QPushButton, \ QGroupBox + from legendary.core import LegendaryCore from legendary.models.downloading import UIUpdate from legendary.models.game import Game, InstalledGame - from rare import shared from rare.components.dialogs.install_dialog import InstallDialog from rare.components.tabs.downloads.dl_queue_widget import DlQueueWidget, DlWidget @@ -21,7 +22,7 @@ logger = getLogger("Download") class DownloadsTab(QWidget, Ui_DownloadsTab): thread: QThread - dl_queue = list() + dl_queue: List[InstallQueueItemModel] = [] dl_status = pyqtSignal(int) def __init__(self, updates: list): @@ -43,7 +44,7 @@ class DownloadsTab(QWidget, Ui_DownloadsTab): self.update_layout = QVBoxLayout(self.updates) self.queue_scroll_contents_layout.addWidget(self.updates) - self.update_widgets = {} + self.update_widgets: Dict[str, UpdateWidget] = {} self.update_text = QLabel(self.tr("No updates available")) self.update_layout.addWidget(self.update_text) @@ -59,6 +60,7 @@ class DownloadsTab(QWidget, Ui_DownloadsTab): self.signals.game_uninstalled.connect(self.remove_update) self.signals.add_download.connect(lambda app_name: self.add_update(self.core.get_installed_game(app_name))) + shared.signals.game_uninstalled.connect(self.game_uninstalled) self.reset_infos() @@ -75,6 +77,23 @@ class DownloadsTab(QWidget, Ui_DownloadsTab): if QSettings().value("auto_update", False, bool): self.get_install_options(InstallOptionsModel(app_name=igame.app_name, update=True, silent=True)) widget.update_button.setDisabled(True) + self.update_text.setVisible(False) + + def game_uninstalled(self, app_name): + # game in dl_queue + for i, item in enumerate(self.dl_queue): + if item.options.app_name == app_name: + self.dl_queue.pop(i) + self.queue_widget.update_queue(self.dl_queue) + break + + # game has available update + if app_name in self.update_widgets.keys(): + self.remove_update(app_name) + + # if game is updating + if self.active_game and self.active_game.app_name == app_name: + self.stop_download() def remove_update(self, app_name): if w := self.update_widgets.get(app_name): diff --git a/rare/components/tabs/games/__init__.py b/rare/components/tabs/games/__init__.py index 47988dac..606d9b33 100644 --- a/rare/components/tabs/games/__init__.py +++ b/rare/components/tabs/games/__init__.py @@ -1,4 +1,5 @@ from logging import getLogger +from typing import Tuple, Dict from PyQt5.QtCore import QSettings, QObjectCleanupHandler from PyQt5.QtGui import QImage, QPixmap @@ -28,7 +29,7 @@ logger = getLogger("GamesTab") class GamesTab(QStackedWidget, Ui_GamesTab): - widgets = dict() + widgets: Dict[str, Tuple[InstalledIconWidget, InstalledListWidget]] = dict() running_games = list() updates = set() active_filter = 0