From 76edcb4a67d6ed4ef0a2008430addf78d6ba2050 Mon Sep 17 00:00:00 2001 From: Ben Pig Chu Date: Sat, 22 Jul 2017 15:26:47 +0800 Subject: [PATCH 1/2] Update playlist when adding or removing beatmap set --- osu.Game/Overlays/Music/PlaylistList.cs | 11 +++++++++++ osu.Game/Overlays/Music/PlaylistOverlay.cs | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/osu.Game/Overlays/Music/PlaylistList.cs b/osu.Game/Overlays/Music/PlaylistList.cs index ca46bdea95..e961b1d69b 100644 --- a/osu.Game/Overlays/Music/PlaylistList.cs +++ b/osu.Game/Overlays/Music/PlaylistList.cs @@ -73,6 +73,17 @@ namespace osu.Game.Overlays.Music }; } + public void AddBeatmapSet(BeatmapSetInfo beatmapSet) + { + items.Add(new PlaylistItem(beatmapSet) { OnSelect = itemSelected }); + } + + public void RemoveBeatmapSet(BeatmapSetInfo beatmapSet) + { + PlaylistItem itemToRemove = items.Children.FirstOrDefault(item => item.BeatmapSetInfo == beatmapSet); + if (itemToRemove != null) items.Remove(itemToRemove); + } + private class ItemSearchContainer : FillFlowContainer, IHasFilterableChildren { public string[] FilterTerms => new string[] { }; diff --git a/osu.Game/Overlays/Music/PlaylistOverlay.cs b/osu.Game/Overlays/Music/PlaylistOverlay.cs index 1e4c3c5ff6..3e93a80872 100644 --- a/osu.Game/Overlays/Music/PlaylistOverlay.cs +++ b/osu.Game/Overlays/Music/PlaylistOverlay.cs @@ -80,6 +80,9 @@ namespace osu.Game.Overlays.Music list.BeatmapSets = BeatmapSets = beatmaps.GetAllWithChildren(b => !b.DeletePending).ToList(); + beatmaps.BeatmapSetAdded += onBeatmapSetAdded; + beatmaps.BeatmapSetRemoved += onBeatmapSetRemoved; + beatmapBacking.BindTo(game.Beatmap); filter.Search.OnCommit = (sender, newText) => @@ -89,6 +92,17 @@ namespace osu.Game.Overlays.Music }; } + protected override void Dispose(bool isDisposing) + { + if (beatmaps != null) + { + beatmaps.BeatmapSetAdded -= onBeatmapSetAdded; + beatmaps.BeatmapSetRemoved -= onBeatmapSetRemoved; + } + + base.Dispose(isDisposing); + } + protected override void LoadComplete() { base.LoadComplete(); @@ -124,6 +138,10 @@ namespace osu.Game.Overlays.Music playSpecified(set.Beatmaps[0]); } + private void onBeatmapSetAdded(BeatmapSetInfo s) => list.AddBeatmapSet(s); + + private void onBeatmapSetRemoved(BeatmapSetInfo s) => list.RemoveBeatmapSet(s); + public void PlayPrevious() { var currentID = beatmapBacking.Value?.BeatmapSetInfo.ID ?? -1; From 950c55d6d0ad021ae5522d851261927c0a2e1fac Mon Sep 17 00:00:00 2001 From: Ben Pig Chu Date: Mon, 24 Jul 2017 13:10:51 +0800 Subject: [PATCH 2/2] No need to dispose/unbind the delegates --- osu.Game/Overlays/Music/PlaylistOverlay.cs | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/osu.Game/Overlays/Music/PlaylistOverlay.cs b/osu.Game/Overlays/Music/PlaylistOverlay.cs index 3e93a80872..cd8fa5377d 100644 --- a/osu.Game/Overlays/Music/PlaylistOverlay.cs +++ b/osu.Game/Overlays/Music/PlaylistOverlay.cs @@ -80,8 +80,8 @@ namespace osu.Game.Overlays.Music list.BeatmapSets = BeatmapSets = beatmaps.GetAllWithChildren(b => !b.DeletePending).ToList(); - beatmaps.BeatmapSetAdded += onBeatmapSetAdded; - beatmaps.BeatmapSetRemoved += onBeatmapSetRemoved; + beatmaps.BeatmapSetAdded += s => list.AddBeatmapSet(s); + beatmaps.BeatmapSetRemoved += s => list.RemoveBeatmapSet(s); beatmapBacking.BindTo(game.Beatmap); @@ -92,17 +92,6 @@ namespace osu.Game.Overlays.Music }; } - protected override void Dispose(bool isDisposing) - { - if (beatmaps != null) - { - beatmaps.BeatmapSetAdded -= onBeatmapSetAdded; - beatmaps.BeatmapSetRemoved -= onBeatmapSetRemoved; - } - - base.Dispose(isDisposing); - } - protected override void LoadComplete() { base.LoadComplete(); @@ -138,10 +127,6 @@ namespace osu.Game.Overlays.Music playSpecified(set.Beatmaps[0]); } - private void onBeatmapSetAdded(BeatmapSetInfo s) => list.AddBeatmapSet(s); - - private void onBeatmapSetRemoved(BeatmapSetInfo s) => list.RemoveBeatmapSet(s); - public void PlayPrevious() { var currentID = beatmapBacking.Value?.BeatmapSetInfo.ID ?? -1;