1
0
Fork 0
mirror of synced 2024-06-02 10:44:40 +12:00

Fix updates; Fix dlc tab; Fix Game list update

This commit is contained in:
Dummerle 2021-10-07 19:42:27 +02:00
parent e609a0de67
commit 3796db83c1
8 changed files with 44 additions and 28 deletions

View file

@ -74,8 +74,8 @@ class DownloadTab(QWidget):
self.update_layout.addWidget(self.update_text)
self.update_text.setVisible(len(updates) == 0)
for igame in updates:
self.add_update(igame)
for name in updates:
self.add_update(self.core.get_installed_game(name))
self.layout.addStretch(1)

View file

@ -1,6 +1,6 @@
from logging import getLogger
from PyQt5.QtCore import pyqtSignal, QSettings
from PyQt5.QtCore import pyqtSignal, QSettings, QObjectCleanupHandler
from PyQt5.QtWidgets import QStackedWidget, QVBoxLayout, QWidget
from legendary.core import LegendaryCore
@ -26,11 +26,11 @@ logger = getLogger("GamesTab")
class GamesTab(QStackedWidget, Ui_GamesTab):
updates = []
widgets = {}
running_games = []
game_exited = pyqtSignal(str)
game_started = pyqtSignal(str)
updates = set()
def __init__(self, core: LegendaryCore, offline, signals: Signals, api_results: ApiResults):
super(GamesTab, self).__init__()
@ -104,6 +104,11 @@ class GamesTab(QStackedWidget, Ui_GamesTab):
legendary_utils.uninstall(data.app_name, self.core, infos)
self.setCurrentIndex(0)
self.update_list(data.app_name)
elif action == self.signals.actions.verification_finished:
i_widget, l_widget = self.widgets[data.app_name]
i_widget.igame = data
l_widget.igame = data
i_widget.info_text = ""
def show_game_info(self, game):
self.game_info.update_game(game, self.dlcs)
@ -183,7 +188,7 @@ class GamesTab(QStackedWidget, Ui_GamesTab):
list_widget.update_list.connect(self.update_list)
if icon_widget.update_available:
self.updates.append(igame)
self.updates.add(igame.app_name)
return icon_widget, list_widget
@ -259,11 +264,13 @@ class GamesTab(QStackedWidget, Ui_GamesTab):
w.setVisible(True)
def update_list(self, app_name=None):
print(app_name)
if app_name:
if widgets := self.widgets.get(app_name):
# from update
if self.core.is_installed(widgets[0].game.app_name) and isinstance(widgets[0], BaseInstalledWidget):
logger.debug("Update Gamelist: Updated: " + app_name)
igame = self.core.get_installed_game(app_name)
for w in widgets:
w.igame = igame
@ -277,15 +284,14 @@ class GamesTab(QStackedWidget, Ui_GamesTab):
self.widgets[app_name][1].deleteLater()
self.widgets.pop(app_name)
igame = self.core.get_installed_game(app_name)
self.add_installed_widget(self.core.get_game(igame.app_name))
self.add_installed_widget(self.core.get_game(app_name))
self._update_games()
# uninstalled
elif not self.core.is_installed(widgets[0].game.app_name) and isinstance(widgets[0],
BaseInstalledWidget):
logger.debug("Update list: uninstall")
logger.debug("Update list: Uninstalled: " + app_name)
self.widgets[app_name][0].deleteLater()
self.widgets[app_name][1].deleteLater()
@ -313,9 +319,6 @@ class GamesTab(QStackedWidget, Ui_GamesTab):
if new_installed_games:
for name in new_installed_games:
self.icon_view.layout().removeWidget(self.widgets[name][0])
self.list_view.layout().removeWidget(self.widgets[name][1])
self.widgets[name][0].deleteLater()
self.widgets[name][1].deleteLater()
self.widgets.pop(name)
@ -350,7 +353,6 @@ class GamesTab(QStackedWidget, Ui_GamesTab):
i_widget, list_widget = self.widgets[name]
self.icon_view.layout().addWidget(i_widget)
self.list_view.layout().addWidget(list_widget)
self.installing_widget.setVisible(False)
self.update_count_games_label()
def _update_games(self):
@ -371,20 +373,19 @@ class GamesTab(QStackedWidget, Ui_GamesTab):
self.uninstalled_names = []
installed_names = [i.app_name for i in self.core.get_installed_list()]
# get Uninstalled games
games, self.dlcs = self.core.get_game_and_dlc_list(update_assets=False)
self.game_list, self.dlcs = self.core.get_game_and_dlc_list(update_assets=False)
# add uninstalled games
for game in sorted(games, key=lambda x: x.app_title):
for game in sorted(self.game_list, key=lambda x: x.app_title):
if game.app_name not in installed_names:
self.uninstalled_names.append(game.app_name)
for game in self.uninstalled_games:
i_widget, list_widget = self.widgets[game.app_name]
icon_layout.addWidget(i_widget)
list_layout.addWidget(list_widget)
i_widget, list_widget = self.widgets[game.app_name]
icon_layout.addWidget(i_widget)
list_layout.addWidget(list_widget)
QWidget().setLayout(self.icon_view.layout())
QWidget().setLayout(self.list_view.layout())
# self.icon_view.layout().deleteLater()
# self.list_view.layout().deleteLater()
QObjectCleanupHandler().add(self.icon_view.layout())
QObjectCleanupHandler().add(self.list_view.layout())
# QWidget().setLayout(self.icon_view.layout())
# QWidget().setLayout(self.list_view.layout())
self.icon_view.setLayout(icon_layout)
self.list_view.setLayout(list_layout)

