mirror of
https://github.com/ppy/osu.git
synced 2025-02-13 18:32:55 +08:00
Sort SkinSection in alphabetical order
This commit is contained in:
parent
dd809df076
commit
7476cb3047
@ -107,21 +107,20 @@ namespace osu.Game.Overlays.Settings.Sections
|
|||||||
private void updateItems()
|
private void updateItems()
|
||||||
{
|
{
|
||||||
skinItems = skins.GetAllUsableSkins();
|
skinItems = skins.GetAllUsableSkins();
|
||||||
|
skinItems = sortList(skinItems);
|
||||||
// insert after lazer built-in skins
|
|
||||||
int firstNonDefault = skinItems.FindIndex(s => s.ID > 0);
|
|
||||||
if (firstNonDefault < 0)
|
|
||||||
firstNonDefault = skinItems.Count;
|
|
||||||
|
|
||||||
skinItems.Insert(firstNonDefault, random_skin_info);
|
|
||||||
|
|
||||||
skinDropdown.Items = skinItems;
|
skinDropdown.Items = skinItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void itemUpdated(ValueChangedEvent<WeakReference<SkinInfo>> weakItem)
|
private void itemUpdated(ValueChangedEvent<WeakReference<SkinInfo>> weakItem)
|
||||||
{
|
{
|
||||||
if (weakItem.NewValue.TryGetTarget(out var item))
|
if (weakItem.NewValue.TryGetTarget(out var item))
|
||||||
Schedule(() => skinDropdown.Items = skinDropdown.Items.Where(i => !i.Equals(item)).Append(item).ToArray());
|
{
|
||||||
|
List<SkinInfo> newDropdownItems = skinDropdown.Items.ToList();
|
||||||
|
newDropdownItems.Add(item);
|
||||||
|
newDropdownItems = sortList(newDropdownItems);
|
||||||
|
Schedule(() => skinDropdown.Items = newDropdownItems.ToArray());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void itemRemoved(ValueChangedEvent<WeakReference<SkinInfo>> weakItem)
|
private void itemRemoved(ValueChangedEvent<WeakReference<SkinInfo>> weakItem)
|
||||||
@ -130,6 +129,24 @@ namespace osu.Game.Overlays.Settings.Sections
|
|||||||
Schedule(() => skinDropdown.Items = skinDropdown.Items.Where(i => i.ID != item.ID).ToArray());
|
Schedule(() => skinDropdown.Items = skinDropdown.Items.Where(i => i.ID != item.ID).ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<SkinInfo> sortList(List<SkinInfo> skinsList)
|
||||||
|
{
|
||||||
|
skinsList.Sort((a, b) => String.Compare(a.Name, b.Name, StringComparison.Ordinal));
|
||||||
|
for (int i = 0; i < skinsList.Count; i++)
|
||||||
|
{
|
||||||
|
// insert lazer built-in skins before user skins
|
||||||
|
if (skinsList[i].ID <= 0) {
|
||||||
|
var itemToMove = skinsList[i];
|
||||||
|
skinsList.RemoveAt(i);
|
||||||
|
skinsList.Insert(0, itemToMove);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
skinsList.RemoveAll(s => s.ID == SkinInfo.RANDOM_SKIN);
|
||||||
|
skinsList.Insert(0, random_skin_info);
|
||||||
|
|
||||||
|
return skinsList;
|
||||||
|
}
|
||||||
|
|
||||||
private class SkinSettingsDropdown : SettingsDropdown<SkinInfo>
|
private class SkinSettingsDropdown : SettingsDropdown<SkinInfo>
|
||||||
{
|
{
|
||||||
protected override OsuDropdown<SkinInfo> CreateDropdown() => new SkinDropdownControl();
|
protected override OsuDropdown<SkinInfo> CreateDropdown() => new SkinDropdownControl();
|
||||||
|
Loading…
Reference in New Issue
Block a user