1
0
Fork 0
mirror of synced 2024-09-29 08:51:43 +13:00

Fix filter bug in game_list

This commit is contained in:
Dummerle 2021-11-01 20:39:47 +01:00
parent ac56a6c53c
commit c3c812bd7a
No known key found for this signature in database
GPG key ID: AB68CC59CA39F2F1

View file

@ -29,6 +29,7 @@ class GamesTab(QStackedWidget, Ui_GamesTab):
widgets = {}
running_games = []
updates = set()
active_filter = 0
def __init__(self):
super(GamesTab, self).__init__()
@ -76,12 +77,14 @@ class GamesTab(QStackedWidget, Ui_GamesTab):
else:
self.scroll_widget.layout().insertWidget(1, self.icon_view)
self.head_bar.search_bar.textChanged.connect(self.search)
self.head_bar.filter_changed_signal.connect(self.filter)
self.head_bar.search_bar.textChanged.connect(lambda x: self.filter_games("", x))
self.head_bar.filter_changed_signal.connect(self.filter_games)
self.head_bar.refresh_list.clicked.connect(self.update_list)
self.head_bar.view.toggled.connect(self.toggle_view)
self.filter(self.head_bar.available_filters[self.settings.value("filter", 0, int)])
f = self.settings.value("filter", 0, int)
self.active_filter = self.head_bar.available_filters[f]
self.filter_games(self.active_filter)
# signals
self.signals.dl_progress.connect(self.installing_widget.set_status)
@ -127,7 +130,6 @@ class GamesTab(QStackedWidget, Ui_GamesTab):
self.list_view.setLayout(QVBoxLayout())
self.installed = sorted(self.core.get_installed_list(), key=lambda x: x.title)
installed_names = [i.app_name for i in self.installed]
self.update_count_games_label()
# add installing game widget for icon view: List view not supported
@ -237,34 +239,37 @@ class GamesTab(QStackedWidget, Ui_GamesTab):
self.signals.set_discord_rpc.emit(app_name)
def search(self, text: str):
for t in self.widgets.values():
for w in t:
if text.lower() in w.game.app_title.lower() + w.game.app_name.lower():
w.setVisible(True)
else:
w.setVisible(False)
def filter_games(self, filter_name="", search_text: str = ""):
if not search_text and (t := self.head_bar.search_bar.text()):
search_text = t
if filter_name:
self.active_filter = filter_name
if not filter_name and (t := self.active_filter):
filter_name = t
def filter(self, filter_name="installed"):
for t in self.widgets.values():
# icon and list widget
for w in t:
if filter_name == "installed":
w.setVisible(self.core.is_installed(w.game.app_name))
visible = self.core.is_installed(w.game.app_name)
elif filter_name == "offline":
if self.core.is_installed(w.game.app_name):
w.setVisible(w.igame.can_run_offline)
visible = w.igame.can_run_offline
else:
w.setVisible(False)
visible = False
elif filter_name == "32bit" and self.bit32:
w.setVisible(w.game.app_name in self.bit32)
visible = w.game.app_name in self.bit32
elif filter_name == "mac":
w.setVisible(w.game.app_name in self.mac_games)
visible = w.game.app_name in self.mac_games
elif filter_name == "installable":
w.setVisible(w.game.app_name not in self.no_asset_names)
visible = w.game.app_name not in self.no_asset_names
else:
# All visible
w.setVisible(True)
visible = True
if search_text.lower() not in w.game.app_name.lower() and search_text.lower() not in w.game.app_title.lower():
visible = False
w.setVisible(visible)
def update_list(self, app_name=None):
if app_name: