1
0
Fork 0
mirror of synced 2024-07-01 12:40:28 +12:00
Rare/rare/components/tabs/games/__init__.py

121 lines
4.9 KiB
Python

from PyQt5.QtCore import QSettings, QSize
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QCheckBox, QLineEdit, QPushButton, QStackedLayout, QLabel
from qtawesome import icon
from rare.components.tabs.games.game_info import InfoTabs
from rare.components.tabs.games.game_info.uninstalled_info import UninstalledInfo, UninstalledTabInfo
from rare.components.tabs.games.game_list import GameList
from rare.components.tabs.games.import_widget import ImportWidget
from rare.utils.extra_widgets import SelectViewWidget
class GameTab(QWidget):
def __init__(self, core, parent, offline):
super(GameTab, self).__init__(parent=parent)
self.layout = QStackedLayout()
self.default_widget = Games(core, self, offline)
# Signal to show info
self.default_widget.game_list.show_game_info.connect(self.show_info)
self.default_widget.head_bar.import_game.clicked.connect(lambda: self.layout.setCurrentIndex(2))
self.layout.addWidget(self.default_widget)
self.game_info = InfoTabs(core, self)
self.game_info.info.update_list.connect(self.update_list)
self.layout.addWidget(self.game_info)
self.default_widget.head_bar.refresh_list.clicked.connect(self.update_list)
self.import_widget = ImportWidget(core, self)
self.layout.addWidget(self.import_widget)
self.import_widget.back_button.clicked.connect(lambda: self.layout.setCurrentIndex(0))
self.import_widget.update_list.connect(self.update_list)
self.uninstalled_info_widget = UninstalledTabInfo(core, self)
self.layout.addWidget(self.uninstalled_info_widget)
# self.uninstalled_info_widget.back.clicked.connect(lambda: self.layout.setCurrentIndex(0))
self.setLayout(self.layout)
def update_list(self):
self.default_widget.game_list.update_list(self.default_widget.head_bar.view.isChecked())
self.layout.setCurrentIndex(0)
def show_uninstalled(self, app_name):
self.uninstalled_info_widget.update_game(app_name)
self.uninstalled_info_widget.setCurrentIndex(1)
self.layout.setCurrentIndex(3)
def show_info(self, app_name):
self.game_info.update_game(app_name, self.default_widget.game_list.dlcs)
self.game_info.setCurrentIndex(1)
self.layout.setCurrentIndex(1)
class Games(QWidget):
def __init__(self, core, parent, offline):
super(Games, self).__init__(parent=parent)
self.layout = QVBoxLayout()
self.head_bar = GameListHeadBar(self)
self.head_bar.setObjectName("head_bar")
self.game_list = GameList(core, self, offline)
self.head_bar.search_bar.textChanged.connect(
lambda: self.game_list.filter(self.head_bar.search_bar.text()))
self.head_bar.installed_only.stateChanged.connect(lambda:
self.game_list.installed_only(
self.head_bar.installed_only.isChecked()))
self.layout.addWidget(self.head_bar)
self.layout.addWidget(self.game_list)
# self.layout.addStretch(1)
self.head_bar.view.toggled.connect(self.toggle_view)
self.setLayout(self.layout)
def toggle_view(self):
self.game_list.setCurrentIndex(1 if self.head_bar.view.isChecked() else 0)
settings = QSettings()
settings.setValue("icon_view", not self.head_bar.view.isChecked())
class GameListHeadBar(QWidget):
def __init__(self, parent):
super(GameListHeadBar, self).__init__(parent=parent)
self.layout = QHBoxLayout()
self.installed_only = QCheckBox(self.tr("Installed only"))
self.settings = QSettings()
self.installed_only.setChecked(self.settings.value("installed_only", False, bool))
self.layout.addWidget(self.installed_only)
self.layout.addStretch(1)
self.import_game = QPushButton(icon("mdi.import", color="white"), self.tr("Import Game"))
self.layout.addWidget(self.import_game)
self.layout.addStretch(1)
self.search_bar = QLineEdit()
self.search_bar.setObjectName("search_bar")
self.search_bar.setFrame(False)
icon_label = QLabel()
icon_label.setPixmap(icon("fa.search", color="white").pixmap(QSize(20, 20)))
self.layout.addWidget(icon_label)
self.search_bar.setMinimumWidth(200)
self.search_bar.setPlaceholderText(self.tr("Search Game"))
self.layout.addWidget(self.search_bar)
self.layout.addStretch(2)
checked = QSettings().value("icon_view", True, bool)
self.view = SelectViewWidget(checked)
self.layout.addWidget(self.view)
self.layout.addStretch(1)
self.refresh_list = QPushButton()
self.refresh_list.setIcon(icon("fa.refresh", color="white")) # Reload icon
self.layout.addWidget(self.refresh_list)
self.setLayout(self.layout)