mirror of
https://github.com/LNH-team/pico-launcher.git
synced 2026-06-02 09:06:54 +02:00
Initial commit
This commit is contained in:
65
arm9/source/romBrowser/viewModels/RomBrowserViewModel.cpp
Normal file
65
arm9/source/romBrowser/viewModels/RomBrowserViewModel.cpp
Normal file
@@ -0,0 +1,65 @@
|
||||
#include "common.h"
|
||||
#include <algorithm>
|
||||
#include "RomBrowserViewModel.h"
|
||||
|
||||
RomBrowserViewModel::RomBrowserViewModel(IRomBrowserController* romBrowserController, const char* initialSelectedFileName)
|
||||
: _romBrowserController(romBrowserController)
|
||||
{
|
||||
SdFolderFilterSortParams filterSortParams;
|
||||
switch (romBrowserController->GetRomBrowserDisplaySettings().sortMode)
|
||||
{
|
||||
case RomBrowserSortMode::NameAscending:
|
||||
default:
|
||||
{
|
||||
filterSortParams = SdFolderFilterSortParams(
|
||||
SdFolderSortType::Name, SdFolderSortDirection::Ascending);
|
||||
break;
|
||||
}
|
||||
case RomBrowserSortMode::NameDescending:
|
||||
{
|
||||
filterSortParams = SdFolderFilterSortParams(
|
||||
SdFolderSortType::Name, SdFolderSortDirection::Descending);
|
||||
break;
|
||||
}
|
||||
case RomBrowserSortMode::LastModified:
|
||||
{
|
||||
filterSortParams = SdFolderFilterSortParams(
|
||||
SdFolderSortType::LastModified, SdFolderSortDirection::Descending);
|
||||
break;
|
||||
}
|
||||
}
|
||||
u64 startTick = gTickCounter.GetValue();
|
||||
const auto& sdFolder = romBrowserController->GetSdFolder();
|
||||
int filteredCount;
|
||||
auto sortedFilteredFiles = sdFolder.FilterAndSort(filterSortParams, filteredCount);
|
||||
u64 endTick = gTickCounter.GetValue();
|
||||
LOG_DEBUG("Filter + sort took: %d us\n", (u32)TickCounter::TicksToMicroSeconds(endTick - startTick));
|
||||
_fileInfoManager = std::make_unique<FileInfoManager>(std::move(sortedFilteredFiles), filteredCount, _romBrowserController->GetCoverRepository());
|
||||
_selectedItem = _fileInfoManager->GetItemIndex(initialSelectedFileName);
|
||||
}
|
||||
|
||||
void RomBrowserViewModel::ItemActivated()
|
||||
{
|
||||
const auto& item = _fileInfoManager->GetItem(_selectedItem);
|
||||
if (item.GetFileType()->GetClassification() == FileTypeClassification::Folder)
|
||||
{
|
||||
_romBrowserController->NavigateToPath(item.GetFileName());
|
||||
}
|
||||
else
|
||||
{
|
||||
_romBrowserController->LaunchFile(item);
|
||||
}
|
||||
}
|
||||
|
||||
void RomBrowserViewModel::NavigateUp()
|
||||
{
|
||||
_romBrowserController->NavigateUp();
|
||||
}
|
||||
|
||||
void RomBrowserViewModel::ShowGameInfo()
|
||||
{
|
||||
const auto& item = _fileInfoManager->GetItem(_selectedItem);
|
||||
if (item.GetFileType()->GetClassification() == FileTypeClassification::Folder)
|
||||
return;
|
||||
_romBrowserController->ShowGameInfo();
|
||||
}
|
||||
Reference in New Issue
Block a user