1
0
Fork 0
mirror of synced 2024-05-05 05:02:52 +12:00

Shop: Use a single QGridLayout instead of left and right VBoxLayouts

This commit is contained in:
loathingKernel 2023-04-12 14:08:10 +03:00
parent 91af16b76d
commit fda82b17cf
No known key found for this signature in database
GPG key ID: CE0C72D0B53821FD
3 changed files with 304 additions and 323 deletions

View file

@ -24,6 +24,8 @@ from .game_widgets import GameWidget
from .image_widget import WaitingSpinner
from .shop_api_core import ShopApiCore
from .api.models.utils import parse_date
logger = logging.getLogger("Shop")
@ -77,7 +79,7 @@ class ShopWidget(QWidget, SideTabContents):
self.search_bar = ButtonLineEdit(
"fa.search", placeholder_text=self.tr("Search Games")
)
self.ui.left_layout.insertWidget(0, self.search_bar)
self.ui.main_layout.addWidget(self.search_bar, 0, 0)
# self.search_bar.textChanged.connect(self.search_games)
@ -169,7 +171,7 @@ class ShopWidget(QWidget, SideTabContents):
self.free_games_next.setLayout(free_games_next_layout)
self.ui.free_container.layout().addWidget(self.free_games_next)
date = datetime.datetime.now()
date = datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc)
free_games_now = []
coming_free_games = []
for game in free_games:
@ -191,19 +193,13 @@ class ShopWidget(QWidget, SideTabContents):
try:
# parse datetime to check if game is next week or now
try:
start_date = datetime.datetime.strptime(
game.promotions["upcomingPromotionalOffers"][0][
"promotionalOffers"
][0]["startDate"],
"%Y-%m-%dT%H:%M:%S.%fZ",
start_date = parse_date(
game.promotions["upcomingPromotionalOffers"][0]["promotionalOffers"][0]["startDate"]
)
except Exception:
try:
start_date = datetime.datetime.strptime(
game.promotions["promotionalOffers"][0][
"promotionalOffers"
][0]["startDate"],
"%Y-%m-%dT%H:%M:%S.%fZ",
start_date = parse_date(
game.promotions["promotionalOffers"][0]["promotionalOffers"][0]["startDate"]
)
except Exception as e:

View file

@ -14,62 +14,10 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_ShopWidget(object):
def setupUi(self, ShopWidget):
ShopWidget.setObjectName("ShopWidget")
ShopWidget.resize(350, 382)
ShopWidget.resize(788, 662)
ShopWidget.setWindowTitle("Store")
self.shop_layout = QtWidgets.QHBoxLayout(ShopWidget)
self.shop_layout.setObjectName("shop_layout")
self.left_layout = QtWidgets.QVBoxLayout()
self.left_layout.setObjectName("left_layout")
self.games_scrollarea = QtWidgets.QScrollArea(ShopWidget)
self.games_scrollarea.setFrameShape(QtWidgets.QFrame.NoFrame)
self.games_scrollarea.setFrameShadow(QtWidgets.QFrame.Plain)
self.games_scrollarea.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
self.games_scrollarea.setWidgetResizable(True)
self.games_scrollarea.setObjectName("games_scrollarea")
self.games_container = QtWidgets.QWidget()
self.games_container.setGeometry(QtCore.QRect(0, 0, 186, 368))
self.games_container.setObjectName("games_container")
self.games_container_layout = QtWidgets.QVBoxLayout(self.games_container)
self.games_container_layout.setContentsMargins(0, 0, 3, 0)
self.games_container_layout.setObjectName("games_container_layout")
self.free_scrollarea = QtWidgets.QScrollArea(self.games_container)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.free_scrollarea.sizePolicy().hasHeightForWidth())
self.free_scrollarea.setSizePolicy(sizePolicy)
self.free_scrollarea.setFrameShape(QtWidgets.QFrame.NoFrame)
self.free_scrollarea.setFrameShadow(QtWidgets.QFrame.Plain)
self.free_scrollarea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.free_scrollarea.setWidgetResizable(True)
self.free_scrollarea.setObjectName("free_scrollarea")
self.free_container = QtWidgets.QWidget()
self.free_container.setGeometry(QtCore.QRect(0, 0, 16, 16))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.free_container.sizePolicy().hasHeightForWidth())
self.free_container.setSizePolicy(sizePolicy)
self.free_container.setObjectName("free_container")
self.free_container_layout = QtWidgets.QHBoxLayout(self.free_container)
self.free_container_layout.setContentsMargins(0, 0, 0, 3)
self.free_container_layout.setObjectName("free_container_layout")
self.free_scrollarea.setWidget(self.free_container)
self.games_container_layout.addWidget(self.free_scrollarea)
self.discounts_group = QtWidgets.QGroupBox(self.games_container)
self.discounts_group.setObjectName("discounts_group")
self.games_container_layout.addWidget(self.discounts_group)
self.games_group = QtWidgets.QGroupBox(self.games_container)
self.games_group.setObjectName("games_group")
self.games_container_layout.addWidget(self.games_group)
self.games_scrollarea.setWidget(self.games_container)
self.left_layout.addWidget(self.games_scrollarea)
self.shop_layout.addLayout(self.left_layout)
self.right_layout = QtWidgets.QVBoxLayout()
self.right_layout.setObjectName("right_layout")
self.reset_button = QtWidgets.QPushButton(ShopWidget)
self.reset_button.setObjectName("reset_button")
self.right_layout.addWidget(self.reset_button)
self.main_layout = QtWidgets.QGridLayout(ShopWidget)
self.main_layout.setObjectName("main_layout")
self.filter_scrollarea = QtWidgets.QScrollArea(ShopWidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
@ -141,17 +89,59 @@ class Ui_ShopWidget(object):
self.others_layout.setObjectName("others_layout")
self.filter_container_layout.addWidget(self.others_group)
self.filter_scrollarea.setWidget(self.filter_container)
self.right_layout.addWidget(self.filter_scrollarea)
self.shop_layout.addLayout(self.right_layout)
self.shop_layout.setStretch(0, 1)
self.main_layout.addWidget(self.filter_scrollarea, 1, 1, 1, 1)
self.reset_button = QtWidgets.QPushButton(ShopWidget)
self.reset_button.setObjectName("reset_button")
self.main_layout.addWidget(self.reset_button, 0, 1, 1, 1)
self.games_scrollarea = QtWidgets.QScrollArea(ShopWidget)
self.games_scrollarea.setFrameShape(QtWidgets.QFrame.NoFrame)
self.games_scrollarea.setFrameShadow(QtWidgets.QFrame.Plain)
self.games_scrollarea.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
self.games_scrollarea.setWidgetResizable(True)
self.games_scrollarea.setObjectName("games_scrollarea")
self.games_container = QtWidgets.QWidget()
self.games_container.setGeometry(QtCore.QRect(0, 0, 628, 618))
self.games_container.setObjectName("games_container")
self.games_container_layout = QtWidgets.QVBoxLayout(self.games_container)
self.games_container_layout.setContentsMargins(0, 0, 3, 0)
self.games_container_layout.setObjectName("games_container_layout")
self.free_scrollarea = QtWidgets.QScrollArea(self.games_container)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.free_scrollarea.sizePolicy().hasHeightForWidth())
self.free_scrollarea.setSizePolicy(sizePolicy)
self.free_scrollarea.setFrameShape(QtWidgets.QFrame.NoFrame)
self.free_scrollarea.setFrameShadow(QtWidgets.QFrame.Plain)
self.free_scrollarea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.free_scrollarea.setWidgetResizable(True)
self.free_scrollarea.setObjectName("free_scrollarea")
self.free_container = QtWidgets.QWidget()
self.free_container.setGeometry(QtCore.QRect(0, 0, 16, 16))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.free_container.sizePolicy().hasHeightForWidth())
self.free_container.setSizePolicy(sizePolicy)
self.free_container.setObjectName("free_container")
self.free_container_layout = QtWidgets.QHBoxLayout(self.free_container)
self.free_container_layout.setContentsMargins(0, 0, 0, 3)
self.free_container_layout.setObjectName("free_container_layout")
self.free_scrollarea.setWidget(self.free_container)
self.games_container_layout.addWidget(self.free_scrollarea)
self.discounts_group = QtWidgets.QGroupBox(self.games_container)
self.discounts_group.setObjectName("discounts_group")
self.games_container_layout.addWidget(self.discounts_group)
self.games_group = QtWidgets.QGroupBox(self.games_container)
self.games_group.setObjectName("games_group")
self.games_container_layout.addWidget(self.games_group)
self.games_scrollarea.setWidget(self.games_container)
self.main_layout.addWidget(self.games_scrollarea, 1, 0, 1, 1)
self.retranslateUi(ShopWidget)
def retranslateUi(self, ShopWidget):
_translate = QtCore.QCoreApplication.translate
self.discounts_group.setTitle(_translate("ShopWidget", "Discounts from your wishlist"))
self.games_group.setTitle(_translate("ShopWidget", "Games"))
self.reset_button.setText(_translate("ShopWidget", "Reset filters"))
self.price_group.setTitle(_translate("ShopWidget", "Price"))
self.none_price.setText(_translate("ShopWidget", "None"))
self.free_button.setText(_translate("ShopWidget", "Free"))
@ -164,6 +154,9 @@ class Ui_ShopWidget(object):
self.genre_group.setTitle(_translate("ShopWidget", "Genre"))
self.type_group.setTitle(_translate("ShopWidget", "Type"))
self.others_group.setTitle(_translate("ShopWidget", "Other tags"))
self.reset_button.setText(_translate("ShopWidget", "Reset filters"))
self.discounts_group.setTitle(_translate("ShopWidget", "Discounts from your wishlist"))
self.games_group.setTitle(_translate("ShopWidget", "Games"))
if __name__ == "__main__":

