From 58d0fdc9c3d42ca8d3190c4c2cdcb780ed5d6c6f Mon Sep 17 00:00:00 2001 From: trawzified <55751269+tr4wzified@users.noreply.github.com> Date: Sun, 31 Dec 2023 00:23:43 +0100 Subject: [PATCH] Fix size slider not working correctly with rounding --- .../ViewModels/Gallery/ModListGalleryVM.cs | 22 ++++++--------- .../Views/ModListGalleryView.xaml.cs | 28 +++++++++---------- 2 files changed, 21 insertions(+), 29 deletions(-) diff --git a/Wabbajack.App.Wpf/ViewModels/Gallery/ModListGalleryVM.cs b/Wabbajack.App.Wpf/ViewModels/Gallery/ModListGalleryVM.cs index f32a9085..8a04b41a 100644 --- a/Wabbajack.App.Wpf/ViewModels/Gallery/ModListGalleryVM.cs +++ b/Wabbajack.App.Wpf/ViewModels/Gallery/ModListGalleryVM.cs @@ -72,8 +72,6 @@ namespace Wabbajack [Reactive] public List GameTypeEntries { get; set; } private bool _filteringOnGame; - private bool _filteringOnMinSize; - private bool _filteringOnMaxSize; private GameTypeEntry _selectedGameTypeEntry = null; public GameTypeEntry SelectedGameTypeEntry @@ -181,16 +179,20 @@ namespace Wabbajack .Select(v => v.Value) .Select>(minSize => { - _filteringOnMinSize = true; - return item => item.Metadata.DownloadMetadata.TotalSize > (minSize * Math.Pow(1024, 3)); + return item => + { + return item.Metadata.DownloadMetadata.TotalSize >= minSize; + }; }); var maxSizeFilter = this.ObservableForProperty(vm => vm.MaxSizeFilter) .Select(v => v.Value) .Select>(maxSize => { - _filteringOnMaxSize = true; - return item => item.Metadata.DownloadMetadata.TotalSize < (maxSize * Math.Pow(1024, 3)); + return item => + { + return item.Metadata.DownloadMetadata.TotalSize <= maxSize; + }; }); @@ -222,16 +224,8 @@ namespace Wabbajack var nextEntry = GameTypeEntries.FirstOrDefault(gte => previousGameType == gte.GameIdentifier); SelectedGameTypeEntry = nextEntry != default ? nextEntry : GameTypeEntries.FirstOrDefault(gte => GameType == ALL_GAME_IDENTIFIER); } - /* - if (!_filteringOnMinSize) - MinSizeModlist = ModLists.MinBy(ml => ml.Metadata.DownloadMetadata.TotalSize); - if(!_filteringOnMaxSize) - MaxSizeModlist = ModLists.MaxBy(ml => ml.Metadata.DownloadMetadata.TotalSize); - */ _filteringOnGame = false; - _filteringOnMinSize = false; - _filteringOnMaxSize = false; }) .DisposeWith(disposables); }); diff --git a/Wabbajack.App.Wpf/Views/ModListGalleryView.xaml.cs b/Wabbajack.App.Wpf/Views/ModListGalleryView.xaml.cs index 465d3d52..7f4a71d8 100644 --- a/Wabbajack.App.Wpf/Views/ModListGalleryView.xaml.cs +++ b/Wabbajack.App.Wpf/Views/ModListGalleryView.xaml.cs @@ -15,24 +15,19 @@ namespace Wabbajack this.WhenActivated(dispose => { - /* - this.WhenAny(x => x.ViewModel.BackCommand) - .BindToStrict(this, x => x.BackButton.Command) - .DisposeWith(dispose); - */ this.WhenAny(x => x.ViewModel.ModLists) .BindToStrict(this, x => x.ModListGalleryControl.ItemsSource) .DisposeWith(dispose); this.WhenAny(x => x.ViewModel.MinSizeModlist) .Where(x => x != null) - .Select(modlist => Math.Round(modlist.Metadata.DownloadMetadata.TotalSize / Math.Pow(1024, 3), 1)) + .Select(x => x.Metadata.DownloadMetadata.TotalSize / Math.Pow(1024, 3)) .BindToStrict(this, x => x.SizeSliderFilter.Minimum) .DisposeWith(dispose); this.WhenAny(x => x.ViewModel.MaxSizeModlist) .Where(x => x != null) - .Select(modlist => Math.Round(modlist.Metadata.DownloadMetadata.TotalSize / Math.Pow(1024, 3), 1)) + .Select(x => x.Metadata.DownloadMetadata.TotalSize / Math.Pow(1024, 3)) .BindToStrict(this, x => x.SizeSliderFilter.Maximum) .DisposeWith(dispose); @@ -59,14 +54,6 @@ namespace Wabbajack .DisposeWith(dispose); - /* - this.WhenAnyValue(x => x.ViewModel.Search) - .Throttle(TimeSpan.FromSeconds(0.25), RxApp.TaskpoolScheduler) - .Select(x => x?.Trim()) - .BindToStrict(this, x => x.SearchBox.Text) - .DisposeWith(dispose); - */ - this.BindStrict(ViewModel, vm => vm.Search, x => x.SearchBox.Text) .DisposeWith(dispose); this.BindStrict(ViewModel, vm => vm.OnlyInstalled, x => x.OnlyInstalledCheckbox.IsChecked) @@ -75,10 +62,21 @@ namespace Wabbajack .DisposeWith(dispose); this.BindStrict(ViewModel, vm => vm.ShowUnofficialLists, x => x.ShowUnofficialLists.IsChecked) .DisposeWith(dispose); + + this.WhenAny(x => x.SizeSliderFilter.LowerValue) + .Select(x => x * Math.Pow(1024, 3)) + .BindToStrict(ViewModel, vm => vm.MinSizeFilter) + .DisposeWith(dispose); + this.WhenAny(x => x.SizeSliderFilter.UpperValue) + .Select(x => x * Math.Pow(1024, 3)) + .BindToStrict(ViewModel, vm => vm.MaxSizeFilter) + .DisposeWith(dispose); + /* this.BindStrict(ViewModel, vm => vm.MinSizeFilter, x => x.SizeSliderFilter.LowerValue) .DisposeWith(dispose); this.BindStrict(ViewModel, vm => vm.MaxSizeFilter, x => x.SizeSliderFilter.UpperValue) .DisposeWith(dispose); + */ this.WhenAny(x => x.ViewModel.ClearFiltersCommand) .BindToStrict(this, x => x.ClearFiltersButton.Command)