#pragma once #include "MaterialIconGridItemView.h" #include "MaterialBannerListItemView.h" #include "MaterialFileInfoCardView.h" #include "../IRomBrowserViewFactory.h" #include "romBrowser/viewModels/RomBrowserViewModel.h" #include "CarouselRecyclerView.h" #include "MaterialCoverFlowFileRecyclerAdapter.h" #include "MaterialAppBarView.h" class MaterialColorScheme; class IFontRepository; class MaterialRomBrowserViewFactory : public IRomBrowserViewFactory { public: MaterialRomBrowserViewFactory(const MaterialColorScheme* materialColorScheme, const IFontRepository* fontRepository) : _materialColorScheme(materialColorScheme), _fontRepository(fontRepository) { } SharedPtr CreateIconGridItemView() const override { return SharedPtr::MakeShared(_materialColorScheme); } IconGridItemView::VramToken UploadIconGridItemViewGraphics( const VramContext& vramContext) const override { return MaterialIconGridItemView::UploadGraphics(vramContext); } SharedPtr CreateBannerListItemView(VBlankTextureLoader* vblankTextureLoader) const override { return SharedPtr::MakeShared(_materialColorScheme, _fontRepository); } BannerListItemView::VramToken UploadBannerListItemViewGraphics( const VramContext& vramContext) const override { return MaterialBannerListItemView::UploadGraphics(vramContext); } std::unique_ptr CreateAppBarView(int x, int y, AppBarView::Orientation orientation, int startButtonCount, int endButtonCount) const override { return std::make_unique(x, y, orientation, startButtonCount, endButtonCount, _materialColorScheme); } std::unique_ptr CreateFileInfoView() const override { return std::make_unique(_materialColorScheme, _fontRepository); } SharedPtr CreateCoverFlowRecyclerView() const override { return CarouselRecyclerView::CreateShared(_materialColorScheme); } SharedPtr CreateCoverFlowRecyclerAdapter( RomBrowserViewModel* viewModel, const IThemeFileIconFactory* themeFileIconFactory, VBlankTextureLoader* vblankTextureLoader) const override { return SharedPtr::MakeShared( &viewModel->GetFileInfoManager(), viewModel->GetIoTaskQueue(), themeFileIconFactory, this, vblankTextureLoader, &viewModel->GetCoverRepository()); } Point GetTopCoverPosition() const override { return Point(75, 18); } private: const MaterialColorScheme* _materialColorScheme; const IFontRepository* _fontRepository; };