// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. #nullable disable using osu.Framework.Bindables; using osu.Framework.Graphics.UserInterface; using osu.Game.Graphics.UserInterface; using osu.Game.Online.Rooms; namespace osu.Game.Screens.OnlinePlay.Multiplayer.Match.Playlist { public class MultiplayerPlaylistTabControl : OsuTabControl { public readonly IBindableList QueueItems = new BindableList(); protected override TabItem CreateTabItem(MultiplayerPlaylistDisplayMode value) { if (value == MultiplayerPlaylistDisplayMode.Queue) return new QueueTabItem { QueueItems = { BindTarget = QueueItems } }; return base.CreateTabItem(value); } private class QueueTabItem : OsuTabItem { public readonly IBindableList QueueItems = new BindableList(); public QueueTabItem() : base(MultiplayerPlaylistDisplayMode.Queue) { } protected override void LoadComplete() { base.LoadComplete(); QueueItems.BindCollectionChanged((_, _) => Text.Text = QueueItems.Count > 0 ? $"Queue ({QueueItems.Count})" : "Queue", true); } } } }