add confirmation dialog to delete team/round buttons in tourney editor screens

This commit is contained in:
Dao Heng Liu 2023-07-20 23:28:31 +01:00
parent 2825671e28
commit bf9c25f429
4 changed files with 67 additions and 10 deletions

View File

@ -0,0 +1,19 @@
// 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.
using System;
using osu.Framework.Graphics.Sprites;
using osu.Game.Overlays.Dialog;
namespace osu.Game.Tournament.Screens.Editors.Components
{
public partial class RoundEditorDeleteRoundDialog : DangerousActionDialog
{
public RoundEditorDeleteRoundDialog(string roundName, Action action)
{
HeaderText = roundName.Length > 0 ? $@"Delete round ""{roundName}""?" : @"Delete unnamed round?";
Icon = FontAwesome.Solid.Trash;
DangerousAction = action;
}
}
}

View File

@ -0,0 +1,21 @@
// 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.
using System;
using osu.Framework.Graphics.Sprites;
using osu.Game.Overlays.Dialog;
namespace osu.Game.Tournament.Screens.Editors.Components
{
public partial class TeamEditorDeleteTeamDialog : DangerousActionDialog
{
public TeamEditorDeleteTeamDialog(string fullTeamName, string acronym, Action action)
{
HeaderText = fullTeamName.Length > 0 ? $@"Delete team ""{fullTeamName}""?" :
acronym.Length > 0 ? $@"Delete team ""{acronym}""?" :
@"Delete unnamed team?";
Icon = FontAwesome.Solid.Trash;
DangerousAction = action;
}
}
}

View File

@ -11,9 +11,11 @@ using osu.Game.Graphics;
using osu.Game.Online.API;
using osu.Game.Online.API.Requests;
using osu.Game.Online.API.Requests.Responses;
using osu.Game.Overlays;
using osu.Game.Overlays.Settings;
using osu.Game.Tournament.Components;
using osu.Game.Tournament.Models;
using osu.Game.Tournament.Screens.Editors.Components;
using osuTK;
namespace osu.Game.Tournament.Screens.Editors
@ -29,6 +31,9 @@ namespace osu.Game.Tournament.Screens.Editors
[Resolved]
private LadderInfo ladderInfo { get; set; } = null!;
[Resolved(canBeNull: true)]
private IDialogOverlay? dialogOverlay { get; set; }
public RoundRow(TournamentRound round)
{
Model = round;
@ -99,11 +104,13 @@ namespace osu.Game.Tournament.Screens.Editors
RelativeSizeAxes = Axes.None,
Width = 150,
Text = "Delete Round",
Action = () =>
{
Expire();
ladderInfo.Rounds.Remove(Model);
},
Action = () => dialogOverlay?.Push(
new RoundEditorDeleteRoundDialog(
Model.Name.Value, () =>
{
Expire();
ladderInfo.Rounds.Remove(Model);
}))
}
};

View File

@ -12,9 +12,11 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes;
using osu.Game.Graphics;
using osu.Game.Online.API;
using osu.Game.Overlays;
using osu.Game.Overlays.Settings;
using osu.Game.Tournament.Components;
using osu.Game.Tournament.Models;
using osu.Game.Tournament.Screens.Editors.Components;
using osu.Game.Users;
using osuTK;
@ -64,6 +66,9 @@ namespace osu.Game.Tournament.Screens.Editors
[Resolved]
private TournamentSceneManager? sceneManager { get; set; }
[Resolved(canBeNull: true)]
private IDialogOverlay? dialogOverlay { get; set; }
[Resolved]
private LadderInfo ladderInfo { get; set; } = null!;
@ -144,11 +149,16 @@ namespace osu.Game.Tournament.Screens.Editors
Width = 0.11f,
Text = "Delete Team",
Margin = new MarginPadding(10),
Action = () =>
{
Expire();
ladderInfo.Teams.Remove(Model);
},
Action = () => dialogOverlay?.Push(
new TeamEditorDeleteTeamDialog(Model.FullName.Value,
Model.Acronym.Value,
() =>
{
Expire();
ladderInfo.Teams.Remove(Model);
}
)
)
},
playerEditor,
new SettingsButton