DataGridHeaderRow.xaml.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. }
  59. }