1
0
Fork 0
mirror of synced 2024-06-02 10:44:40 +12:00
Rare/rare/components/tabs/games/head_bar.py

136 lines
5 KiB
Python
Raw Normal View History

from PyQt5.QtCore import QSettings, pyqtSignal
2021-12-24 22:09:50 +13:00
from PyQt5.QtWidgets import (
QLabel,
QPushButton,
QWidget,
QHBoxLayout,
QComboBox, QToolButton, QMenu, QAction,
2021-12-24 22:09:50 +13:00
)
from qtawesome import IconWidget
2021-09-27 03:43:56 +13:00
from rare.shared import ApiResultsSingleton
from rare.utils.extra_widgets import SelectViewWidget, ButtonLineEdit
from rare.utils.misc import icon
2021-09-27 03:43:56 +13:00
class GameListHeadBar(QWidget):
filterChanged: pyqtSignal = pyqtSignal(str)
goto_import: pyqtSignal = pyqtSignal()
goto_egl_sync: pyqtSignal = pyqtSignal()
goto_eos_ubisoft: pyqtSignal = pyqtSignal()
2021-09-27 03:43:56 +13:00
def __init__(self, parent=None):
super(GameListHeadBar, self).__init__(parent=parent)
self.api_results = ApiResultsSingleton()
2021-09-27 03:43:56 +13:00
self.settings = QSettings()
self.filter = QComboBox()
2021-12-24 22:09:50 +13:00
self.filter.addItems(
[
2022-03-16 09:25:54 +13:00
self.tr("All games"),
2021-12-24 22:09:50 +13:00
self.tr("Installed only"),
self.tr("Offline Games"),
]
)
2021-12-20 09:32:18 +13:00
2021-12-24 22:09:50 +13:00
self.available_filters = [
"all",
"installed",
"offline",
]
if self.api_results.bit32_games:
2021-12-31 13:03:59 +13:00
self.filter.addItem(self.tr("32 Bit Games"))
self.available_filters.append("32bit")
if self.api_results.mac_games:
2021-12-31 13:03:59 +13:00
self.filter.addItem(self.tr("Mac games"))
self.available_filters.append("mac")
if self.api_results.no_asset_games:
2021-12-31 13:03:59 +13:00
self.filter.addItem(self.tr("Exclude Origin"))
self.available_filters.append("installable")
2021-12-20 09:32:18 +13:00
self.filter.addItem(self.tr("Include Unreal Engine"))
self.available_filters.append("include_ue")
2021-09-30 10:22:47 +13:00
2021-09-27 03:43:56 +13:00
try:
self.filter.setCurrentIndex(self.settings.value("filter", 0, int))
except TypeError:
self.settings.setValue("filter", 0)
self.filter.setCurrentIndex(0)
2021-09-27 03:43:56 +13:00
self.filter.currentIndexChanged.connect(self.filter_changed)
integrations_menu = QMenu(self)
import_action = QAction(icon("mdi.import", "fa.arrow-down"), self.tr("Import Game"), integrations_menu)
2021-09-27 03:43:56 +13:00
import_action.triggered.connect(self.goto_import)
egl_sync_action = QAction(icon("mdi.sync", "fa.refresh"), self.tr("Sync with EGL"), integrations_menu)
egl_sync_action.triggered.connect(self.goto_egl_sync)
2022-11-04 13:44:45 +13:00
eos_ubisoft_action = QAction(icon("mdi.rocket", "fa.rocket"), self.tr("Epic Overlay and Ubisoft"), integrations_menu)
eos_ubisoft_action.triggered.connect(self.goto_eos_ubisoft)
integrations_menu.addAction(import_action)
integrations_menu.addAction(egl_sync_action)
integrations_menu.addAction(eos_ubisoft_action)
integrations = QToolButton(self)
integrations.setText(self.tr("Integrations"))
integrations.setMenu(integrations_menu)
integrations.setPopupMode(QToolButton.InstantPopup)
self.search_bar = ButtonLineEdit("fa.search", placeholder_text=self.tr("Search Game"))
self.search_bar.setObjectName("search_bar")
self.search_bar.setFrame(False)
2021-09-27 03:43:56 +13:00
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)
2021-09-27 03:43:56 +13:00
self.view = SelectViewWidget(checked)
2021-09-27 03:43:56 +13:00
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(0)
layout.addWidget(integrations)
layout.addStretch(5)
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)
2021-09-27 03:43:56 +13:00
def set_games_count(self, inst: int, avail: int) -> None:
self.installed_label.setText(str(inst))
self.available_label.setText(str(avail))
2021-09-27 03:43:56 +13:00
def filter_changed(self, i):
self.filterChanged.emit(self.available_filters[i])
2021-09-27 03:43:56 +13:00
self.settings.setValue("filter", i)