1
0
Fork 0
mirror of synced 2024-06-26 10:11:19 +12:00

Filter options for Games: Installed / offline

This commit is contained in:
Dummerle 2021-05-12 10:27:23 +02:00
parent 80eec00ccd
commit d7c481bbaf
2 changed files with 39 additions and 14 deletions

View file

@ -1,5 +1,6 @@
from PyQt5.QtCore import QSettings, QSize
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QCheckBox, QLineEdit, QPushButton, QStackedLayout, QLabel
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
@ -51,11 +52,10 @@ class Games(QWidget):
self.game_list = GameList(core, self, offline)
self.head_bar.search_bar.textChanged.connect(
lambda: self.game_list.filter(self.head_bar.search_bar.text()))
lambda: self.game_list.search(self.head_bar.search_bar.text()))
self.head_bar.filter_changed_signal.connect(self.game_list.filter)
self.head_bar.installed_only.stateChanged.connect(lambda:
self.game_list.installed_only(
self.head_bar.installed_only.isChecked()))
self.layout.addWidget(self.head_bar)
self.layout.addWidget(self.game_list)
# self.layout.addStretch(1)
@ -70,14 +70,22 @@ class Games(QWidget):
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.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.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.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"))
@ -107,3 +115,11 @@ class GameListHeadBar(QWidget):
self.layout.addWidget(self.refresh_list)
self.setLayout(self.layout)
def filter_changed(self, i):
if i == 0:
self.filter_changed_signal.emit("")
elif i == 1:
self.filter_changed_signal.emit("installed")
elif i == 2:
self.filter_changed_signal.emit("offline")

View file

@ -165,7 +165,7 @@ class GameList(QStackedWidget):
self.setCurrentIndex(1)
if self.settings.value("installed_only", False, bool):
self.installed_only(True)
self.filter(True)
def is_finished(self):
if psutil.pid_exists(self.active_game[1]):
@ -223,7 +223,7 @@ class GameList(QStackedWidget):
self.widgets[app_name][1].launch_button.setDisabled(True)
self.widgets[app_name][1].launch_button.setText(self.tr("Game running"))
def filter(self, text: str):
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():
@ -231,11 +231,20 @@ class GameList(QStackedWidget):
else:
w.setVisible(False)
def installed_only(self, i_o: bool):
def filter(self, filter="installed"):
for t in self.widgets.values():
for w in t:
w.setVisible(not (not self.core.is_installed(w.game.app_name) and i_o))
self.settings.setValue("installed_only", i_o)
if filter == "installed":
w.setVisible(self.core.is_installed(w.game.app_name))
elif filter == "offline":
if self.core.is_installed(w.game.app_name):
w.setVisible(w.igame.can_run_offline)
else:
w.setVisible(False)
else:
# All visible
w.setVisible(True)
self.settings.setValue("filter", filter)
def update_list(self, icon_view=True):
self.settings.setValue("icon_view", icon_view)