|
|
@ -2,6 +2,7 @@ |
|
|
// Licensed under GPLv2 or any later version
|
|
|
// Licensed under GPLv2 or any later version
|
|
|
// Refer to the license.txt file included.
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
|
|
|
|
|
|
|
#include <QFileInfo>
|
|
|
#include <QHeaderView>
|
|
|
#include <QHeaderView>
|
|
|
#include <QMenu>
|
|
|
#include <QMenu>
|
|
|
#include <QThreadPool>
|
|
|
#include <QThreadPool>
|
|
|
@ -131,6 +132,14 @@ void GameList::LoadInterfaceLayout() { |
|
|
item_model->sort(header->sortIndicatorSection(), header->sortIndicatorOrder()); |
|
|
item_model->sort(header->sortIndicatorSection(), header->sortIndicatorOrder()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const QStringList GameList::supported_file_extensions = {"3ds", "3dsx", "elf", "axf", |
|
|
|
|
|
"cci", "cxi", "app"}; |
|
|
|
|
|
|
|
|
|
|
|
static bool HasSupportedFileExtension(const std::string& file_name) { |
|
|
|
|
|
QFileInfo file = QFileInfo(file_name.c_str()); |
|
|
|
|
|
return GameList::supported_file_extensions.contains(file.completeSuffix(), Qt::CaseInsensitive); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void GameListWorker::AddFstEntriesToGameList(const std::string& dir_path, unsigned int recursion) { |
|
|
void GameListWorker::AddFstEntriesToGameList(const std::string& dir_path, unsigned int recursion) { |
|
|
const auto callback = [this, recursion](unsigned* num_entries_out, const std::string& directory, |
|
|
const auto callback = [this, recursion](unsigned* num_entries_out, const std::string& directory, |
|
|
const std::string& virtual_name) -> bool { |
|
|
const std::string& virtual_name) -> bool { |
|
|
@ -139,7 +148,7 @@ void GameListWorker::AddFstEntriesToGameList(const std::string& dir_path, unsign |
|
|
if (stop_processing) |
|
|
if (stop_processing) |
|
|
return false; // Breaks the callback loop.
|
|
|
return false; // Breaks the callback loop.
|
|
|
|
|
|
|
|
|
if (!FileUtil::IsDirectory(physical_name)) { |
|
|
|
|
|
|
|
|
if (!FileUtil::IsDirectory(physical_name) && HasSupportedFileExtension(physical_name)) { |
|
|
std::unique_ptr<Loader::AppLoader> loader = Loader::GetLoader(physical_name); |
|
|
std::unique_ptr<Loader::AppLoader> loader = Loader::GetLoader(physical_name); |
|
|
if (!loader) |
|
|
if (!loader) |
|
|
return true; |
|
|
return true; |
|
|
|