using System; using System.Collections.Generic; using System.ComponentModel; using System.Runtime.CompilerServices; using System.Windows.Input; using InABox.Mobile; using Xamarin.Forms; namespace PRS.Mobile { public class ExistingFormsViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } protected bool SetField(ref T field, T value, [CallerMemberName] string propertyName = null) { if (EqualityComparer.Default.Equals(field, value)) return false; field = value; OnPropertyChanged(propertyName); return true; } public ExistingFormsViewModel() { TapCommand = new Command(Tapped); SeparateHistory = true; SelectedColor = XF.Material.Forms.Material.Color.Surface; SelectedTextColor = XF.Material.Forms.Material.Color.OnSurface; UnselectedColor = XF.Material.Forms.Material.Color.Primary; UnselectedTextColor = XF.Material.Forms.Material.Color.OnPrimary; PullToRefresh = true; } private ICoreRepository _dataModel; public ICoreRepository DataModel { get => _dataModel; set { _dataModel = value; } } public Func Property; public String AppliesTo { get; set; } public IDigitalFormInstanceShell[] Forms { get; private set; } private bool _isRefreshing = false; public ICommand RefreshCommand { get; private set; } public void Refresh(bool force) { IsRefreshing = true; _dataModel.Refresh(force, () => Device.BeginInvokeOnMainThread(() => { Forms = Property?.Invoke(_dataModel); IsRefreshing = false; })); } public bool IsRefreshing { get { return _isRefreshing; } set { _isRefreshing = value; OnPropertyChanged(nameof(IsRefreshing)); } } public ICommand TapCommand { get; private set; } private void Tapped(object sender) { } public Color SelectedColor { get; set; } public Color SelectedTextColor { get; set; } public Color UnselectedColor { get; set; } public Color UnselectedTextColor { get; set; } public bool SeparateHistory { get; set; } public bool PullToRefresh { get; set; } } }