ExistingFormsViewModel.cs 2.2 KB

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