mirror of
https://github.com/LNH-team/pico-launcher.git
synced 2026-06-02 09:06:54 +02:00
Initial commit
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
#include "common.h"
|
||||
#include "../FileInfoManager.h"
|
||||
#include "core/task/TaskQueue.h"
|
||||
#include "../views/BannerListItemView.h"
|
||||
#include "../Theme/IRomBrowserViewFactory.h"
|
||||
#include "BannerListFileRecyclerAdapter.h"
|
||||
|
||||
void BannerListFileRecyclerAdapter::GetViewSize(int& width, int& height) const
|
||||
{
|
||||
width = 203;
|
||||
height = 44;
|
||||
}
|
||||
|
||||
View* BannerListFileRecyclerAdapter::CreateView() const
|
||||
{
|
||||
return _romBrowserViewFactory->CreateBannerListItemView(_vblankTextureLoader);
|
||||
}
|
||||
|
||||
void BannerListFileRecyclerAdapter::DestroyView(View* view) const
|
||||
{
|
||||
delete static_cast<BannerListItemView*>(view);
|
||||
}
|
||||
|
||||
void BannerListFileRecyclerAdapter::BindView(View* view, int index) const
|
||||
{
|
||||
auto listItemView = static_cast<BannerListItemView*>(view);
|
||||
listItemView->SetGraphics(_bannerListItemViewGraphics);
|
||||
FileRecyclerAdapter::BindView(view, index);
|
||||
}
|
||||
|
||||
TaskResult<void> BannerListFileRecyclerAdapter::BindView(View* view, int index,
|
||||
const InternalFileInfo* internalFileInfo, const vu8& cancelRequested) const
|
||||
{
|
||||
auto listItemView = static_cast<BannerListItemView*>(view);
|
||||
const auto& fileInfo = _fileInfoManager->GetItem(index);
|
||||
bool fileNameAsTitle = true;
|
||||
if (internalFileInfo)
|
||||
{
|
||||
const char16_t* gameTitle = internalFileInfo->GetGameTitle();
|
||||
if (gameTitle)
|
||||
{
|
||||
listItemView->SetGameTitle(gameTitle);
|
||||
fileNameAsTitle = false;
|
||||
}
|
||||
}
|
||||
listItemView->SetFileName(fileInfo.GetFileName(), fileNameAsTitle);
|
||||
auto icon = internalFileInfo ? internalFileInfo->CreateGameIcon() : nullptr;
|
||||
if (!icon)
|
||||
{
|
||||
icon = fileInfo.GetFileType()->CreateFileIcon("", _themeFileIconFactory);
|
||||
}
|
||||
if (icon != nullptr)
|
||||
{
|
||||
if (cancelRequested)
|
||||
{
|
||||
icon.reset();
|
||||
_fileInfoManager->ReleaseFileInfo(index);
|
||||
return TaskResult<void>::Canceled();
|
||||
}
|
||||
icon->SetAnimFrame(_iconFrameCounter);
|
||||
listItemView->SetIcon(std::move(icon));
|
||||
listItemView->UploadIconGraphics();
|
||||
if (cancelRequested)
|
||||
{
|
||||
listItemView->SetIcon(nullptr);
|
||||
_fileInfoManager->ReleaseFileInfo(index);
|
||||
return TaskResult<void>::Canceled();
|
||||
}
|
||||
}
|
||||
return TaskResult<void>::Completed();
|
||||
}
|
||||
|
||||
void BannerListFileRecyclerAdapter::ReleaseView(View* view, int index) const
|
||||
{
|
||||
LOG_DEBUG("Releasing %d\n", index);
|
||||
auto listItemView = static_cast<BannerListItemView*>(view);
|
||||
listItemView->SetIcon(nullptr);
|
||||
listItemView->SetGameTitle(u"");
|
||||
_fileInfoManager->ReleaseFileInfo(index);
|
||||
}
|
||||
|
||||
void BannerListFileRecyclerAdapter::InitVram(const VramContext& vramContext)
|
||||
{
|
||||
_bannerListItemViewGraphics = _romBrowserViewFactory->UploadBannerListItemViewGraphics(vramContext);
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
#pragma once
|
||||
#include "../FileRecyclerAdapter.h"
|
||||
#include "../views/BannerListItemView.h"
|
||||
|
||||
class TaskQueueBase;
|
||||
class IRomBrowserViewFactory;
|
||||
|
||||
class BannerListFileRecyclerAdapter : public FileRecyclerAdapter
|
||||
{
|
||||
public:
|
||||
BannerListFileRecyclerAdapter(FileInfoManager* fileInfoManager,
|
||||
TaskQueueBase* taskQueue, const IThemeFileIconFactory* themeFileIconFactory,
|
||||
const IRomBrowserViewFactory* romBrowserViewFactory,
|
||||
VBlankTextureLoader* vblankTextureLoader)
|
||||
: FileRecyclerAdapter(fileInfoManager, taskQueue, themeFileIconFactory)
|
||||
, _romBrowserViewFactory(romBrowserViewFactory)
|
||||
, _vblankTextureLoader(vblankTextureLoader) { }
|
||||
|
||||
void GetViewSize(int& width, int& height) const override;
|
||||
View* CreateView() const override;
|
||||
void DestroyView(View* view) const override;
|
||||
void BindView(View* view, int index) const override;
|
||||
void ReleaseView(View* view, int index) const override;
|
||||
|
||||
void InitVram(const VramContext& vramContext) override;
|
||||
|
||||
private:
|
||||
const IRomBrowserViewFactory* _romBrowserViewFactory;
|
||||
BannerListItemView::VramToken _bannerListItemViewGraphics;
|
||||
VBlankTextureLoader* _vblankTextureLoader;
|
||||
|
||||
TaskResult<void> BindView(View* view, int index,
|
||||
const InternalFileInfo* internalFileInfo, const vu8& cancelRequested) const override;
|
||||
};
|
||||
@@ -0,0 +1,59 @@
|
||||
#include "common.h"
|
||||
#include "../FileInfoManager.h"
|
||||
#include "core/task/TaskQueue.h"
|
||||
#include "../views/CoverView.h"
|
||||
#include "../Theme/IRomBrowserViewFactory.h"
|
||||
#include "../FileType/UnknownFileCover.h"
|
||||
#include "romBrowser/ICoverRepository.h"
|
||||
#include "CoverFlowFileRecyclerAdapter.h"
|
||||
|
||||
void CoverFlowFileRecyclerAdapter::GetViewSize(int& width, int& height) const
|
||||
{
|
||||
width = 44;
|
||||
height = 44;
|
||||
}
|
||||
|
||||
View* CoverFlowFileRecyclerAdapter::CreateView() const
|
||||
{
|
||||
return new CoverView(_vblankTextureLoader);
|
||||
}
|
||||
|
||||
void CoverFlowFileRecyclerAdapter::DestroyView(View* view) const
|
||||
{
|
||||
auto coverView = static_cast<CoverView*>(view);
|
||||
delete coverView;
|
||||
}
|
||||
|
||||
TaskResult<void> CoverFlowFileRecyclerAdapter::BindView(View* view, int index,
|
||||
const InternalFileInfo* internalFileInfo, const vu8& cancelRequested) const
|
||||
{
|
||||
auto coverView = static_cast<CoverView*>(view);
|
||||
auto cover = _fileInfoManager->GetFileCover(index);
|
||||
if (cancelRequested)
|
||||
{
|
||||
_fileInfoManager->ReleaseFileInfo(index);
|
||||
return TaskResult<void>::Canceled();
|
||||
}
|
||||
coverView->SetCover(std::move(cover));
|
||||
coverView->UploadCoverGraphics();
|
||||
if (cancelRequested)
|
||||
{
|
||||
coverView->ClearCover();
|
||||
_fileInfoManager->ReleaseFileInfo(index);
|
||||
return TaskResult<void>::Canceled();
|
||||
}
|
||||
return TaskResult<void>::Completed();
|
||||
}
|
||||
|
||||
void CoverFlowFileRecyclerAdapter::ReleaseView(View* view, int index) const
|
||||
{
|
||||
LOG_DEBUG("Releasing %d\n", index);
|
||||
auto coverView = static_cast<CoverView*>(view);
|
||||
coverView->ClearCover();
|
||||
_fileInfoManager->ReleaseFileInfo(index);
|
||||
}
|
||||
|
||||
void CoverFlowFileRecyclerAdapter::InitVram(const VramContext& vramContext)
|
||||
{
|
||||
// _iconGridItemViewGraphics = _romBrowserViewFactory->UploadIconGridItemViewGraphics(vramManager);
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
#pragma once
|
||||
#include "../FileRecyclerAdapter.h"
|
||||
|
||||
class IRomBrowserViewFactory;
|
||||
class VBlankTextureLoader;
|
||||
class ICoverRepository;
|
||||
|
||||
class CoverFlowFileRecyclerAdapter : public FileRecyclerAdapter
|
||||
{
|
||||
public:
|
||||
CoverFlowFileRecyclerAdapter(FileInfoManager* fileInfoManager,
|
||||
TaskQueueBase* taskQueue, const IThemeFileIconFactory* themeFileIconFactory,
|
||||
const IRomBrowserViewFactory* romBrowserViewFactory,
|
||||
VBlankTextureLoader* vblankTextureLoader,
|
||||
const ICoverRepository* coverRepository)
|
||||
: FileRecyclerAdapter(fileInfoManager, taskQueue, themeFileIconFactory)
|
||||
, _romBrowserViewFactory(romBrowserViewFactory)
|
||||
, _vblankTextureLoader(vblankTextureLoader)
|
||||
, _coverRepository(coverRepository) { }
|
||||
|
||||
void GetViewSize(int& width, int& height) const override;
|
||||
View* CreateView() const override;
|
||||
void DestroyView(View* view) const override;
|
||||
void ReleaseView(View* view, int index) const override;
|
||||
|
||||
void InitVram(const VramContext& vramContext) override;
|
||||
|
||||
private:
|
||||
const IRomBrowserViewFactory* _romBrowserViewFactory;
|
||||
VBlankTextureLoader* _vblankTextureLoader;
|
||||
const ICoverRepository* _coverRepository;
|
||||
|
||||
TaskResult<void> BindView(View* view, int index,
|
||||
const InternalFileInfo* internalFileInfo, const vu8& cancelRequested) const override;
|
||||
};
|
||||
@@ -0,0 +1,73 @@
|
||||
#include "common.h"
|
||||
#include "../FileInfoManager.h"
|
||||
#include "core/task/TaskQueue.h"
|
||||
#include "../views/IconGridItemView.h"
|
||||
#include "../Theme/IRomBrowserViewFactory.h"
|
||||
#include "IconGridFileRecyclerAdapter.h"
|
||||
|
||||
void IconGridFileRecyclerAdapter::GetViewSize(int& width, int& height) const
|
||||
{
|
||||
width = 44;
|
||||
height = 44;
|
||||
}
|
||||
|
||||
View* IconGridFileRecyclerAdapter::CreateView() const
|
||||
{
|
||||
return _romBrowserViewFactory->CreateIconGridItemView();
|
||||
}
|
||||
|
||||
void IconGridFileRecyclerAdapter::DestroyView(View* view) const
|
||||
{
|
||||
delete static_cast<IconGridItemView*>(view);
|
||||
}
|
||||
|
||||
void IconGridFileRecyclerAdapter::BindView(View* view, int index) const
|
||||
{
|
||||
auto iconGridItemView = static_cast<IconGridItemView*>(view);
|
||||
iconGridItemView->SetGraphics(_iconGridItemViewGraphics);
|
||||
FileRecyclerAdapter::BindView(view, index);
|
||||
}
|
||||
|
||||
TaskResult<void> IconGridFileRecyclerAdapter::BindView(View* view, int index,
|
||||
const InternalFileInfo* internalFileInfo, const vu8& cancelRequested) const
|
||||
{
|
||||
auto iconGridItemView = static_cast<IconGridItemView*>(view);
|
||||
auto icon = internalFileInfo ? internalFileInfo->CreateGameIcon() : nullptr;
|
||||
if (!icon)
|
||||
{
|
||||
const auto& fileInfo = _fileInfoManager->GetItem(index);
|
||||
icon = fileInfo.GetFileType()->CreateFileIcon(fileInfo.GetFileName(), _themeFileIconFactory);
|
||||
}
|
||||
if (icon != nullptr)
|
||||
{
|
||||
if (cancelRequested)
|
||||
{
|
||||
icon.reset();
|
||||
_fileInfoManager->ReleaseFileInfo(index);
|
||||
return TaskResult<void>::Canceled();
|
||||
}
|
||||
icon->SetAnimFrame(_iconFrameCounter);
|
||||
iconGridItemView->SetIcon(std::move(icon));
|
||||
iconGridItemView->UploadIconGraphics();
|
||||
if (cancelRequested)
|
||||
{
|
||||
iconGridItemView->SetIcon(nullptr);
|
||||
_fileInfoManager->ReleaseFileInfo(index);
|
||||
return TaskResult<void>::Canceled();
|
||||
}
|
||||
}
|
||||
return TaskResult<void>::Completed();
|
||||
}
|
||||
|
||||
void IconGridFileRecyclerAdapter::ReleaseView(View* view, int index) const
|
||||
{
|
||||
LOG_DEBUG("Releasing %d\n", index);
|
||||
auto iconGridItemView = static_cast<IconGridItemView*>(view);
|
||||
iconGridItemView->SetIcon(nullptr);
|
||||
_fileInfoManager->ReleaseFileInfo(index);
|
||||
}
|
||||
|
||||
void IconGridFileRecyclerAdapter::InitVram(const VramContext& vramContext)
|
||||
{
|
||||
_iconGridItemViewGraphics = _romBrowserViewFactory->UploadIconGridItemViewGraphics(vramContext);
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
#pragma once
|
||||
#include "../FileRecyclerAdapter.h"
|
||||
#include "../views/IconGridItemView.h"
|
||||
|
||||
class IRomBrowserViewFactory;
|
||||
|
||||
class IconGridFileRecyclerAdapter : public FileRecyclerAdapter
|
||||
{
|
||||
public:
|
||||
IconGridFileRecyclerAdapter(FileInfoManager* fileInfoManager,
|
||||
TaskQueueBase* taskQueue, const IThemeFileIconFactory* themeFileIconFactory,
|
||||
const IRomBrowserViewFactory* romBrowserViewFactory)
|
||||
: FileRecyclerAdapter(fileInfoManager, taskQueue, themeFileIconFactory)
|
||||
, _romBrowserViewFactory(romBrowserViewFactory) { }
|
||||
|
||||
void GetViewSize(int& width, int& height) const override;
|
||||
View* CreateView() const override;
|
||||
void DestroyView(View* view) const override;
|
||||
void BindView(View* view, int index) const override;
|
||||
void ReleaseView(View* view, int index) const override;
|
||||
|
||||
void InitVram(const VramContext& vramContext) override;
|
||||
|
||||
private:
|
||||
const IRomBrowserViewFactory* _romBrowserViewFactory;
|
||||
IconGridItemView::VramToken _iconGridItemViewGraphics;
|
||||
|
||||
TaskResult<void> BindView(View* view, int index,
|
||||
const InternalFileInfo* internalFileInfo, const vu8& cancelRequested) const override;
|
||||
};
|
||||
@@ -0,0 +1,4 @@
|
||||
#include "common.h"
|
||||
#include "RomBrowserBannerListDisplayMode.h"
|
||||
|
||||
const RomBrowserBannerListDisplayMode RomBrowserBannerListDisplayMode::sInstance;
|
||||
@@ -0,0 +1,39 @@
|
||||
#pragma once
|
||||
#include "gui/views/RecyclerView.h"
|
||||
#include "RomBrowserDisplayMode.h"
|
||||
#include "BannerListFileRecyclerAdapter.h"
|
||||
|
||||
class RomBrowserBannerListDisplayMode : public RomBrowserDisplayMode
|
||||
{
|
||||
public:
|
||||
static const RomBrowserBannerListDisplayMode sInstance;
|
||||
|
||||
bool IsVertical() const override { return true; }
|
||||
|
||||
std::unique_ptr<AppBarView> CreateAppBarView(const IRomBrowserViewFactory* romBrowserViewFactory,
|
||||
int startButtonCount, int endButtonCount) const override
|
||||
{
|
||||
return romBrowserViewFactory->CreateAppBarView(0, 0,
|
||||
AppBarView::Orientation::Vertical, startButtonCount, endButtonCount);
|
||||
}
|
||||
|
||||
std::unique_ptr<RecyclerViewBase> CreateRecyclerView(const IRomBrowserViewFactory* romBrowserViewFactory) const override
|
||||
{
|
||||
auto recyclerView = std::make_unique<RecyclerView>(42, 0, 256 - 42, 192, RecyclerView::Mode::VerticalList);
|
||||
recyclerView->SetPadding(0, 3);
|
||||
recyclerView->SetItemSpacing(0, 3);
|
||||
return recyclerView;
|
||||
}
|
||||
|
||||
FileRecyclerAdapter* CreateRecyclerAdapter(
|
||||
RomBrowserViewModel* viewModel, const IThemeFileIconFactory* themeFileIconFactory,
|
||||
const IRomBrowserViewFactory* romBrowserViewFactory, VBlankTextureLoader* vblankTextureLoader) const override
|
||||
{
|
||||
return new BannerListFileRecyclerAdapter(
|
||||
&viewModel->GetFileInfoManager(), viewModel->GetIoTaskQueue(), themeFileIconFactory,
|
||||
romBrowserViewFactory, vblankTextureLoader);
|
||||
}
|
||||
|
||||
private:
|
||||
constexpr RomBrowserBannerListDisplayMode() { }
|
||||
};
|
||||
23
arm9/source/romBrowser/DisplayMode/RomBrowserDisplayMode.h
Normal file
23
arm9/source/romBrowser/DisplayMode/RomBrowserDisplayMode.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#pragma once
|
||||
#include <memory>
|
||||
#include "../views/AppBarView.h"
|
||||
#include "gui/views/RecyclerViewBase.h"
|
||||
#include "../FileRecyclerAdapter.h"
|
||||
#include "../viewModels/RomBrowserViewModel.h"
|
||||
#include "../Theme/IRomBrowserViewFactory.h"
|
||||
|
||||
class VBlankTextureLoader;
|
||||
class ICoverRepository;
|
||||
|
||||
class RomBrowserDisplayMode
|
||||
{
|
||||
public:
|
||||
virtual bool IsVertical() const = 0;
|
||||
virtual bool ShowCoverOnTopScreen() const { return true; }
|
||||
virtual std::unique_ptr<AppBarView> CreateAppBarView(const IRomBrowserViewFactory* romBrowserViewFactory,
|
||||
int startButtonCount, int endButtonCount) const = 0;
|
||||
virtual std::unique_ptr<RecyclerViewBase> CreateRecyclerView(const IRomBrowserViewFactory* romBrowserViewFactory) const = 0;
|
||||
virtual FileRecyclerAdapter* CreateRecyclerAdapter(
|
||||
RomBrowserViewModel* viewModel, const IThemeFileIconFactory* themeFileIconFactory,
|
||||
const IRomBrowserViewFactory* romBrowserViewFactory, VBlankTextureLoader* vblankTextureLoader) const = 0;
|
||||
};
|
||||
@@ -0,0 +1,34 @@
|
||||
#include "common.h"
|
||||
#include "RomBrowserHorizontalIconGridDisplayMode.h"
|
||||
#include "RomBrowserVerticalIconGridDisplayMode.h"
|
||||
#include "RomBrowserBannerListDisplayMode.h"
|
||||
#include "RomBrowserHorizontalCoverFlowDisplayMode.h"
|
||||
#include "RomBrowserDisplayModeFactory.h"
|
||||
|
||||
const RomBrowserDisplayMode* RomBrowserDisplayModeFactory::GetRomBrowserDisplayMode(
|
||||
RomBrowserLayout romBrowserDisplayMode) const
|
||||
{
|
||||
switch (romBrowserDisplayMode)
|
||||
{
|
||||
case RomBrowserLayout::HorizontalIconGrid:
|
||||
{
|
||||
return &RomBrowserHorizontalIconGridDisplayMode::sInstance;
|
||||
}
|
||||
case RomBrowserLayout::VerticalIconGrid:
|
||||
{
|
||||
return &RomBrowserVerticalIconGridDisplayMode::sInstance;
|
||||
}
|
||||
case RomBrowserLayout::BannerList:
|
||||
{
|
||||
return &RomBrowserBannerListDisplayMode::sInstance;
|
||||
}
|
||||
case RomBrowserLayout::CoverFlow:
|
||||
{
|
||||
return &RomBrowserHorizontalCoverFlowDisplayMode::sInstance;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
#pragma once
|
||||
#include "services/settings/RomBrowserLayout.h"
|
||||
#include "RomBrowserDisplayMode.h"
|
||||
|
||||
class RomBrowserDisplayModeFactory
|
||||
{
|
||||
public:
|
||||
const RomBrowserDisplayMode* GetRomBrowserDisplayMode(
|
||||
RomBrowserLayout romBrowserDisplayMode) const;
|
||||
};
|
||||
@@ -0,0 +1,4 @@
|
||||
#include "common.h"
|
||||
#include "RomBrowserHorizontalCoverFlowDisplayMode.h"
|
||||
|
||||
const RomBrowserHorizontalCoverFlowDisplayMode RomBrowserHorizontalCoverFlowDisplayMode::sInstance;
|
||||
@@ -0,0 +1,34 @@
|
||||
#pragma once
|
||||
#include "RomBrowserDisplayMode.h"
|
||||
|
||||
class RomBrowserHorizontalCoverFlowDisplayMode : public RomBrowserDisplayMode
|
||||
{
|
||||
public:
|
||||
static const RomBrowserHorizontalCoverFlowDisplayMode sInstance;
|
||||
|
||||
bool IsVertical() const override { return false; }
|
||||
bool ShowCoverOnTopScreen() const override { return false; }
|
||||
|
||||
std::unique_ptr<AppBarView> CreateAppBarView(const IRomBrowserViewFactory* romBrowserViewFactory,
|
||||
int startButtonCount, int endButtonCount) const override
|
||||
{
|
||||
return romBrowserViewFactory->CreateAppBarView(0, 0,
|
||||
AppBarView::Orientation::Horizontal, startButtonCount, endButtonCount);
|
||||
}
|
||||
|
||||
std::unique_ptr<RecyclerViewBase> CreateRecyclerView(const IRomBrowserViewFactory* romBrowserViewFactory) const override
|
||||
{
|
||||
return romBrowserViewFactory->CreateCoverFlowRecyclerView();
|
||||
}
|
||||
|
||||
FileRecyclerAdapter* CreateRecyclerAdapter(
|
||||
RomBrowserViewModel* viewModel, const IThemeFileIconFactory* themeFileIconFactory,
|
||||
const IRomBrowserViewFactory* romBrowserViewFactory, VBlankTextureLoader* vblankTextureLoader) const override
|
||||
{
|
||||
return romBrowserViewFactory->CreateCoverFlowRecyclerAdapter(
|
||||
viewModel, themeFileIconFactory, vblankTextureLoader);
|
||||
}
|
||||
|
||||
private:
|
||||
constexpr RomBrowserHorizontalCoverFlowDisplayMode() { }
|
||||
};
|
||||
@@ -0,0 +1,4 @@
|
||||
#include "common.h"
|
||||
#include "RomBrowserHorizontalIconGridDisplayMode.h"
|
||||
|
||||
const RomBrowserHorizontalIconGridDisplayMode RomBrowserHorizontalIconGridDisplayMode::sInstance;
|
||||
@@ -0,0 +1,39 @@
|
||||
#pragma once
|
||||
#include "gui/views/RecyclerView.h"
|
||||
#include "RomBrowserDisplayMode.h"
|
||||
#include "IconGridFileRecyclerAdapter.h"
|
||||
|
||||
class RomBrowserHorizontalIconGridDisplayMode : public RomBrowserDisplayMode
|
||||
{
|
||||
public:
|
||||
static const RomBrowserHorizontalIconGridDisplayMode sInstance;
|
||||
|
||||
bool IsVertical() const override { return false; }
|
||||
|
||||
std::unique_ptr<AppBarView> CreateAppBarView(const IRomBrowserViewFactory* romBrowserViewFactory,
|
||||
int startButtonCount, int endButtonCount) const override
|
||||
{
|
||||
return romBrowserViewFactory->CreateAppBarView(0, 0,
|
||||
AppBarView::Orientation::Horizontal, startButtonCount, endButtonCount);
|
||||
}
|
||||
|
||||
std::unique_ptr<RecyclerViewBase> CreateRecyclerView(const IRomBrowserViewFactory* romBrowserViewFactory) const override
|
||||
{
|
||||
auto recyclerView = std::make_unique<RecyclerView>(0, 42, 256, 192 - 42, RecyclerView::Mode::HorizontalGrid);
|
||||
recyclerView->SetPadding(10, 0);
|
||||
recyclerView->SetItemSpacing(4, 4);
|
||||
return recyclerView;
|
||||
}
|
||||
|
||||
FileRecyclerAdapter* CreateRecyclerAdapter(
|
||||
RomBrowserViewModel* viewModel, const IThemeFileIconFactory* themeFileIconFactory,
|
||||
const IRomBrowserViewFactory* romBrowserViewFactory, VBlankTextureLoader* vblankTextureLoader) const override
|
||||
{
|
||||
return new IconGridFileRecyclerAdapter(
|
||||
&viewModel->GetFileInfoManager(), viewModel->GetIoTaskQueue(),
|
||||
themeFileIconFactory, romBrowserViewFactory);
|
||||
}
|
||||
|
||||
private:
|
||||
constexpr RomBrowserHorizontalIconGridDisplayMode() { }
|
||||
};
|
||||
@@ -0,0 +1,4 @@
|
||||
#include "common.h"
|
||||
#include "RomBrowserVerticalIconGridDisplayMode.h"
|
||||
|
||||
const RomBrowserVerticalIconGridDisplayMode RomBrowserVerticalIconGridDisplayMode::sInstance;
|
||||
@@ -0,0 +1,39 @@
|
||||
#pragma once
|
||||
#include "gui/views/RecyclerView.h"
|
||||
#include "RomBrowserDisplayMode.h"
|
||||
#include "IconGridFileRecyclerAdapter.h"
|
||||
|
||||
class RomBrowserVerticalIconGridDisplayMode : public RomBrowserDisplayMode
|
||||
{
|
||||
public:
|
||||
static const RomBrowserVerticalIconGridDisplayMode sInstance;
|
||||
|
||||
bool IsVertical() const override { return true; }
|
||||
|
||||
std::unique_ptr<AppBarView> CreateAppBarView(const IRomBrowserViewFactory* romBrowserViewFactory,
|
||||
int startButtonCount, int endButtonCount) const override
|
||||
{
|
||||
return romBrowserViewFactory->CreateAppBarView(0, 0,
|
||||
AppBarView::Orientation::Vertical, startButtonCount, endButtonCount);
|
||||
}
|
||||
|
||||
std::unique_ptr<RecyclerViewBase> CreateRecyclerView(const IRomBrowserViewFactory* romBrowserViewFactory) const override
|
||||
{
|
||||
auto recyclerView = std::make_unique<RecyclerView>(42, 0, 256 - 42, 192, RecyclerView::Mode::VerticalGrid);
|
||||
recyclerView->SetPadding(0, 3);
|
||||
recyclerView->SetItemSpacing(9, 3);
|
||||
return recyclerView;
|
||||
}
|
||||
|
||||
FileRecyclerAdapter* CreateRecyclerAdapter(
|
||||
RomBrowserViewModel* viewModel, const IThemeFileIconFactory* themeFileIconFactory,
|
||||
const IRomBrowserViewFactory* romBrowserViewFactory, VBlankTextureLoader* vblankTextureLoader) const override
|
||||
{
|
||||
return new IconGridFileRecyclerAdapter(
|
||||
&viewModel->GetFileInfoManager(), viewModel->GetIoTaskQueue(),
|
||||
themeFileIconFactory, romBrowserViewFactory);
|
||||
}
|
||||
|
||||
private:
|
||||
constexpr RomBrowserVerticalIconGridDisplayMode() { }
|
||||
};
|
||||
Reference in New Issue
Block a user