CoreMenuHeader.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System;
  2. using System.Collections.Generic;
  3. namespace InABox.Core
  4. {
  5. public class CoreMenuHeader<T> : ICoreMenuContentItem where T : class
  6. {
  7. public string Header { get; set; }
  8. public T? Image { get; set; }
  9. object? ICoreMenuContentItem.Image { get => Image; set => Image = (T?)value; }
  10. public List<ICoreMenuItem> Items { get; } = new List<ICoreMenuItem>();
  11. public CoreMenuHeader(string header, T? image = null)
  12. {
  13. Header = header;
  14. Image = image;
  15. }
  16. public CoreMenuHeader<T> AddItem(string header, T? image, Action action)
  17. {
  18. var result = new CoreMenuItem<T>(header, image, action);
  19. Items.Add(result);
  20. return this;
  21. }
  22. public CoreMenuHeader<T> AddItem(string header, Action action)
  23. {
  24. var result = new CoreMenuItem<T>(header, null, action);
  25. Items.Add(result);
  26. return this;
  27. }
  28. public CoreMenuHeader<T> AddSeparator()
  29. {
  30. Items.Add(new CoreMenuSeparator());
  31. return this;
  32. }
  33. public CoreMenuHeader<T> AddHeader(CoreMenuHeader<T> header)
  34. {
  35. Items.Add(header);
  36. return this;
  37. }
  38. }
  39. }