1
0
Fork 0
mirror of synced 2024-09-28 23:41:29 +12:00

GameDlc: Replace double inheritance with UI member class

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
This commit is contained in:
loathingKernel 2022-12-24 01:09:19 +02:00
parent 652968b6bf
commit 4239acea24

View file

@ -1,30 +1,33 @@
from PyQt5.QtCore import pyqtSignal from typing import Optional
from PyQt5.QtCore import pyqtSignal, pyqtSlot
from PyQt5.QtWidgets import QFrame, QWidget, QMessageBox from PyQt5.QtWidgets import QFrame, QWidget, QMessageBox
from legendary.models.game import Game from legendary.models.game import Game
from rare.components.tabs.games.game_utils import GameUtils from rare.components.tabs.games.game_utils import GameUtils
from rare.models.install import InstallOptionsModel
from rare.shared import LegendaryCoreSingleton, GlobalSignalsSingleton, ImageManagerSingleton from rare.shared import LegendaryCoreSingleton, GlobalSignalsSingleton, ImageManagerSingleton
from rare.shared.image_manager import ImageSize from rare.shared.image_manager import ImageSize
from rare.ui.components.tabs.games.game_info.game_dlc import Ui_GameDlc from rare.ui.components.tabs.games.game_info.game_dlc import Ui_GameDlc
from rare.ui.components.tabs.games.game_info.game_dlc_widget import Ui_GameDlcWidget from rare.ui.components.tabs.games.game_info.game_dlc_widget import Ui_GameDlcWidget
from rare.models.install import InstallOptionsModel
from rare.widgets.image_widget import ImageWidget from rare.widgets.image_widget import ImageWidget
class GameDlc(QWidget, Ui_GameDlc): class GameDlc(QWidget):
install_dlc = pyqtSignal(str, bool) install_dlc = pyqtSignal(str, bool)
game: Game
def __init__(self, dlcs: dict, game_utils: GameUtils, parent=None): def __init__(self, dlcs: dict, game_utils: GameUtils, parent=None):
super(GameDlc, self).__init__(parent=parent) super(GameDlc, self).__init__(parent=parent)
self.setupUi(self) self.ui = Ui_GameDlc()
self.ui.setupUi(self)
self.core = LegendaryCoreSingleton() self.core = LegendaryCoreSingleton()
self.signals = GlobalSignalsSingleton() self.signals = GlobalSignalsSingleton()
self.game: Optional[Game] = None
self.game_utils = game_utils self.game_utils = game_utils
self.available_dlc_scroll.setFrameStyle(QFrame.NoFrame) self.ui.available_dlc_scroll.setFrameStyle(QFrame.NoFrame)
self.installed_dlc_scroll.setFrameStyle(QFrame.NoFrame) self.ui.installed_dlc_scroll.setFrameStyle(QFrame.NoFrame)
self.dlcs = dlcs self.dlcs = dlcs
self.installed_dlc_widgets = list() self.installed_dlc_widgets = list()
@ -49,22 +52,23 @@ class GameDlc(QWidget, Ui_GameDlc):
for dlc in sorted(dlcs, key=lambda x: x.app_title): for dlc in sorted(dlcs, key=lambda x: x.app_title):
if self.core.is_installed(dlc.app_name): if self.core.is_installed(dlc.app_name):
dlc_widget = GameDlcWidget(dlc, True) dlc_widget = GameDlcWidget(dlc, True)
self.installed_dlc_contents_layout.addWidget(dlc_widget) self.ui.installed_dlc_contents_layout.addWidget(dlc_widget)
dlc_widget.uninstall.connect(self.uninstall) dlc_widget.uninstall.connect(self.uninstall)
self.installed_dlc_widgets.append(dlc_widget) self.installed_dlc_widgets.append(dlc_widget)
else: else:
dlc_widget = GameDlcWidget(dlc, False) dlc_widget = GameDlcWidget(dlc, False)
self.available_dlc_contents_layout.addWidget(dlc_widget) self.ui.available_dlc_contents_layout.addWidget(dlc_widget)
dlc_widget.install.connect(self.install) dlc_widget.install.connect(self.install)
self.available_dlc_widgets.append(dlc_widget) self.available_dlc_widgets.append(dlc_widget)
self.installed_dlc_label.setVisible(not self.installed_dlc_widgets) self.ui.installed_dlc_label.setVisible(not self.installed_dlc_widgets)
self.installed_dlc_scroll.setVisible(bool(self.installed_dlc_widgets)) self.ui.installed_dlc_scroll.setVisible(bool(self.installed_dlc_widgets))
self.available_dlc_label.setVisible(not self.available_dlc_widgets) self.ui.available_dlc_label.setVisible(not self.available_dlc_widgets)
self.available_dlc_scroll.setVisible(bool(self.available_dlc_widgets)) self.ui.available_dlc_scroll.setVisible(bool(self.available_dlc_widgets))
@pyqtSlot(str)
def uninstall(self, app_name): def uninstall(self, app_name):
if self.game_utils.uninstall_game(app_name): if self.game_utils.uninstall_game(app_name):
self.update_dlcs(self.game.app_name) self.update_dlcs(self.game.app_name)
@ -85,41 +89,42 @@ class GameDlc(QWidget, Ui_GameDlc):
) )
class GameDlcWidget(QFrame, Ui_GameDlcWidget): class GameDlcWidget(QFrame):
install = pyqtSignal(str) # Appname install = pyqtSignal(str) # Appname
uninstall = pyqtSignal(str) uninstall = pyqtSignal(str)
def __init__(self, dlc: Game, installed: bool, parent=None): def __init__(self, dlc: Game, installed: bool, parent=None):
super(GameDlcWidget, self).__init__(parent=parent) super(GameDlcWidget, self).__init__(parent=parent)
self.image_manager = ImageManagerSingleton() self.image_manager = ImageManagerSingleton()
self.setupUi(self) self.ui = Ui_GameDlcWidget()
self.ui.setupUi(self)
self.dlc = dlc self.dlc = dlc
self.image = ImageWidget(self) self.image = ImageWidget(self)
self.image.setFixedSize(ImageSize.Smaller) self.image.setFixedSize(ImageSize.Smaller)
self.dlc_layout.insertWidget(0, self.image) self.ui.dlc_layout.insertWidget(0, self.image)
self.dlc_name.setText(dlc.app_title) self.ui.dlc_name.setText(dlc.app_title)
self.version.setText(dlc.app_version()) self.ui.version.setText(dlc.app_version())
self.app_name.setText(dlc.app_name) self.ui.app_name.setText(dlc.app_name)
self.image.setPixmap(self.image_manager.get_pixmap(dlc.app_name)) self.image.setPixmap(self.image_manager.get_pixmap(dlc.app_name))
if installed: if installed:
self.action_button.setProperty("uninstall", 1) self.ui.action_button.setProperty("uninstall", 1)
self.action_button.clicked.connect(self.uninstall_dlc) self.ui.action_button.clicked.connect(self.uninstall_dlc)
self.action_button.setText(self.tr("Uninstall DLC")) self.ui.action_button.setText(self.tr("Uninstall DLC"))
else: else:
self.action_button.setProperty("install", 1) self.ui.action_button.setProperty("install", 1)
self.action_button.clicked.connect(self.install_game) self.ui.action_button.clicked.connect(self.install_game)
self.action_button.setText(self.tr("Install DLC")) self.ui.action_button.setText(self.tr("Install DLC"))
def uninstall_dlc(self): def uninstall_dlc(self):
self.action_button.setDisabled(True) self.ui.action_button.setDisabled(True)
self.action_button.setText(self.tr("Uninstalling")) self.ui.action_button.setText(self.tr("Uninstalling"))
self.uninstall.emit(self.dlc.app_name) self.uninstall.emit(self.dlc.app_name)
def install_game(self): def install_game(self):
self.action_button.setDisabled(True) self.ui.action_button.setDisabled(True)
self.action_button.setText(self.tr("Installing")) self.ui.action_button.setText(self.tr("Installing"))
self.install.emit(self.dlc.app_name) self.install.emit(self.dlc.app_name)