diff options
author | Andrew Glaze <andrew.glaze76@gmail.com> | 2022-12-29 10:52:30 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-29 16:52:30 +0100 |
commit | 2b23463daa01226c5569d8e61d1d0959570354cf (patch) | |
tree | cafb9e09a8aa61de83d0e89a35b0e0ebc7cf32da | |
parent | 9dfe81770a8337a7a469eb3bac0ae9599cc0f61c (diff) |
Filter hidden game files from the Game List (#4051)1.1.500
* Filter “._” files from the game list
* Filter all hidden files from the game list
* Fix style
Co-authored-by: gdkchan <gab.dark.100@gmail.com>
* merge OR expression into a pattern
* migrate from GetFiles/Directories to Enumerate
* Remove GetFilesInDirectory()
* Update Ryujinx.Ui.Common/App/ApplicationLibrary.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* add error handeling
* code cleanup
Co-authored-by: gdkchan <gab.dark.100@gmail.com>
Co-authored-by: Ac_K <Acoustik666@gmail.com>
-rw-r--r-- | Ryujinx.Ui.Common/App/ApplicationLibrary.cs | 81 |
1 files changed, 18 insertions, 63 deletions
diff --git a/Ryujinx.Ui.Common/App/ApplicationLibrary.cs b/Ryujinx.Ui.Common/App/ApplicationLibrary.cs index 1af7dc06..b1a8026e 100644 --- a/Ryujinx.Ui.Common/App/ApplicationLibrary.cs +++ b/Ryujinx.Ui.Common/App/ApplicationLibrary.cs @@ -68,53 +68,6 @@ namespace Ryujinx.Ui.App.Common _cancellationToken?.Cancel(); } - public IEnumerable<string> GetFilesInDirectory(string directory) - { - Stack<string> stack = new Stack<string>(); - - stack.Push(directory); - - while (stack.Count > 0) - { - string dir = stack.Pop(); - string[] content = Array.Empty<string>(); - - try - { - content = Directory.GetFiles(dir, "*"); - } - catch (UnauthorizedAccessException) - { - Logger.Warning?.Print(LogClass.Application, $"Failed to get access to directory: \"{dir}\""); - } - - if (content.Length > 0) - { - foreach (string file in content) - { - yield return file; - } - } - - try - { - content = Directory.GetDirectories(dir); - } - catch (UnauthorizedAccessException) - { - Logger.Warning?.Print(LogClass.Application, $"Failed to get access to directory: \"{dir}\""); - } - - if (content.Length > 0) - { - foreach (string subdir in content) - { - stack.Push(subdir); - } - } - } - } - public void ReadControlData(IFileSystem controlFs, Span<byte> outProperty) { using var controlFile = new UniqueRef<IFile>(); @@ -151,26 +104,28 @@ namespace Ryujinx.Ui.App.Common continue; } - foreach (string app in GetFilesInDirectory(appDir)) + try { - if (_cancellationToken.Token.IsCancellationRequested) + foreach (string app in Directory.EnumerateFiles(appDir, "*", SearchOption.AllDirectories)) { - return; - } - - string extension = Path.GetExtension(app).ToLower(); - - if ((extension == ".nsp") || - (extension == ".pfs0") || - (extension == ".xci") || - (extension == ".nca") || - (extension == ".nro") || - (extension == ".nso")) - { - applications.Add(app); - numApplicationsFound++; + if (_cancellationToken.Token.IsCancellationRequested) + { + return; + } + + string extension = Path.GetExtension(app).ToLower(); + + if (!File.GetAttributes(app).HasFlag(FileAttributes.Hidden) && extension is ".nsp" or ".pfs0" or ".xci" or ".nca" or ".nro" or ".nso") + { + applications.Add(app); + numApplicationsFound++; + } } } + catch (UnauthorizedAccessException) + { + Logger.Warning?.Print(LogClass.Application, $"Failed to get access to directory: \"{appDir}\""); + } } // Loops through applications list, creating a struct and then firing an event containing the struct for each application |