Create ClickablePlaceholder and make of use it where applicable.

This commit is contained in:
Lucas A
2020-03-06 22:12:02 +01:00
parent b1b3e01abd
commit e136ecec5f
6 changed files with 49 additions and 102 deletions

View File

@ -0,0 +1,38 @@
// 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.
using System;
using osu.Framework.Graphics.Sprites;
using osu.Game.Graphics.Containers;
using osu.Game.Graphics.UserInterface;
namespace osu.Game.Online.Placeholders
{
public class ClickablePlaceholder : Placeholder
{
public Action Action;
public ClickablePlaceholder(string actionMessage, IconUsage icon)
{
OsuTextFlowContainer textFlow;
AddArbitraryDrawable(new OsuAnimatedButton
{
AutoSizeAxes = Framework.Graphics.Axes.Both,
Child = textFlow = new OsuTextFlowContainer(cp => cp.Font = cp.Font.With(size: TEXT_SIZE))
{
AutoSizeAxes = Framework.Graphics.Axes.Both,
Margin = new Framework.Graphics.MarginPadding(5)
},
Action = () => Action?.Invoke()
});
textFlow.AddIcon(icon, i =>
{
i.Padding = new Framework.Graphics.MarginPadding { Right = 10 };
});
textFlow.AddText(actionMessage);
}
}
}

View File

@ -2,47 +2,20 @@
// See the LICENCE file in the repository root for full licence text.
using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Sprites;
using osu.Game.Graphics.Containers;
using osu.Game.Graphics.UserInterface;
using osu.Game.Overlays;
namespace osu.Game.Online.Placeholders
{
public sealed class LoginPlaceholder : Placeholder
public sealed class LoginPlaceholder : ClickablePlaceholder
{
[Resolved(CanBeNull = true)]
private LoginOverlay login { get; set; }
public LoginPlaceholder(string actionMessage)
: base(actionMessage, FontAwesome.Solid.UserLock)
{
AddArbitraryDrawable(new LoginButton(actionMessage));
}
private class LoginButton : OsuAnimatedButton
{
[Resolved(CanBeNull = true)]
private LoginOverlay login { get; set; }
public LoginButton(string actionMessage)
{
AutoSizeAxes = Axes.Both;
var textFlowContainer = new OsuTextFlowContainer(cp => cp.Font = cp.Font.With(size: TEXT_SIZE))
{
AutoSizeAxes = Axes.Both,
Margin = new MarginPadding(5)
};
Child = textFlowContainer;
textFlowContainer.AddIcon(FontAwesome.Solid.UserLock, icon =>
{
icon.Padding = new MarginPadding { Right = 10 };
});
textFlowContainer.AddText(actionMessage);
Action = () => login?.Show();
}
Action = () => login?.Show();
}
}
}