Fix size slider not working correctly with rounding

This commit is contained in:
trawzified 2023-12-31 00:23:43 +01:00
parent 95ff0dac6d
commit 58d0fdc9c3
2 changed files with 21 additions and 29 deletions

View File

@ -72,8 +72,6 @@ namespace Wabbajack
[Reactive] public List<GameTypeEntry> 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<double, Func<ModListMetadataVM, bool>>(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<double, Func<ModListMetadataVM, bool>>(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);
});

View File

@ -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)