2021-06-21 07:55:31 +12:00
|
|
|
import platform
|
2021-05-12 03:29:35 +12:00
|
|
|
|
2021-11-02 09:11:37 +13:00
|
|
|
from PyQt5.QtCore import Qt, QThreadPool
|
2021-08-17 09:08:15 +12:00
|
|
|
from PyQt5.QtGui import QKeyEvent
|
2021-10-12 06:09:20 +13:00
|
|
|
from PyQt5.QtWidgets import QWidget, QTreeView
|
|
|
|
|
|
|
|
import rare.shared as shared
|
2021-10-15 10:05:00 +13:00
|
|
|
from legendary.models.game import Game
|
2021-05-22 06:54:26 +12:00
|
|
|
from rare.ui.components.tabs.games.game_info.game_info import Ui_GameInfo
|
2021-10-12 06:09:20 +13:00
|
|
|
from rare.utils.extra_widgets import SideTabWidget
|
2021-05-18 07:27:23 +12:00
|
|
|
from rare.utils.json_formatter import QJsonModel
|
2021-10-08 07:19:24 +13:00
|
|
|
from rare.utils.models import InstallOptionsModel
|
2021-08-14 07:24:03 +12:00
|
|
|
from rare.utils.steam_grades import SteamWorker
|
2021-08-17 09:08:15 +12:00
|
|
|
from rare.utils.utils import get_pixmap
|
2021-05-18 07:27:23 +12:00
|
|
|
|
|
|
|
|
2021-10-12 06:09:20 +13:00
|
|
|
class UninstalledInfoTabs(SideTabWidget):
|
|
|
|
def __init__(self, parent=None):
|
|
|
|
super(UninstalledInfoTabs, self).__init__(show_back=True, parent=parent)
|
2021-10-15 10:18:13 +13:00
|
|
|
self.core = shared.core
|
2021-10-08 07:19:24 +13:00
|
|
|
self.signals = shared.signals
|
2021-05-18 07:27:23 +12:00
|
|
|
|
2021-10-08 07:19:24 +13:00
|
|
|
self.info = UninstalledInfo()
|
|
|
|
self.info.install_button.setDisabled(shared.args.offline)
|
2021-10-12 06:09:20 +13:00
|
|
|
self.addTab(self.info, self.tr("Information"))
|
2021-05-18 07:27:23 +12:00
|
|
|
|
|
|
|
self.view = QTreeView()
|
|
|
|
self.view.setColumnWidth(0, 300)
|
|
|
|
self.view.setWordWrap(True)
|
|
|
|
self.model = QJsonModel()
|
|
|
|
self.view.setModel(self.model)
|
|
|
|
self.addTab(self.view, self.tr("Metadata"))
|
|
|
|
|
|
|
|
# self.setTabEnabled(1, False)
|
|
|
|
self.setCurrentIndex(1)
|
|
|
|
|
2021-09-27 03:43:56 +13:00
|
|
|
def update_game(self, app_name: Game):
|
|
|
|
self.setCurrentIndex(1)
|
2021-05-18 07:27:23 +12:00
|
|
|
self.info.update_game(app_name)
|
|
|
|
self.model.clear()
|
2021-09-02 05:41:01 +12:00
|
|
|
try:
|
2021-09-27 03:43:56 +13:00
|
|
|
self.model.load(app_name.__dict__)
|
2021-10-12 06:09:20 +13:00
|
|
|
except:
|
|
|
|
# ignore if no metadata
|
2021-09-02 05:41:01 +12:00
|
|
|
pass
|
2021-05-18 07:27:23 +12:00
|
|
|
|
|
|
|
def keyPressEvent(self, e: QKeyEvent):
|
|
|
|
if e.key() == Qt.Key_Escape:
|
2021-09-27 03:43:56 +13:00
|
|
|
self.parent().setCurrentIndex(0)
|
2021-05-12 00:30:08 +12:00
|
|
|
|
|
|
|
|
2021-05-22 06:54:26 +12:00
|
|
|
class UninstalledInfo(QWidget, Ui_GameInfo):
|
2021-05-12 00:30:08 +12:00
|
|
|
game: Game
|
|
|
|
|
2021-10-12 06:09:20 +13:00
|
|
|
def __init__(self, parent=None):
|
|
|
|
super(UninstalledInfo, self).__init__(parent=parent)
|
2021-05-22 06:54:26 +12:00
|
|
|
self.setupUi(self)
|
2021-10-15 10:18:13 +13:00
|
|
|
self.core = shared.core
|
2021-10-08 07:19:24 +13:00
|
|
|
self.signals = shared.signals
|
2021-09-30 10:22:47 +13:00
|
|
|
self.install_button.clicked.connect(self.install_game)
|
2021-08-14 07:24:03 +12:00
|
|
|
if platform.system() != "Windows":
|
|
|
|
self.steam_worker = SteamWorker(self.core)
|
2021-11-02 09:11:37 +13:00
|
|
|
self.steam_worker.signals.rating_signal.connect(self.grade.setText)
|
|
|
|
self.steam_worker.setAutoDelete(False)
|
2021-05-12 00:30:08 +12:00
|
|
|
|
2021-11-02 09:11:37 +13:00
|
|
|
else:
|
2021-05-22 06:54:26 +12:00
|
|
|
self.lbl_grade.setVisible(False)
|
|
|
|
self.grade.setVisible(False)
|
2021-05-12 00:30:08 +12:00
|
|
|
|
2021-05-22 06:54:26 +12:00
|
|
|
self.install_size.setEnabled(False)
|
|
|
|
self.lbl_install_size.setEnabled(False)
|
|
|
|
self.install_path.setEnabled(False)
|
|
|
|
self.lbl_install_path.setEnabled(False)
|
2021-05-12 00:30:08 +12:00
|
|
|
|
2021-05-22 06:54:26 +12:00
|
|
|
self.game_actions_stack.setCurrentIndex(1)
|
|
|
|
self.game_actions_stack.resize(self.game_actions_stack.minimumSize())
|
2021-05-12 00:30:08 +12:00
|
|
|
|
2021-09-30 10:22:47 +13:00
|
|
|
def install_game(self):
|
2021-10-15 10:05:00 +13:00
|
|
|
self.signals.install_game.emit(InstallOptionsModel(app_name=self.game.app_name))
|
2021-05-12 00:30:08 +12:00
|
|
|
|
2021-09-14 08:27:37 +12:00
|
|
|
def update_game(self, game: Game):
|
|
|
|
self.game = game
|
2021-05-22 06:54:26 +12:00
|
|
|
self.game_title.setText(f"<h2>{self.game.app_title}</h2>")
|
2021-05-12 03:29:35 +12:00
|
|
|
|
2021-09-14 08:27:37 +12:00
|
|
|
pixmap = get_pixmap(game.app_name)
|
2021-08-17 09:08:15 +12:00
|
|
|
w = 200
|
|
|
|
pixmap = pixmap.scaled(w, int(w * 4 / 3))
|
|
|
|
self.image.setPixmap(pixmap)
|
2021-05-12 03:29:35 +12:00
|
|
|
|
2021-05-22 06:54:26 +12:00
|
|
|
self.app_name.setText(self.game.app_name)
|
|
|
|
self.version.setText(self.game.app_version)
|
|
|
|
self.dev.setText(self.game.metadata["developer"])
|
|
|
|
self.install_size.setText("N/A")
|
|
|
|
self.install_path.setText("N/A")
|
|
|
|
|
2021-08-14 07:24:03 +12:00
|
|
|
if platform.system() != "Windows":
|
|
|
|
self.grade.setText(self.tr("Loading"))
|
2021-09-14 08:27:37 +12:00
|
|
|
self.steam_worker.set_app_name(game.app_name)
|
2021-11-02 09:11:37 +13:00
|
|
|
QThreadPool.globalInstance().start(self.steam_worker)
|