mirror of
https://github.com/ppy/osu.git
synced 2025-02-06 21:02:59 +08:00
Merge branch 'master' into add-nofitication-overlay-push-bg
This commit is contained in:
commit
7cbf271645
@ -3,19 +3,17 @@
|
|||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using NUnit.Framework;
|
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
|
||||||
using osu.Framework.MathUtils;
|
using osu.Framework.MathUtils;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.Notifications;
|
using osu.Game.Overlays.Notifications;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual
|
namespace osu.Game.Tests.Visual
|
||||||
{
|
{
|
||||||
[TestFixture]
|
|
||||||
public class TestCaseNotificationOverlay : OsuTestCase
|
public class TestCaseNotificationOverlay : OsuTestCase
|
||||||
{
|
{
|
||||||
private readonly NotificationOverlay manager;
|
private readonly NotificationOverlay manager;
|
||||||
|
private readonly List<ProgressNotification> progressingNotifications = new List<ProgressNotification>();
|
||||||
|
|
||||||
public TestCaseNotificationOverlay()
|
public TestCaseNotificationOverlay()
|
||||||
{
|
{
|
||||||
@ -24,15 +22,14 @@ namespace osu.Game.Tests.Visual
|
|||||||
Content.Add(manager = new NotificationOverlay
|
Content.Add(manager = new NotificationOverlay
|
||||||
{
|
{
|
||||||
Anchor = Anchor.TopRight,
|
Anchor = Anchor.TopRight,
|
||||||
Origin = Anchor.TopRight,
|
Origin = Anchor.TopRight
|
||||||
});
|
});
|
||||||
|
|
||||||
AddToggleStep(@"show", state => manager.State = state ? Visibility.Visible : Visibility.Hidden);
|
AddStep(@"toggle", manager.ToggleVisibility);
|
||||||
|
AddStep(@"simple #1", sendHelloNotification);
|
||||||
AddStep(@"simple #1", sendNotification1);
|
AddStep(@"simple #2", sendAmazingNotification);
|
||||||
AddStep(@"simple #2", sendNotification2);
|
AddStep(@"progress #1", sendUploadProgress);
|
||||||
AddStep(@"progress #1", sendProgress1);
|
AddStep(@"progress #2", sendDownloadProgress);
|
||||||
AddStep(@"progress #2", sendProgress2);
|
|
||||||
AddStep(@"barrage", () => sendBarrage());
|
AddStep(@"barrage", () => sendBarrage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,16 +38,16 @@ namespace osu.Game.Tests.Visual
|
|||||||
switch (RNG.Next(0, 4))
|
switch (RNG.Next(0, 4))
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
sendNotification1();
|
sendHelloNotification();
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
sendNotification2();
|
sendAmazingNotification();
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
sendProgress1();
|
sendUploadProgress();
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
sendProgress2();
|
sendDownloadProgress();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,7 +77,7 @@ namespace osu.Game.Tests.Visual
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendProgress2()
|
private void sendDownloadProgress()
|
||||||
{
|
{
|
||||||
var n = new ProgressNotification
|
var n = new ProgressNotification
|
||||||
{
|
{
|
||||||
@ -91,9 +88,7 @@ namespace osu.Game.Tests.Visual
|
|||||||
progressingNotifications.Add(n);
|
progressingNotifications.Add(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly List<ProgressNotification> progressingNotifications = new List<ProgressNotification>();
|
private void sendUploadProgress()
|
||||||
|
|
||||||
private void sendProgress1()
|
|
||||||
{
|
{
|
||||||
var n = new ProgressNotification
|
var n = new ProgressNotification
|
||||||
{
|
{
|
||||||
@ -104,12 +99,12 @@ namespace osu.Game.Tests.Visual
|
|||||||
progressingNotifications.Add(n);
|
progressingNotifications.Add(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendNotification2()
|
private void sendAmazingNotification()
|
||||||
{
|
{
|
||||||
manager.Post(new SimpleNotification { Text = @"You are amazing" });
|
manager.Post(new SimpleNotification { Text = @"You are amazing" });
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendNotification1()
|
private void sendHelloNotification()
|
||||||
{
|
{
|
||||||
manager.Post(new SimpleNotification { Text = @"Welcome to osu!. Enjoy your stay!" });
|
manager.Post(new SimpleNotification { Text = @"Welcome to osu!. Enjoy your stay!" });
|
||||||
}
|
}
|
||||||
|
@ -209,6 +209,7 @@ namespace osu.Game
|
|||||||
|
|
||||||
loadComponentSingleFile(notifications = new NotificationOverlay
|
loadComponentSingleFile(notifications = new NotificationOverlay
|
||||||
{
|
{
|
||||||
|
GetToolbarHeight = () => ToolbarOffset,
|
||||||
Depth = -4,
|
Depth = -4,
|
||||||
Anchor = Anchor.TopRight,
|
Anchor = Anchor.TopRight,
|
||||||
Origin = Anchor.TopRight,
|
Origin = Anchor.TopRight,
|
||||||
|
@ -10,6 +10,7 @@ using osu.Game.Overlays.Notifications;
|
|||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
using osu.Framework.Graphics.Shapes;
|
using osu.Framework.Graphics.Shapes;
|
||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
|
using System;
|
||||||
|
|
||||||
namespace osu.Game.Overlays
|
namespace osu.Game.Overlays
|
||||||
{
|
{
|
||||||
@ -19,9 +20,13 @@ namespace osu.Game.Overlays
|
|||||||
|
|
||||||
public const float TRANSITION_LENGTH = 600;
|
public const float TRANSITION_LENGTH = 600;
|
||||||
|
|
||||||
private ScrollContainer scrollContainer;
|
|
||||||
private FlowContainer<NotificationSection> sections;
|
private FlowContainer<NotificationSection> sections;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Provide a source for the toolbar height.
|
||||||
|
/// </summary>
|
||||||
|
public Func<float> GetToolbarHeight;
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load()
|
private void load()
|
||||||
{
|
{
|
||||||
@ -36,12 +41,12 @@ namespace osu.Game.Overlays
|
|||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Colour = Color4.Black,
|
Colour = Color4.Black,
|
||||||
Alpha = 0.6f,
|
Alpha = 0.6f
|
||||||
},
|
},
|
||||||
scrollContainer = new OsuScrollContainer
|
new OsuScrollContainer
|
||||||
{
|
{
|
||||||
|
Masking = true,
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Margin = new MarginPadding { Top = Toolbar.Toolbar.HEIGHT },
|
|
||||||
Children = new[]
|
Children = new[]
|
||||||
{
|
{
|
||||||
sections = new FillFlowContainer<NotificationSection>
|
sections = new FillFlowContainer<NotificationSection>
|
||||||
@ -55,14 +60,14 @@ namespace osu.Game.Overlays
|
|||||||
{
|
{
|
||||||
Title = @"Notifications",
|
Title = @"Notifications",
|
||||||
ClearText = @"Clear All",
|
ClearText = @"Clear All",
|
||||||
AcceptTypes = new[] { typeof(SimpleNotification) },
|
AcceptTypes = new[] { typeof(SimpleNotification) }
|
||||||
},
|
},
|
||||||
new NotificationSection
|
new NotificationSection
|
||||||
{
|
{
|
||||||
Title = @"Running Tasks",
|
Title = @"Running Tasks",
|
||||||
ClearText = @"Cancel All",
|
ClearText = @"Cancel All",
|
||||||
AcceptTypes = new[] { typeof(ProgressNotification) },
|
AcceptTypes = new[] { typeof(ProgressNotification) }
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -103,14 +108,8 @@ namespace osu.Game.Overlays
|
|||||||
{
|
{
|
||||||
base.PopIn();
|
base.PopIn();
|
||||||
|
|
||||||
scrollContainer.MoveToX(0, TRANSITION_LENGTH, Easing.OutQuint);
|
|
||||||
this.MoveToX(0, TRANSITION_LENGTH, Easing.OutQuint);
|
this.MoveToX(0, TRANSITION_LENGTH, Easing.OutQuint);
|
||||||
this.FadeTo(1, TRANSITION_LENGTH / 2);
|
this.FadeTo(1, TRANSITION_LENGTH, Easing.OutQuint);
|
||||||
}
|
|
||||||
|
|
||||||
private void markAllRead()
|
|
||||||
{
|
|
||||||
sections.Children.ForEach(s => s.MarkAllRead());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void PopOut()
|
protected override void PopOut()
|
||||||
@ -120,7 +119,19 @@ namespace osu.Game.Overlays
|
|||||||
markAllRead();
|
markAllRead();
|
||||||
|
|
||||||
this.MoveToX(width, TRANSITION_LENGTH, Easing.OutQuint);
|
this.MoveToX(width, TRANSITION_LENGTH, Easing.OutQuint);
|
||||||
this.FadeTo(0, TRANSITION_LENGTH / 2);
|
this.FadeTo(0, TRANSITION_LENGTH, Easing.OutQuint);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void markAllRead()
|
||||||
|
{
|
||||||
|
sections.Children.ForEach(s => s.MarkAllRead());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void UpdateAfterChildren()
|
||||||
|
{
|
||||||
|
base.UpdateAfterChildren();
|
||||||
|
|
||||||
|
Padding = new MarginPadding { Top = GetToolbarHeight?.Invoke() ?? 0 };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user