Skip to content

Commit

Permalink
Merge pull request #388 from loathingKernel/shop_refactor
Browse files Browse the repository at this point in the history
Refactor the Store page
  • Loading branch information
loathingKernel authored Feb 26, 2024
2 parents 784fadb + 14bde0a commit a35e430
Show file tree
Hide file tree
Showing 57 changed files with 4,820 additions and 2,585 deletions.
4 changes: 2 additions & 2 deletions rare/components/tabs/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from .games import GamesTab
from .settings import SettingsTab
from .settings.debug import DebugSettings
from .store import Shop
from .store import StoreTab
from .tab_widgets import MainTabBar, TabButtonWidget


Expand Down Expand Up @@ -39,7 +39,7 @@ def __init__(self, parent):
self.setTabEnabled(self.downloads_index, not self.args.offline)

if not self.args.offline:
self.store_tab = Shop(self.core)
self.store_tab = StoreTab(self.core, parent=self)
self.store_index = self.addTab(self.store_tab, self.tr("Store (Beta)"))
self.setTabEnabled(self.store_index, not self.args.offline)

Expand Down
72 changes: 21 additions & 51 deletions rare/components/tabs/store/__init__.py
Original file line number Diff line number Diff line change
@@ -1,61 +1,42 @@
from PyQt5.QtGui import QShowEvent, QHideEvent
from PyQt5.QtWidgets import QStackedWidget, QTabWidget
from legendary.core import LegendaryCore

from rare.shared.rare_core import RareCore
from rare.utils.paths import cache_dir
from .game_info import ShopGameInfo
from .search_results import SearchResults
from .shop_api_core import ShopApiCore
from .shop_widget import ShopWidget
from .wishlist import WishlistWidget, Wishlist
from rare.widgets.side_tab import SideTabWidget
from .api.models.response import CatalogOfferModel
from .landing import LandingWidget, LandingPage
from .search import SearchPage
from .store_api import StoreAPI
from .widgets.details import DetailsWidget
from .wishlist import WishlistPage


class Shop(QStackedWidget):
init = False
class StoreTab(SideTabWidget):

def __init__(self, core: LegendaryCore, parent=None):
super(StoreTab, self).__init__(parent=parent)
self.init = False

def __init__(self, core: LegendaryCore):
super(Shop, self).__init__()
self.core = core
self.rcore = RareCore.instance()
self.api_core = ShopApiCore(
# self.rcore = RareCore.instance()
self.api = StoreAPI(
self.core.egs.session.headers["Authorization"],
self.core.language_code,
self.core.country_code,
[] # [i.asset_infos["Windows"].namespace for i in self.rcore.game_list if bool(i.asset_infos)]
)

self.shop = ShopWidget(cache_dir(), self.core, self.api_core)
self.wishlist_widget = Wishlist(self.api_core)

self.store_tabs = QTabWidget(parent=self)
self.store_tabs.addTab(self.shop, self.tr("Games"))
self.store_tabs.addTab(self.wishlist_widget, self.tr("Wishlist"))

self.addWidget(self.store_tabs)

self.search_results = SearchResults(self.api_core)
self.addWidget(self.search_results)
self.search_results.show_info.connect(self.show_game_info)
self.info = ShopGameInfo(
[i.asset_infos["Windows"].namespace for i in self.rcore.game_list if bool(i.asset_infos)],
self.api_core,
)
self.addWidget(self.info)
self.info.back_button.clicked.connect(lambda: self.setCurrentIndex(0))
self.landing = LandingPage(self.api, parent=self)
self.landing_index = self.addTab(self.landing, self.tr("Store"))

self.search_results.back_button.clicked.connect(lambda: self.setCurrentIndex(0))
self.shop.show_info.connect(self.show_search_results)
self.search = SearchPage(self.api, parent=self)
self.search_index = self.addTab(self.search, self.tr("Search"))

self.wishlist_widget.show_game_info.connect(self.show_game_info)
self.shop.show_game.connect(self.show_game_info)
self.api_core.update_wishlist.connect(self.update_wishlist)
self.wishlist_widget.update_wishlist_signal.connect(self.update_wishlist)
self.wishlist = WishlistPage(self.api, parent=self)
self.wishlist_index = self.addTab(self.wishlist, self.tr("Wishlist"))

def showEvent(self, a0: QShowEvent) -> None:
if a0.spontaneous() or self.init:
return super().showEvent(a0)
self.shop.load()
self.wishlist_widget.update_wishlist()
self.init = True
return super().showEvent(a0)

Expand All @@ -64,14 +45,3 @@ def hideEvent(self, a0: QHideEvent) -> None:
return super().hideEvent(a0)
# TODO: Implement store unloading
return super().hideEvent(a0)

def update_wishlist(self):
self.shop.update_wishlist()

def show_game_info(self, data):
self.info.update_game(data)
self.setCurrentIndex(2)

def show_search_results(self, text: str):
self.search_results.load_results(text)
self.setCurrentIndex(1)
39 changes: 39 additions & 0 deletions rare/components/tabs/store/__main__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
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.show()


if __name__ == "__main__":
import rare.resources.static_css
# import rare.resources.stylesheets.RareStyle
from rare.utils.misc import set_style_sheet

app = QApplication(sys.argv)
app.setApplicationName("Rare")
app.setOrganizationName("Rare")

set_style_sheet("")
set_style_sheet("RareStyle")
window = StoreWindow()
window.setWindowTitle(f"{app.applicationName()} - Store")
window.resize(QSize(1280, 800))
window.show()
app.exec()
Empty file.
Empty file.
Loading

0 comments on commit a35e430

Please sign in to comment.