#pragma once #include #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& 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; SharedPtr _romBrowserViewModel; std::unique_ptr _newSdFolder; RomBrowserStateMachine _stateMachine; TCHAR _navigatePath[256]; TCHAR* _navigateFileName; FileInfo _launchFileInfo; QueueTask _navigateTask; bool _saveSettingsPending = false; std::unique_ptr _coverRepository; ExtensionFileTypeProvider _fileTypeProvider; void HandleTrigger(); void HandleNavigateTrigger(); void HandleFolderLoadDoneTrigger(); void HandleLaunchTrigger(); void HandleChangeDisplayModeTrigger(); };