From 7a2a6458ed17b54635d2d68036110efba7bd5359 Mon Sep 17 00:00:00 2001
From: loathingKernel <142770+loathingKernel@users.noreply.github.com>
Date: Tue, 20 Feb 2024 18:45:14 +0200
Subject: [PATCH] Store: Update details page
---
.../tabs/store/api/models/diesel.py | 56 ++---
rare/components/tabs/store/widgets/details.py | 34 +--
rare/components/tabs/store/widgets/items.py | 1 -
rare/ui/components/tabs/store/details.py | 158 +++++++-------
rare/ui/components/tabs/store/details.ui | 196 ++++++++++--------
requirements-dev.txt | 2 +-
6 files changed, 237 insertions(+), 210 deletions(-)
diff --git a/rare/components/tabs/store/api/models/diesel.py b/rare/components/tabs/store/api/models/diesel.py
index 437c8b8c..20a4f07a 100644
--- a/rare/components/tabs/store/api/models/diesel.py
+++ b/rare/components/tabs/store/api/models/diesel.py
@@ -10,7 +10,7 @@ DieselSocialLinks = Dict
@dataclass
class DieselSystemDetailItem:
- p_type: Optional[str] = None
+ _type: Optional[str] = None
minimum: Optional[str] = None
recommended: Optional[str] = None
title: Optional[str] = None
@@ -20,7 +20,7 @@ class DieselSystemDetailItem:
def from_dict(cls: Type["DieselSystemDetailItem"], src: Dict[str, Any]) -> "DieselSystemDetailItem":
d = src.copy()
tmp = cls(
- p_type=d.pop("_type", ""),
+ _type=d.pop("_type", ""),
minimum=d.pop("minimum", ""),
recommended=d.pop("recommended", ""),
title=d.pop("title", ""),
@@ -31,7 +31,7 @@ class DieselSystemDetailItem:
@dataclass
class DieselSystemDetail:
- p_type: Optional[str] = None
+ _type: Optional[str] = None
details: Optional[List[DieselSystemDetailItem]] = None
systemType: Optional[str] = None
unmapped: Dict[str, Any] = field(default_factory=dict)
@@ -45,7 +45,7 @@ class DieselSystemDetail:
detail = DieselSystemDetailItem.from_dict(item)
details.append(detail)
tmp = cls(
- p_type=d.pop("_type", ""),
+ _type=d.pop("_type", ""),
details=details,
systemType=d.pop("systemType", ""),
)
@@ -55,7 +55,7 @@ class DieselSystemDetail:
@dataclass
class DieselSystemDetails:
- p_type: Optional[str] = None
+ _type: Optional[str] = None
languages: Optional[List[str]] = None
rating: Optional[Dict] = None
systems: Optional[List[DieselSystemDetail]] = None
@@ -70,7 +70,7 @@ class DieselSystemDetails:
system = DieselSystemDetail.from_dict(item)
systems.append(system)
tmp = cls(
- p_type=d.pop("_type", ""),
+ _type=d.pop("_type", ""),
languages=d.pop("languages", []),
rating=d.pop("rating", {}),
systems=systems,
@@ -81,22 +81,22 @@ class DieselSystemDetails:
@dataclass
class DieselProductAbout:
- p_type: Optional[str] = None
+ _type: Optional[str] = None
desciption: Optional[str] = None
- developer_attribution: Optional[str] = None
- publisher_attribution: Optional[str] = None
- short_description: Optional[str] = None
+ developerAttribution: Optional[str] = None
+ publisherAttribution: Optional[str] = None
+ shortDescription: Optional[str] = None
unmapped: Dict[str, Any] = field(default_factory=dict)
@classmethod
def from_dict(cls: Type["DieselProductAbout"], src: Dict[str, Any]) -> "DieselProductAbout":
d = src.copy()
tmp = cls(
- p_type=d.pop("_type", ""),
+ _type=d.pop("_type", ""),
desciption=d.pop("description", ""),
- developer_attribution=d.pop("developerAttribution", ""),
- publisher_attribution=d.pop("publisherAttribution", ""),
- short_description=d.pop("shortDescription", ""),
+ developerAttribution=d.pop("developerAttribution", ""),
+ publisherAttribution=d.pop("publisherAttribution", ""),
+ shortDescription=d.pop("shortDescription", ""),
)
tmp.unmapped = d
return tmp
@@ -104,7 +104,7 @@ class DieselProductAbout:
@dataclass
class DieselProductDetail:
- p_type: Optional[str] = None
+ _type: Optional[str] = None
about: Optional[DieselProductAbout] = None
requirements: Optional[DieselSystemDetails] = None
socialLinks: Optional[DieselSocialLinks] = None
@@ -116,7 +116,7 @@ class DieselProductDetail:
about = DieselProductAbout.from_dict(x) if (x := d.pop("about"), {}) else None
requirements = DieselSystemDetails.from_dict(x) if (x := d.pop("requirements", {})) else None
tmp = cls(
- p_type=d.pop("_type", ""),
+ _type=d.pop("_type", ""),
about=about,
requirements=requirements,
socialLinks=d.pop("socialLinks", {}),
@@ -127,12 +127,12 @@ class DieselProductDetail:
@dataclass
class DieselProduct:
- p_id: Optional[str] = None
- p_images_: Optional[List[str]] = None
- p_locale: Optional[str] = None
- p_slug: Optional[str] = None
- p_title: Optional[str] = None
- p_url_pattern: Optional[str] = None
+ _id: Optional[str] = None
+ _images_: Optional[List[str]] = None
+ _locale: Optional[str] = None
+ _slug: Optional[str] = None
+ _title: Optional[str] = None
+ _urlPattern: Optional[str] = None
namespace: Optional[str] = None
pages: Optional[List["DieselProduct"]] = None
data: Optional[DieselProductDetail] = None
@@ -149,12 +149,12 @@ class DieselProduct:
pages.append(page)
data = DieselProductDetail.from_dict(x) if (x := d.pop("data", {})) else None
tmp = cls(
- p_id=d.pop("_id", ""),
- p_images_=d.pop("_images_", []),
- p_locale=d.pop("_locale", ""),
- p_slug=d.pop("_slug", ""),
- p_title=d.pop("_title", ""),
- p_url_pattern=d.pop("_urlPattern", ""),
+ _id=d.pop("_id", ""),
+ _images_=d.pop("_images_", []),
+ _locale=d.pop("_locale", ""),
+ _slug=d.pop("_slug", ""),
+ _title=d.pop("_title", ""),
+ _urlPattern=d.pop("_urlPattern", ""),
namespace=d.pop("namespace", ""),
pages=pages,
data=data,
diff --git a/rare/components/tabs/store/widgets/details.py b/rare/components/tabs/store/widgets/details.py
index e0386bc7..3051845c 100644
--- a/rare/components/tabs/store/widgets/details.py
+++ b/rare/components/tabs/store/widgets/details.py
@@ -47,7 +47,7 @@ class DetailsWidget(QWidget, SideTabContents):
self.ui.left_layout.setAlignment(Qt.AlignTop)
self.ui.wishlist_button.clicked.connect(self.add_to_wishlist)
- self.ui.open_store_button.clicked.connect(self.button_clicked)
+ self.ui.store_button.clicked.connect(self.button_clicked)
self.ui.wishlist_button.setVisible(True)
self.in_wishlist = False
self.wishlist = []
@@ -99,13 +99,13 @@ class DetailsWidget(QWidget, SideTabContents):
self.slug = slug
if offer.namespace in self.installed:
- self.ui.open_store_button.setText(self.tr("Show Game on Epic Page"))
- self.ui.owned_label.setVisible(True)
+ self.ui.store_button.setText(self.tr("Show Game on Epic Page"))
+ self.ui.status.setVisible(True)
else:
- self.ui.open_store_button.setText(self.tr("Buy Game in Epic Games Store"))
- self.ui.owned_label.setVisible(False)
+ self.ui.store_button.setText(self.tr("Buy Game in Epic Games Store"))
+ self.ui.status.setVisible(False)
- self.ui.price.setText(self.tr("Loading"))
+ self.ui.original_price.setText(self.tr("Loading"))
# self.title.setText(self.tr("Loading"))
# self.image.setPixmap(QPixmap())
is_bundle = False
@@ -148,17 +148,17 @@ class DetailsWidget(QWidget, SideTabContents):
raise e
logger.error(str(e))
- self.ui.price.setFont(self.font())
+ self.ui.original_price.setFont(self.font())
price = self.catalog_offer.price.totalPrice.fmtPrice["originalPrice"]
discount_price = self.catalog_offer.price.totalPrice.fmtPrice["discountPrice"]
if price == "0" or price == 0:
- self.ui.price.setText(self.tr("Free"))
+ self.ui.original_price.setText(self.tr("Free"))
else:
- self.ui.price.setText(price)
+ self.ui.original_price.setText(price)
if price != discount_price:
font = self.font()
font.setStrikeOut(True)
- self.ui.price.setFont(font)
+ self.ui.original_price.setFont(font)
self.ui.discount_price.setText(
discount_price
if discount_price != "0"
@@ -173,6 +173,7 @@ class DetailsWidget(QWidget, SideTabContents):
for system in requirements.systems:
req_widget = RequirementsWidget(system, self.requirements_tabs)
self.requirements_tabs.addTab(req_widget, system.systemType)
+ self.ui.requirements_frame.setVisible(True)
else:
self.ui.requirements_frame.setVisible(False)
@@ -183,7 +184,7 @@ class DetailsWidget(QWidget, SideTabContents):
# self.image_stack.setCurrentIndex(0)
about = product_data.about
self.ui.description_label.setMarkdown(about.desciption)
- self.ui.dev.setText(about.developer_attribution)
+ self.ui.developer.setText(about.developerAttribution)
# try:
# if isinstance(aboudeveloper, list):
# self.ui.dev.setText(", ".join(self.game.developer))
@@ -195,8 +196,8 @@ class DetailsWidget(QWidget, SideTabContents):
self.ui.tags.setText(", ".join(tags))
# clear Layout
- for b in self.ui.social_group.findChildren(SocialButton, options=Qt.FindDirectChildrenOnly):
- self.ui.social_layout.removeWidget(b)
+ for b in self.ui.social_links.findChildren(SocialButton, options=Qt.FindDirectChildrenOnly):
+ self.ui.social_links_layout.removeWidget(b)
b.deleteLater()
links = product_data.socialLinks
@@ -214,11 +215,11 @@ class DetailsWidget(QWidget, SideTabContents):
logger.error(str(e))
continue
- button = SocialButton(icn, url, parent=self.ui.social_group)
- self.ui.social_layout.addWidget(button)
+ button = SocialButton(icn, url, parent=self.ui.social_links)
+ self.ui.social_links_layout.addWidget(button)
link_count += 1
- self.ui.social_group.setEnabled(bool(link_count))
+ self.ui.social_links.setEnabled(bool(link_count))
self.setEnabled(True)
@@ -238,6 +239,7 @@ class DetailsWidget(QWidget, SideTabContents):
class SocialButton(QPushButton):
def __init__(self, icn, url, parent=None):
super(SocialButton, self).__init__(icn, "", parent=parent)
+ self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
self.url = url
self.clicked.connect(lambda: QDesktopServices.openUrl(QUrl(url)))
self.setToolTip(url)
diff --git a/rare/components/tabs/store/widgets/items.py b/rare/components/tabs/store/widgets/items.py
index 3fc0363c..86e61f5e 100644
--- a/rare/components/tabs/store/widgets/items.py
+++ b/rare/components/tabs/store/widgets/items.py
@@ -101,7 +101,6 @@ class ResultsItemWidget(ItemWidget):
class WishlistItemWidget(ItemWidget):
- show_details = pyqtSignal(CatalogOfferModel)
delete_from_wishlist = pyqtSignal(CatalogOfferModel)
def __init__(self, manager: QtRequests, catalog_game: CatalogOfferModel, parent=None):
diff --git a/rare/ui/components/tabs/store/details.py b/rare/ui/components/tabs/store/details.py
index ccb87c86..0862694b 100644
--- a/rare/ui/components/tabs/store/details.py
+++ b/rare/ui/components/tabs/store/details.py
@@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_DetailsWidget(object):
def setupUi(self, DetailsWidget):
DetailsWidget.setObjectName("DetailsWidget")
- DetailsWidget.resize(702, 414)
+ DetailsWidget.resize(630, 371)
DetailsWidget.setWindowTitle("DetailsWidget")
self.main_layout = QtWidgets.QHBoxLayout(DetailsWidget)
self.main_layout.setObjectName("main_layout")
@@ -34,12 +34,13 @@ class Ui_DetailsWidget(object):
self.main_layout.addLayout(self.left_layout)
self.right_layout = QtWidgets.QVBoxLayout()
self.right_layout.setObjectName("right_layout")
- self.info_layout = QtWidgets.QFormLayout()
- self.info_layout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
- self.info_layout.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
- self.info_layout.setContentsMargins(6, 6, 6, 6)
- self.info_layout.setSpacing(12)
- self.info_layout.setObjectName("info_layout")
+ self.details_layout = QtWidgets.QFormLayout()
+ self.details_layout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
+ self.details_layout.setFieldGrowthPolicy(QtWidgets.QFormLayout.FieldsStayAtSizeHint)
+ self.details_layout.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.details_layout.setContentsMargins(6, 6, 6, 6)
+ self.details_layout.setSpacing(12)
+ self.details_layout.setObjectName("details_layout")
self.title_label = QtWidgets.QLabel(DetailsWidget)
font = QtGui.QFont()
font.setBold(True)
@@ -47,12 +48,12 @@ class Ui_DetailsWidget(object):
self.title_label.setFont(font)
self.title_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.title_label.setObjectName("title_label")
- self.info_layout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.title_label)
+ self.details_layout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.title_label)
self.title = QtWidgets.QLabel(DetailsWidget)
self.title.setText("title")
self.title.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
self.title.setObjectName("title")
- self.info_layout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.title)
+ self.details_layout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.title)
self.developer_label = QtWidgets.QLabel(DetailsWidget)
font = QtGui.QFont()
font.setBold(True)
@@ -60,12 +61,25 @@ class Ui_DetailsWidget(object):
self.developer_label.setFont(font)
self.developer_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.developer_label.setObjectName("developer_label")
- self.info_layout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.developer_label)
- self.dev = QtWidgets.QLabel(DetailsWidget)
- self.dev.setText("dev")
- self.dev.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
- self.dev.setObjectName("dev")
- self.info_layout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.dev)
+ self.details_layout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.developer_label)
+ self.developer = QtWidgets.QLabel(DetailsWidget)
+ self.developer.setText("developer")
+ self.developer.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
+ self.developer.setObjectName("developer")
+ self.details_layout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.developer)
+ self.publisher_label = QtWidgets.QLabel(DetailsWidget)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.publisher_label.setFont(font)
+ self.publisher_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.publisher_label.setObjectName("publisher_label")
+ self.details_layout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.publisher_label)
+ self.publisher = QtWidgets.QLabel(DetailsWidget)
+ self.publisher.setText("publisher")
+ self.publisher.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
+ self.publisher.setObjectName("publisher")
+ self.details_layout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.publisher)
self.status_label = QtWidgets.QLabel(DetailsWidget)
font = QtGui.QFont()
font.setBold(True)
@@ -73,10 +87,10 @@ class Ui_DetailsWidget(object):
self.status_label.setFont(font)
self.status_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.status_label.setObjectName("status_label")
- self.info_layout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.status_label)
- self.owned_label = QtWidgets.QLabel(DetailsWidget)
- self.owned_label.setObjectName("owned_label")
- self.info_layout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.owned_label)
+ self.details_layout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.status_label)
+ self.status = QtWidgets.QLabel(DetailsWidget)
+ self.status.setObjectName("status")
+ self.details_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.status)
self.price_label = QtWidgets.QLabel(DetailsWidget)
font = QtGui.QFont()
font.setBold(True)
@@ -84,23 +98,7 @@ class Ui_DetailsWidget(object):
self.price_label.setFont(font)
self.price_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.price_label.setObjectName("price_label")
- self.info_layout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.price_label)
- self.price_widget = QtWidgets.QWidget(DetailsWidget)
- self.price_widget.setObjectName("price_widget")
- self.horizontalLayout = QtWidgets.QHBoxLayout(self.price_widget)
- self.horizontalLayout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
- self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
- self.horizontalLayout.setObjectName("horizontalLayout")
- self.price = QtWidgets.QLabel(self.price_widget)
- self.price.setText("price")
- self.price.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
- self.price.setObjectName("price")
- self.horizontalLayout.addWidget(self.price)
- self.discount_price = QtWidgets.QLabel(self.price_widget)
- self.discount_price.setText("discount")
- self.discount_price.setObjectName("discount_price")
- self.horizontalLayout.addWidget(self.discount_price)
- self.info_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.price_widget)
+ self.details_layout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.price_label)
self.tags_label = QtWidgets.QLabel(DetailsWidget)
font = QtGui.QFont()
font.setBold(True)
@@ -108,27 +106,19 @@ class Ui_DetailsWidget(object):
self.tags_label.setFont(font)
self.tags_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.tags_label.setObjectName("tags_label")
- self.info_layout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.tags_label)
+ self.details_layout.setWidget(5, QtWidgets.QFormLayout.LabelRole, self.tags_label)
self.tags = QtWidgets.QLabel(DetailsWidget)
self.tags.setText("tags")
self.tags.setObjectName("tags")
- self.info_layout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.tags)
- self.links_label = QtWidgets.QLabel(DetailsWidget)
+ self.details_layout.setWidget(5, QtWidgets.QFormLayout.FieldRole, self.tags)
+ self.social_links_label = QtWidgets.QLabel(DetailsWidget)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
- self.links_label.setFont(font)
- self.links_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
- self.links_label.setObjectName("links_label")
- self.info_layout.setWidget(5, QtWidgets.QFormLayout.LabelRole, self.links_label)
- self.social_group = QtWidgets.QWidget(DetailsWidget)
- self.social_group.setMinimumSize(QtCore.QSize(250, 0))
- self.social_group.setObjectName("social_group")
- self.social_layout = QtWidgets.QHBoxLayout(self.social_group)
- self.social_layout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
- self.social_layout.setContentsMargins(0, 0, 0, 0)
- self.social_layout.setObjectName("social_layout")
- self.info_layout.setWidget(5, QtWidgets.QFormLayout.FieldRole, self.social_group)
+ self.social_links_label.setFont(font)
+ self.social_links_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.social_links_label.setObjectName("social_links_label")
+ self.details_layout.setWidget(6, QtWidgets.QFormLayout.LabelRole, self.social_links_label)
self.actions_label = QtWidgets.QLabel(DetailsWidget)
font = QtGui.QFont()
font.setBold(True)
@@ -136,28 +126,49 @@ class Ui_DetailsWidget(object):
self.actions_label.setFont(font)
self.actions_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.actions_label.setObjectName("actions_label")
- self.info_layout.setWidget(6, QtWidgets.QFormLayout.LabelRole, self.actions_label)
- self.buttons_widget = QtWidgets.QWidget(DetailsWidget)
- sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ self.details_layout.setWidget(7, QtWidgets.QFormLayout.LabelRole, self.actions_label)
+ self.social_links = QtWidgets.QWidget(DetailsWidget)
+ self.social_links.setObjectName("social_links")
+ self.social_links_layout = QtWidgets.QHBoxLayout(self.social_links)
+ self.social_links_layout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
+ self.social_links_layout.setContentsMargins(0, 0, 0, 0)
+ self.social_links_layout.setObjectName("social_links_layout")
+ self.details_layout.setWidget(6, QtWidgets.QFormLayout.FieldRole, self.social_links)
+ self.actions = QtWidgets.QWidget(DetailsWidget)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.buttons_widget.sizePolicy().hasHeightForWidth())
- self.buttons_widget.setSizePolicy(sizePolicy)
- self.buttons_widget.setMinimumSize(QtCore.QSize(250, 0))
- self.buttons_widget.setMaximumSize(QtCore.QSize(250, 16777215))
- self.buttons_widget.setObjectName("buttons_widget")
- self.button_layout = QtWidgets.QVBoxLayout(self.buttons_widget)
- self.button_layout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
- self.button_layout.setContentsMargins(0, 0, 0, 0)
- self.button_layout.setObjectName("button_layout")
- self.open_store_button = QtWidgets.QPushButton(self.buttons_widget)
- self.open_store_button.setObjectName("open_store_button")
- self.button_layout.addWidget(self.open_store_button)
- self.wishlist_button = QtWidgets.QPushButton(self.buttons_widget)
+ sizePolicy.setHeightForWidth(self.actions.sizePolicy().hasHeightForWidth())
+ self.actions.setSizePolicy(sizePolicy)
+ self.actions.setMinimumSize(QtCore.QSize(250, 0))
+ self.actions.setObjectName("actions")
+ self.actions_layout = QtWidgets.QVBoxLayout(self.actions)
+ self.actions_layout.setContentsMargins(0, 0, 0, 0)
+ self.actions_layout.setObjectName("actions_layout")
+ self.store_button = QtWidgets.QPushButton(self.actions)
+ self.store_button.setObjectName("store_button")
+ self.actions_layout.addWidget(self.store_button)
+ self.wishlist_button = QtWidgets.QPushButton(self.actions)
self.wishlist_button.setObjectName("wishlist_button")
- self.button_layout.addWidget(self.wishlist_button)
- self.info_layout.setWidget(6, QtWidgets.QFormLayout.FieldRole, self.buttons_widget)
- self.right_layout.addLayout(self.info_layout)
+ self.actions_layout.addWidget(self.wishlist_button)
+ self.details_layout.setWidget(7, QtWidgets.QFormLayout.FieldRole, self.actions)
+ self.price = QtWidgets.QWidget(DetailsWidget)
+ self.price.setObjectName("price")
+ self.price_layout = QtWidgets.QHBoxLayout(self.price)
+ self.price_layout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
+ self.price_layout.setContentsMargins(0, 0, 0, 0)
+ self.price_layout.setObjectName("price_layout")
+ self.original_price = QtWidgets.QLabel(self.price)
+ self.original_price.setText("orignal")
+ self.original_price.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
+ self.original_price.setObjectName("original_price")
+ self.price_layout.addWidget(self.original_price)
+ self.discount_price = QtWidgets.QLabel(self.price)
+ self.discount_price.setText("discount")
+ self.discount_price.setObjectName("discount_price")
+ self.price_layout.addWidget(self.discount_price)
+ self.details_layout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.price)
+ self.right_layout.addLayout(self.details_layout)
self.requirements_frame = QtWidgets.QFrame(DetailsWidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
@@ -184,13 +195,14 @@ class Ui_DetailsWidget(object):
_translate = QtCore.QCoreApplication.translate
self.title_label.setText(_translate("DetailsWidget", "Title"))
self.developer_label.setText(_translate("DetailsWidget", "Developer"))
+ self.publisher_label.setText(_translate("DetailsWidget", "Publisher"))
self.status_label.setText(_translate("DetailsWidget", "Status"))
- self.owned_label.setText(_translate("DetailsWidget", "You already own this game"))
+ self.status.setText(_translate("DetailsWidget", "You already own this game"))
self.price_label.setText(_translate("DetailsWidget", "Price"))
self.tags_label.setText(_translate("DetailsWidget", "Tags"))
- self.links_label.setText(_translate("DetailsWidget", "Links"))
+ self.social_links_label.setText(_translate("DetailsWidget", "Links"))
self.actions_label.setText(_translate("DetailsWidget", "Actions"))
- self.open_store_button.setText(_translate("DetailsWidget", "Buy in Epic Games Store"))
+ self.store_button.setText(_translate("DetailsWidget", "Buy in Epic Games Store"))
self.wishlist_button.setText(_translate("DetailsWidget", "Add to wishlist"))
diff --git a/rare/ui/components/tabs/store/details.ui b/rare/ui/components/tabs/store/details.ui
index b78efa4c..0ccbdef5 100644
--- a/rare/ui/components/tabs/store/details.ui
+++ b/rare/ui/components/tabs/store/details.ui
@@ -6,8 +6,8 @@
0
0
- 702
- 414
+ 630
+ 371
@@ -43,10 +43,13 @@
-
-
-
+
QLayout::SetFixedSize
+
+ QFormLayout::FieldsStayAtSizeHint
+
Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
@@ -111,9 +114,9 @@
-
-
+
- dev
+ developer
Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse
@@ -121,6 +124,32 @@
-
+
+
+
+ 75
+ true
+
+
+
+ Publisher
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+ publisher
+
+
+ Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse
+
+
+
+ -
@@ -136,14 +165,14 @@
- -
-
+
-
+
You already own this game
- -
+
-
@@ -159,45 +188,7 @@
- -
-
-
-
- QLayout::SetFixedSize
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
-
- price
-
-
- Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse
-
-
-
- -
-
-
- discount
-
-
-
-
-
-
- -
+
-
@@ -213,15 +204,15 @@
- -
+
-
tags
- -
-
+
-
+
75
@@ -236,34 +227,7 @@
- -
-
-
-
- 250
- 0
-
-
-
-
- QLayout::SetFixedSize
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
- -
+
-
@@ -280,9 +244,30 @@
-
-
+
+
+
+ QLayout::SetFixedSize
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+
+
+ -
+
-
+
0
0
@@ -293,13 +278,39 @@
0
-
-
- 250
- 16777215
-
-
-
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Buy in Epic Games Store
+
+
+
+ -
+
+
+ Add to wishlist
+
+
+
+
+
+
+ -
+
+
QLayout::SetFixedSize
@@ -316,16 +327,19 @@
0
-
-
+
- Buy in Epic Games Store
+ orignal
+
+
+ Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse
-
-
+
- Add to wishlist
+ discount
diff --git a/requirements-dev.txt b/requirements-dev.txt
index d2647125..1435147b 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -7,4 +7,4 @@ nuitka
ordered-set
PyQt5-stubs
qstylizer
-
+graphql-query