1
0
Fork 0
mirror of synced 2024-06-28 11:11:15 +12:00

Fix bug if change filter too fast

This commit is contained in:
Dummerle 2021-06-14 23:17:21 +02:00
parent c063e9a92a
commit 7cf4f15122
3 changed files with 174 additions and 204 deletions

View file

@ -19,6 +19,8 @@ class BrowseGames(QWidget, Ui_browse_games):
show_game = pyqtSignal(dict)
price = ""
platform = (False, False)
request_active = False
next_request = ()
def __init__(self, path):
super(BrowseGames, self).__init__()
@ -48,11 +50,16 @@ class BrowseGames(QWidget, Ui_browse_games):
lambda: self.prepare_request(platform=(self.win_cb.isChecked(), self.mac_cb.isChecked())))
def prepare_request(self, price: str = None, platform: tuple = None):
if price is not None:
self.price = price
if platform is not None:
self.platform = platform
if self.request_active:
self.next_request = (self.price, self.platform)
return
locale = get_lang()
self.stack.setCurrentIndex(2)
date = f"[,{datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%dT%X')}.{str(random.randint(0, 999)).zfill(3)}Z]"
@ -80,10 +87,12 @@ class BrowseGames(QWidget, Ui_browse_games):
request = QNetworkRequest(QUrl("https://www.epicgames.com/graphql"))
request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json")
self.request_active = True
self.game_request = self.manager.post(request, json.dumps(payload).encode("utf-8"))
self.game_request.finished.connect(self.show_games)
def show_games(self):
if self.game_request:
if self.game_request.error() == QNetworkReply.NoError:
error = QJsonParseError()
@ -105,13 +114,23 @@ class BrowseGames(QWidget, Ui_browse_games):
self.games_widget.layout().addWidget(w)
w.show_info.connect(self.show_game.emit)
self.stack.setCurrentIndex(0)
self.request_active = False
if self.next_request:
self.prepare_request(*self.next_request)
self.next_request = ()
return
else:
logger.info(self.slug, error.errorString())
logger.error(error.errorString())
else:
print(self.game_request.errorString())
self.stack.setCurrentIndex(1)
logger.error(self.game_request.errorString())
if self.next_request:
self.prepare_request(*self.next_request)
self.next_request = ()
else:
self.stack.setCurrentIndex(1)
game_query = "query searchStoreQuery($allowCountries: String, $category: String, $count: Int, $country: String!, " \

View file

@ -8,7 +8,7 @@
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5 import QtCore, QtWidgets
class Ui_browse_games(object):
@ -17,11 +17,7 @@ class Ui_browse_games(object):
browse_games.resize(706, 541)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(browse_games)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.games_gb = QtWidgets.QGroupBox(browse_games)
self.games_gb.setObjectName("games_gb")
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.games_gb)
self.verticalLayout_4.setObjectName("verticalLayout_4")
self.stack = QtWidgets.QStackedWidget(self.games_gb)
self.stack = QtWidgets.QStackedWidget(browse_games)
self.stack.setObjectName("stack")
self.games_page = QtWidgets.QWidget()
self.games_page.setObjectName("games_page")
@ -31,7 +27,7 @@ class Ui_browse_games(object):
self.games.setWidgetResizable(True)
self.games.setObjectName("games")
self.scrollAreaWidgetContents = QtWidgets.QWidget()
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 394, 306))
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 462, 503))
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.games.setWidget(self.scrollAreaWidgetContents)
self.verticalLayout_5.addWidget(self.games)
@ -46,25 +42,13 @@ class Ui_browse_games(object):
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_6.addItem(spacerItem)
self.stack.addWidget(self.error)
self.verticalLayout_4.addWidget(self.stack)
self.horizontalLayout_2.addWidget(self.games_gb)
self.filter_gb = QtWidgets.QGroupBox(browse_games)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.filter_gb.sizePolicy().hasHeightForWidth())
self.filter_gb.setSizePolicy(sizePolicy)
self.filter_gb.setMaximumSize(QtCore.QSize(200, 16777215))
self.filter_gb.setFlat(False)
self.filter_gb.setCheckable(False)
self.filter_gb.setObjectName("filter_gb")
self.verticalLayout = QtWidgets.QVBoxLayout(self.filter_gb)
self.verticalLayout.setObjectName("verticalLayout")
self.filter_scroll = QtWidgets.QScrollArea(self.filter_gb)
self.horizontalLayout_2.addWidget(self.stack)
self.filter_scroll = QtWidgets.QScrollArea(browse_games)
self.filter_scroll.setMaximumSize(QtCore.QSize(200, 16777215))
self.filter_scroll.setWidgetResizable(True)
self.filter_scroll.setObjectName("filter_scroll")
self.scroll_widget = QtWidgets.QWidget()
self.scroll_widget.setGeometry(QtCore.QRect(0, 0, 174, 479))
self.scroll_widget.setGeometry(QtCore.QRect(0, 0, 198, 521))
self.scroll_widget.setObjectName("scroll_widget")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.scroll_widget)
self.verticalLayout_3.setObjectName("verticalLayout_3")
@ -109,19 +93,16 @@ class Ui_browse_games(object):
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_3.addItem(spacerItem1)
self.filter_scroll.setWidget(self.scroll_widget)
self.verticalLayout.addWidget(self.filter_scroll)
self.horizontalLayout_2.addWidget(self.filter_gb)
self.horizontalLayout_2.addWidget(self.filter_scroll)
self.retranslateUi(browse_games)
self.stack.setCurrentIndex(1)
self.stack.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(browse_games)
def retranslateUi(self, browse_games):
_translate = QtCore.QCoreApplication.translate
browse_games.setWindowTitle(_translate("browse_games", "Form"))
self.games_gb.setTitle(_translate("browse_games", "Games"))
self.error_label.setText(_translate("browse_games", "An error occured"))
self.filter_gb.setTitle(_translate("browse_games", "Filter"))
self.price_gb.setTitle(_translate("browse_games", "Price"))
self.clear_price.setText(_translate("browse_games", "Clear price filter"))
self.free_button.setText(_translate("browse_games", "Free"))

