using System; using InABox.Mobile; using Xamarin.Forms; using Xamarin.Forms.Xaml; namespace PRS.Mobile { [XamlCompilation(XamlCompilationOptions.Compile)] public partial class SelectionPage { private SelectionPageMode _mode; private Action _configure; private Func _refresh; private Action _selected; public SelectionPage( String title, SelectionPageMode mode, Action configure, Func refresh, Action selected) { _mode = mode; _configure = configure; _refresh = refresh; _selected = selected; InitializeComponent(); Title = title; _selection.Mode = mode; if (_mode != SelectionPageMode.Immediate) { ToolbarItems.Clear(); ToolbarItems.Add(new ToolbarItem("Select", null, DoSelectItems)); } ProgressVisible = true; } protected override void OnAppearing() { _selection.Load(); base.OnAppearing(); } private void DoSelectItems() { _selected?.Invoke(_selection.SelectedItems); Navigation.PopAsync(); } private void _selection_OnConfigure(object sender, SelectionViewConfigureArgs args) { _configure?.Invoke(args.Columns, args.Filters); } private object _selection_OnRefresh(object sender, SelectionViewRefreshArgs args) { ProgressVisible = true; var result = _refresh?.Invoke(args); ProgressVisible = false; return result; } private void _selection_OnSelectionChanged(object sender, SelectionViewSelectionChangedArgs args) { if (_mode == SelectionPageMode.Immediate) DoSelectItems(); } } }