Add a select all players button to the logs UI

This commit is contained in:
DrSmugleaf
2021-11-28 14:19:44 +01:00
parent 378d95ff6b
commit a5e6ce87e7
4 changed files with 35 additions and 11 deletions

View File

@@ -10,7 +10,6 @@ public class AdminLogPlayerButton : Button
Id = id;
ClipText = true;
ToggleMode = true;
Pressed = true;
}
public Guid Id { get; }

View File

@@ -10,7 +10,6 @@ public class AdminLogTypeButton : Button
Type = type;
ClipText = true;
ToggleMode = true;
Pressed = true;
}
public LogType Type { get; }

View File

@@ -30,8 +30,12 @@
<BoxContainer Orientation="Vertical" MinWidth="200">
<LineEdit Name="PlayerSearch" Access="Public" StyleClasses="actionSearchBox"
HorizontalExpand="true" PlaceHolder="{Loc admin-logs-search-players-placeholder}"/>
<BoxContainer Orientation="Horizontal">
<Button Name="SelectAllPlayersButton" Text="{Loc admin-logs-select-all}"
MinWidth="100" StyleClasses="ButtonSquare"></Button>
<Button Name="SelectNoPlayersButton" Text="{Loc admin-logs-select-none}"
StyleClasses="ButtonSquare"/>
MinWidth="100" StyleClasses="ButtonSquare"/>
</BoxContainer>
<ScrollContainer VerticalExpand="True">
<BoxContainer Name="PlayersContainer" Access="Public" Orientation="Vertical"/>
</ScrollContainer>

View File

@@ -35,6 +35,7 @@ public partial class AdminLogsWindow : SS14Window
SelectAllTypesButton.OnPressed += SelectAllTypes;
SelectNoTypesButton.OnPressed += SelectNoTypes;
SelectAllPlayersButton.OnPressed += SelectAllPlayers;
SelectNoPlayersButton.OnPressed += SelectNoPlayers;
RoundSpinBox.IsValid = i => i > 0 && i <= CurrentRound;
@@ -90,7 +91,7 @@ public partial class AdminLogsWindow : SS14Window
UpdateTypes();
}
private void PlayerSearchChanged(LineEditEventArgs obj)
private void PlayerSearchChanged(LineEditEventArgs args)
{
UpdatePlayers();
}
@@ -100,7 +101,7 @@ public partial class AdminLogsWindow : SS14Window
UpdateLogs();
}
private void SelectAllTypes(ButtonEventArgs obj)
private void SelectAllTypes(ButtonEventArgs args)
{
SelectedTypes.Clear();
@@ -118,7 +119,7 @@ public partial class AdminLogsWindow : SS14Window
UpdateLogs();
}
private void SelectNoTypes(ButtonEventArgs obj)
private void SelectNoTypes(ButtonEventArgs args)
{
SelectedTypes.Clear();
@@ -136,7 +137,25 @@ public partial class AdminLogsWindow : SS14Window
UpdateLogs();
}
private void SelectNoPlayers(ButtonEventArgs obj)
private void SelectAllPlayers(ButtonEventArgs args)
{
SelectedPlayers.Clear();
foreach (var control in PlayersContainer.Children)
{
if (control is not AdminLogPlayerButton player)
{
continue;
}
player.Pressed = true;
SelectedPlayers.Add(player.Id);
}
UpdateLogs();
}
private void SelectNoPlayers(ButtonEventArgs args)
{
SelectedPlayers.Clear();
@@ -311,7 +330,8 @@ public partial class AdminLogsWindow : SS14Window
{
var button = new AdminLogTypeButton(type)
{
Text = type.ToString()
Text = type.ToString(),
Pressed = true
};
SelectedTypes.Add(type);
@@ -349,7 +369,8 @@ public partial class AdminLogsWindow : SS14Window
{
var button = new AdminLogPlayerButton(id)
{
Text = name
Text = name,
Pressed = true
};
SelectedPlayers.Add(id);
@@ -397,8 +418,9 @@ public partial class AdminLogsWindow : SS14Window
LogSearch.OnTextChanged -= LogSearchChanged;
SelectAllTypesButton.OnPressed -= SelectAllTypes;
SelectNoTypesButton.OnPressed -= SelectNoTypes;
SelectAllPlayersButton.OnPressed -= SelectAllPlayers;
SelectNoPlayersButton.OnPressed -= SelectNoPlayers;
RoundSpinBox.IsValid = null;