Merge remote-tracking branch 'upstream/master' into generic-download-model-manager

This commit is contained in:
naoey
2019-06-12 18:20:35 +05:30
4 changed files with 46 additions and 32 deletions

View File

@ -235,7 +235,7 @@ namespace osu.Game.Beatmaps
/// <returns>Results from the provided query.</returns> /// <returns>Results from the provided query.</returns>
public IQueryable<BeatmapInfo> QueryBeatmaps(Expression<Func<BeatmapInfo, bool>> query) => beatmaps.Beatmaps.AsNoTracking().Where(query); public IQueryable<BeatmapInfo> QueryBeatmaps(Expression<Func<BeatmapInfo, bool>> query) => beatmaps.Beatmaps.AsNoTracking().Where(query);
public override bool IsAvailableLocally(BeatmapSetInfo set) => beatmaps.ConsumableItems.Any(s => s.OnlineBeatmapSetID == set.OnlineBeatmapSetID && !s.DeletePending && !s.Protected); protected override string HumanisedModelName => "beatmap";
protected override BeatmapSetInfo CreateModel(ArchiveReader reader) protected override BeatmapSetInfo CreateModel(ArchiveReader reader)
{ {

View File

@ -163,7 +163,7 @@ namespace osu.Game.Database
imported.Add(model); imported.Add(model);
current++; current++;
notification.Text = $"Imported {current} of {paths.Length} {humanisedModelName}s"; notification.Text = $"Imported {current} of {paths.Length} {HumanisedModelName}s";
notification.Progress = (float)current / paths.Length; notification.Progress = (float)current / paths.Length;
} }
} }
@ -186,7 +186,7 @@ namespace osu.Game.Database
{ {
notification.CompletionText = imported.Count == 1 notification.CompletionText = imported.Count == 1
? $"Imported {imported.First()}!" ? $"Imported {imported.First()}!"
: $"Imported {current} {humanisedModelName}s!"; : $"Imported {current} {HumanisedModelName}s!";
if (imported.Count > 0 && PresentImport != null) if (imported.Count > 0 && PresentImport != null)
{ {
@ -344,7 +344,7 @@ namespace osu.Game.Database
if (CanUndelete(existing, item)) if (CanUndelete(existing, item))
{ {
Undelete(existing); Undelete(existing);
LogForModel(item, $"Found existing {humanisedModelName} for {item} (ID {existing.ID}) skipping import."); LogForModel(item, $"Found existing {HumanisedModelName} for {item} (ID {existing.ID}) skipping import.");
handleEvent(() => ItemAdded?.Invoke(existing, true)); handleEvent(() => ItemAdded?.Invoke(existing, true));
// existing item will be used; rollback new import and exit early. // existing item will be used; rollback new import and exit early.
@ -424,7 +424,8 @@ namespace osu.Game.Database
var notification = new ProgressNotification var notification = new ProgressNotification
{ {
Progress = 0, Progress = 0,
CompletionText = $"Deleted all {typeof(TModel).Name.Replace("Info", "").ToLower()}s!", Text = $"Preparing to delete all {HumanisedModelName}s...",
CompletionText = $"Deleted all {HumanisedModelName}s!",
State = ProgressNotificationState.Active, State = ProgressNotificationState.Active,
}; };
@ -441,7 +442,7 @@ namespace osu.Game.Database
// user requested abort // user requested abort
return; return;
notification.Text = $"Deleting ({++i} of {items.Count})"; notification.Text = $"Deleting {HumanisedModelName}s ({++i} of {items.Count})";
Delete(b); Delete(b);
@ -613,7 +614,7 @@ namespace osu.Game.Database
private DbSet<TModel> queryModel() => ContextFactory.Get().Set<TModel>(); private DbSet<TModel> queryModel() => ContextFactory.Get().Set<TModel>();
private string humanisedModelName => $"{typeof(TModel).Name.Replace("Info", "").ToLower()}"; protected virtual string HumanisedModelName => $"{typeof(TModel).Name.Replace("Info", "").ToLower()}";
/// <summary> /// <summary>
/// Creates an <see cref="ArchiveReader"/> from a valid storage path. /// Creates an <see cref="ArchiveReader"/> from a valid storage path.

View File

@ -21,31 +21,45 @@ namespace osu.Game.Users
set => Model = value; set => Model = value;
} }
[Resolved] protected override Drawable CreateDrawable(User user) => new Cover(user);
private LargeTextureStore textures { get; set; }
protected override Drawable CreateDrawable(User user) private class Cover : CompositeDrawable
{ {
if (user == null) private readonly User user;
public Cover(User user)
{ {
return new Box this.user = user;
{
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both;
Colour = ColourInfo.GradientVertical(Color4.Black.Opacity(0.1f), Color4.Black.Opacity(0.75f))
};
} }
else
[BackgroundDependencyLoader]
private void load(LargeTextureStore textures)
{ {
var sprite = new Sprite if (user == null)
{ {
RelativeSizeAxes = Axes.Both, InternalChild = new Box
Texture = textures.Get(user.CoverUrl), {
FillMode = FillMode.Fill, RelativeSizeAxes = Axes.Both,
Anchor = Anchor.Centre, Colour = ColourInfo.GradientVertical(Color4.Black.Opacity(0.1f), Color4.Black.Opacity(0.75f))
Origin = Anchor.Centre };
}; }
sprite.OnLoadComplete += d => d.FadeInFromZero(400); else
return sprite; InternalChild = new Sprite
{
RelativeSizeAxes = Axes.Both,
Texture = textures.Get(user.CoverUrl),
FillMode = FillMode.Fill,
Anchor = Anchor.Centre,
Origin = Anchor.Centre
};
}
protected override void LoadComplete()
{
base.LoadComplete();
this.FadeInFromZero(400);
} }
} }
} }

View File

@ -66,8 +66,6 @@ namespace osu.Game.Users
FillFlowContainer infoContainer; FillFlowContainer infoContainer;
UserCoverBackground coverBackground;
AddInternal(content = new Container AddInternal(content = new Container
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
@ -82,13 +80,16 @@ namespace osu.Game.Users
Children = new Drawable[] Children = new Drawable[]
{ {
new DelayedLoadWrapper(coverBackground = new UserCoverBackground new DelayedLoadUnloadWrapper(() => new UserCoverBackground
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Origin = Anchor.Centre, Origin = Anchor.Centre,
User = user, User = user,
}, 300) { RelativeSizeAxes = Axes.Both }, }, 300, 5000)
{
RelativeSizeAxes = Axes.Both,
},
new Box new Box
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
@ -189,8 +190,6 @@ namespace osu.Game.Users
} }
}); });
coverBackground.OnLoadComplete += d => d.FadeInFromZero(400, Easing.Out);
if (user.IsSupporter) if (user.IsSupporter)
{ {
infoContainer.Add(new SupporterIcon infoContainer.Add(new SupporterIcon