using System; <<<<<<< HEAD using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Xamarin.Forms; ======= >>>>>>> 157e2e53c724ac158405ab5d124be7d214b4e5e7 using Xamarin.Forms.Xaml; namespace comal.timesheets { public class SelectionViewConfigureArgs : EventArgs { public MobileGridColumns Columns { get; private set; } public SelectionViewConfigureArgs(MobileGridColumns columns) { Columns = columns; } } public delegate void SelectionViewConfigureEvent(object sender, SelectionViewConfigureArgs args); public class SelectionViewRefreshArgs : EventArgs { public bool Force { get; private set; } public SelectionViewRefreshArgs(bool force) { Force = force; } } public delegate object SelectionViewRefreshEvent(object sender, SelectionViewRefreshArgs args); public class SelectionViewSelectionChangedArgs : EventArgs { public object[] SelectedItems { get; private set; } public SelectionViewSelectionChangedArgs(object[] selecteditems) { SelectedItems = selecteditems; } } public delegate void SelectionViewSelectionChangedEvent(object sender, SelectionViewSelectionChangedArgs args); [XamlCompilation(XamlCompilationOptions.Compile)] public partial class SelectionView { private SelectionPageMode _mode = SelectionPageMode.Immediate; public SelectionPageMode Mode { get => _mode; set { _mode = value; Items.SelectionMode = value == SelectionPageMode.MultiSelect ? MobileGridSelectionMode.Multiple : MobileGridSelectionMode.Single; } } public object[] SelectedItems => Items.SelectedItems; public event SelectionViewConfigureEvent Configure; public event SelectionViewRefreshEvent Refresh; public event SelectionViewSelectionChangedEvent SelectionChanged; public bool CanSearch { get => Items.CanSearch; set => Items.CanSearch = value; } public SelectionView() { Mode = SelectionPageMode.Immediate; InitializeComponent(); } public void Load() { Configure?.Invoke(this, new SelectionViewConfigureArgs(Items.Columns)); Items.SelectionMode = Mode == SelectionPageMode.MultiSelect ? MobileGridSelectionMode.Multiple : MobileGridSelectionMode.Single; Items.PullToRefresh = true; Items.ItemsSource = Refresh?.Invoke(this, new SelectionViewRefreshArgs(false)); } private void Items_OnRefreshRequested(object sender, MobileGridRefreshRequestArgs args) { var items = Refresh?.Invoke(this, new SelectionViewRefreshArgs(true)); Items.ItemsSource = items; } private void Items_OnSelectionChanged(object sender, MobileGridSelectionArgs args) { if (Mode == SelectionPageMode.Immediate) SelectionChanged?.Invoke(this, new SelectionViewSelectionChangedArgs(Items.SelectedItems)); } } }