Files
pico-launcher/arm9/source/romBrowser/views/RomBrowserAppBarView.cpp
2025-11-25 17:41:31 +01:00

134 lines
5.3 KiB
C++

#include "common.h"
#include "../viewModels/RomBrowserAppBarViewModel.h"
#include "gui/GraphicsContext.h"
#include "gui/VramContext.h"
#include "backIcon.h"
#include "settingsIcon.h"
#include "heartIcon.h"
#include "recentIcon.h"
#include "hGridIcon.h"
#include "vGridIcon.h"
#include "bannerListIcon.h"
#include "coverflowIcon.h"
#include "listIcon.h"
#include "gui/IVramManager.h"
#include "../DisplayMode/RomBrowserDisplayMode.h"
#include "RomBrowserAppBarView.h"
RomBrowserAppBarView::RomBrowserAppBarView(
RomBrowserAppBarViewModel* viewModel, const RomBrowserDisplayMode& displayMode,
const IRomBrowserViewFactory* romBrowserViewFactory)
: _viewModel(viewModel)
{
_appBarView = displayMode.CreateAppBarView(romBrowserViewFactory, 1, 1);
_appBarView->SetParent(this);
_appBarView->SetButtonAction(APP_BAR_BUTTON_BACK, [] (IconButtonView* sender, void* arg)
{
((RomBrowserAppBarViewModel*)arg)->NavigateUp();
}, _viewModel);
_appBarView->SetButtonAction(APP_BAR_BUTTON_DISPLAY_SETTINGS, [] (IconButtonView* sender, void* arg)
{
((RomBrowserAppBarViewModel*)arg)->ShowDisplaySettings();
}, _viewModel);
}
void RomBrowserAppBarView::InitVram(const VramContext& vramContext)
{
_appBarView->InitVram(vramContext);
const auto objVramManager = vramContext.GetObjVramManager();
if (objVramManager)
{
u32 backIconVramOffset = objVramManager->Alloc(backIconTilesLen);
dma_ntrCopy32(3, backIconTiles, objVramManager->GetVramAddress(backIconVramOffset), backIconTilesLen);
_appBarView->SetButtonIcon(APP_BAR_BUTTON_BACK, backIconVramOffset);
u32 settingsIconVramOffset = objVramManager->Alloc(settingsIconTilesLen);
dma_ntrCopy32(3, settingsIconTiles, objVramManager->GetVramAddress(settingsIconVramOffset), settingsIconTilesLen);
_appBarView->SetButtonIcon(APP_BAR_BUTTON_DISPLAY_SETTINGS, settingsIconVramOffset);
// u32 settingsIconVramOffset = objVramManager->Alloc(settingsIconTilesLen);
// dma_ntrCopy32(3, settingsIconTiles, objVramManager->GetVramAddress(settingsIconVramOffset), settingsIconTilesLen);
// _appBarView->SetButtonIcon(APP_BAR_BUTTON_SETTINGS, settingsIconVramOffset);
// u32 heartIconVramOffset = objVramManager->Alloc(heartIconTilesLen);
// dma_ntrCopy32(3, heartIconTiles, objVramManager->GetVramAddress(heartIconVramOffset), heartIconTilesLen);
// _appBarView->SetButtonIcon(APP_BAR_BUTTON_FAVORITE, heartIconVramOffset);
// u32 recentIconVramOffset = objVramManager->Alloc(recentIconTilesLen);
// dma_ntrCopy32(3, recentIconTiles, objVramManager->GetVramAddress(recentIconVramOffset), recentIconTilesLen);
// _appBarView->SetButtonIcon(APP_BAR_BUTTON_RECENT, recentIconVramOffset);
// u32 displaySettingsIconVramOffset;
// switch (_viewModel->GetRomBrowserLayout())
// {
// case RomBrowserLayout::HorizontalIconGrid:
// default:
// {
// displaySettingsIconVramOffset = objVramManager->Alloc(hGridIconTilesLen);
// dma_ntrCopy32(3, hGridIconTiles, objVramManager->GetVramAddress(displaySettingsIconVramOffset), hGridIconTilesLen);
// break;
// }
// case RomBrowserLayout::VerticalIconGrid:
// {
// displaySettingsIconVramOffset = objVramManager->Alloc(vGridIconTilesLen);
// dma_ntrCopy32(3, vGridIconTiles, objVramManager->GetVramAddress(displaySettingsIconVramOffset), vGridIconTilesLen);
// break;
// }
// case RomBrowserLayout::BannerList:
// {
// displaySettingsIconVramOffset = objVramManager->Alloc(bannerListIconTilesLen);
// dma_ntrCopy32(3, bannerListIconTiles, objVramManager->GetVramAddress(displaySettingsIconVramOffset), bannerListIconTilesLen);
// break;
// }
// case RomBrowserLayout::FileList:
// {
// displaySettingsIconVramOffset = objVramManager->Alloc(listIconTilesLen);
// dma_ntrCopy32(3, listIconTiles, objVramManager->GetVramAddress(displaySettingsIconVramOffset), listIconTilesLen);
// break;
// }
// case RomBrowserLayout::CoverFlow:
// {
// displaySettingsIconVramOffset = objVramManager->Alloc(coverflowIconTilesLen);
// dma_ntrCopy32(3, coverflowIconTiles, objVramManager->GetVramAddress(displaySettingsIconVramOffset), coverflowIconTilesLen);
// break;
// }
// }
// _appBarView->SetButtonIcon(APP_BAR_BUTTON_DISPLAY_SETTINGS, displaySettingsIconVramOffset);
}
}
void RomBrowserAppBarView::Update()
{
_appBarView->Update();
}
void RomBrowserAppBarView::Draw(GraphicsContext& graphicsContext)
{
_appBarView->Draw(graphicsContext);
}
void RomBrowserAppBarView::VBlank()
{
_appBarView->VBlank();
}
View* RomBrowserAppBarView::MoveFocus(View* currentFocus, FocusMoveDirection direction, View* source)
{
if (currentFocus == nullptr)
{
return nullptr;
}
if (source == _appBarView.get())
{
return View::MoveFocus(currentFocus, direction, source);
}
else if (source == GetParent())
{
return _appBarView->MoveFocus(currentFocus, direction, this);
}
return nullptr;
}