View file

@ -15,207 +15,177 @@
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QGroupBox" name="games_gb">
<property name="title">
<string>Games</string>
<widget class="QStackedWidget" name="stack">
<property name="currentIndex">
<number>0</number>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QStackedWidget" name="stack">
<property name="currentIndex">
<number>1</number>
</property>
<widget class="QWidget" name="games_page">
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QScrollArea" name="games">
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>394</width>
<height>306</height>
</rect>
</property>
</widget>
</widget>
</item>
</layout>
<widget class="QWidget" name="games_page">
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QScrollArea" name="games">
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>462</width>
<height>503</height>
</rect>
</property>
</widget>
</widget>
<widget class="QWidget" name="error">
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLabel" name="error_label">
<property name="text">
<string>An error occured</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="error">
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLabel" name="error_label">
<property name="text">
<string>An error occured</string>
</property>
</widget>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<widget class="QGroupBox" name="filter_gb">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<widget class="QScrollArea" name="filter_scroll">
<property name="maximumSize">
<size>
<width>200</width>
<height>16777215</height>
</size>
</property>
<property name="title">
<string>Filter</string>
<property name="widgetResizable">
<bool>true</bool>
</property>
<property name="flat">
<bool>false</bool>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QScrollArea" name="filter_scroll">
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scroll_widget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>174</width>
<height>479</height>
</rect>
<widget class="QWidget" name="scroll_widget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>198</width>
<height>521</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QGroupBox" name="price_gb">
<property name="title">
<string>Price</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QGroupBox" name="price_gb">
<property name="title">
<string>Price</string>
<widget class="QRadioButton" name="clear_price">
<property name="text">
<string>Clear price filter</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QRadioButton" name="clear_price">
<property name="text">
<string>Clear price filter</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="free_button">
<property name="text">
<string>Free</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="under10">
<property name="text">
<string>Under 10</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="under20">
<property name="text">
<string>Under 20</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="under30">
<property name="text">
<string>Under 30</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="above">
<property name="text">
<string>14.99 and above</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="on_discount">
<property name="text">
<string>Discount</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="platform_gb">
<property name="title">
<string>Platform</string>
<widget class="QRadioButton" name="free_button">
<property name="text">
<string>Free</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QCheckBox" name="win_cb">
<property name="text">
<string>Windows</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="mac_cb">
<property name="text">
<string>Mac</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
<widget class="QRadioButton" name="under10">
<property name="text">
<string>Under 10</string>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</widget>
</item>
<item>
<widget class="QRadioButton" name="under20">
<property name="text">
<string>Under 20</string>
</property>
</spacer>
</widget>
</item>
<item>
<widget class="QRadioButton" name="under30">
<property name="text">
<string>Under 30</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="above">
<property name="text">
<string>14.99 and above</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="on_discount">
<property name="text">
<string>Discount</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="platform_gb">
<property name="title">
<string>Platform</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QCheckBox" name="win_cb">
<property name="text">
<string>Windows</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="mac_cb">
<property name="text">
<string>Mac</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</item>
</layout>