1
0
Fork 0
mirror of synced 2024-05-18 19:42:54 +12:00
Rare/rare/components/tabs/store/results.py
loathingKernel 2a2458bacb
Store: Update details page
* Add a big back button in details page.

* Add static CSS to render QPushButtons as flat when the `flat` property is set

* Remove outer scroll areas from details page since the page is already adjustable

* Remove scroll area from the requirements widget because ElideLabels are already used in it.

* Fix crash when sorting the wishlist
2024-02-25 21:35:44 +02:00

57 lines
2 KiB
Python

from PyQt5.QtCore import Qt
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import (
QWidget,
QSizePolicy,
QLabel,
QScrollArea,
)
from rare.widgets.flow_layout import FlowLayout
from .api.models.response import CatalogOfferModel
from .widgets.items import ResultsItemWidget
class ResultsWidget(QScrollArea):
show_details = pyqtSignal(CatalogOfferModel)
def __init__(self, store_api, parent=None):
super(ResultsWidget, self).__init__(parent=parent)
self.store_api = store_api
self.results_container = QWidget(self)
self.results_container.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
self.results_layout = FlowLayout(self.results_container)
self.setWidget(self.results_container)
self.setWidgetResizable(True)
# self.main_layout = QVBoxLayout(self)
# self.main_layout.setContentsMargins(0, 0, 0, 0)
# self.main_layout.addWidget(self.results_scrollarea)
self.setEnabled(False)
def load_results(self, text: str):
self.setEnabled(False)
if text != "":
self.store_api.search_game(text, self.show_results)
def show_results(self, results: dict):
for w in self.results_container.findChildren(QLabel, options=Qt.FindDirectChildrenOnly):
self.results_layout.removeWidget(w)
w.deleteLater()
for w in self.results_container.findChildren(ResultsItemWidget, options=Qt.FindDirectChildrenOnly):
self.results_layout.removeWidget(w)
w.deleteLater()
if not results:
self.results_layout.addWidget(QLabel(self.tr("No results found")))
else:
for res in results:
w = ResultsItemWidget(self.store_api.cached_manager, res, parent=self.results_container)
w.show_details.connect(self.show_details.emit)
self.results_layout.addWidget(w)
self.results_layout.update()
self.setEnabled(True)