mirror of
https://github.com/ppy/osu.git
synced 2024-11-11 17:07:38 +08:00
Merge remote-tracking branch 'upstream/master' into import-from-stable
This commit is contained in:
commit
57d45b180c
@ -12,17 +12,17 @@ using osu.Framework.Graphics.Containers;
|
||||
|
||||
namespace osu.Desktop.VisualTests.Tests
|
||||
{
|
||||
internal class TestCaseNotificationManager : TestCase
|
||||
internal class TestCaseNotificationOverlay : TestCase
|
||||
{
|
||||
public override string Description => @"I handle notifications";
|
||||
|
||||
private readonly NotificationManager manager;
|
||||
private readonly NotificationOverlay manager;
|
||||
|
||||
public TestCaseNotificationManager()
|
||||
public TestCaseNotificationOverlay()
|
||||
{
|
||||
progressingNotifications.Clear();
|
||||
|
||||
Content.Add(manager = new NotificationManager
|
||||
Content.Add(manager = new NotificationOverlay
|
||||
{
|
||||
Anchor = Anchor.TopRight,
|
||||
Origin = Anchor.TopRight,
|
@ -198,7 +198,7 @@
|
||||
<Compile Include="Tests\TestCaseManiaPlayfield.cs" />
|
||||
<Compile Include="Tests\TestCaseMenuOverlays.cs" />
|
||||
<Compile Include="Tests\TestCaseMusicController.cs" />
|
||||
<Compile Include="Tests\TestCaseNotificationManager.cs" />
|
||||
<Compile Include="Tests\TestCaseNotificationOverlay.cs" />
|
||||
<Compile Include="Tests\TestCaseOnScreenDisplay.cs" />
|
||||
<Compile Include="Tests\TestCaseReplaySettingsOverlay.cs" />
|
||||
<Compile Include="Tests\TestCasePlayer.cs" />
|
||||
|
@ -25,16 +25,16 @@ namespace osu.Desktop.Overlays
|
||||
public class VersionManager : OverlayContainer
|
||||
{
|
||||
private UpdateManager updateManager;
|
||||
private NotificationManager notificationManager;
|
||||
private NotificationOverlay notificationOverlay;
|
||||
|
||||
protected override bool HideOnEscape => false;
|
||||
|
||||
public override bool HandleInput => false;
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
private void load(NotificationManager notification, OsuColour colours, TextureStore textures, OsuGameBase game)
|
||||
private void load(NotificationOverlay notification, OsuColour colours, TextureStore textures, OsuGameBase game)
|
||||
{
|
||||
notificationManager = notification;
|
||||
notificationOverlay = notification;
|
||||
|
||||
AutoSizeAxes = Axes.Both;
|
||||
Anchor = Anchor.BottomCentre;
|
||||
@ -116,7 +116,7 @@ namespace osu.Desktop.Overlays
|
||||
if (notification == null)
|
||||
{
|
||||
notification = new UpdateProgressNotification { State = ProgressNotificationState.Active };
|
||||
Schedule(() => notificationManager.Post(notification));
|
||||
Schedule(() => notificationOverlay.Post(notification));
|
||||
}
|
||||
|
||||
Schedule(() =>
|
||||
|
@ -89,7 +89,11 @@ namespace osu.Game.Beatmaps
|
||||
/// <param name="beatmapSet">The beatmap to add.</param>
|
||||
public void Add(BeatmapSetInfo beatmapSet)
|
||||
{
|
||||
Connection.InsertOrReplaceWithChildren(beatmapSet, true);
|
||||
Connection.RunInTransaction(() =>
|
||||
{
|
||||
Connection.InsertOrReplaceWithChildren(beatmapSet, true);
|
||||
});
|
||||
|
||||
BeatmapSetAdded?.Invoke(beatmapSet);
|
||||
}
|
||||
|
||||
|
@ -68,6 +68,14 @@ namespace osu.Game.Graphics.UserInterface
|
||||
|
||||
sampleClick = audio.Sample.Get(@"UI/generic-click");
|
||||
sampleHover = audio.Sample.Get(@"UI/generic-hover");
|
||||
|
||||
Enabled.ValueChanged += enabled_ValueChanged;
|
||||
Enabled.TriggerChange();
|
||||
}
|
||||
|
||||
private void enabled_ValueChanged(bool enabled)
|
||||
{
|
||||
this.FadeColour(enabled ? Color4.White : Color4.Gray, 200, Easing.OutQuint);
|
||||
}
|
||||
|
||||
protected override bool OnClick(InputState state)
|
||||
|
@ -117,7 +117,7 @@ namespace osu.Game.Online.API
|
||||
if (!authentication.HasValidAccessToken && !authentication.AuthenticateWithLogin(Username, Password))
|
||||
{
|
||||
//todo: this fails even on network-related issues. we should probably handle those differently.
|
||||
//NotificationManager.ShowMessage("Login failed!");
|
||||
//NotificationOverlay.ShowMessage("Login failed!");
|
||||
log.Add(@"Login failed!");
|
||||
Password = null;
|
||||
continue;
|
||||
@ -254,7 +254,7 @@ namespace osu.Game.Online.API
|
||||
{
|
||||
//OsuGame.Scheduler.Add(delegate
|
||||
{
|
||||
//NotificationManager.ShowMessage($@"We just went {newState}!", newState == APIState.Online ? Color4.YellowGreen : Color4.OrangeRed, 5000);
|
||||
//NotificationOverlay.ShowMessage($@"We just went {newState}!", newState == APIState.Online ? Color4.YellowGreen : Color4.OrangeRed, 5000);
|
||||
log.Add($@"We just went {newState}!");
|
||||
Scheduler.Add(delegate
|
||||
{
|
||||
|
@ -37,7 +37,7 @@ namespace osu.Game
|
||||
|
||||
private MusicController musicController;
|
||||
|
||||
private NotificationManager notificationManager;
|
||||
private NotificationOverlay notificationOverlay;
|
||||
|
||||
private DialogOverlay dialogOverlay;
|
||||
|
||||
@ -132,7 +132,7 @@ namespace osu.Game
|
||||
|
||||
if (s.Beatmap == null)
|
||||
{
|
||||
notificationManager.Post(new SimpleNotification
|
||||
notificationOverlay.Post(new SimpleNotification
|
||||
{
|
||||
Text = @"Tried to load a score for a beatmap we don't have!",
|
||||
Icon = FontAwesome.fa_life_saver,
|
||||
@ -189,7 +189,7 @@ namespace osu.Game
|
||||
Origin = Anchor.TopRight,
|
||||
}, overlayContent.Add);
|
||||
|
||||
LoadComponentAsync(notificationManager = new NotificationManager
|
||||
LoadComponentAsync(notificationOverlay = new NotificationOverlay
|
||||
{
|
||||
Depth = -3,
|
||||
Anchor = Anchor.TopRight,
|
||||
@ -205,7 +205,7 @@ namespace osu.Game
|
||||
{
|
||||
if (entry.Level < LogLevel.Important) return;
|
||||
|
||||
notificationManager.Post(new SimpleNotification
|
||||
notificationOverlay.Post(new SimpleNotification
|
||||
{
|
||||
Text = $@"{entry.Level}: {entry.Message}"
|
||||
});
|
||||
@ -216,7 +216,7 @@ namespace osu.Game
|
||||
dependencies.Cache(chat);
|
||||
dependencies.Cache(userProfile);
|
||||
dependencies.Cache(musicController);
|
||||
dependencies.Cache(notificationManager);
|
||||
dependencies.Cache(notificationOverlay);
|
||||
dependencies.Cache(dialogOverlay);
|
||||
|
||||
// ensure both overlays aren't presented at the same time
|
||||
|
@ -13,7 +13,7 @@ using osu.Game.Graphics.Containers;
|
||||
|
||||
namespace osu.Game.Overlays
|
||||
{
|
||||
public class NotificationManager : OsuFocusedOverlayContainer
|
||||
public class NotificationOverlay : OsuFocusedOverlayContainer
|
||||
{
|
||||
private const float width = 320;
|
||||
|
||||
@ -28,6 +28,8 @@ namespace osu.Game.Overlays
|
||||
Width = width;
|
||||
RelativeSizeAxes = Axes.Y;
|
||||
|
||||
AlwaysPresent = true;
|
||||
|
||||
Children = new Drawable[]
|
||||
{
|
||||
new Box
|
||||
@ -72,17 +74,20 @@ namespace osu.Game.Overlays
|
||||
|
||||
public void Post(Notification notification)
|
||||
{
|
||||
State = Visibility.Visible;
|
||||
Schedule(() =>
|
||||
{
|
||||
State = Visibility.Visible;
|
||||
|
||||
++runningDepth;
|
||||
notification.Depth = notification.DisplayOnTop ? runningDepth : -runningDepth;
|
||||
++runningDepth;
|
||||
notification.Depth = notification.DisplayOnTop ? runningDepth : -runningDepth;
|
||||
|
||||
var hasCompletionTarget = notification as IHasCompletionTarget;
|
||||
if (hasCompletionTarget != null)
|
||||
hasCompletionTarget.CompletionTarget = Post;
|
||||
var hasCompletionTarget = notification as IHasCompletionTarget;
|
||||
if (hasCompletionTarget != null)
|
||||
hasCompletionTarget.CompletionTarget = Post;
|
||||
|
||||
var ourType = notification.GetType();
|
||||
sections.Children.FirstOrDefault(s => s.AcceptTypes.Any(accept => accept.IsAssignableFrom(ourType)))?.Add(notification);
|
||||
var ourType = notification.GetType();
|
||||
sections.Children.FirstOrDefault(s => s.AcceptTypes.Any(accept => accept.IsAssignableFrom(ourType)))?.Add(notification);
|
||||
});
|
||||
}
|
||||
|
||||
protected override void PopIn()
|
||||
@ -109,4 +114,4 @@ namespace osu.Game.Overlays
|
||||
this.FadeTo(0, TRANSITION_LENGTH / 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -63,6 +63,8 @@ namespace osu.Game.Overlays.Notifications
|
||||
Masking = true,
|
||||
RelativeSizeAxes = Axes.X,
|
||||
AutoSizeAxes = Axes.Y,
|
||||
AutoSizeDuration = 400,
|
||||
AutoSizeEasing = Easing.OutQuint,
|
||||
Children = new Drawable[]
|
||||
{
|
||||
new Box
|
||||
@ -74,7 +76,7 @@ namespace osu.Game.Overlays.Notifications
|
||||
{
|
||||
RelativeSizeAxes = Axes.X,
|
||||
Padding = new MarginPadding(5),
|
||||
Height = 60,
|
||||
AutoSizeAxes = Axes.Y,
|
||||
Children = new Drawable[]
|
||||
{
|
||||
IconContent = new Container
|
||||
|
@ -6,9 +6,7 @@ using osu.Framework.Allocation;
|
||||
using osu.Framework.Graphics;
|
||||
using osu.Framework.Graphics.Containers;
|
||||
using osu.Framework.Graphics.Shapes;
|
||||
using osu.Framework.Graphics.Sprites;
|
||||
using osu.Game.Graphics;
|
||||
using osu.Game.Graphics.Sprites;
|
||||
using OpenTK;
|
||||
using OpenTK.Graphics;
|
||||
|
||||
@ -18,10 +16,9 @@ namespace osu.Game.Overlays.Notifications
|
||||
{
|
||||
public string Text
|
||||
{
|
||||
get { return textDrawable.Text; }
|
||||
set
|
||||
{
|
||||
textDrawable.Text = value;
|
||||
Schedule(() => textDrawable.Text = value);
|
||||
}
|
||||
}
|
||||
|
||||
@ -90,7 +87,7 @@ namespace osu.Game.Overlays.Notifications
|
||||
protected virtual Notification CreateCompletionNotification() => new ProgressCompletionNotification
|
||||
{
|
||||
Activated = CompletionClickAction,
|
||||
Text = $"Task \"{Text}\" has completed!"
|
||||
Text = "Task has completed!"
|
||||
};
|
||||
|
||||
protected virtual void Completed()
|
||||
@ -106,7 +103,7 @@ namespace osu.Game.Overlays.Notifications
|
||||
private Color4 colourActive;
|
||||
private Color4 colourCancelled;
|
||||
|
||||
private readonly SpriteText textDrawable;
|
||||
private readonly TextFlowContainer textDrawable;
|
||||
|
||||
public ProgressNotification()
|
||||
{
|
||||
@ -115,9 +112,11 @@ namespace osu.Game.Overlays.Notifications
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
});
|
||||
|
||||
Content.Add(textDrawable = new OsuSpriteText
|
||||
Content.Add(textDrawable = new TextFlowContainer(t =>
|
||||
{
|
||||
t.TextSize = 16;
|
||||
})
|
||||
{
|
||||
TextSize = 16,
|
||||
Colour = OsuColour.Gray(128),
|
||||
AutoSizeAxes = Axes.Y,
|
||||
RelativeSizeAxes = Axes.X,
|
||||
@ -131,6 +130,9 @@ namespace osu.Game.Overlays.Notifications
|
||||
});
|
||||
|
||||
State = ProgressNotificationState.Queued;
|
||||
|
||||
// don't close on click by default.
|
||||
Activated = () => false;
|
||||
}
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
@ -167,7 +169,7 @@ namespace osu.Game.Overlays.Notifications
|
||||
|
||||
private class ProgressBar : Container
|
||||
{
|
||||
private Box box;
|
||||
private readonly Box box;
|
||||
|
||||
private Color4 colourActive;
|
||||
private Color4 colourInactive;
|
||||
@ -197,15 +199,8 @@ namespace osu.Game.Overlays.Notifications
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
private void load(OsuColour colours)
|
||||
public ProgressBar()
|
||||
{
|
||||
colourActive = colours.Blue;
|
||||
Colour = colourInactive = OsuColour.Gray(0.5f);
|
||||
|
||||
Height = 5;
|
||||
|
||||
Children = new[]
|
||||
{
|
||||
box = new Box
|
||||
@ -215,6 +210,15 @@ namespace osu.Game.Overlays.Notifications
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
private void load(OsuColour colours)
|
||||
{
|
||||
colourActive = colours.Blue;
|
||||
Colour = colourInactive = OsuColour.Gray(0.5f);
|
||||
Height = 5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -19,9 +19,9 @@ namespace osu.Game.Overlays.Toolbar
|
||||
}
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
private void load(NotificationManager notificationManager)
|
||||
private void load(NotificationOverlay notificationOverlay)
|
||||
{
|
||||
StateContainer = notificationManager;
|
||||
StateContainer = notificationOverlay;
|
||||
}
|
||||
}
|
||||
}
|
@ -61,7 +61,7 @@ namespace osu.Game.Screens.Play
|
||||
}
|
||||
|
||||
[BackgroundDependencyLoader(true)]
|
||||
private void load(OsuConfigManager config, NotificationManager notificationManager, OsuColour colours)
|
||||
private void load(OsuConfigManager config, NotificationOverlay notificationOverlay, OsuColour colours)
|
||||
{
|
||||
showHud = config.GetBindable<bool>(OsuSetting.ShowInterface);
|
||||
showHud.ValueChanged += hudVisibility => content.FadeTo(hudVisibility ? 1 : 0, duration);
|
||||
@ -71,7 +71,7 @@ namespace osu.Game.Screens.Play
|
||||
{
|
||||
hasShownNotificationOnce = true;
|
||||
|
||||
notificationManager?.Post(new SimpleNotification
|
||||
notificationOverlay?.Post(new SimpleNotification
|
||||
{
|
||||
Text = @"The score overlay is currently disabled. You can toggle this by pressing Shift+Tab."
|
||||
});
|
||||
|
@ -251,7 +251,7 @@
|
||||
<Compile Include="Configuration\OsuConfigManager.cs" />
|
||||
<Compile Include="Overlays\Notifications\IHasCompletionTarget.cs" />
|
||||
<Compile Include="Overlays\Notifications\Notification.cs" />
|
||||
<Compile Include="Overlays\NotificationManager.cs" />
|
||||
<Compile Include="Overlays\NotificationOverlay.cs" />
|
||||
<Compile Include="Overlays\Notifications\NotificationSection.cs" />
|
||||
<Compile Include="Overlays\Notifications\ProgressCompletionNotification.cs" />
|
||||
<Compile Include="Overlays\Notifications\ProgressNotification.cs" />
|
||||
|
Loading…
Reference in New Issue
Block a user