View file

@ -30,7 +30,7 @@ class InfoTabs(QTabWidget):
self.addTab(self.settings, self.tr("Settings"))
self.tabBar().setCurrentIndex(1)
self.dlc = GameDlc(core, self)
self.dlc = GameDlc(core, self.signals, self)
self.addTab(self.dlc, self.tr("Downloadable Content"))
def update_game(self, game: Game, dlcs: list):

View file

@ -5,6 +5,7 @@ from legendary.core import LegendaryCore
from legendary.models.game import Game
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.utils.models import Signals, InstallOptionsModel
from rare.utils.utils import get_pixmap
@ -12,9 +13,14 @@ class GameDlc(QWidget, Ui_GameDlc):
install_dlc = pyqtSignal(str, bool)
game: Game
def __init__(self, core: LegendaryCore, parent=None):
def __init__(self, core: LegendaryCore, signals: Signals, parent=None):
super(GameDlc, self).__init__(parent=parent)
self.setupUi(self)
self.available_dlc_scroll.setObjectName("noborder")
self.installed_dlc_scroll.setObjectName("noborder")
self.signals = signals
self.core = core
self.installed_dlcs = list()
self.installed_dlc_widgets = list()
@ -58,7 +64,9 @@ class GameDlc(QWidget, Ui_GameDlc):
QMessageBox.warning(self, "Error", self.tr("Base Game is not installed. Please install {} first").format(
self.game.app_title))
return
self.install_dlc.emit(app_name, True)
self.signals.dl_tab.emit(
(self.signals.actions.install_game, (InstallOptionsModel(app_name=app_name, update=True))))
class GameDlcWidget(QFrame, Ui_GameDlcWidget):

View file

@ -77,6 +77,7 @@ class GameInfo(QWidget, Ui_GameInfo):
"Game was verified successfully. No missing or corrupt files found")
self.igame.needs_verification = False
self.core.lgd.set_installed_game(self.igame.app_name, self.igame)
self.signals.games_tab.emit((self.signals.actions.verification_finished, self.igame))
else:
ans = QMessageBox.question(self, "Summary", self.tr(
'Verification failed, {} file(s) corrupted, {} file(s) are missing. Do you want to repair them?').format(

View file

@ -30,8 +30,9 @@ class TabWidget(QTabWidget):
self.signals.tab_widget.connect(lambda x: self.handle_signal(*x))
if not self.offline:
# updates = self.games_tab.default_widget.game_list.updates
self.downloadTab = DownloadTab(core, [], self.signals)
self.addTab(self.downloadTab, "Downloads" + (" (" + str(len([])) + ")" if len([]) != 0 else ""))
self.downloadTab = DownloadTab(core, self.games_tab.updates, self.signals)
self.addTab(self.downloadTab, "Downloads" + (
" (" + str(len(self.games_tab.updates)) + ")" if len(self.games_tab.updates) != 0 else ""))
self.cloud_saves = SyncSaves(core, self.signals)
self.addTab(self.cloud_saves, "Cloud Saves")
self.store = Shop(self.core)

View file

@ -22,6 +22,10 @@ QLabel {
padding: 0px;
}
QScrollArea#noborder {
border-color: transparent;
}
QMenu,
QListView,
QListWidget,

View file

@ -53,6 +53,7 @@ class SignalActions:
uninstall = "uninstall"
set_index = "set_index"
set_dl_tab_text = "set_dl_tab_text"
verification_finished = "verification_finished"
class Signals(QObject):