CoreMenuHeader.cs 1.3 KB

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