Files
pico-launcher/arm9/source/romBrowser/RomBrowserController.h
2025-11-25 17:41:31 +01:00

73 lines
2.4 KiB
C++

#pragma once
#include <memory>
#include "core/SharedPtr.h"
#include "SdFolder.h"
#include "viewModels/RomBrowserViewModel.h"
#include "RomBrowserStateMachine.h"
#include "core/task/TaskQueue.h"
#include "IRomBrowserController.h"
#include "CoverRepository.h"
#include "FileType/ExtensionFileTypeProvider.h"
#include "services/settings/IAppSettingsService.h"
class RomBrowserController : public IRomBrowserController
{
public:
RomBrowserController(IAppSettingsService* appSettingsService,
TaskQueueBase* ioTaskQueue, TaskQueueBase* bgTaskQueue);
void NavigateUp() override
{
NavigateToPath("..");
}
void NavigateToPath(const TCHAR* name) override;
void LaunchFile(const FileInfo& fileInfo) override;
void ShowGameInfo() override;
void HideGameInfo() override;
void ShowDisplaySettings() override;
void HideDisplaySettings() override;
void Update() override;
const SdFolder& GetSdFolder() const override { return *_sdFolder; }
const RomBrowserStateMachine& GetStateMachine() const override { return _stateMachine; }
const SharedPtr<RomBrowserViewModel>& GetRomBrowserViewModel() override { return _romBrowserViewModel; }
TaskQueueBase* GetIoTaskQueue() const override { return _ioTaskQueue; }
TaskQueueBase* GetBgTaskQueue() const override { return _bgTaskQueue; }
const ICoverRepository& GetCoverRepository() const override { return *_coverRepository; }
void SetRomBrowserDisplaySettings(const RomBrowserDisplaySettings& romBrowserDisplaySettings) override;
const RomBrowserDisplaySettings& GetRomBrowserDisplaySettings() const override
{
return _appSettingsService->GetAppSettings().romBrowserDisplaySettings;
}
private:
IAppSettingsService* _appSettingsService;
TaskQueueBase* _ioTaskQueue;
TaskQueueBase* _bgTaskQueue;
std::unique_ptr<SdFolder> _sdFolder;
SharedPtr<RomBrowserViewModel> _romBrowserViewModel;
std::unique_ptr<SdFolder> _newSdFolder;
RomBrowserStateMachine _stateMachine;
TCHAR _navigatePath[256];
TCHAR* _navigateFileName;
FileInfo _launchFileInfo;
QueueTask<void> _navigateTask;
bool _saveSettingsPending = false;
std::unique_ptr<CoverRepository> _coverRepository;
ExtensionFileTypeProvider _fileTypeProvider;
void HandleTrigger();
void HandleNavigateTrigger();
void HandleFolderLoadDoneTrigger();
void HandleLaunchTrigger();
void HandleChangeDisplayModeTrigger();
};