Fix bug if change filter too fast
This commit is contained in:
parent
c063e9a92a
commit
7cf4f15122
3 changed files with 174 additions and 204 deletions
|
@ -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!, " \
|
||||
|
|
|
@ -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"))
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue