diff --git a/Wabbajack.Common/GameMetaData.cs b/Wabbajack.Common/GameMetaData.cs index 6ba4e31c..59b6ebc9 100644 --- a/Wabbajack.Common/GameMetaData.cs +++ b/Wabbajack.Common/GameMetaData.cs @@ -134,6 +134,11 @@ namespace Wabbajack.Common return attrs.Length > 0 ? ((DescriptionAttribute)attrs[0]).Description : enumerationValue.ToString(); } + + public static IEnumerable GetAllItems() where T : struct + { + return Enum.GetValues(typeof(T)).Cast(); + } } public class GameRegistry diff --git a/Wabbajack/View Models/Gallery/ModListGalleryVM.cs b/Wabbajack/View Models/Gallery/ModListGalleryVM.cs index cf699770..deb5ad8e 100644 --- a/Wabbajack/View Models/Gallery/ModListGalleryVM.cs +++ b/Wabbajack/View Models/Gallery/ModListGalleryVM.cs @@ -26,6 +26,8 @@ namespace Wabbajack private int missingHashFallbackCounter; + private const string ALL_GAME_TYPE = "All"; + [Reactive] public IErrorResponse Error { get; set; } @@ -52,7 +54,7 @@ namespace Wabbajack : base(mainWindowVM) { MWVM = mainWindowVM; - GameType = "All"; + GameType = ALL_GAME_TYPE; ClearFiltersCommand = ReactiveCommand.Create( () => @@ -60,7 +62,7 @@ namespace Wabbajack OnlyInstalled = false; ShowNSFW = false; Search = string.Empty; - GameType = "All"; + GameType = ALL_GAME_TYPE; }); var random = new Random(); @@ -128,13 +130,9 @@ namespace Wabbajack .Debounce(TimeSpan.FromMilliseconds(150), RxApp.MainThreadScheduler) .Select>(GameType => (vm) => { - if (Enum.TryParse(GameType, out Game gameFilter)) - { - return gameFilter == vm.Metadata.Game; - } - else if (GameType == "All") + if (GameType == ALL_GAME_TYPE) return true; - return false; + return GameType == EnumExtensions.GetDescription(vm.Metadata.Game).ToString(); })) .Filter(this.WhenAny(x => x.ShowNSFW) .Select>(showNSFW => vm => @@ -167,8 +165,11 @@ namespace Wabbajack private List GetGameTypeEntries() { - List gameEntries = new List { "All" }; - gameEntries.AddRange(Enum.GetNames(typeof(Game))); + List gameEntries = new List { ALL_GAME_TYPE }; + foreach (var gameType in EnumExtensions.GetAllItems() ) + { + gameEntries.Add(EnumExtensions.GetDescription(gameType)); + } return gameEntries; } }