mirror of
https://github.com/LNH-team/pico-launcher.git
synced 2026-06-02 17:16:57 +02:00
46 lines
1.2 KiB
C++
46 lines
1.2 KiB
C++
#pragma once
|
|
#include "common.h"
|
|
#include <memory>
|
|
#include "FileInfo.h"
|
|
#include "FileType/FileCover.h"
|
|
#include "ICoverRepository.h"
|
|
#include "core/AtomicSharedPtr.h"
|
|
#include "FileType/InternalFileInfo.h"
|
|
|
|
class FileInfoManager
|
|
{
|
|
public:
|
|
FileInfoManager(std::unique_ptr<const FileInfo*[]> items, u32 itemCount, const ICoverRepository& coverRepository);
|
|
~FileInfoManager();
|
|
|
|
const InternalFileInfo* GetInternalFileInfo(int index)
|
|
{
|
|
return _extraFileInfo[index].internalFileInfo;
|
|
}
|
|
|
|
SharedPtr<FileCover> GetFileCover(int index)
|
|
{
|
|
return _extraFileInfo[index].fileCover.Lock();
|
|
}
|
|
|
|
void LoadFileInfo(int index);
|
|
|
|
void ReleaseFileInfo(int index);
|
|
|
|
int GetItemIndex(const char* fileName);
|
|
|
|
const FileInfo& GetItem(int index) const { return *_items[index]; }
|
|
u32 GetItemCount() const { return _itemCount; }
|
|
|
|
private:
|
|
struct ExtraFileInfo
|
|
{
|
|
const InternalFileInfo* internalFileInfo;
|
|
AtomicSharedPtr<FileCover> fileCover;
|
|
};
|
|
|
|
std::unique_ptr<const FileInfo*[]> _items;
|
|
u32 _itemCount;
|
|
std::unique_ptr<ExtraFileInfo[]> _extraFileInfo;
|
|
const ICoverRepository& _coverRepository;
|
|
}; |