Fix updates; Fix dlc tab; Fix Game list update
This commit is contained in:
parent
e609a0de67
commit
3796db83c1
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -22,6 +22,10 @@ QLabel {
|
|||
padding: 0px;
|
||||
}
|
||||
|
||||
QScrollArea#noborder {
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
QMenu,
|
||||
QListView,
|
||||
QListWidget,
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in a new issue