1
0
Fork 0
mirror of synced 2024-07-03 05:31:23 +12:00

ImportGroup: Adjust for RareGame

This commit is contained in:
loathingKernel 2023-01-24 15:35:51 +02:00
parent 56876227dd
commit 620e8f721c

View file

@ -11,9 +11,10 @@ from PyQt5.QtGui import QStandardItemModel
from PyQt5.QtWidgets import QFileDialog, QGroupBox, QCompleter, QTreeView, QHeaderView, QMessageBox from PyQt5.QtWidgets import QFileDialog, QGroupBox, QCompleter, QTreeView, QHeaderView, QMessageBox
from rare.lgndr.cli import LegendaryCLI from rare.lgndr.cli import LegendaryCLI
from rare.lgndr.core import LegendaryCore
from rare.lgndr.glue.arguments import LgndrImportGameArgs from rare.lgndr.glue.arguments import LgndrImportGameArgs
from rare.lgndr.glue.monkeys import LgndrIndirectStatus from rare.lgndr.glue.monkeys import LgndrIndirectStatus
from rare.shared import LegendaryCoreSingleton, GlobalSignalsSingleton, ApiResultsSingleton from rare.shared import RareCore, LegendaryCoreSingleton, GlobalSignalsSingleton, ApiResultsSingleton
from rare.ui.components.tabs.games.integrations.import_group import Ui_ImportGroup from rare.ui.components.tabs.games.integrations.import_group import Ui_ImportGroup
from rare.utils.extra_widgets import IndicatorLineEdit, PathEdit from rare.utils.extra_widgets import IndicatorLineEdit, PathEdit
from rare.widgets.elide_label import ElideLabel from rare.widgets.elide_label import ElideLabel
@ -58,10 +59,10 @@ class ImportWorker(QRunnable):
finished = pyqtSignal(list) finished = pyqtSignal(list)
progress = pyqtSignal(int) progress = pyqtSignal(int)
def __init__(self, path: str, app_name: str = None, import_folder: bool = False, import_dlcs: bool = False): def __init__(self, core: LegendaryCore, path: str, app_name: str = None, import_folder: bool = False, import_dlcs: bool = False):
super(ImportWorker, self).__init__() super(ImportWorker, self).__init__()
self.core = core
self.signals = self.Signals() self.signals = self.Signals()
self.core = LegendaryCoreSingleton()
self.path = Path(path) self.path = Path(path)
self.app_name = app_name self.app_name = app_name
@ -157,6 +158,7 @@ class ImportGroup(QGroupBox):
super(ImportGroup, self).__init__(parent=parent) super(ImportGroup, self).__init__(parent=parent)
self.ui = Ui_ImportGroup() self.ui = Ui_ImportGroup()
self.ui.setupUi(self) self.ui.setupUi(self)
self.rcore = RareCore.instance()
self.core = LegendaryCoreSingleton() self.core = LegendaryCoreSingleton()
self.signals = GlobalSignalsSingleton() self.signals = GlobalSignalsSingleton()
self.api_results = ApiResultsSingleton() self.api_results = ApiResultsSingleton()
@ -262,6 +264,7 @@ class ImportGroup(QGroupBox):
if not path: if not path:
path = self.path_edit.text() path = self.path_edit.text()
worker = ImportWorker( worker = ImportWorker(
self.core,
path, path,
self.app_name_edit.text(), self.app_name_edit.text(),
self.ui.import_folder_check.isChecked(), self.ui.import_folder_check.isChecked(),
@ -274,18 +277,22 @@ class ImportGroup(QGroupBox):
self.ui.import_button.setDisabled(True) self.ui.import_button.setDisabled(True)
@pyqtSlot(list) @pyqtSlot(list)
def import_finished(self, result: List): def import_finished(self, result: List[ImportedGame]):
logger.info(f"Import finished: {result}") for r in result:
logger.info(f"Import finished: {r.app_title}: {r.path} ({r.message})")
logger.debug(f"Import finished: {r}")
self.info_label.setText("") self.info_label.setText("")
self.signals.game.installed.emit([r.app_name for r in result if r.result == ImportResult.SUCCESS]) successes = filter(lambda r: r.result == ImportResult.SUCCESS, result)
for succeded in successes:
self.rcore.get_game(succeded.app_name).set_installed(True)
for failed in (f for f in result if f.result == ImportResult.FAILED): failures = filter(lambda r: r.result == ImportResult.FAILED, result)
for failed in failures:
igame = self.core.get_installed_game(failed.app_name) igame = self.core.get_installed_game(failed.app_name)
if igame and igame.version != self.core.get_asset(igame.app_name, igame.platform, False).build_version: if igame and igame.version != self.core.get_asset(igame.app_name, igame.platform, False).build_version:
# update available # update available
self.signals.download.enqueue_game.emit(igame.app_name) self.signals.download.enqueue.emit(igame.app_name)
self.signals.download.update_tab.emit()
if len(result) == 1: if len(result) == 1:
res = result[0] res = result[0]