| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using InABox.Core;
- using InABox.Mobile;
- using Xamarin.Forms;
- using Xamarin.Forms.Xaml;
- namespace PRS.Mobile
- {
- public class LiveMapsMenuItem : BindableObject
- {
- public Guid ID { get; set; }
- public String Description { get; set; }
- public bool Selected { get; set; }
- public ImageSource SelectedImage =>
- Selected
- ? ImageSource.FromFile("checked")
- : ImageSource.FromFile("unchecked");
- }
-
- [XamlCompilation(XamlCompilationOptions.Compile)]
- public partial class LiveMapsMenu
- {
- private Task _data;
- private LiveMapsMenuItem[] _items;
- private Guid[] _selectedItems = new Guid[] { };
- public Guid[] SelectedItems
- {
- get => _selectedItems;
- set
- {
- _selectedItems = value;
- Refresh();
- }
- }
-
- public LiveMapsMenu()
- {
- _data = Task.Run(() => App.Data.EquipmentGroups.Refresh(false));
-
- InitializeComponent();
-
- _grid.Columns
- .BeginUpdate()
- .Clear()
- .Add(
- new MobileGridImageColumn<LiveMapsMenuItem>()
- {
- Column = x => x.SelectedImage,
- Width = 30,
- Margin = 5,
- Header = ImageSource.FromFile("checked"),
- Tapped = ToggleSelection
- })
- .Add(
- new MobileGridTextColumn<LiveMapsMenuItem>()
- {
- Column = x => x.Description,
- Caption = "Select Categories",
- Width = GridLength.Star,
- Alignment = TextAlignment.Start
- })
- .EndUpdate();
-
- }
- private void Refresh()
- {
- _data.Wait();
- _items = App.Data.EquipmentGroups.Items
- .Select(x =>
- new LiveMapsMenuItem()
- {
- ID = x.ID,
- Description = x.Description,
- Selected = _selectedItems.Contains(x.ID)
- })
- .Prepend(
- new LiveMapsMenuItem()
- {
- ID = CoreUtils.FullGuid,
- Description = "Job Locations",
- Selected = _selectedItems.Contains(CoreUtils.FullGuid)
- })
- .ToArray();
- _grid.ItemsSource = _items;
- }
- private void ToggleSelection(IMobileGridColumn column, object data)
- {
- if (data is LiveMapsMenuItem item)
- item.Selected = !item.Selected;
- _selectedItems = _items.Where(x => x.Selected).Select(x => x.ID).ToArray();
- DoChanged();
- }
- private void _selectall_Clicked(object sender, MobileButtonClickEventArgs args)
- {
- foreach (var item in _items)
- item.Selected = true;
- _selectedItems = _items.Where(x => x.Selected).Select(x => x.ID).ToArray();
- DoChanged();
- }
- private void _clearall_Clicked(object sender, MobileButtonClickEventArgs args)
- {
- foreach (var item in _items)
- item.Selected = false;
- _selectedItems = _items.Where(x => x.Selected).Select(x => x.ID).ToArray();
- DoChanged();
- }
- public event EventHandler Changed;
-
- private void DoChanged()
- {
- Changed?.Invoke(this,EventArgs.Empty);
- }
- }
- }
|