mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	citra-qt: Don't attempt to scan files with unsupported extensions (#2402)
This commit is contained in:
		
							parent
							
								
									da6a40e3d1
								
							
						
					
					
						commit
						30ff675f02
					
				
					 3 changed files with 20 additions and 4 deletions
				
			
		|  | @ -2,6 +2,7 @@ | |||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include <QFileInfo> | ||||
| #include <QHeaderView> | ||||
| #include <QMenu> | ||||
| #include <QThreadPool> | ||||
|  | @ -131,6 +132,14 @@ void GameList::LoadInterfaceLayout() { | |||
|     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) { | ||||
|     const auto callback = [this, recursion](unsigned* num_entries_out, const std::string& directory, | ||||
|                                             const std::string& virtual_name) -> bool { | ||||
|  | @ -139,7 +148,7 @@ void GameListWorker::AddFstEntriesToGameList(const std::string& dir_path, unsign | |||
|         if (stop_processing) | ||||
|             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); | ||||
|             if (!loader) | ||||
|                 return true; | ||||
|  |  | |||
|  | @ -33,6 +33,8 @@ public: | |||
|     void SaveInterfaceLayout(); | ||||
|     void LoadInterfaceLayout(); | ||||
| 
 | ||||
|     static const QStringList supported_file_extensions; | ||||
| 
 | ||||
| signals: | ||||
|     void GameChosen(QString game_path); | ||||
|     void ShouldCancelWorker(); | ||||
|  |  | |||
|  | @ -466,9 +466,14 @@ void GMainWindow::OnGameListOpenSaveFolder(u64 program_id) { | |||
| } | ||||
| 
 | ||||
| void GMainWindow::OnMenuLoadFile() { | ||||
|     QString filename = | ||||
|         QFileDialog::getOpenFileName(this, tr("Load File"), UISettings::values.roms_path, | ||||
|                                      tr("3DS executable (*.3ds *.3dsx *.elf *.axf *.cci *.cxi)")); | ||||
|     QString extensions; | ||||
|     for (const auto& piece : game_list->supported_file_extensions) | ||||
|         extensions += "*." + piece + " "; | ||||
| 
 | ||||
|     QString file_filter = tr("3DS executable") + " (" + extensions + ")"; | ||||
| 
 | ||||
|     QString filename = QFileDialog::getOpenFileName(this, tr("Load File"), | ||||
|                                                     UISettings::values.roms_path, file_filter); | ||||
|     if (!filename.isEmpty()) { | ||||
|         UISettings::values.roms_path = QFileInfo(filename).path(); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue