diff options
Diffstat (limited to 'Ryujinx.Ui.Common')
| -rw-r--r-- | Ryujinx.Ui.Common/App/ApplicationLibrary.cs | 15 | ||||
| -rw-r--r-- | Ryujinx.Ui.Common/Configuration/ConfigurationFileFormat.cs | 7 | ||||
| -rw-r--r-- | Ryujinx.Ui.Common/Configuration/ConfigurationState.cs | 71 | ||||
| -rw-r--r-- | Ryujinx.Ui.Common/Configuration/FileTypes.cs | 12 | ||||
| -rw-r--r-- | Ryujinx.Ui.Common/Configuration/Ui/ShownFileTypes.cs | 12 | ||||
| -rw-r--r-- | Ryujinx.Ui.Common/Extensions/FileTypeExtensions.cs | 25 |
6 files changed, 138 insertions, 4 deletions
diff --git a/Ryujinx.Ui.Common/App/ApplicationLibrary.cs b/Ryujinx.Ui.Common/App/ApplicationLibrary.cs index 66cb7c73..b7b57f1a 100644 --- a/Ryujinx.Ui.Common/App/ApplicationLibrary.cs +++ b/Ryujinx.Ui.Common/App/ApplicationLibrary.cs @@ -14,9 +14,11 @@ using Ryujinx.Common.Utilities; using Ryujinx.HLE.FileSystem; using Ryujinx.HLE.HOS.SystemState; using Ryujinx.HLE.Loaders.Npdm; +using Ryujinx.Ui.Common.Configuration; using Ryujinx.Ui.Common.Configuration.System; using System; using System.Collections.Generic; +using System.Linq; using System.Globalization; using System.IO; using System.Reflection; @@ -109,7 +111,18 @@ namespace Ryujinx.Ui.App.Common try { - foreach (string app in Directory.EnumerateFiles(appDir, "*", SearchOption.AllDirectories)) + IEnumerable<string> files = Directory.EnumerateFiles(appDir, "*", SearchOption.AllDirectories).Where(file => + { + return + (Path.GetExtension(file).ToLower() is ".nsp" && ConfigurationState.Instance.Ui.ShownFileTypes.NSP.Value) || + (Path.GetExtension(file).ToLower() is ".pfs0" && ConfigurationState.Instance.Ui.ShownFileTypes.PFS0.Value) || + (Path.GetExtension(file).ToLower() is ".xci" && ConfigurationState.Instance.Ui.ShownFileTypes.XCI.Value) || + (Path.GetExtension(file).ToLower() is ".nca" && ConfigurationState.Instance.Ui.ShownFileTypes.NCA.Value) || + (Path.GetExtension(file).ToLower() is ".nro" && ConfigurationState.Instance.Ui.ShownFileTypes.NRO.Value) || + (Path.GetExtension(file).ToLower() is ".nso" && ConfigurationState.Instance.Ui.ShownFileTypes.NSO.Value); + }); + + foreach (string app in files) { if (_cancellationToken.Token.IsCancellationRequested) { diff --git a/Ryujinx.Ui.Common/Configuration/ConfigurationFileFormat.cs b/Ryujinx.Ui.Common/Configuration/ConfigurationFileFormat.cs index 14c03957..cb9adc86 100644 --- a/Ryujinx.Ui.Common/Configuration/ConfigurationFileFormat.cs +++ b/Ryujinx.Ui.Common/Configuration/ConfigurationFileFormat.cs @@ -14,7 +14,7 @@ namespace Ryujinx.Ui.Common.Configuration /// <summary> /// The current version of the file format /// </summary> - public const int CurrentVersion = 44; + public const int CurrentVersion = 45; /// <summary> /// Version of the configuration file format @@ -247,6 +247,11 @@ namespace Ryujinx.Ui.Common.Configuration public List<string> GameDirs { get; set; } /// <summary> + /// A list of file types to be hidden in the games List + /// </summary> + public ShownFileTypes ShownFileTypes { get; set; } + + /// <summary> /// Language Code for the UI /// </summary> public string LanguageCode { get; set; } diff --git a/Ryujinx.Ui.Common/Configuration/ConfigurationState.cs b/Ryujinx.Ui.Common/Configuration/ConfigurationState.cs index 82a331c1..12cc1b8f 100644 --- a/Ryujinx.Ui.Common/Configuration/ConfigurationState.cs +++ b/Ryujinx.Ui.Common/Configuration/ConfigurationState.cs @@ -61,6 +61,29 @@ namespace Ryujinx.Ui.Common.Configuration } /// <summary> + /// Used to toggle which file types are shown in the UI + /// </summary> + public class ShownFileTypeSettings + { + public ReactiveObject<bool> NSP { get; private set; } + public ReactiveObject<bool> PFS0 { get; private set; } + public ReactiveObject<bool> XCI { get; private set; } + public ReactiveObject<bool> NCA { get; private set; } + public ReactiveObject<bool> NRO { get; private set; } + public ReactiveObject<bool> NSO { get; private set; } + + public ShownFileTypeSettings() + { + NSP = new ReactiveObject<bool>(); + PFS0 = new ReactiveObject<bool>(); + XCI = new ReactiveObject<bool>(); + NCA = new ReactiveObject<bool>(); + NRO = new ReactiveObject<bool>(); + NSO = new ReactiveObject<bool>(); + } + } + + /// <summary> /// Used to toggle columns in the GUI /// </summary> public Columns GuiColumns { get; private set; } @@ -76,6 +99,11 @@ namespace Ryujinx.Ui.Common.Configuration public ReactiveObject<List<string>> GameDirs { get; private set; } /// <summary> + /// A list of file types to be hidden in the games List + /// </summary> + public ShownFileTypeSettings ShownFileTypes { get; private set; } + + /// <summary> /// Language Code for the UI /// </summary> public ReactiveObject<string> LanguageCode { get; private set; } @@ -135,6 +163,7 @@ namespace Ryujinx.Ui.Common.Configuration GuiColumns = new Columns(); ColumnSort = new ColumnSortSettings(); GameDirs = new ReactiveObject<List<string>>(); + ShownFileTypes = new ShownFileTypeSettings(); EnableCustomTheme = new ReactiveObject<bool>(); CustomThemePath = new ReactiveObject<string>(); BaseStyle = new ReactiveObject<string>(); @@ -618,6 +647,15 @@ namespace Ryujinx.Ui.Common.Configuration SortAscending = Ui.ColumnSort.SortAscending }, GameDirs = Ui.GameDirs, + ShownFileTypes = new ShownFileTypes + { + NSP = Ui.ShownFileTypes.NSP, + PFS0 = Ui.ShownFileTypes.PFS0, + XCI = Ui.ShownFileTypes.XCI, + NCA = Ui.ShownFileTypes.NCA, + NRO = Ui.ShownFileTypes.NRO, + NSO = Ui.ShownFileTypes.NSO, + }, LanguageCode = Ui.LanguageCode, EnableCustomTheme = Ui.EnableCustomTheme, CustomThemePath = Ui.CustomThemePath, @@ -702,7 +740,13 @@ namespace Ryujinx.Ui.Common.Configuration Ui.ColumnSort.SortColumnId.Value = 0; Ui.ColumnSort.SortAscending.Value = false; Ui.GameDirs.Value = new List<string>(); - Ui.EnableCustomTheme.Value = false; + Ui.ShownFileTypes.NSP.Value = true; + Ui.ShownFileTypes.PFS0.Value = true; + Ui.ShownFileTypes.XCI.Value = true; + Ui.ShownFileTypes.NCA.Value = true; + Ui.ShownFileTypes.NRO.Value = true; + Ui.ShownFileTypes.NSO.Value = true; + Ui.EnableCustomTheme.Value = true; Ui.LanguageCode.Value = "en_US"; Ui.CustomThemePath.Value = ""; Ui.BaseStyle.Value = "Dark"; @@ -1238,7 +1282,7 @@ namespace Ryujinx.Ui.Common.Configuration if (configurationFileFormat.Version < 44) { - Ryujinx.Common.Logging.Logger.Warning?.Print(LogClass.Application, $"Outdated configuration version {configurationFileFormat.Version}, migrating to version 42."); + Ryujinx.Common.Logging.Logger.Warning?.Print(LogClass.Application, $"Outdated configuration version {configurationFileFormat.Version}, migrating to version 44."); configurationFileFormat.AntiAliasing = AntiAliasing.None; configurationFileFormat.ScalingFilter = ScalingFilter.Bilinear; @@ -1247,6 +1291,23 @@ namespace Ryujinx.Ui.Common.Configuration configurationFileUpdated = true; } + if (configurationFileFormat.Version < 45) + { + Ryujinx.Common.Logging.Logger.Warning?.Print(LogClass.Application, $"Outdated configuration version {configurationFileFormat.Version}, migrating to version 45."); + + configurationFileFormat.ShownFileTypes = new ShownFileTypes + { + NSP = true, + PFS0 = true, + XCI = true, + NCA = true, + NRO = true, + NSO = true + }; + + configurationFileUpdated = true; + } + Logger.EnableFileLog.Value = configurationFileFormat.EnableFileLog; Graphics.ResScale.Value = configurationFileFormat.ResScale; Graphics.ResScaleCustom.Value = configurationFileFormat.ResScaleCustom; @@ -1305,6 +1366,12 @@ namespace Ryujinx.Ui.Common.Configuration Ui.ColumnSort.SortColumnId.Value = configurationFileFormat.ColumnSort.SortColumnId; Ui.ColumnSort.SortAscending.Value = configurationFileFormat.ColumnSort.SortAscending; Ui.GameDirs.Value = configurationFileFormat.GameDirs; + Ui.ShownFileTypes.NSP.Value = configurationFileFormat.ShownFileTypes.NSP; + Ui.ShownFileTypes.PFS0.Value = configurationFileFormat.ShownFileTypes.PFS0; + Ui.ShownFileTypes.XCI.Value = configurationFileFormat.ShownFileTypes.XCI; + Ui.ShownFileTypes.NCA.Value = configurationFileFormat.ShownFileTypes.NCA; + Ui.ShownFileTypes.NRO.Value = configurationFileFormat.ShownFileTypes.NRO; + Ui.ShownFileTypes.NSO.Value = configurationFileFormat.ShownFileTypes.NSO; Ui.EnableCustomTheme.Value = configurationFileFormat.EnableCustomTheme; Ui.LanguageCode.Value = configurationFileFormat.LanguageCode; Ui.CustomThemePath.Value = configurationFileFormat.CustomThemePath; diff --git a/Ryujinx.Ui.Common/Configuration/FileTypes.cs b/Ryujinx.Ui.Common/Configuration/FileTypes.cs new file mode 100644 index 00000000..0b8b7384 --- /dev/null +++ b/Ryujinx.Ui.Common/Configuration/FileTypes.cs @@ -0,0 +1,12 @@ +namespace Ryujinx.Ui.Common +{ + public enum FileTypes + { + NSP, + PFS0, + XCI, + NCA, + NRO, + NSO + } +} diff --git a/Ryujinx.Ui.Common/Configuration/Ui/ShownFileTypes.cs b/Ryujinx.Ui.Common/Configuration/Ui/ShownFileTypes.cs new file mode 100644 index 00000000..c0b76e85 --- /dev/null +++ b/Ryujinx.Ui.Common/Configuration/Ui/ShownFileTypes.cs @@ -0,0 +1,12 @@ +namespace Ryujinx.Ui.Common.Configuration.Ui +{ + public struct ShownFileTypes + { + public bool NSP { get; set; } + public bool PFS0 { get; set; } + public bool XCI { get; set; } + public bool NCA { get; set; } + public bool NRO { get; set; } + public bool NSO { get; set; } + } +} diff --git a/Ryujinx.Ui.Common/Extensions/FileTypeExtensions.cs b/Ryujinx.Ui.Common/Extensions/FileTypeExtensions.cs new file mode 100644 index 00000000..e2ac4950 --- /dev/null +++ b/Ryujinx.Ui.Common/Extensions/FileTypeExtensions.cs @@ -0,0 +1,25 @@ +using System; +using static Ryujinx.Ui.Common.Configuration.ConfigurationState.UiSection; + +namespace Ryujinx.Ui.Common +{ + public static class FileTypesExtensions + { + /// <summary> + /// Gets the current <see cref="ShownFileTypeSettings"/> value for the correlating FileType name. + /// </summary> + /// <param name="type">The name of the <see cref="ShownFileTypeSettings"/> parameter to get the value of.</param> + /// <param name="config">The config instance to get the value from.</param> + /// <returns>The current value of the setting. Value is <see langword="true"/> if the file type is the be shown on the games list, <see langword="false"/> otherwise.</returns> + public static bool GetConfigValue(this FileTypes type, ShownFileTypeSettings config) => type switch + { + FileTypes.NSP => config.NSP.Value, + FileTypes.PFS0 => config.PFS0.Value, + FileTypes.XCI => config.XCI.Value, + FileTypes.NCA => config.NCA.Value, + FileTypes.NRO => config.NRO.Value, + FileTypes.NSO => config.NSO.Value, + _ => throw new ArgumentOutOfRangeException(nameof(type), type, null) + }; + } +} |
