#include "common.h" #include "romBrowser/FileInfoManager.h" #include "core/task/TaskQueue.h" #include "MaterialCoverView.h" #include "romBrowser/Theme/IRomBrowserViewFactory.h" #include "romBrowser/FileType/UnknownFileCover.h" #include "romBrowser/ICoverRepository.h" #include "MaterialCoverFlowFileRecyclerAdapter.h" void MaterialCoverFlowFileRecyclerAdapter::GetViewSize(int& width, int& height) const { width = COVER_WIDTH; height = COVER_HEIGHT; } SharedPtr MaterialCoverFlowFileRecyclerAdapter::CreateView() const { return MaterialCoverView::CreateShared( std::make_unique(_romBrowserController), _vblankTextureLoader); } TaskResult MaterialCoverFlowFileRecyclerAdapter::BindView(SharedPtr view, int index, const InternalFileInfo* internalFileInfo, const vu8& cancelRequested) const { auto coverView = static_cast(view.GetPointer()); coverView->GetViewModel().SetIndex(index); auto cover = _fileInfoManager->GetFileCover(index); if (cancelRequested) { _fileInfoManager->ReleaseFileInfo(index); return TaskResult::Canceled(); } coverView->SetCover(std::move(cover)); coverView->UploadCoverGraphics(); if (cancelRequested) { coverView->ClearCover(); _fileInfoManager->ReleaseFileInfo(index); return TaskResult::Canceled(); } return TaskResult::Completed(); } void MaterialCoverFlowFileRecyclerAdapter::SetQueueTask(const SharedPtr& view, QueueTask queueTask) const { auto coverView = static_cast(view.GetPointer()); coverView->GetViewModel().SetQueueTask(std::move(queueTask)); } void MaterialCoverFlowFileRecyclerAdapter::ReleaseView(SharedPtr view, int index) const { LOG_DEBUG("Releasing %d\n", index); auto coverView = static_cast(view.GetPointer()); coverView->ClearCover(); coverView->GetViewModel().SetIndex(-1); coverView->GetViewModel().CancelQueueTask(); _fileInfoManager->ReleaseFileInfo(index); }