Files
tbd-station-14/Content.Client/CartridgeLoader/Cartridges/NotekeeperUiFragment.xaml.cs
Julian Giebel e11cf969fa PDA UI refactor and cartridges (#11335)
* Work on cartridges

* Work on PDA UI

* Work on PDA UIs program list

* Work on PDA UI borders

* Add DeviceNetworkingComponent to the pda base prototype

* Fix submodule version

* Fix cartridge loader ui key

* Fix pda menu xaml

* Implement relaying ui messages

* Finish implementing the notekeeper cartridge

* Fix submodule version

* Fix errors from merging master

* Fix test failing

* Implement setting preinstalled programs

* Add some documentation to CartridgeLoaderSystem

* Add more doc comments

* Add localization to program names

* Implement review suggestions

* Fix background programs receiving events twice when active
2022-11-08 14:00:20 -06:00

63 lines
1.6 KiB
C#

using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
namespace Content.Client.CartridgeLoader.Cartridges;
[GenerateTypedNameReferences]
public sealed partial class NotekeeperUiFragment : BoxContainer
{
public event Action<string>? OnNoteAdded;
public event Action<string>? OnNoteRemoved;
public NotekeeperUiFragment()
{
RobustXamlLoader.Load(this);
Orientation = LayoutOrientation.Vertical;
HorizontalExpand = true;
VerticalExpand = true;
Input.OnTextEntered += _ =>
{
AddNote(Input.Text);
OnNoteAdded?.Invoke(Input.Text);
Input.Clear();
};
UpdateState(new List<string>());
}
public void UpdateState(List<string> notes)
{
MessageContainer.RemoveAllChildren();
foreach (var note in notes)
{
AddNote(note);
}
}
private void AddNote(string note)
{
var row = new BoxContainer();
row.HorizontalExpand = true;
row.Orientation = LayoutOrientation.Horizontal;
row.Margin = new Thickness(4);
var label = new Label();
label.Text = note;
label.HorizontalExpand = true;
label.ClipText = true;
var removeButton = new TextureButton();
removeButton.AddStyleClass("windowCloseButton");
removeButton.OnPressed += _ => OnNoteRemoved?.Invoke(label.Text);
row.AddChild(label);
row.AddChild(removeButton);
MessageContainer.AddChild(row);
}
}