Device network DeviceLists and the NetworkConfigurator (Makes air alarms usable) (#7697)
* Implement DeviceList Implement NetworkConfigurator I sould really get into the habit of making smaller commits * Remove ApcNetworkComponent from vents, scrubbers anf firelocks * Change BeforeBroadcastAttemptEvent#Recepients to readonly IReadonlySet and add a ModifiedRecepients field * Address revievs in NetworkConfigurationSystem * Fix red and green button styles * Change NetworkConfiguratorSystem#UpdateState to remove saved entites that don't exist anymore * Add AtmosDevices device net id * Add const strings for style classes Fix wrong margin for NetworkConfiguratorConfigurationMenu * Hello? Github? * Add access check before opening the configuration ui * Address reviews * Fix call to access reader * You shall not live again IgnoreComponent * Fix interaction verb check * Fix configuration window not closing when target gets deleted / out of range * Change device is already saved message to say 'network device: ... is already saves' * Apply suggestions from code review Co-authored-by: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> * Fix applied suggestion Co-authored-by: wrexbe <81056464+wrexbe@users.noreply.github.com> Co-authored-by: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
using Content.Client.UserInterface;
|
||||
using Content.Shared.DeviceNetwork;
|
||||
using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Client.UserInterface.XAML;
|
||||
|
||||
namespace Content.Client.NetworkConfigurator;
|
||||
|
||||
[GenerateTypedNameReferences]
|
||||
public sealed partial class NetworkConfiguratorListMenu : FancyWindow
|
||||
{
|
||||
private readonly NetworkConfiguratorBoundUserInterface _ui;
|
||||
public NetworkConfiguratorListMenu(NetworkConfiguratorBoundUserInterface ui)
|
||||
{
|
||||
RobustXamlLoader.Load(this);
|
||||
|
||||
_ui = ui;
|
||||
}
|
||||
|
||||
public void UpdateState(NetworkConfiguratorUserInterfaceState state)
|
||||
{
|
||||
DeviceCountLabel.Text = Loc.GetString("network-configurator-ui-count-label", ("count", state.DeviceList.Count));
|
||||
DeviceList.RemoveAllChildren();
|
||||
|
||||
foreach (var savedDevice in state.DeviceList)
|
||||
{
|
||||
DeviceList.AddChild(BuildDeviceListRow(savedDevice));
|
||||
}
|
||||
}
|
||||
|
||||
private BoxContainer BuildDeviceListRow((string address, string name) savedDevice)
|
||||
{
|
||||
var row = new BoxContainer()
|
||||
{
|
||||
Orientation = BoxContainer.LayoutOrientation.Horizontal,
|
||||
Margin = new Thickness(8)
|
||||
};
|
||||
|
||||
var name = new Label()
|
||||
{
|
||||
Text = savedDevice.name[..Math.Min(11, savedDevice.name.Length)],
|
||||
SetWidth = 84
|
||||
};
|
||||
|
||||
var address = new Label()
|
||||
{
|
||||
Text = savedDevice.address,
|
||||
HorizontalExpand = true,
|
||||
Align = Label.AlignMode.Center
|
||||
};
|
||||
|
||||
var removeButton = new TextureButton()
|
||||
{
|
||||
StyleClasses = { "CrossButtonRed" },
|
||||
VerticalAlignment = VAlignment.Center,
|
||||
Scale = new Vector2(0.5f, 0.5f)
|
||||
};
|
||||
|
||||
removeButton.OnPressed += _ => _ui.OnRemoveButtonPressed(savedDevice.address);
|
||||
|
||||
row.AddChild(name);
|
||||
row.AddChild(address);
|
||||
row.AddChild(removeButton);
|
||||
|
||||
return row;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user