GameDlc: Replace double inheritance with UI member class
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
This commit is contained in:
parent
652968b6bf
commit
4239acea24
1 changed files with 34 additions and 29 deletions
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue