Recognize main files in game list
This commit is contained in:
		| @@ -3,6 +3,7 @@ | ||||
| // Refer to the license.txt file included. | ||||
|  | ||||
| #include <QApplication> | ||||
| #include <QDir> | ||||
| #include <QFileInfo> | ||||
| #include <QHeaderView> | ||||
| #include <QKeyEvent> | ||||
| @@ -363,6 +364,19 @@ static bool HasSupportedFileExtension(const std::string& file_name) { | ||||
|     return GameList::supported_file_extensions.contains(file.suffix(), Qt::CaseInsensitive); | ||||
| } | ||||
|  | ||||
| static bool IsExtractedNCAMain(const std::string& file_name) { | ||||
|     return QFileInfo(file_name.c_str()).fileName() == "main"; | ||||
| } | ||||
|  | ||||
| static QString FormatGameName(std::string physical_name) { | ||||
|     QFileInfo fileInfo(physical_name.c_str()); | ||||
|     if (IsExtractedNCAMain(physical_name)) { | ||||
|         return fileInfo.dir().dirName(); | ||||
|     } else { | ||||
|         return QString::fromStdString(physical_name); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void GameList::RefreshGameDirectory() { | ||||
|     if (!UISettings::values.gamedir.isEmpty() && current_worker != nullptr) { | ||||
|         NGLOG_INFO(Frontend, "Change detected in the games directory. Reloading game list."); | ||||
| @@ -380,7 +394,8 @@ void GameListWorker::AddFstEntriesToGameList(const std::string& dir_path, unsign | ||||
|             return false; // Breaks the callback loop. | ||||
|  | ||||
|         bool is_dir = FileUtil::IsDirectory(physical_name); | ||||
|         if (!is_dir && HasSupportedFileExtension(physical_name)) { | ||||
|         if (!is_dir && | ||||
|             (HasSupportedFileExtension(physical_name) || IsExtractedNCAMain(physical_name))) { | ||||
|             std::unique_ptr<Loader::AppLoader> loader = Loader::GetLoader(physical_name); | ||||
|             if (!loader) | ||||
|                 return true; | ||||
| @@ -392,7 +407,7 @@ void GameListWorker::AddFstEntriesToGameList(const std::string& dir_path, unsign | ||||
|             loader->ReadProgramId(program_id); | ||||
|  | ||||
|             emit EntryReady({ | ||||
|                 new GameListItemPath(QString::fromStdString(physical_name), smdh, program_id), | ||||
|                 new GameListItemPath(FormatGameName(physical_name), smdh, program_id), | ||||
|                 new GameListItem( | ||||
|                     QString::fromStdString(Loader::GetFileTypeString(loader->GetFileType()))), | ||||
|                 new GameListItemSize(FileUtil::GetSize(physical_name)), | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Zach Hilman
					Zach Hilman