121 lines
4.7 KiB
Python
121 lines
4.7 KiB
Python
from PyQt5.QtCore import QSettings, QSize, pyqtSignal
|
|
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLineEdit, QPushButton, QStackedLayout, \
|
|
QLabel, QComboBox
|
|
from qtawesome import icon
|
|
|
|
from rare.components.tabs.games.game_info import InfoTabs
|
|
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.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_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.search(self.head_bar.search_bar.text()))
|
|
|
|
self.head_bar.filter_changed_signal.connect(self.game_list.filter)
|
|
|
|
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):
|
|
filter_changed_signal = pyqtSignal(str)
|
|
|
|
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.filter = QComboBox()
|
|
self.filter.addItems([self.tr("All"),
|
|
self.tr("Installed only"),
|
|
self.tr("Offline Games"),
|
|
self.tr("32 Bit Games")])
|
|
self.filter.currentIndexChanged.connect(self.filter_changed)
|
|
self.layout.addWidget(self.filter)
|
|
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)
|
|
|
|
def filter_changed(self, i):
|
|
self.filter_changed_signal.emit(["", "installed", "offline", "32bit"][i])
|