diff --git a/rare/components/tabs/games/__init__.py b/rare/components/tabs/games/__init__.py index 8b7044de..2cb3876d 100644 --- a/rare/components/tabs/games/__init__.py +++ b/rare/components/tabs/games/__init__.py @@ -34,8 +34,6 @@ class GamesTab(QStackedWidget): self.image_manager = ImageManagerSingleton() self.settings = QSettings() - self.active_filter: int = 0 - self.games_page = QWidget(parent=self) games_page_layout = QVBoxLayout(self.games_page) self.addWidget(self.games_page) @@ -99,10 +97,7 @@ class GamesTab(QStackedWidget): self.head_bar.refresh_list.clicked.connect(self.library_controller.update_list) self.head_bar.view.toggled.connect(self.toggle_view) - f = self.settings.value("filter", 0, int) - if f >= len(self.head_bar.available_filters): - f = 0 - self.active_filter = self.head_bar.available_filters[f] + self.active_filter: str = self.head_bar.filter.currentData(Qt.UserRole) # signals self.signals.game.installed.connect(self.update_count_games_label) @@ -158,7 +153,7 @@ class GamesTab(QStackedWidget): for rgame in self.rcore.games: icon_widget, list_widget = self.add_library_widget(rgame) if not icon_widget or not list_widget: - logger.warning(f"Excluding {rgame.app_name} from the game list") + logger.warning("Excluding %s from the game list", rgame.app_title) continue self.icon_view.layout().addWidget(icon_widget) self.list_view.layout().addWidget(list_widget) @@ -169,8 +164,7 @@ class GamesTab(QStackedWidget): try: icon_widget, list_widget = self.library_controller.add_game(rgame) except Exception as e: - raise e - logger.error(f"{rgame.app_name} is broken. Don't add it to game list: {e}") + logger.error("Could not add widget for %s to library: %s", rgame.app_name, e) return None, None icon_widget.show_info.connect(self.show_game_info) list_widget.show_info.connect(self.show_game_info) diff --git a/rare/components/tabs/games/head_bar.py b/rare/components/tabs/games/head_bar.py index 1178108c..0ec67c5e 100644 --- a/rare/components/tabs/games/head_bar.py +++ b/rare/components/tabs/games/head_bar.py @@ -1,4 +1,6 @@ -from PyQt5.QtCore import QSettings, pyqtSignal, pyqtSlot +import platform as pf + +from PyQt5.QtCore import QSettings, pyqtSignal, pyqtSlot, Qt from PyQt5.QtWidgets import ( QLabel, QPushButton, @@ -22,45 +24,28 @@ class GameListHeadBar(QWidget): def __init__(self, parent=None): super(GameListHeadBar, self).__init__(parent=parent) self.rcore = RareCore.instance() - self.settings = QSettings() + self.settings = QSettings(self) - self.filter = QComboBox() - self.filter.addItems( - [ - self.tr("All games"), - self.tr("Installed only"), - self.tr("Offline Games"), - # self.tr("Hidden") - ] - ) - - self.available_filters = [ - "all", - "installed", - "offline", - # "hidden" - ] + self.filter = QComboBox(self) + self.filter.addItem(self.tr("All games"), "all") + self.filter.addItem(self.tr("Installed only"), "installed") + self.filter.addItem(self.tr("Offline Games"), "offline") + # self.filter.addItem(self.tr("Hidden"), "hidden") if self.rcore.bit32_games: - self.filter.addItem(self.tr("32 Bit Games")) - self.available_filters.append("32bit") - + self.filter.addItem(self.tr("32 Bit Games"), "32bit") if self.rcore.mac_games: - self.filter.addItem(self.tr("Mac games")) - self.available_filters.append("mac") - + self.filter.addItem(self.tr("Mac games"), "mac") if self.rcore.origin_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") + self.filter.addItem(self.tr("Exclude Origin"), "installable") + self.filter.addItem(self.tr("Include Unreal Engine"), "include_ue") + filter_default = "mac" if pf.system() == "Darwin" else "all" + filter_index = i if (i := self.filter.findData(filter_default, Qt.UserRole)) >= 0 else 0 try: - self.filter.setCurrentIndex(self.settings.value("filter", 0, int)) + self.filter.setCurrentIndex(self.settings.value("library_filter", filter_index, int)) except TypeError: - self.settings.setValue("filter", 0) - self.filter.setCurrentIndex(0) - + self.settings.setValue("library_filter", filter_index) + self.filter.setCurrentIndex(filter_index) self.filter.currentIndexChanged.connect(self.filter_changed) integrations_menu = QMenu(self) @@ -139,6 +124,6 @@ class GameListHeadBar(QWidget): self.rcore.fetch() @pyqtSlot(int) - def filter_changed(self, i: int): - self.filterChanged.emit(self.available_filters[i]) - self.settings.setValue("filter", i) + def filter_changed(self, index: int): + self.filterChanged.emit(self.filter.itemData(index, Qt.UserRole)) + self.settings.setValue("library_filter", index)