mirror of https://github.com/ppy/osu
Fix `InSelectedCollection` not being applied to newly imported beatmaps
This commit is contained in:
parent
a90967715c
commit
b76e5757e1
|
@ -1,8 +1,6 @@
|
|||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
#nullable disable
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
using osu.Framework.Bindables;
|
||||
|
@ -17,10 +15,12 @@ namespace osu.Game.Overlays.Music
|
|||
{
|
||||
public class Playlist : OsuRearrangeableListContainer<Live<BeatmapSetInfo>>
|
||||
{
|
||||
public Action<Live<BeatmapSetInfo>> RequestSelection;
|
||||
public Action<Live<BeatmapSetInfo>>? RequestSelection;
|
||||
|
||||
public readonly Bindable<Live<BeatmapSetInfo>> SelectedSet = new Bindable<Live<BeatmapSetInfo>>();
|
||||
|
||||
private FilterCriteria currentCriteria = new FilterCriteria();
|
||||
|
||||
public new MarginPadding Padding
|
||||
{
|
||||
get => base.Padding;
|
||||
|
@ -31,26 +31,22 @@ public void Filter(FilterCriteria criteria)
|
|||
{
|
||||
var items = (SearchContainer<RearrangeableListItem<Live<BeatmapSetInfo>>>)ListContainer;
|
||||
|
||||
string[] currentCollectionHashes = criteria.Collection?.PerformRead(c => c.BeatmapMD5Hashes.ToArray());
|
||||
string[]? currentCollectionHashes = criteria.Collection?.PerformRead(c => c.BeatmapMD5Hashes.ToArray());
|
||||
|
||||
foreach (var item in items.OfType<PlaylistItem>())
|
||||
{
|
||||
if (currentCollectionHashes == null)
|
||||
item.InSelectedCollection = true;
|
||||
else
|
||||
{
|
||||
item.InSelectedCollection = item.Model.Value.Beatmaps.Select(b => b.MD5Hash)
|
||||
.Any(currentCollectionHashes.Contains);
|
||||
}
|
||||
item.InSelectedCollection = currentCollectionHashes == null || item.Model.Value.Beatmaps.Select(b => b.MD5Hash).Any(currentCollectionHashes.Contains);
|
||||
}
|
||||
|
||||
items.SearchTerm = criteria.SearchText;
|
||||
currentCriteria = criteria;
|
||||
}
|
||||
|
||||
public Live<BeatmapSetInfo> FirstVisibleSet => Items.FirstOrDefault(i => ((PlaylistItem)ItemMap[i]).MatchingFilter);
|
||||
public Live<BeatmapSetInfo>? FirstVisibleSet => Items.FirstOrDefault(i => ((PlaylistItem)ItemMap[i]).MatchingFilter);
|
||||
|
||||
protected override OsuRearrangeableListItem<Live<BeatmapSetInfo>> CreateOsuDrawable(Live<BeatmapSetInfo> item) => new PlaylistItem(item)
|
||||
{
|
||||
InSelectedCollection = currentCriteria.Collection?.PerformRead(c => item.Value.Beatmaps.Select(b => b.MD5Hash).Any(c.BeatmapMD5Hashes.Contains)) != false,
|
||||
SelectedSet = { BindTarget = SelectedSet },
|
||||
RequestSelection = set => RequestSelection?.Invoke(set)
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue