Split out the channel list labels from the channel list item flow

This commit is contained in:
Jai Sharma 2022-05-25 15:15:46 +01:00
parent c0da05dda0
commit 997fc716e8

View File

@ -57,12 +57,14 @@ namespace osu.Game.Overlays.Chat.ChannelList
AutoSizeAxes = Axes.Y, AutoSizeAxes = Axes.Y,
Children = new Drawable[] Children = new Drawable[]
{ {
publicChannelFlow = new ChannelListItemFlow("CHANNELS"), new ChannelListLabel("CHANNELS"),
publicChannelFlow = new ChannelListItemFlow(),
selector = new ChannelListItem(ChannelListingChannel) selector = new ChannelListItem(ChannelListingChannel)
{ {
Margin = new MarginPadding { Bottom = 10 }, Margin = new MarginPadding { Bottom = 10 },
}, },
privateChannelFlow = new ChannelListItemFlow("DIRECT MESSAGES"), new ChannelListLabel("DIRECT MESSAGES"),
privateChannelFlow = new ChannelListItemFlow(),
}, },
}, },
}, },
@ -105,7 +107,7 @@ namespace osu.Game.Overlays.Chat.ChannelList
return channelMap[channel]; return channelMap[channel];
} }
public void ScrollChannelIntoView(Channel channel) => scroll.ScrollIntoView(this.GetItem(channel)); public void ScrollChannelIntoView(Channel channel) => scroll.ScrollIntoView(GetItem(channel));
private ChannelListItemFlow getFlowForChannel(Channel channel) private ChannelListItemFlow getFlowForChannel(Channel channel)
{ {
@ -118,28 +120,29 @@ namespace osu.Game.Overlays.Chat.ChannelList
return privateChannelFlow; return privateChannelFlow;
default: default:
throw new ArgumentOutOfRangeException(); return publicChannelFlow;
} }
} }
private class ChannelListItemFlow : FillFlowContainer private class ChannelListLabel : OsuSpriteText
{ {
public IEnumerable<Channel> Channels => Children.Where(c => c is ChannelListItem) public ChannelListLabel(string label)
.Cast<ChannelListItem>() {
.Select(c => c.Channel); Text = label;
Margin = new MarginPadding { Left = 18, Bottom = 5 };
Font = OsuFont.Torus.With(size: 12, weight: FontWeight.SemiBold);
}
}
public ChannelListItemFlow(string label) private class ChannelListItemFlow : FillFlowContainer<ChannelListItem>
{
public IEnumerable<Channel> Channels => Children.Select(c => c.Channel);
public ChannelListItemFlow()
{ {
Direction = FillDirection.Vertical; Direction = FillDirection.Vertical;
RelativeSizeAxes = Axes.X; RelativeSizeAxes = Axes.X;
AutoSizeAxes = Axes.Y; AutoSizeAxes = Axes.Y;
Add(new OsuSpriteText
{
Text = label,
Margin = new MarginPadding { Left = 18, Bottom = 5 },
Font = OsuFont.Torus.With(size: 12, weight: FontWeight.SemiBold),
});
} }
} }
} }