Skip to content

Commit a35e430

Browse files
Merge pull request #388 from loathingKernel/shop_refactor
Refactor the Store page
2 parents 784fadb + 14bde0a commit a35e430

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+4820
-2585
lines changed

rare/components/tabs/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from .games import GamesTab
99
from .settings import SettingsTab
1010
from .settings.debug import DebugSettings
11-
from .store import Shop
11+
from .store import StoreTab
1212
from .tab_widgets import MainTabBar, TabButtonWidget
1313

1414

@@ -39,7 +39,7 @@ def __init__(self, parent):
3939
self.setTabEnabled(self.downloads_index, not self.args.offline)
4040

4141
if not self.args.offline:
42-
self.store_tab = Shop(self.core)
42+
self.store_tab = StoreTab(self.core, parent=self)
4343
self.store_index = self.addTab(self.store_tab, self.tr("Store (Beta)"))
4444
self.setTabEnabled(self.store_index, not self.args.offline)
4545

+21-51
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,42 @@
11
from PyQt5.QtGui import QShowEvent, QHideEvent
2-
from PyQt5.QtWidgets import QStackedWidget, QTabWidget
32
from legendary.core import LegendaryCore
43

5-
from rare.shared.rare_core import RareCore
6-
from rare.utils.paths import cache_dir
7-
from .game_info import ShopGameInfo
8-
from .search_results import SearchResults
9-
from .shop_api_core import ShopApiCore
10-
from .shop_widget import ShopWidget
11-
from .wishlist import WishlistWidget, Wishlist
4+
from rare.widgets.side_tab import SideTabWidget
5+
from .api.models.response import CatalogOfferModel
6+
from .landing import LandingWidget, LandingPage
7+
from .search import SearchPage
8+
from .store_api import StoreAPI
9+
from .widgets.details import DetailsWidget
10+
from .wishlist import WishlistPage
1211

1312

14-
class Shop(QStackedWidget):
15-
init = False
13+
class StoreTab(SideTabWidget):
14+
15+
def __init__(self, core: LegendaryCore, parent=None):
16+
super(StoreTab, self).__init__(parent=parent)
17+
self.init = False
1618

17-
def __init__(self, core: LegendaryCore):
18-
super(Shop, self).__init__()
1919
self.core = core
20-
self.rcore = RareCore.instance()
21-
self.api_core = ShopApiCore(
20+
# self.rcore = RareCore.instance()
21+
self.api = StoreAPI(
2222
self.core.egs.session.headers["Authorization"],
2323
self.core.language_code,
2424
self.core.country_code,
25+
[] # [i.asset_infos["Windows"].namespace for i in self.rcore.game_list if bool(i.asset_infos)]
2526
)
2627

27-
self.shop = ShopWidget(cache_dir(), self.core, self.api_core)
28-
self.wishlist_widget = Wishlist(self.api_core)
29-
30-
self.store_tabs = QTabWidget(parent=self)
31-
self.store_tabs.addTab(self.shop, self.tr("Games"))
32-
self.store_tabs.addTab(self.wishlist_widget, self.tr("Wishlist"))
33-
34-
self.addWidget(self.store_tabs)
35-
36-
self.search_results = SearchResults(self.api_core)
37-
self.addWidget(self.search_results)
38-
self.search_results.show_info.connect(self.show_game_info)
39-
self.info = ShopGameInfo(
40-
[i.asset_infos["Windows"].namespace for i in self.rcore.game_list if bool(i.asset_infos)],
41-
self.api_core,
42-
)
43-
self.addWidget(self.info)
44-
self.info.back_button.clicked.connect(lambda: self.setCurrentIndex(0))
28+
self.landing = LandingPage(self.api, parent=self)
29+
self.landing_index = self.addTab(self.landing, self.tr("Store"))
4530

46-
self.search_results.back_button.clicked.connect(lambda: self.setCurrentIndex(0))
47-
self.shop.show_info.connect(self.show_search_results)
31+
self.search = SearchPage(self.api, parent=self)
32+
self.search_index = self.addTab(self.search, self.tr("Search"))
4833

49-
self.wishlist_widget.show_game_info.connect(self.show_game_info)
50-
self.shop.show_game.connect(self.show_game_info)
51-
self.api_core.update_wishlist.connect(self.update_wishlist)
52-
self.wishlist_widget.update_wishlist_signal.connect(self.update_wishlist)
34+
self.wishlist = WishlistPage(self.api, parent=self)
35+
self.wishlist_index = self.addTab(self.wishlist, self.tr("Wishlist"))
5336

5437
def showEvent(self, a0: QShowEvent) -> None:
5538
if a0.spontaneous() or self.init:
5639
return super().showEvent(a0)
57-
self.shop.load()
58-
self.wishlist_widget.update_wishlist()
5940
self.init = True
6041
return super().showEvent(a0)
6142

@@ -64,14 +45,3 @@ def hideEvent(self, a0: QHideEvent) -> None:
6445
return super().hideEvent(a0)
6546
# TODO: Implement store unloading
6647
return super().hideEvent(a0)
67-
68-
def update_wishlist(self):
69-
self.shop.update_wishlist()
70-
71-
def show_game_info(self, data):
72-
self.info.update_game(data)
73-
self.setCurrentIndex(2)
74-
75-
def show_search_results(self, text: str):
76-
self.search_results.load_results(text)
77-
self.setCurrentIndex(1)
+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import sys
2+
3+
from PyQt5.QtCore import QSize
4+
from PyQt5.QtWidgets import QDialog, QApplication, QVBoxLayout
5+
from legendary.core import LegendaryCore
6+
7+
from . import StoreTab
8+
9+
10+
class StoreWindow(QDialog):
11+
def __init__(self):
12+
super().__init__()
13+
14+
self.core = LegendaryCore()
15+
self.core.login()
16+
self.store_tab = StoreTab(self.core, self)
17+
18+
layout = QVBoxLayout(self)
19+
layout.addWidget(self.store_tab)
20+
21+
self.store_tab.show()
22+
23+
24+
if __name__ == "__main__":
25+
import rare.resources.static_css
26+
# import rare.resources.stylesheets.RareStyle
27+
from rare.utils.misc import set_style_sheet
28+
29+
app = QApplication(sys.argv)
30+
app.setApplicationName("Rare")
31+
app.setOrganizationName("Rare")
32+
33+
set_style_sheet("")
34+
set_style_sheet("RareStyle")
35+
window = StoreWindow()
36+
window.setWindowTitle(f"{app.applicationName()} - Store")
37+
window.resize(QSize(1280, 800))
38+
window.show()
39+
app.exec()

rare/components/tabs/store/api/__init__.py

Whitespace-only changes.

rare/components/tabs/store/api/constants/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)