diff --git a/rare/components/tabs/store/__main__.py b/rare/components/tabs/store/__main__.py new file mode 100644 index 00000000..1f62692c --- /dev/null +++ b/rare/components/tabs/store/__main__.py @@ -0,0 +1,35 @@ +import sys + +from PyQt5.QtCore import QSize +from PyQt5.QtWidgets import QDialog, QApplication, QVBoxLayout +from legendary.core import LegendaryCore + +from . import StoreTab + + +class StoreWindow(QDialog): + def __init__(self): + super().__init__() + + self.core = LegendaryCore() + self.core.login() + self.store_tab = StoreTab(self.core, self) + + layout = QVBoxLayout(self) + layout.addWidget(self.store_tab) + + self.store_tab.load() + + +if __name__ == "__main__": + from rare.utils.misc import set_style_sheet + import rare.resources.static_css + import rare.resources.stylesheets.RareStyle + + app = QApplication(sys.argv) + + set_style_sheet("RareStyle") + window = StoreWindow() + window.resize(QSize(1280, 800)) + window.show() + app.exec() \ No newline at end of file diff --git a/rare/components/tabs/store/shop_widget.py b/rare/components/tabs/store/shop_widget.py index 4e72a8ef..20b3903b 100644 --- a/rare/components/tabs/store/shop_widget.py +++ b/rare/components/tabs/store/shop_widget.py @@ -39,12 +39,8 @@ class ShopWidget(QWidget, Ui_ShopWidget): self.tags = [] self.types = [] self.update_games_allowed = True - free_games_container_layout = QHBoxLayout(self.free_games_container) - free_games_container_layout.setContentsMargins(0, 0, 0, 0) - self.free_games_container.setContentsMargins(0, 0, 0, 3) - self.free_games_container.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) - self.free_games_scrollarea.setDisabled(True) - self.free_games_scrollarea.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) + + self.free_scrollarea.setDisabled(True) self.free_game_widgets = [] self.active_search_request = False @@ -125,35 +121,35 @@ class ShopWidget(QWidget, Ui_ShopWidget): self.discount_widget.layout().update() def add_free_games(self, free_games: list): - for w in self.free_games_container.layout().findChildren(QGroupBox, options=Qt.FindDirectChildrenOnly): - self.free_games_container.layout().removeWidget(w) + for w in self.free_container.layout().findChildren(QGroupBox, options=Qt.FindDirectChildrenOnly): + self.free_container.layout().removeWidget(w) w.deleteLater() if free_games and free_games[0] == "error": - self.free_games_container.layout().addWidget( + self.free_container.layout().addWidget( QLabel(self.tr("Failed to fetch free games: {}").format(free_games[1])) ) btn = QPushButton(self.tr("Reload")) - self.free_games_container.layout().addWidget(btn) + self.free_container.layout().addWidget(btn) btn.clicked.connect( lambda: self.api_core.get_free_games(self.add_free_games) ) - self.free_games_container.setEnabled(True) + self.free_container.setEnabled(True) return - self.free_games_now = QGroupBox(self.tr("Free now"), parent=self.free_games_container) + self.free_games_now = QGroupBox(self.tr("Free now"), parent=self.free_container) free_games_now_layout = QHBoxLayout(self.free_games_now) # free_games_now_layout.setContentsMargins(0, 0, 0, 0) self.free_games_now.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) self.free_games_now.setLayout(free_games_now_layout) - self.free_games_container.layout().addWidget(self.free_games_now) + self.free_container.layout().addWidget(self.free_games_now) - self.free_games_next = QGroupBox(self.tr("Free next week"), parent=self.free_games_container) + self.free_games_next = QGroupBox(self.tr("Free next week"), parent=self.free_container) free_games_next_layout = QHBoxLayout(self.free_games_next) # free_games_next_layout.setContentsMargins(0, 0, 0, 0) self.free_games_next.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) self.free_games_next.setLayout(free_games_next_layout) - self.free_games_container.layout().addWidget(self.free_games_next) + self.free_container.layout().addWidget(self.free_games_next) date = datetime.datetime.now() free_games_now = [] @@ -222,13 +218,13 @@ class ShopWidget(QWidget, Ui_ShopWidget): self.free_games_next.layout().addWidget(w) # self.coming_free_games.setFixedWidth(int(40 + len(coming_free_games) * 300)) - self.free_games_scrollarea.setMinimumHeight( + self.free_scrollarea.setMinimumHeight( self.free_games_now.sizeHint().height() - + self.free_games_container.contentsMargins().top() - + self.free_games_container.contentsMargins().bottom() - + self.free_games_scrollarea.horizontalScrollBar().sizeHint().height() + + self.free_container.layout().contentsMargins().top() + + self.free_container.layout().contentsMargins().bottom() + + self.free_scrollarea.horizontalScrollBar().sizeHint().height() ) - self.free_games_scrollarea.setEnabled(True) + self.free_scrollarea.setEnabled(True) def show_search_results(self): if self.search_bar.text(): @@ -287,7 +283,8 @@ class ShopWidget(QWidget, Ui_ShopWidget): self.reset_button.clicked.connect(self.reset_filters) self.filter_scrollarea.setMinimumWidth( self.filter_container.sizeHint().width() - + self.filter_container_layout.spacing() + + self.filter_container.layout().contentsMargins().left() + + self.filter_container.layout().contentsMargins().right() + self.filter_scrollarea.verticalScrollBar().sizeHint().width() ) @@ -327,10 +324,10 @@ class ShopWidget(QWidget, Ui_ShopWidget): if removed_type and removed_type in self.types: self.types.remove(removed_type) if (self.types or self.price) or self.tags or self.on_discount.isChecked(): - self.free_games_scrollarea.setVisible(False) + self.free_scrollarea.setVisible(False) self.discounts_group.setVisible(False) else: - self.free_games_scrollarea.setVisible(True) + self.free_scrollarea.setVisible(True) if len(self.discounts_group.layout().children()) > 0: self.discounts_group.setVisible(True) diff --git a/rare/ui/components/tabs/store/store.py b/rare/ui/components/tabs/store/store.py index e25179b9..3fe0fa68 100644 --- a/rare/ui/components/tabs/store/store.py +++ b/rare/ui/components/tabs/store/store.py @@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets class Ui_ShopWidget(object): def setupUi(self, ShopWidget): ShopWidget.setObjectName("ShopWidget") - ShopWidget.resize(784, 525) + ShopWidget.resize(750, 588) ShopWidget.setWindowTitle("Store") self.shop_layout = QtWidgets.QHBoxLayout(ShopWidget) self.shop_layout.setObjectName("shop_layout") @@ -27,22 +27,30 @@ class Ui_ShopWidget(object): self.games_scrollarea.setWidgetResizable(True) self.games_scrollarea.setObjectName("games_scrollarea") self.games_container = QtWidgets.QWidget() - self.games_container.setGeometry(QtCore.QRect(0, 0, 611, 511)) + self.games_container.setGeometry(QtCore.QRect(0, 0, 583, 574)) 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_games_scrollarea = QtWidgets.QScrollArea(self.games_container) - self.free_games_scrollarea.setFrameShape(QtWidgets.QFrame.NoFrame) - self.free_games_scrollarea.setFrameShadow(QtWidgets.QFrame.Plain) - self.free_games_scrollarea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) - self.free_games_scrollarea.setWidgetResizable(True) - self.free_games_scrollarea.setObjectName("free_games_scrollarea") - self.free_games_container = QtWidgets.QWidget() - self.free_games_container.setGeometry(QtCore.QRect(0, 0, 608, 166)) - self.free_games_container.setObjectName("free_games_container") - self.free_games_scrollarea.setWidget(self.free_games_container) - self.games_container_layout.addWidget(self.free_games_scrollarea) + 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, 580, 83)) + 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.discounts_layout = QtWidgets.QVBoxLayout(self.discounts_group) @@ -86,10 +94,10 @@ class Ui_ShopWidget(object): self.filter_scrollarea.setWidgetResizable(True) self.filter_scrollarea.setObjectName("filter_scrollarea") self.filter_container = QtWidgets.QWidget() - self.filter_container.setGeometry(QtCore.QRect(0, 0, 151, 479)) + self.filter_container.setGeometry(QtCore.QRect(0, 0, 145, 542)) self.filter_container.setObjectName("filter_container") self.filter_container_layout = QtWidgets.QVBoxLayout(self.filter_container) - self.filter_container_layout.setContentsMargins(0, 0, 0, 0) + self.filter_container_layout.setContentsMargins(0, 0, 3, 0) self.filter_container_layout.setObjectName("filter_container_layout") self.price_group = QtWidgets.QGroupBox(self.filter_container) self.price_group.setObjectName("price_group") @@ -141,6 +149,7 @@ class Ui_ShopWidget(object): 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.retranslateUi(ShopWidget) diff --git a/rare/ui/components/tabs/store/store.ui b/rare/ui/components/tabs/store/store.ui index 89d0f021..c5350030 100644 --- a/rare/ui/components/tabs/store/store.ui +++ b/rare/ui/components/tabs/store/store.ui @@ -6,14 +6,14 @@ 0 0 - 784 - 525 + 750 + 588 Store - + @@ -35,8 +35,8 @@ 0 0 - 611 - 511 + 583 + 574 @@ -53,7 +53,13 @@ 0 - + + + + 0 + 0 + + QFrame::NoFrame @@ -66,15 +72,29 @@ true - + 0 0 - 608 - 166 + 580 + 83 + + + 0 + + + 0 + + + 0 + + + 3 + + @@ -149,8 +169,8 @@ 0 0 - 151 - 479 + 145 + 542 @@ -161,7 +181,7 @@ 0 - 0 + 3 0