Extract common implementation of delete dialog

This commit is contained in:
Bartłomiej Dach
2022-07-23 21:20:27 +02:00
parent 9ac322d337
commit a0d093be5c
9 changed files with 105 additions and 137 deletions

View File

@ -1,8 +1,6 @@
// 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.
#nullable disable
using osu.Framework.Allocation;
using osu.Game.Overlays.Dialog;
using osu.Game.Scoring;
@ -12,44 +10,25 @@ using osu.Game.Beatmaps;
namespace osu.Game.Screens.Select
{
public class LocalScoreDeleteDialog : PopupDialog
public class LocalScoreDeleteDialog : DeleteConfirmationDialog
{
private readonly ScoreInfo score;
[Resolved]
private ScoreManager scoreManager { get; set; }
[Resolved]
private BeatmapManager beatmapManager { get; set; }
public LocalScoreDeleteDialog(ScoreInfo score)
{
this.score = score;
Debug.Assert(score != null);
}
[BackgroundDependencyLoader]
private void load()
private void load(BeatmapManager beatmapManager, ScoreManager scoreManager)
{
BeatmapInfo beatmapInfo = beatmapManager.QueryBeatmap(b => b.ID == score.BeatmapInfoID);
BeatmapInfo? beatmapInfo = beatmapManager.QueryBeatmap(b => b.ID == score.BeatmapInfoID);
Debug.Assert(beatmapInfo != null);
BodyText = $"{score.User} ({score.DisplayAccuracy}, {score.Rank})";
Icon = FontAwesome.Regular.TrashAlt;
HeaderText = "Confirm deletion of local score";
Buttons = new PopupDialogButton[]
{
new PopupDialogDangerousButton
{
Text = "Yes. Please.",
Action = () => scoreManager?.Delete(score)
},
new PopupDialogCancelButton
{
Text = "No, I'm still attached.",
},
};
DeleteAction = () => scoreManager.Delete(score);
}
}
}