ExistingFormsViewModel.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Runtime.CompilerServices;
  5. using System.Windows.Input;
  6. using InABox.Mobile;
  7. using Xamarin.Forms;
  8. namespace PRS.Mobile
  9. {
  10. public class ExistingFormsViewModel : INotifyPropertyChanged
  11. {
  12. public event PropertyChangedEventHandler PropertyChanged;
  13. protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
  14. {
  15. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  16. }
  17. protected bool SetField<T>(ref T field, T value, [CallerMemberName] string propertyName = null)
  18. {
  19. if (EqualityComparer<T>.Default.Equals(field, value)) return false;
  20. field = value;
  21. OnPropertyChanged(propertyName);
  22. return true;
  23. }
  24. public ExistingFormsViewModel()
  25. {
  26. TapCommand = new Command<object>(Tapped);
  27. SeparateHistory = true;
  28. SelectedColor = XF.Material.Forms.Material.Color.Surface;
  29. SelectedTextColor = XF.Material.Forms.Material.Color.OnSurface;
  30. UnselectedColor = XF.Material.Forms.Material.Color.Primary;
  31. UnselectedTextColor = XF.Material.Forms.Material.Color.OnPrimary;
  32. PullToRefresh = true;
  33. }
  34. private ICoreRepository _dataModel;
  35. public ICoreRepository DataModel
  36. {
  37. get => _dataModel;
  38. set
  39. {
  40. _dataModel = value;
  41. }
  42. }
  43. public Func<ICoreRepository, IDigitalFormInstanceShell[]> Property;
  44. public String AppliesTo
  45. {
  46. get;
  47. set;
  48. }
  49. public IDigitalFormInstanceShell[] Forms { get; private set; }
  50. private bool _isRefreshing = false;
  51. public ICommand RefreshCommand { get; private set; }
  52. public void Refresh(bool force)
  53. {
  54. IsRefreshing = true;
  55. _dataModel.Refresh(force, () => Device.BeginInvokeOnMainThread(() =>
  56. {
  57. Forms = Property?.Invoke(_dataModel);
  58. IsRefreshing = false;
  59. }));
  60. }
  61. public bool IsRefreshing {
  62. get { return _isRefreshing; }
  63. set {
  64. _isRefreshing = value;
  65. OnPropertyChanged(nameof(IsRefreshing));
  66. }
  67. }
  68. public ICommand TapCommand { get; private set; }
  69. private void Tapped(object sender)
  70. {
  71. }
  72. public Color SelectedColor { get; set; }
  73. public Color SelectedTextColor { get; set; }
  74. public Color UnselectedColor { get; set; }
  75. public Color UnselectedTextColor { get; set; }
  76. public bool SeparateHistory { get; set; }
  77. public bool PullToRefresh { get; set; }
  78. }
  79. }