1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-13 21:12:55 +08:00

Moved "undelete all" logic to BeatmapManager and added a progress notification

This commit is contained in:
FreezyLemon 2017-12-18 10:55:07 +01:00
parent 4c45102d61
commit d2b80fdbfc
2 changed files with 31 additions and 5 deletions

View File

@ -339,6 +339,36 @@ namespace osu.Game.Beatmaps
}
}
public void UndeleteAll()
{
var mapSets = QueryBeatmapSets(bs => bs.DeletePending);
if (mapSets.Count() == 0) return;
var notification = new ProgressNotification
{
Progress = 0,
State = ProgressNotificationState.Active,
};
PostNotification?.Invoke(notification);
int i = 0;
foreach (var bs in mapSets)
{
if (notification.State == ProgressNotificationState.Cancelled)
// user requested abort
return;
notification.Text = $"Restoring ({i} of {mapSets.Count()})";
notification.Progress = (float)++i / mapSets.Count();
Undelete(bs);
}
notification.State = ProgressNotificationState.Completed;
}
public void Undelete(BeatmapSetInfo beatmapSet)
{
if (beatmapSet.Protected)

View File

@ -62,11 +62,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
Action = () =>
{
undeleteButton.Enabled.Value = false;
Task.Run(() =>
{
foreach (var bs in beatmaps.QueryBeatmapSets(bs => bs.DeletePending).ToList())
beatmaps.Undelete(bs);
}).ContinueWith(t => Schedule(() => undeleteButton.Enabled.Value = true));
Task.Run(() => beatmaps.UndeleteAll()).ContinueWith(t => Schedule(() => undeleteButton.Enabled.Value = true));
}
},
};