Hide empty marking categories in the markings picker (#26377)
Hide empty marking categories
This commit is contained in:
@@ -124,17 +124,16 @@ public sealed partial class MarkingPicker : Control
|
|||||||
RobustXamlLoader.Load(this);
|
RobustXamlLoader.Load(this);
|
||||||
IoCManager.InjectDependencies(this);
|
IoCManager.InjectDependencies(this);
|
||||||
|
|
||||||
SetupCategoryButtons();
|
|
||||||
CMarkingCategoryButton.OnItemSelected += OnCategoryChange;
|
CMarkingCategoryButton.OnItemSelected += OnCategoryChange;
|
||||||
CMarkingsUnused.OnItemSelected += item =>
|
CMarkingsUnused.OnItemSelected += item =>
|
||||||
_selectedUnusedMarking = CMarkingsUnused[item.ItemIndex];
|
_selectedUnusedMarking = CMarkingsUnused[item.ItemIndex];
|
||||||
|
|
||||||
CMarkingAdd.OnPressed += args =>
|
CMarkingAdd.OnPressed += _ =>
|
||||||
MarkingAdd();
|
MarkingAdd();
|
||||||
|
|
||||||
CMarkingsUsed.OnItemSelected += OnUsedMarkingSelected;
|
CMarkingsUsed.OnItemSelected += OnUsedMarkingSelected;
|
||||||
|
|
||||||
CMarkingRemove.OnPressed += args =>
|
CMarkingRemove.OnPressed += _ =>
|
||||||
MarkingRemove();
|
MarkingRemove();
|
||||||
|
|
||||||
CMarkingRankUp.OnPressed += _ => SwapMarkingUp();
|
CMarkingRankUp.OnPressed += _ => SwapMarkingUp();
|
||||||
@@ -146,17 +145,35 @@ public sealed partial class MarkingPicker : Control
|
|||||||
private void SetupCategoryButtons()
|
private void SetupCategoryButtons()
|
||||||
{
|
{
|
||||||
CMarkingCategoryButton.Clear();
|
CMarkingCategoryButton.Clear();
|
||||||
|
|
||||||
|
var validCategories = new List<MarkingCategories>();
|
||||||
for (var i = 0; i < _markingCategories.Count; i++)
|
for (var i = 0; i < _markingCategories.Count; i++)
|
||||||
{
|
{
|
||||||
if (_ignoreCategories.Contains(_markingCategories[i]))
|
var category = _markingCategories[i];
|
||||||
|
var markings = GetMarkings(category);
|
||||||
|
if (_ignoreCategories.Contains(category) ||
|
||||||
|
markings.Count == 0)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
CMarkingCategoryButton.AddItem(Loc.GetString($"markings-category-{_markingCategories[i].ToString()}"), i);
|
validCategories.Add(category);
|
||||||
|
CMarkingCategoryButton.AddItem(Loc.GetString($"markings-category-{category.ToString()}"), i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (validCategories.Contains(_selectedMarkingCategory))
|
||||||
|
{
|
||||||
CMarkingCategoryButton.SelectId(_markingCategories.IndexOf(_selectedMarkingCategory));
|
CMarkingCategoryButton.SelectId(_markingCategories.IndexOf(_selectedMarkingCategory));
|
||||||
}
|
}
|
||||||
|
else if (validCategories.Count > 0)
|
||||||
|
{
|
||||||
|
_selectedMarkingCategory = validCategories[0];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_selectedMarkingCategory = MarkingCategories.Chest;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private string GetMarkingName(MarkingPrototype marking) => Loc.GetString($"marking-{marking.ID}");
|
private string GetMarkingName(MarkingPrototype marking) => Loc.GetString($"marking-{marking.ID}");
|
||||||
|
|
||||||
@@ -179,16 +196,21 @@ public sealed partial class MarkingPicker : Control
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IReadOnlyDictionary<string, MarkingPrototype> GetMarkings(MarkingCategories category)
|
||||||
|
{
|
||||||
|
return IgnoreSpecies
|
||||||
|
? _markingManager.MarkingsByCategoryAndSex(category, _currentSex)
|
||||||
|
: _markingManager.MarkingsByCategoryAndSpeciesAndSex(category, _currentSpecies, _currentSex);
|
||||||
|
}
|
||||||
|
|
||||||
public void Populate(string filter)
|
public void Populate(string filter)
|
||||||
{
|
{
|
||||||
|
SetupCategoryButtons();
|
||||||
|
|
||||||
CMarkingsUnused.Clear();
|
CMarkingsUnused.Clear();
|
||||||
_selectedUnusedMarking = null;
|
_selectedUnusedMarking = null;
|
||||||
|
|
||||||
var markings = IgnoreSpecies
|
var sortedMarkings = GetMarkings(_selectedMarkingCategory).Values.Where(m =>
|
||||||
? _markingManager.MarkingsByCategoryAndSex(_selectedMarkingCategory, _currentSex)
|
|
||||||
: _markingManager.MarkingsByCategoryAndSpeciesAndSex(_selectedMarkingCategory, _currentSpecies, _currentSex);
|
|
||||||
|
|
||||||
var sortedMarkings = markings.Values.Where(m =>
|
|
||||||
m.ID.ToLower().Contains(filter.ToLower()) ||
|
m.ID.ToLower().Contains(filter.ToLower()) ||
|
||||||
GetMarkingName(m).ToLower().Contains(filter.ToLower())
|
GetMarkingName(m).ToLower().Contains(filter.ToLower())
|
||||||
).OrderBy(p => Loc.GetString(GetMarkingName(p)));
|
).OrderBy(p => Loc.GetString(GetMarkingName(p)));
|
||||||
|
|||||||
Reference in New Issue
Block a user