mirror of
https://github.com/ppy/osu.git
synced 2024-12-16 00:02:54 +08:00
Merge pull request #7686 from TheWildTree/profile-page-corrections
Fix cosmetic issues in UserProfileOverlay
This commit is contained in:
commit
472f9d3ed1
@ -4,11 +4,13 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Shapes;
|
using osu.Framework.Graphics.Shapes;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.Profile.Header.Components;
|
using osu.Game.Overlays.Profile.Header.Components;
|
||||||
using osu.Game.Users;
|
using osu.Game.Users;
|
||||||
using osuTK;
|
using osuTK;
|
||||||
@ -24,6 +26,9 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
typeof(LineGraph)
|
typeof(LineGraph)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
[Cached]
|
||||||
|
private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Pink);
|
||||||
|
|
||||||
public TestSceneRankGraph()
|
public TestSceneRankGraph()
|
||||||
{
|
{
|
||||||
RankGraph graph;
|
RankGraph graph;
|
||||||
|
@ -29,9 +29,9 @@ namespace osu.Game.Graphics
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public DrawableDate(DateTimeOffset date, float textSize = OsuFont.DEFAULT_FONT_SIZE)
|
public DrawableDate(DateTimeOffset date, float textSize = OsuFont.DEFAULT_FONT_SIZE, bool italic = true)
|
||||||
{
|
{
|
||||||
Font = OsuFont.GetFont(weight: FontWeight.Regular, size: textSize, italics: true);
|
Font = OsuFont.GetFont(weight: FontWeight.Regular, size: textSize, italics: italic);
|
||||||
Date = date;
|
Date = date;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
// 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.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
@ -82,7 +82,7 @@ namespace osu.Game.Overlays.Profile.Header
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
topLinkContainer.AddText("Joined ");
|
topLinkContainer.AddText("Joined ");
|
||||||
topLinkContainer.AddText(new DrawableDate(user.JoinDate), embolden);
|
topLinkContainer.AddText(new DrawableDate(user.JoinDate, italic: false), embolden);
|
||||||
}
|
}
|
||||||
|
|
||||||
addSpacer(topLinkContainer);
|
addSpacer(topLinkContainer);
|
||||||
@ -95,7 +95,7 @@ namespace osu.Game.Overlays.Profile.Header
|
|||||||
else if (user.LastVisit.HasValue)
|
else if (user.LastVisit.HasValue)
|
||||||
{
|
{
|
||||||
topLinkContainer.AddText("Last seen ");
|
topLinkContainer.AddText("Last seen ");
|
||||||
topLinkContainer.AddText(new DrawableDate(user.LastVisit.Value), embolden);
|
topLinkContainer.AddText(new DrawableDate(user.LastVisit.Value, italic: false), embolden);
|
||||||
|
|
||||||
addSpacer(topLinkContainer);
|
addSpacer(topLinkContainer);
|
||||||
}
|
}
|
||||||
@ -111,34 +111,42 @@ namespace osu.Game.Overlays.Profile.Header
|
|||||||
topLinkContainer.AddText("Contributed ");
|
topLinkContainer.AddText("Contributed ");
|
||||||
topLinkContainer.AddLink($@"{user.PostCount:#,##0} forum posts", $"https://osu.ppy.sh/users/{user.Id}/posts", creationParameters: embolden);
|
topLinkContainer.AddLink($@"{user.PostCount:#,##0} forum posts", $"https://osu.ppy.sh/users/{user.Id}/posts", creationParameters: embolden);
|
||||||
|
|
||||||
string websiteWithoutProtcol = user.Website;
|
string websiteWithoutProtocol = user.Website;
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(websiteWithoutProtcol))
|
if (!string.IsNullOrEmpty(websiteWithoutProtocol))
|
||||||
{
|
{
|
||||||
if (Uri.TryCreate(websiteWithoutProtcol, UriKind.Absolute, out var uri))
|
if (Uri.TryCreate(websiteWithoutProtocol, UriKind.Absolute, out var uri))
|
||||||
{
|
{
|
||||||
websiteWithoutProtcol = uri.Host + uri.PathAndQuery + uri.Fragment;
|
websiteWithoutProtocol = uri.Host + uri.PathAndQuery + uri.Fragment;
|
||||||
websiteWithoutProtcol = websiteWithoutProtcol.TrimEnd('/');
|
websiteWithoutProtocol = websiteWithoutProtocol.TrimEnd('/');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tryAddInfo(FontAwesome.Solid.MapMarker, user.Location);
|
bool anyInfoAdded = false;
|
||||||
tryAddInfo(OsuIcon.Heart, user.Interests);
|
|
||||||
tryAddInfo(FontAwesome.Solid.Suitcase, user.Occupation);
|
anyInfoAdded |= tryAddInfo(FontAwesome.Solid.MapMarker, user.Location);
|
||||||
bottomLinkContainer.NewLine();
|
anyInfoAdded |= tryAddInfo(OsuIcon.Heart, user.Interests);
|
||||||
|
anyInfoAdded |= tryAddInfo(FontAwesome.Solid.Suitcase, user.Occupation);
|
||||||
|
|
||||||
|
if (anyInfoAdded)
|
||||||
|
bottomLinkContainer.NewLine();
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(user.Twitter))
|
if (!string.IsNullOrEmpty(user.Twitter))
|
||||||
tryAddInfo(FontAwesome.Brands.Twitter, "@" + user.Twitter, $@"https://twitter.com/{user.Twitter}");
|
anyInfoAdded |= tryAddInfo(FontAwesome.Brands.Twitter, "@" + user.Twitter, $@"https://twitter.com/{user.Twitter}");
|
||||||
tryAddInfo(FontAwesome.Brands.Discord, user.Discord);
|
anyInfoAdded |= tryAddInfo(FontAwesome.Brands.Discord, user.Discord);
|
||||||
tryAddInfo(FontAwesome.Brands.Skype, user.Skype, @"skype:" + user.Skype + @"?chat");
|
anyInfoAdded |= tryAddInfo(FontAwesome.Brands.Skype, user.Skype, @"skype:" + user.Skype + @"?chat");
|
||||||
tryAddInfo(FontAwesome.Brands.Lastfm, user.Lastfm, $@"https://last.fm/users/{user.Lastfm}");
|
anyInfoAdded |= tryAddInfo(FontAwesome.Brands.Lastfm, user.Lastfm, $@"https://last.fm/users/{user.Lastfm}");
|
||||||
tryAddInfo(FontAwesome.Solid.Link, websiteWithoutProtcol, user.Website);
|
anyInfoAdded |= tryAddInfo(FontAwesome.Solid.Link, websiteWithoutProtocol, user.Website);
|
||||||
|
|
||||||
|
// If no information was added to the bottomLinkContainer, hide it to avoid unwanted padding
|
||||||
|
bottomLinkContainer.Alpha = anyInfoAdded ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addSpacer(OsuTextFlowContainer textFlow) => textFlow.AddArbitraryDrawable(new Container { Width = 15 });
|
private void addSpacer(OsuTextFlowContainer textFlow) => textFlow.AddArbitraryDrawable(new Container { Width = 15 });
|
||||||
|
|
||||||
private void tryAddInfo(IconUsage icon, string content, string link = null)
|
private bool tryAddInfo(IconUsage icon, string content, string link = null)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(content)) return;
|
if (string.IsNullOrEmpty(content)) return false;
|
||||||
|
|
||||||
// newlines could be contained in API returned user content.
|
// newlines could be contained in API returned user content.
|
||||||
content = content.Replace("\n", " ");
|
content = content.Replace("\n", " ");
|
||||||
@ -155,6 +163,7 @@ namespace osu.Game.Overlays.Profile.Header
|
|||||||
bottomLinkContainer.AddText(" " + content, embolden);
|
bottomLinkContainer.AddText(" " + content, embolden);
|
||||||
|
|
||||||
addSpacer(bottomLinkContainer);
|
addSpacer(bottomLinkContainer);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void embolden(SpriteText text) => text.Font = text.Font.With(weight: FontWeight.Bold);
|
private void embolden(SpriteText text) => text.Font = text.Font.With(weight: FontWeight.Bold);
|
||||||
|
@ -29,7 +29,7 @@ namespace osu.Game.Overlays.Profile.Header.Components
|
|||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(OsuColour colours)
|
private void load(OverlayColourProvider colourProvider)
|
||||||
{
|
{
|
||||||
InternalChildren = new Drawable[]
|
InternalChildren = new Drawable[]
|
||||||
{
|
{
|
||||||
@ -42,7 +42,7 @@ namespace osu.Game.Overlays.Profile.Header.Components
|
|||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
BackgroundColour = Color4.Black,
|
BackgroundColour = Color4.Black,
|
||||||
Direction = BarDirection.LeftToRight,
|
Direction = BarDirection.LeftToRight,
|
||||||
AccentColour = colours.Yellow
|
AccentColour = colourProvider.Highlight1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
levelProgressText = new OsuSpriteText
|
levelProgressText = new OsuSpriteText
|
||||||
|
@ -2,12 +2,11 @@
|
|||||||
// See the LICENCE file in the repository root for full licence text.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Shapes;
|
using osu.Framework.Graphics.Shapes;
|
||||||
using osu.Game.Graphics;
|
|
||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
using osuTK.Graphics;
|
|
||||||
|
|
||||||
namespace osu.Game.Overlays.Profile.Header.Components
|
namespace osu.Game.Overlays.Profile.Header.Components
|
||||||
{
|
{
|
||||||
@ -24,9 +23,6 @@ namespace osu.Game.Overlays.Profile.Header.Components
|
|||||||
{
|
{
|
||||||
AutoSizeAxes = Axes.X;
|
AutoSizeAxes = Axes.X;
|
||||||
|
|
||||||
IdleColour = Color4.Black;
|
|
||||||
HoverColour = OsuColour.Gray(0.1f);
|
|
||||||
|
|
||||||
base.Content.Add(new CircularContainer
|
base.Content.Add(new CircularContainer
|
||||||
{
|
{
|
||||||
Masking = true,
|
Masking = true,
|
||||||
@ -47,5 +43,12 @@ namespace osu.Game.Overlays.Profile.Header.Components
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[BackgroundDependencyLoader]
|
||||||
|
private void load(OverlayColourProvider colourProvider)
|
||||||
|
{
|
||||||
|
IdleColour = colourProvider.Background6;
|
||||||
|
HoverColour = colourProvider.Background5;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -167,9 +167,9 @@ namespace osu.Game.Overlays.Profile.Header.Components
|
|||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(OsuColour colours)
|
private void load(OverlayColourProvider colourProvider, OsuColour colours)
|
||||||
{
|
{
|
||||||
ballBg.Colour = colours.GreySeafoamDarker;
|
ballBg.Colour = colourProvider.Background5;
|
||||||
movingBall.BorderColour = line.Colour = colours.Yellow;
|
movingBall.BorderColour = line.Colour = colours.Yellow;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -270,7 +270,9 @@ namespace osu.Game.Overlays.Profile.Header.Components
|
|||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(OsuColour colours)
|
private void load(OsuColour colours)
|
||||||
{
|
{
|
||||||
background.Colour = colours.GreySeafoamDark;
|
// Temporary colour since it's currently impossible to change it without bugs (see https://github.com/ppy/osu-framework/issues/3231)
|
||||||
|
// If above is fixed, this should use OverlayColourProvider
|
||||||
|
background.Colour = colours.Gray1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool SetContent(object content)
|
public bool SetContent(object content)
|
||||||
|
@ -67,7 +67,7 @@ namespace osu.Game.Overlays
|
|||||||
RelativeSizeAxes = Axes.X,
|
RelativeSizeAxes = Axes.X,
|
||||||
Anchor = Anchor.TopCentre,
|
Anchor = Anchor.TopCentre,
|
||||||
Origin = Anchor.TopCentre,
|
Origin = Anchor.TopCentre,
|
||||||
Height = 30
|
Height = 34
|
||||||
};
|
};
|
||||||
|
|
||||||
Add(new Box
|
Add(new Box
|
||||||
|
Loading…
Reference in New Issue
Block a user