Disable AHelp buttons when no player is selected, update button styling (#20568)

This commit is contained in:
DrSmugleaf
2023-09-28 16:46:49 -07:00
committed by GitHub
parent f985e7dc5c
commit be61cca53f
3 changed files with 38 additions and 44 deletions

View File

@@ -6,14 +6,15 @@
<cc:PlayerListControl Access="Public" Name="ChannelSelector" HorizontalExpand="True" SizeFlagsStretchRatio="1" /> <cc:PlayerListControl Access="Public" Name="ChannelSelector" HorizontalExpand="True" SizeFlagsStretchRatio="1" />
<BoxContainer Orientation="Vertical" HorizontalExpand="True" SizeFlagsStretchRatio="2"> <BoxContainer Orientation="Vertical" HorizontalExpand="True" SizeFlagsStretchRatio="2">
<BoxContainer Access="Public" Name="BwoinkArea" VerticalExpand="True" /> <BoxContainer Access="Public" Name="BwoinkArea" VerticalExpand="True" />
<BoxContainer Orientation="Horizontal" HorizontalAlignment="Right"> <BoxContainer Orientation="Horizontal" HorizontalExpand="True">
<Button Margin="0 0 10 0" Visible="True" Name="PopOut" Access="Public" Text="{Loc 'admin-logs-pop-out'}"/> <Button Visible="True" Name="PopOut" Access="Public" Text="{Loc 'admin-logs-pop-out'}" StyleClasses="OpenBoth" HorizontalAlignment="Left" />
<Button Visible="False" Name="Bans" Text="{Loc 'admin-player-actions-bans'}" /> <Control HorizontalExpand="True" />
<Button Visible="False" Name="Notes" Text="{Loc 'admin-player-actions-notes'}" /> <Button Visible="False" Name="Bans" Text="{Loc 'admin-player-actions-bans'}" StyleClasses="OpenRight" />
<Button Visible="False" Name="Kick" Text="{Loc 'admin-player-actions-kick'}" /> <Button Visible="False" Name="Notes" Text="{Loc 'admin-player-actions-notes'}" StyleClasses="OpenBoth" />
<Button Visible="False" Name="Ban" Text="{Loc 'admin-player-actions-ban'}" /> <Button Visible="False" Name="Kick" Text="{Loc 'admin-player-actions-kick'}" StyleClasses="OpenBoth" />
<Button Visible="False" Name="Respawn" Text="{Loc 'admin-player-actions-respawn'}" /> <Button Visible="False" Name="Ban" Text="{Loc 'admin-player-actions-ban'}" StyleClasses="OpenBoth" />
<Button Visible="False" Name="Teleport" Text="{Loc 'admin-player-actions-teleport'}" /> <Button Visible="False" Name="Respawn" Text="{Loc 'admin-player-actions-respawn'}" StyleClasses="OpenBoth" />
<Button Visible="False" Name="Teleport" Text="{Loc 'admin-player-actions-teleport'}" StyleClasses="OpenLeft" />
</BoxContainer> </BoxContainer>
</BoxContainer> </BoxContainer>
</SplitContainer> </SplitContainer>

View File

@@ -39,17 +39,13 @@ namespace Content.Client.Administration.UI.Bwoink
AHelpHelper = helper; AHelpHelper = helper;
_adminManager.AdminStatusUpdated += FixButtons; _adminManager.AdminStatusUpdated += UpdateButtons;
FixButtons(); UpdateButtons();
ChannelSelector.OnSelectionChanged += sel => ChannelSelector.OnSelectionChanged += sel =>
{ {
_currentPlayer = sel; _currentPlayer = sel;
if (sel is not null) SwitchToChannel(sel?.SessionId);
{
SwitchToChannel(sel.SessionId);
}
ChannelSelector.PlayerListContainer.DirtyList(); ChannelSelector.PlayerListContainer.DirtyList();
}; };
@@ -182,25 +178,27 @@ namespace Content.Client.Administration.UI.Bwoink
ChannelSelector.PlayerListContainer.Select(data); ChannelSelector.PlayerListContainer.Select(data);
} }
private void FixButtons() public void UpdateButtons()
{ {
var disabled = _currentPlayer == null;
Bans.Visible = _adminManager.HasFlag(AdminFlags.Ban); Bans.Visible = _adminManager.HasFlag(AdminFlags.Ban);
Bans.Disabled = !Bans.Visible; Bans.Disabled = !Bans.Visible || disabled;
Notes.Visible = _adminManager.HasFlag(AdminFlags.ViewNotes); Notes.Visible = _adminManager.HasFlag(AdminFlags.ViewNotes);
Notes.Disabled = !Notes.Visible; Notes.Disabled = !Notes.Visible || disabled;
Ban.Visible = _adminManager.HasFlag(AdminFlags.Ban); Ban.Visible = _adminManager.HasFlag(AdminFlags.Ban);
Ban.Disabled = !Ban.Visible; Ban.Disabled = !Ban.Visible || disabled;
Kick.Visible = _adminManager.CanCommand("kick"); Kick.Visible = _adminManager.CanCommand("kick");
Kick.Disabled = !Kick.Visible; Kick.Disabled = !Kick.Visible || disabled;
Teleport.Visible = _adminManager.CanCommand("tpto");
Teleport.Disabled = !Teleport.Visible;
Respawn.Visible = _adminManager.CanCommand("respawn"); Respawn.Visible = _adminManager.CanCommand("respawn");
Respawn.Disabled = !Respawn.Visible; Respawn.Disabled = !Respawn.Visible || disabled;
Teleport.Visible = _adminManager.CanCommand("tpto");
Teleport.Disabled = !Teleport.Visible || disabled;
} }
private string FormatTabTitle(ItemList.Item li, PlayerInfo? pl = default) private string FormatTabTitle(ItemList.Item li, PlayerInfo? pl = default)
@@ -231,12 +229,21 @@ namespace Content.Client.Administration.UI.Bwoink
return sb.ToString(); return sb.ToString();
} }
private void SwitchToChannel(NetUserId ch) private void SwitchToChannel(NetUserId? ch)
{ {
foreach (var bw in BwoinkArea.Children) UpdateButtons();
bw.Visible = false;
var panel = AHelpHelper.EnsurePanel(ch); if (ch != null)
panel.Visible = true; {
var panel = AHelpHelper.EnsurePanel(ch.Value);
panel.Visible = true;
}
}
public void PopulateList()
{
ChannelSelector.PopulateList();
UpdateButtons();
} }
} }
} }

View File

@@ -1,20 +1,6 @@
using System.Text;
using System.Threading;
using Content.Client.Administration.Managers;
using Content.Client.Administration.UI.CustomControls;
using Content.Client.Administration.UI.Tabs.AdminTab;
using Content.Client.Stylesheets;
using Content.Client.UserInterface.Systems.Bwoink;
using Content.Shared.Administration;
using Robust.Client.AutoGenerated; using Robust.Client.AutoGenerated;
using Robust.Client.Console;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
using Robust.Shared.Network;
using Robust.Shared.Utility;
using Timer = Robust.Shared.Timing.Timer;
namespace Content.Client.Administration.UI.Bwoink namespace Content.Client.Administration.UI.Bwoink
{ {
@@ -36,7 +22,7 @@ namespace Content.Client.Administration.UI.Bwoink
} }
}; };
OnOpen += () => Bwoink.ChannelSelector.PopulateList(); OnOpen += () => Bwoink.PopulateList();
} }
} }
} }