1
0
Fork 0
mirror of synced 2024-06-29 11:40:37 +12:00
Rare/rare/components/tabs/games/head_bar.py
loathingKernel b8668854db Move the installed and available games count to the head bar.
Moving them to the head bar makes the library containers
simpler structurally as there the library's frame can be removed.

Remove games_tab UI files as they were getting very thin,
what they contained is being setup manually instead

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2022-06-25 19:21:24 +03:00

123 lines
4.3 KiB
Python

from PyQt5.QtCore import QSettings, pyqtSignal
from PyQt5.QtWidgets import (
QLabel,
QPushButton,
QWidget,
QHBoxLayout,
QComboBox,
)
from qtawesome import IconWidget
from rare.shared import ApiResultsSingleton
from rare.utils.extra_widgets import SelectViewWidget, ButtonLineEdit
from rare.utils.utils import icon
class GameListHeadBar(QWidget):
filterChanged = pyqtSignal(str)
def __init__(self, parent=None):
super(GameListHeadBar, self).__init__(parent=parent)
self.api_results = ApiResultsSingleton()
self.settings = QSettings()
self.filter = QComboBox()
self.filter.addItems(
[
self.tr("All games"),
self.tr("Installed only"),
self.tr("Offline Games"),
]
)
self.available_filters = [
"all",
"installed",
"offline",
]
if self.api_results.bit32_games:
self.filter.addItem(self.tr("32 Bit Games"))
self.available_filters.append("32bit")
if self.api_results.mac_games:
self.filter.addItem(self.tr("Mac games"))
self.available_filters.append("mac")
if self.api_results.no_asset_games:
self.filter.addItem(self.tr("Exclude Origin"))
self.available_filters.append("installable")
self.filter.addItem(self.tr("Include Unreal Engine"))
self.available_filters.append("include_ue")
try:
self.filter.setCurrentIndex(self.settings.value("filter", 0, int))
except TypeError:
self.settings.setValue("filter", 0)
self.filter.setCurrentIndex(0)
self.filter.currentIndexChanged.connect(self.filter_changed)
self.import_game = QPushButton(icon("mdi.import", "fa.arrow-down"), self.tr("Import Game"))
self.import_clicked = self.import_game.clicked
self.egl_sync = QPushButton(icon("mdi.sync", "fa.refresh"), self.tr("Sync with EGL"))
self.egl_sync_clicked = self.egl_sync.clicked
# FIXME: Until it is ready
# self.egl_sync.setEnabled(False)
self.search_bar = ButtonLineEdit("fa.search", placeholder_text=self.tr("Search Game"))
self.search_bar.setObjectName("search_bar")
self.search_bar.setFrame(False)
self.search_bar.setMinimumWidth(200)
checked = QSettings().value("icon_view", True, bool)
installed_tooltip = self.tr("Installed games")
self.installed_icon = IconWidget(parent=self)
self.installed_icon.setIcon(icon("ph.floppy-disk-back-fill"))
self.installed_icon.setToolTip(installed_tooltip)
self.installed_label = QLabel(parent=self)
font = self.installed_label.font()
font.setBold(True)
self.installed_label.setFont(font)
self.installed_label.setToolTip(installed_tooltip)
available_tooltip = self.tr("Available games")
self.available_icon = IconWidget(parent=self)
self.available_icon.setIcon(icon("ph.floppy-disk-back-light"))
self.available_icon.setToolTip(available_tooltip)
self.available_label = QLabel(parent=self)
self.available_label.setToolTip(available_tooltip)
self.view = SelectViewWidget(checked)
self.refresh_list = QPushButton()
self.refresh_list.setIcon(icon("fa.refresh")) # Reload icon
layout = QHBoxLayout()
layout.setContentsMargins(0, 5, 0, 5)
layout.addWidget(self.filter)
layout.addStretch(1)
layout.addWidget(self.import_game)
layout.addWidget(self.egl_sync)
layout.addStretch(2)
layout.addWidget(self.search_bar)
layout.addStretch(2)
layout.addWidget(self.installed_icon)
layout.addWidget(self.installed_label)
layout.addWidget(self.available_icon)
layout.addWidget(self.available_label)
layout.addStretch(2)
layout.addWidget(self.view)
layout.addStretch(2)
layout.addWidget(self.refresh_list)
self.setLayout(layout)
def set_games_count(self, inst: int, avail: int) -> None:
self.installed_label.setText(str(inst))
self.available_label.setText(str(avail))
def filter_changed(self, i):
self.filterChanged.emit(self.available_filters[i])
self.settings.setValue("filter", i)