#pragma once #include "gui/views/RecyclerAdapter.h" #include "cheats/CheatEntry.h" #include "CheatListItemView.h" /// @brief Recycler adapter for cheats. class CheatsAdapter : public RecyclerAdapter { public: CheatsAdapter(const CheatEntry* cheatCategory, SharedPtr cheatsViewModel, const MaterialColorScheme* materialColorScheme, const IFontRepository* fontRepository, const CheatListItemView::VramOffsets& vramOffsets) : _cheatCategory(cheatCategory), _cheatsViewModel(std::move(cheatsViewModel)), _materialColorScheme(materialColorScheme) , _fontRepository(fontRepository), _vramOffsets(vramOffsets) { } u32 GetItemCount() const override { u32 numberOfSubEntries = 0; _cheatCategory->GetSubEntries(numberOfSubEntries); return numberOfSubEntries; } void GetViewSize(int& width, int& height) const override { width = 224; height = 24; } SharedPtr CreateView() const override { return CheatListItemView::CreateShared(_cheatsViewModel, _vramOffsets, _materialColorScheme, _fontRepository); } void BindView(SharedPtr view, int index) const override { auto listItemView = static_cast(view.GetPointer()); u32 numberOfSubEntries = 0; auto subEntries = _cheatCategory->GetSubEntries(numberOfSubEntries); listItemView->SetEntry(&subEntries[index], index); } void ReleaseView(SharedPtr view, int index) const override { // Nothing to do } private: const CheatEntry* _cheatCategory; SharedPtr _cheatsViewModel; const MaterialColorScheme* _materialColorScheme; const IFontRepository* _fontRepository; CheatListItemView::VramOffsets _vramOffsets; };