View file

@ -6,282 +6,274 @@
<rect>
<x>0</x>
<y>0</y>
<width>679</width>
<height>329</height>
<width>788</width>
<height>662</height>
</rect>
</property>
<property name="windowTitle">
<string notr="true">Store</string>
</property>
<layout class="QHBoxLayout" name="shop_layout" stretch="1,0">
<item>
<layout class="QVBoxLayout" name="left_layout">
<item>
<widget class="QScrollArea" name="games_scrollarea">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
<layout class="QGridLayout" name="main_layout">
<item row="1" column="1">
<widget class="QScrollArea" name="filter_scrollarea">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustToContents</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="filter_container">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>142</width>
<height>390</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="filter_container_layout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
<property name="topMargin">
<number>0</number>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustToContents</enum>
<property name="rightMargin">
<number>3</number>
</property>
<property name="widgetResizable">
<bool>true</bool>
<property name="bottomMargin">
<number>0</number>
</property>
<widget class="QWidget" name="games_container">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>515</width>
<height>315</height>
</rect>
</property>
<layout class="QVBoxLayout" name="games_container_layout">
<property name="leftMargin">
<number>0</number>
<item>
<widget class="QGroupBox" name="price_group">
<property name="title">
<string>Price</string>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QScrollArea" name="free_scrollarea">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="free_container">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>16</width>
<height>16</height>
</rect>
<layout class="QVBoxLayout" name="price_layout">
<item>
<widget class="QRadioButton" name="none_price">
<property name="text">
<string>None</string>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<property name="checked">
<bool>true</bool>
</property>
<layout class="QHBoxLayout" name="free_container_layout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
</layout>
</widget>
</widget>
</item>
<item>
<widget class="QGroupBox" name="discounts_group">
<property name="title">
<string>Discounts from your wishlist</string>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="games_group">
<property name="title">
<string>Games</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</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="QCheckBox" name="on_discount">
<property name="text">
<string>Discount</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="platform_group">
<property name="title">
<string>Platform</string>
</property>
<layout class="QVBoxLayout" name="platfrom_layout"/>
</widget>
</item>
<item>
<widget class="QGroupBox" name="genre_group">
<property name="title">
<string>Genre</string>
</property>
<layout class="QVBoxLayout" name="genre_layout"/>
</widget>
</item>
<item>
<widget class="QGroupBox" name="type_group">
<property name="title">
<string>Type</string>
</property>
<layout class="QVBoxLayout" name="type_layout"/>
</widget>
</item>
<item>
<widget class="QGroupBox" name="others_group">
<property name="title">
<string>Other tags</string>
</property>
<layout class="QVBoxLayout" name="others_layout"/>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="right_layout">
<item>
<widget class="QPushButton" name="reset_button">
<property name="text">
<string>Reset filters</string>
<item row="0" column="1">
<widget class="QPushButton" name="reset_button">
<property name="text">
<string>Reset filters</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QScrollArea" name="games_scrollarea">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustToContents</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="games_container">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>628</width>
<height>618</height>
</rect>
</property>
<layout class="QVBoxLayout" name="games_container_layout">
<property name="leftMargin">
<number>0</number>
</property>
</widget>
</item>
<item>
<widget class="QScrollArea" name="filter_scrollarea">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<property name="topMargin">
<number>0</number>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
<property name="rightMargin">
<number>3</number>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustToContents</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="filter_container">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>142</width>
<height>390</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="filter_container_layout">
<property name="leftMargin">
<number>0</number>
<item>
<widget class="QScrollArea" name="free_scrollarea">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="topMargin">
<number>0</number>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="rightMargin">
<number>3</number>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="bottomMargin">
<number>0</number>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<item>
<widget class="QGroupBox" name="price_group">
<property name="title">
<string>Price</string>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="free_container">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>16</width>
<height>16</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="free_container_layout">
<property name="leftMargin">
<number>0</number>
</property>
<layout class="QVBoxLayout" name="price_layout">
<item>
<widget class="QRadioButton" name="none_price">
<property name="text">
<string>None</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="QCheckBox" name="on_discount">
<property name="text">
<string>Discount</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="platform_group">
<property name="title">
<string>Platform</string>
<property name="topMargin">
<number>0</number>
</property>
<layout class="QVBoxLayout" name="platfrom_layout"/>
</widget>
</item>
<item>
<widget class="QGroupBox" name="genre_group">
<property name="title">
<string>Genre</string>
<property name="rightMargin">
<number>0</number>
</property>
<layout class="QVBoxLayout" name="genre_layout"/>
</widget>
</item>
<item>
<widget class="QGroupBox" name="type_group">
<property name="title">
<string>Type</string>
<property name="bottomMargin">
<number>3</number>
</property>
<layout class="QVBoxLayout" name="type_layout"/>
</widget>
</item>
<item>
<widget class="QGroupBox" name="others_group">
<property name="title">
<string>Other tags</string>
</property>
<layout class="QVBoxLayout" name="others_layout"/>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</layout>
</widget>
</widget>
</item>
<item>
<widget class="QGroupBox" name="discounts_group">
<property name="title">
<string>Discounts from your wishlist</string>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="games_group">
<property name="title">
<string>Games</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>