1
0
Fork 0
mirror of synced 2024-07-02 21:20:54 +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) show_game = pyqtSignal(dict)
price = "" price = ""
platform = (False, False) platform = (False, False)
request_active = False
next_request = ()
def __init__(self, path): def __init__(self, path):
super(BrowseGames, self).__init__() 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()))) lambda: self.prepare_request(platform=(self.win_cb.isChecked(), self.mac_cb.isChecked())))
def prepare_request(self, price: str = None, platform: tuple = None): def prepare_request(self, price: str = None, platform: tuple = None):
if price is not None: if price is not None:
self.price = price self.price = price
if platform is not None: if platform is not None:
self.platform = platform self.platform = platform
if self.request_active:
self.next_request = (self.price, self.platform)
return
locale = get_lang() locale = get_lang()
self.stack.setCurrentIndex(2) self.stack.setCurrentIndex(2)
date = f"[,{datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%dT%X')}.{str(random.randint(0, 999)).zfill(3)}Z]" 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 = QNetworkRequest(QUrl("https://www.epicgames.com/graphql"))
request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json") 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 = self.manager.post(request, json.dumps(payload).encode("utf-8"))
self.game_request.finished.connect(self.show_games) self.game_request.finished.connect(self.show_games)
def show_games(self): def show_games(self):
if self.game_request: if self.game_request:
if self.game_request.error() == QNetworkReply.NoError: if self.game_request.error() == QNetworkReply.NoError:
error = QJsonParseError() error = QJsonParseError()
@ -105,12 +114,22 @@ class BrowseGames(QWidget, Ui_browse_games):
self.games_widget.layout().addWidget(w) self.games_widget.layout().addWidget(w)
w.show_info.connect(self.show_game.emit) w.show_info.connect(self.show_game.emit)
self.stack.setCurrentIndex(0) self.stack.setCurrentIndex(0)
self.request_active = False
if self.next_request:
self.prepare_request(*self.next_request)
self.next_request = ()
return return
else: else:
logger.info(self.slug, error.errorString()) logger.error(error.errorString())
else:
logger.error(self.game_request.errorString())
if self.next_request:
self.prepare_request(*self.next_request)
self.next_request = ()
else: else:
print(self.game_request.errorString())
self.stack.setCurrentIndex(1) self.stack.setCurrentIndex(1)

View file

@ -8,7 +8,7 @@
# run again. Do not edit this file unless you know what you are doing. # 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): class Ui_browse_games(object):
@ -17,11 +17,7 @@ class Ui_browse_games(object):
browse_games.resize(706, 541) browse_games.resize(706, 541)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(browse_games) self.horizontalLayout_2 = QtWidgets.QHBoxLayout(browse_games)
self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.games_gb = QtWidgets.QGroupBox(browse_games) self.stack = QtWidgets.QStackedWidget(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.setObjectName("stack") self.stack.setObjectName("stack")
self.games_page = QtWidgets.QWidget() self.games_page = QtWidgets.QWidget()
self.games_page.setObjectName("games_page") self.games_page.setObjectName("games_page")
@ -31,7 +27,7 @@ class Ui_browse_games(object):
self.games.setWidgetResizable(True) self.games.setWidgetResizable(True)
self.games.setObjectName("games") self.games.setObjectName("games")
self.scrollAreaWidgetContents = QtWidgets.QWidget() 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.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.games.setWidget(self.scrollAreaWidgetContents) self.games.setWidget(self.scrollAreaWidgetContents)
self.verticalLayout_5.addWidget(self.games) 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) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_6.addItem(spacerItem) self.verticalLayout_6.addItem(spacerItem)
self.stack.addWidget(self.error) self.stack.addWidget(self.error)
self.verticalLayout_4.addWidget(self.stack) self.horizontalLayout_2.addWidget(self.stack)
self.horizontalLayout_2.addWidget(self.games_gb) self.filter_scroll = QtWidgets.QScrollArea(browse_games)
self.filter_gb = QtWidgets.QGroupBox(browse_games) self.filter_scroll.setMaximumSize(QtCore.QSize(200, 16777215))
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.filter_scroll.setWidgetResizable(True) self.filter_scroll.setWidgetResizable(True)
self.filter_scroll.setObjectName("filter_scroll") self.filter_scroll.setObjectName("filter_scroll")
self.scroll_widget = QtWidgets.QWidget() 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.scroll_widget.setObjectName("scroll_widget")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.scroll_widget) self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.scroll_widget)
self.verticalLayout_3.setObjectName("verticalLayout_3") 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) spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_3.addItem(spacerItem1) self.verticalLayout_3.addItem(spacerItem1)
self.filter_scroll.setWidget(self.scroll_widget) self.filter_scroll.setWidget(self.scroll_widget)
self.verticalLayout.addWidget(self.filter_scroll) self.horizontalLayout_2.addWidget(self.filter_scroll)
self.horizontalLayout_2.addWidget(self.filter_gb)
self.retranslateUi(browse_games) self.retranslateUi(browse_games)
self.stack.setCurrentIndex(1) self.stack.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(browse_games) QtCore.QMetaObject.connectSlotsByName(browse_games)
def retranslateUi(self, browse_games): def retranslateUi(self, browse_games):
_translate = QtCore.QCoreApplication.translate _translate = QtCore.QCoreApplication.translate
browse_games.setWindowTitle(_translate("browse_games", "Form")) 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.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.price_gb.setTitle(_translate("browse_games", "Price"))
self.clear_price.setText(_translate("browse_games", "Clear price filter")) self.clear_price.setText(_translate("browse_games", "Clear price filter"))
self.free_button.setText(_translate("browse_games", "Free")) self.free_button.setText(_translate("browse_games", "Free"))

View file

@ -14,16 +14,10 @@
<string>Form</string> <string>Form</string>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QGroupBox" name="games_gb">
<property name="title">
<string>Games</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item> <item>
<widget class="QStackedWidget" name="stack"> <widget class="QStackedWidget" name="stack">
<property name="currentIndex"> <property name="currentIndex">
<number>1</number> <number>0</number>
</property> </property>
<widget class="QWidget" name="games_page"> <widget class="QWidget" name="games_page">
<layout class="QVBoxLayout" name="verticalLayout_5"> <layout class="QVBoxLayout" name="verticalLayout_5">
@ -37,8 +31,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>394</width> <width>462</width>
<height>306</height> <height>503</height>
</rect> </rect>
</property> </property>
</widget> </widget>
@ -72,35 +66,14 @@
</widget> </widget>
</widget> </widget>
</item> </item>
</layout>
</widget>
</item>
<item> <item>
<widget class="QGroupBox" name="filter_gb"> <widget class="QScrollArea" name="filter_scroll">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>200</width> <width>200</width>
<height>16777215</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="title">
<string>Filter</string>
</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"> <property name="widgetResizable">
<bool>true</bool> <bool>true</bool>
</property> </property>
@ -109,8 +82,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>174</width> <width>198</width>
<height>479</height> <height>521</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_3"> <layout class="QVBoxLayout" name="verticalLayout_3">
@ -217,9 +190,6 @@
</item> </item>
</layout> </layout>
</widget> </widget>
</item>
</layout>
</widget>
<resources/> <resources/>
<connections/> <connections/>
</ui> </ui>