ExistingFormsViewModel.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. }
  33. private ICoreRepository _dataModel;
  34. public ICoreRepository DataModel
  35. {
  36. get => _dataModel;
  37. set
  38. {
  39. _dataModel = value;
  40. }
  41. }
  42. public Func<ICoreRepository, IDigitalFormInstanceShell[]> Property;
  43. public String AppliesTo
  44. {
  45. get;
  46. set;
  47. }
  48. public IDigitalFormInstanceShell[] Forms { get; private set; }
  49. private bool _isRefreshing = false;
  50. public ICommand RefreshCommand { get; private set; }
  51. public void Refresh(bool force)
  52. {
  53. IsRefreshing = true;
  54. _dataModel.Refresh(force, () => Device.BeginInvokeOnMainThread(() =>
  55. {
  56. Forms = Property?.Invoke(_dataModel);
  57. IsRefreshing = false;
  58. }));
  59. }
  60. public bool IsRefreshing {
  61. get { return _isRefreshing; }
  62. set {
  63. _isRefreshing = value;
  64. OnPropertyChanged(nameof(IsRefreshing));
  65. }
  66. }
  67. public ICommand TapCommand { get; private set; }
  68. private void Tapped(object sender)
  69. {
  70. }
  71. public Color SelectedColor { get; set; }
  72. public Color SelectedTextColor { get; set; }
  73. public Color UnselectedColor { get; set; }
  74. public Color UnselectedTextColor { get; set; }
  75. public bool SeparateHistory { get; set; }
  76. }
  77. }