Merge remote-tracking branch 'upstream/master' into import-from-stable

This commit is contained in:
Dean Herbert 2017-07-31 17:31:10 +09:00
commit 57d45b180c
13 changed files with 73 additions and 50 deletions

View File

@ -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,

View File

@ -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" />

View File

@ -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(() =>

View File

@ -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);
}

View File

@ -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)

View File

@ -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
{

View File

@ -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

View File

@ -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);
}
}
}
}

View File

@ -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

View File

@ -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;
}
}
}

View File

@ -19,9 +19,9 @@ namespace osu.Game.Overlays.Toolbar
}
[BackgroundDependencyLoader]
private void load(NotificationManager notificationManager)
private void load(NotificationOverlay notificationOverlay)
{
StateContainer = notificationManager;
StateContainer = notificationOverlay;
}
}
}

View File

@ -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."
});

View File

@ -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" />