1
0

NotekeeperUiFragment.xaml.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Robust.Client.AutoGenerated;
  2. using Robust.Client.UserInterface.Controls;
  3. using Robust.Client.UserInterface.XAML;
  4. namespace Content.Client.CartridgeLoader.Cartridges;
  5. [GenerateTypedNameReferences]
  6. public sealed partial class NotekeeperUiFragment : BoxContainer
  7. {
  8. public event Action<string>? OnNoteAdded;
  9. public event Action<string>? OnNoteRemoved;
  10. public NotekeeperUiFragment()
  11. {
  12. RobustXamlLoader.Load(this);
  13. Orientation = LayoutOrientation.Vertical;
  14. HorizontalExpand = true;
  15. VerticalExpand = true;
  16. Input.OnTextEntered += _ =>
  17. {
  18. AddNote(Input.Text);
  19. OnNoteAdded?.Invoke(Input.Text);
  20. Input.Clear();
  21. };
  22. UpdateState(new List<string>());
  23. }
  24. public void UpdateState(List<string> notes)
  25. {
  26. MessageContainer.RemoveAllChildren();
  27. foreach (var note in notes)
  28. {
  29. AddNote(note);
  30. }
  31. }
  32. private void AddNote(string note)
  33. {
  34. var row = new BoxContainer();
  35. row.HorizontalExpand = true;
  36. row.Orientation = LayoutOrientation.Horizontal;
  37. row.Margin = new Thickness(4);
  38. var label = new Label();
  39. label.Text = note;
  40. label.HorizontalExpand = true;
  41. label.ClipText = true;
  42. var removeButton = new TextureButton();
  43. removeButton.AddStyleClass("windowCloseButton");
  44. removeButton.OnPressed += _ => OnNoteRemoved?.Invoke(label.Text);
  45. row.AddChild(label);
  46. row.AddChild(removeButton);
  47. MessageContainer.AddChild(row);
  48. }
  49. }