From 6eb4e198076bbd759b1528f780b769883ad9919f Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Sat, 24 Dec 2022 14:47:48 +0200 Subject: [PATCH] GameInfo: Adapt tab to handle uninstalled games too Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com> --- .../tabs/games/game_info/__init__.py | 2 +- .../tabs/games/game_info/game_info.py | 41 +++++++++++-------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/rare/components/tabs/games/game_info/__init__.py b/rare/components/tabs/games/game_info/__init__.py index 64f4c383..65f06aa1 100644 --- a/rare/components/tabs/games/game_info/__init__.py +++ b/rare/components/tabs/games/game_info/__init__.py @@ -20,7 +20,7 @@ class GameInfoTabs(SideTabWidget): self.core = LegendaryCoreSingleton() self.signals = GlobalSignalsSingleton() - self.info = GameInfo(self, game_utils) + self.info = GameInfo(game_utils, self) self.addTab(self.info, self.tr("Information")) self.settings = GameSettings(self) diff --git a/rare/components/tabs/games/game_info/game_info.py b/rare/components/tabs/games/game_info/game_info.py index 7fd4e3f7..91e19187 100644 --- a/rare/components/tabs/games/game_info/game_info.py +++ b/rare/components/tabs/games/game_info/game_info.py @@ -3,8 +3,10 @@ import platform import shutil from logging import getLogger from pathlib import Path +from typing import Dict, Optional from PyQt5.QtCore import ( + QRunnable, Qt, pyqtSignal, QThreadPool, @@ -40,13 +42,10 @@ logger = getLogger("GameInfo") class GameInfo(QWidget, Ui_GameInfo): - igame: InstalledGame - game: Game = None - verify_threads = dict() verification_finished = pyqtSignal(InstalledGame) uninstalled = pyqtSignal(str) - def __init__(self, parent, game_utils): + def __init__(self, game_utils, parent=None): super(GameInfo, self).__init__(parent=parent) self.setupUi(self) self.core = LegendaryCoreSingleton() @@ -55,6 +54,10 @@ class GameInfo(QWidget, Ui_GameInfo): self.image_manager = ImageManagerSingleton() self.game_utils = game_utils + self.game: Optional[Game] = None + self.igame: Optional[InstalledGame] = None + self.verify_threads: Dict[str, QRunnable] = {} + self.image = ImageWidget(self) self.image.setFixedSize(ImageSize.Display) self.layout_game_info.insertWidget(0, self.image, alignment=Qt.AlignTop) @@ -68,7 +71,6 @@ class GameInfo(QWidget, Ui_GameInfo): self.steam_worker.setAutoDelete(False) self.game_actions_stack.setCurrentIndex(0) - self.install_button.setText(self.tr("Link to Origin/Launch")) self.game_actions_stack.resize(self.game_actions_stack.minimumSize()) self.uninstall_button.clicked.connect(self.uninstall) @@ -102,9 +104,9 @@ class GameInfo(QWidget, Ui_GameInfo): self.widget_container.setLayout(box_layout) index = self.move_stack.addWidget(self.widget_container) self.move_stack.setCurrentIndex(index) + self.move_game_pop_up.browse_done.connect(self.show_menu_after_browse) self.move_game_pop_up.move_clicked.connect(self.move_button.menu().close) self.move_game_pop_up.move_clicked.connect(self.move_game) - self.move_game_pop_up.browse_done.connect(self.show_menu_after_browse) def uninstall(self): if self.game_utils.uninstall_game(self.game.app_name): @@ -328,23 +330,30 @@ class GameInfo(QWidget, Ui_GameInfo): if self.igame: self.install_size.setText(get_size(self.igame.install_size)) self.install_path.setText(self.igame.install_path) - self.install_size.setVisible(True) - self.install_path.setVisible(True) self.platform.setText(self.igame.platform) else: - self.install_size.setVisible(False) - self.install_path.setVisible(False) + self.install_size.setText("N/A") + self.install_path.setText("N/A") self.platform.setText("Windows") + self.install_size.setEnabled(bool(self.igame)) + self.lbl_install_size.setEnabled(bool(self.igame)) + self.install_path.setEnabled(bool(self.igame)) + self.lbl_install_path.setEnabled(bool(self.igame)) + + self.uninstall_button.setEnabled(bool(self.igame)) + self.verify_button.setEnabled(bool(self.igame)) + self.repair_button.setEnabled(bool(self.igame)) + if not self.igame: - # origin game - self.uninstall_button.setDisabled(True) - self.verify_button.setDisabled(True) - self.repair_button.setDisabled(True) self.game_actions_stack.setCurrentIndex(1) + if self.game.metadata.get("customAttributes", {}).get("ThirdPartyManagedApp", {}).get("value") == "Origin": + self.version.setText("N/A") + self.version.setEnabled(False) + self.install_button.setText(self.tr("Link to Origin/Launch")) + else: + self.install_button.setText(self.tr("Install")) else: - self.uninstall_button.setDisabled(False) - self.verify_button.setDisabled(False) if not self.args.offline: self.repair_button.setDisabled( not os.path.exists(os.path.join(self.core.lgd.get_tmp_path(), f"{self.igame.app_name}.repair"))