Merge pull request #11352 from t895/recurse-subfolders
android: Search game directory recursively
This commit is contained in:
		| @@ -11,6 +11,7 @@ import kotlinx.serialization.json.Json | |||||||
| import org.yuzu.yuzu_emu.NativeLibrary | import org.yuzu.yuzu_emu.NativeLibrary | ||||||
| import org.yuzu.yuzu_emu.YuzuApplication | import org.yuzu.yuzu_emu.YuzuApplication | ||||||
| import org.yuzu.yuzu_emu.model.Game | import org.yuzu.yuzu_emu.model.Game | ||||||
|  | import org.yuzu.yuzu_emu.model.MinimalDocumentFile | ||||||
|  |  | ||||||
| object GameHelper { | object GameHelper { | ||||||
|     const val KEY_GAME_PATH = "game_path" |     const val KEY_GAME_PATH = "game_path" | ||||||
| @@ -29,15 +30,7 @@ object GameHelper { | |||||||
|         // Ensure keys are loaded so that ROM metadata can be decrypted. |         // Ensure keys are loaded so that ROM metadata can be decrypted. | ||||||
|         NativeLibrary.reloadKeys() |         NativeLibrary.reloadKeys() | ||||||
|  |  | ||||||
|         val children = FileUtil.listFiles(context, gamesUri) |         addGamesRecursive(games, FileUtil.listFiles(context, gamesUri), 3) | ||||||
|         for (file in children) { |  | ||||||
|             if (!file.isDirectory) { |  | ||||||
|                 // Check that the file has an extension we care about before trying to read out of it. |  | ||||||
|                 if (Game.extensions.contains(FileUtil.getExtension(file.uri))) { |  | ||||||
|                     games.add(getGame(file.uri)) |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         // Cache list of games found on disk |         // Cache list of games found on disk | ||||||
|         val serializedGames = mutableSetOf<String>() |         val serializedGames = mutableSetOf<String>() | ||||||
| @@ -52,6 +45,30 @@ object GameHelper { | |||||||
|         return games.toList() |         return games.toList() | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     private fun addGamesRecursive( | ||||||
|  |         games: MutableList<Game>, | ||||||
|  |         files: Array<MinimalDocumentFile>, | ||||||
|  |         depth: Int | ||||||
|  |     ) { | ||||||
|  |         if (depth <= 0) { | ||||||
|  |             return | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         files.forEach { | ||||||
|  |             if (it.isDirectory) { | ||||||
|  |                 addGamesRecursive( | ||||||
|  |                     games, | ||||||
|  |                     FileUtil.listFiles(YuzuApplication.appContext, it.uri), | ||||||
|  |                     depth - 1 | ||||||
|  |                 ) | ||||||
|  |             } else { | ||||||
|  |                 if (Game.extensions.contains(FileUtil.getExtension(it.uri))) { | ||||||
|  |                     games.add(getGame(it.uri)) | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     private fun getGame(uri: Uri): Game { |     private fun getGame(uri: Uri): Game { | ||||||
|         val filePath = uri.toString() |         val filePath = uri.toString() | ||||||
|         var name = NativeLibrary.getTitle(filePath) |         var name = NativeLibrary.getTitle(filePath) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user