DataGridHeaderRow.xaml.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using comal.timesheets.Data_Classes;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using Xamarin.Forms;
  8. using Xamarin.Forms.Xaml;
  9. namespace comal.timesheets
  10. {
  11. public delegate void DataGridHeaderTapped(int columnnumber, SearchUtils.SortDirection SortDirection);
  12. public delegate void DataGridHeaderFilterTapped(int columnnumber, string columnname);
  13. [XamlCompilation(XamlCompilationOptions.Compile)]
  14. public partial class DataGridHeaderRow : ContentView
  15. {
  16. public event DataGridHeaderTapped OnDataGridHeaderTapped;
  17. public event DataGridHeaderFilterTapped OnDataGridHeaderFilterTapped;
  18. public string ColumnName { get; set; }
  19. public int ColumnNumber { get; set; }
  20. public SearchUtils.SortDirection SortDirection { get; set; }
  21. public DataGridHeaderRow()
  22. {
  23. InitializeComponent();
  24. SortDirection = SearchUtils.SortDirection.Default;
  25. }
  26. private void HeaderBtn_Clicked(object sender, EventArgs e)
  27. {
  28. SortDirection = ChooseDirection(SortDirection);
  29. OnDataGridHeaderTapped?.Invoke(ColumnNumber, SortDirection);
  30. }
  31. private void Image_tapped(object sender, EventArgs e)
  32. {
  33. OnDataGridHeaderFilterTapped?.Invoke(ColumnNumber, ColumnName);
  34. }
  35. public void Setup()
  36. {
  37. headerBtn.Text = ColumnName;
  38. if (ColumnName == "Image")
  39. filterBtn.IsVisible = false;
  40. ForceLayout();
  41. }
  42. private SearchUtils.SortDirection ChooseDirection(SearchUtils.SortDirection sortdirection)
  43. {
  44. switch (sortdirection)
  45. {
  46. case SearchUtils.SortDirection.Default:
  47. sortdirection = SearchUtils.SortDirection.Ascending;
  48. break;
  49. case SearchUtils.SortDirection.Ascending:
  50. sortdirection = SearchUtils.SortDirection.Descending;
  51. break;
  52. case SearchUtils.SortDirection.Descending:
  53. sortdirection = SearchUtils.SortDirection.Ascending;
  54. break;
  55. }
  56. return sortdirection;
  57. }
  58. public void ChangeFilterColour(bool filterpresent)
  59. {
  60. if (filterpresent)
  61. {
  62. col1.Width = 30;
  63. col0.Width = 0;
  64. }
  65. else
  66. {
  67. col1.Width = 0;
  68. col0.Width = 30;
  69. }
  70. }
  71. }
  72. }