mirror of
https://github.com/ppy/osu.git
synced 2025-01-15 10:42:55 +08:00
Added beatmap delete dialog
This commit is contained in:
parent
bc7fd3bd39
commit
fbd9523596
53
osu.Game/Screens/Select/BeatmapDeleteDialog.cs
Normal file
53
osu.Game/Screens/Select/BeatmapDeleteDialog.cs
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Graphics;
|
||||||
|
using osu.Game.Overlays.Dialog;
|
||||||
|
|
||||||
|
namespace osu.Game
|
||||||
|
{
|
||||||
|
public class BeatmapDeleteDialog : PopupDialog
|
||||||
|
{
|
||||||
|
public Action<WorkingBeatmap> OnDelete;
|
||||||
|
|
||||||
|
private WorkingBeatmap beatmap;
|
||||||
|
public WorkingBeatmap Beatmap
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return beatmap;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
beatmap = value;
|
||||||
|
BodyText = $@"{beatmap?.Beatmap?.Metadata?.Artist} - {beatmap?.Beatmap?.Metadata?.Title}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public BeatmapDeleteDialog()
|
||||||
|
{
|
||||||
|
Icon = FontAwesome.fa_trash_o;
|
||||||
|
HeaderText = @"Confirm deletion of";
|
||||||
|
Buttons = new PopupDialogButton[]
|
||||||
|
{
|
||||||
|
new PopupDialogOkButton
|
||||||
|
{
|
||||||
|
Text = @"Yes. Totally. Delete it.",
|
||||||
|
Action = () =>
|
||||||
|
{
|
||||||
|
if (Beatmap != null)
|
||||||
|
{
|
||||||
|
OnDelete?.Invoke(Beatmap);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
new PopupDialogCancelButton
|
||||||
|
{
|
||||||
|
Text = @"Firetruck, I didn't mean to!",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -50,6 +50,8 @@ namespace osu.Game.Screens.Select
|
|||||||
|
|
||||||
private List<BeatmapGroup> beatmapGroups;
|
private List<BeatmapGroup> beatmapGroups;
|
||||||
|
|
||||||
|
private BeatmapDeleteDialog deleteDialog;
|
||||||
|
|
||||||
private Footer footer;
|
private Footer footer;
|
||||||
|
|
||||||
OsuScreen player;
|
OsuScreen player;
|
||||||
@ -122,7 +124,16 @@ namespace osu.Game.Screens.Select
|
|||||||
PreferredPlayMode = playMode.Value
|
PreferredPlayMode = playMode.Value
|
||||||
})).LoadAsync(Game, l => Push(player));
|
})).LoadAsync(Game, l => Push(player));
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
deleteDialog = new BeatmapDeleteDialog
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
OnDelete = (b) =>
|
||||||
|
{
|
||||||
|
b.Dispose();
|
||||||
|
database.Delete(b.BeatmapSetInfo);
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
footer.AddButton(@"mods", colours.Yellow, null);
|
footer.AddButton(@"mods", colours.Yellow, null);
|
||||||
@ -280,6 +291,7 @@ namespace osu.Game.Screens.Select
|
|||||||
//todo: change background in selectionChanged instead; support per-difficulty backgrounds.
|
//todo: change background in selectionChanged instead; support per-difficulty backgrounds.
|
||||||
changeBackground(beatmap);
|
changeBackground(beatmap);
|
||||||
carousel.SelectBeatmap(beatmap?.BeatmapInfo);
|
carousel.SelectBeatmap(beatmap?.BeatmapInfo);
|
||||||
|
deleteDialog.Beatmap = beatmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -382,12 +394,20 @@ namespace osu.Game.Screens.Select
|
|||||||
footer.StartButton.TriggerClick();
|
footer.StartButton.TriggerClick();
|
||||||
return true;
|
return true;
|
||||||
case Key.Delete:
|
case Key.Delete:
|
||||||
if (Beatmap != null)
|
if (state.Keyboard.ShiftPressed)
|
||||||
{
|
{
|
||||||
Beatmap.Dispose();
|
deleteDialog.Show();
|
||||||
database.Delete(Beatmap.BeatmapSetInfo);
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (Beatmap != null)
|
||||||
|
{
|
||||||
|
Beatmap.Dispose();
|
||||||
|
database.Delete(Beatmap.BeatmapSetInfo);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return base.OnKeyDown(state, args);
|
return base.OnKeyDown(state, args);
|
||||||
|
@ -285,6 +285,7 @@
|
|||||||
<Compile Include="Overlays\Dialog\PopupDialogButton.cs" />
|
<Compile Include="Overlays\Dialog\PopupDialogButton.cs" />
|
||||||
<Compile Include="Overlays\Dialog\PopupDialogOKButton.cs" />
|
<Compile Include="Overlays\Dialog\PopupDialogOKButton.cs" />
|
||||||
<Compile Include="Overlays\Dialog\PopupDialogCancelButton.cs" />
|
<Compile Include="Overlays\Dialog\PopupDialogCancelButton.cs" />
|
||||||
|
<Compile Include="Screens\Select\BeatmapDeleteDialog.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="$(SolutionDir)\osu-framework\osu.Framework\osu.Framework.csproj">
|
<ProjectReference Include="$(SolutionDir)\osu-framework\osu.Framework\osu.Framework.csproj">
|
||||||
|
Loading…
Reference in New Issue
Block a user