NanoTaskUiFragment.xaml.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System.Linq;
  2. using Robust.Client.AutoGenerated;
  3. using Robust.Client.UserInterface.Controls;
  4. using Robust.Client.UserInterface.XAML;
  5. using Content.Shared.CartridgeLoader.Cartridges;
  6. namespace Content.Client.CartridgeLoader.Cartridges;
  7. /// <summary>
  8. /// Class displaying the main UI of NanoTask
  9. /// </summary>
  10. [GenerateTypedNameReferences]
  11. public sealed partial class NanoTaskUiFragment : BoxContainer
  12. {
  13. public Action<int>? OpenTask;
  14. public Action<int>? ToggleTaskCompletion;
  15. public Action? NewTask;
  16. public List<NanoTaskItemAndId> Tasks = new();
  17. public NanoTaskUiFragment()
  18. {
  19. RobustXamlLoader.Load(this);
  20. Orientation = LayoutOrientation.Vertical;
  21. HorizontalExpand = true;
  22. VerticalExpand = true;
  23. NewTaskButton.OnPressed += _ => NewTask?.Invoke();
  24. }
  25. public void UpdateState(List<NanoTaskItemAndId> tasks)
  26. {
  27. Tasks = tasks;
  28. HighContainer.RemoveAllChildren();
  29. MediumContainer.RemoveAllChildren();
  30. LowContainer.RemoveAllChildren();
  31. HighPriority.Text = Loc.GetString("nano-task-ui-heading-high-priority-tasks", ("amount", tasks.Count(task => task.Data.Priority == NanoTaskPriority.High)));
  32. MediumPriority.Text = Loc.GetString("nano-task-ui-heading-medium-priority-tasks", ("amount", tasks.Count(task => task.Data.Priority == NanoTaskPriority.Medium)));
  33. LowPriority.Text = Loc.GetString("nano-task-ui-heading-low-priority-tasks", ("amount", tasks.Count(task => task.Data.Priority == NanoTaskPriority.Low)));
  34. foreach (var task in tasks)
  35. {
  36. var container = task.Data.Priority switch {
  37. NanoTaskPriority.High => HighContainer,
  38. NanoTaskPriority.Medium => MediumContainer,
  39. NanoTaskPriority.Low => LowContainer,
  40. };
  41. var control = new NanoTaskItemControl(task);
  42. container.AddChild(control);
  43. control.OnMainPressed += id => OpenTask?.Invoke(id);
  44. control.OnDonePressed += id => ToggleTaskCompletion?.Invoke(id);
  45. }
  46. }
  47. }