| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using InABox.Core;
- using InABox.Mobile;
- using Xamarin.Forms;
- namespace PRS.Mobile
- {
- public class DigitalFormMultiImage : MobileCard, IDigitalFormField<DFLayoutMultiImage, DFLayoutMultiImageProperties, DFLayoutEmbeddedMediaValues>
- {
- private readonly CollectionView _images;
-
- private DFLayoutMultiImage _definition;
- public DFLayoutMultiImage Definition
- {
- get => _definition;
- set
- {
- _definition = value;
- Initialize(value ?? new DFLayoutMultiImage());
- }
- }
-
- private DFLayoutEmbeddedMediaValues _value = new DFLayoutEmbeddedMediaValues();
- public DFLayoutEmbeddedMediaValues Value
- {
- get => _value;
- set
- {
- _value = value;
- DoUpdateUI();
- }
- }
- public bool IsEmpty => Value?.Any() != true;
-
- private void DoUpdateUI()
- => _images.ItemsSource = _value.Select(x => ImageSource.FromStream(() => new MemoryStream(x.Data)));
- private bool _readOnly;
- public bool ReadOnly
- {
- get => _readOnly;
- set
- {
- _readOnly = value;
- UpdateStatus();
- }
- }
-
- public void Deserialize(string serialized)
- {
- _value = new DFLayoutEmbeddedMediaValues(serialized);
- _value.PropertyChanged += (sender, args) => DoUpdateUI();
- DoUpdateUI();
- }
- public string Serialize()
- {
- return _value?.ToString() ?? "";
- }
-
- public event DigitalFormViewChangedHandler ValueChanged;
- public DigitalFormMultiImage()
- {
- _value = new DFLayoutEmbeddedMediaValues();
- _value.PropertyChanged += (sender, args) => DoUpdateUI();
-
- HeightRequest = 200;
- Padding = 5;
- Grid grid = new Grid();
- grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Star });
- grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Star });
-
- grid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Star });
- grid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
-
- _images = new CollectionView
- {
- ItemsLayout = new LinearItemsLayout(ItemsLayoutOrientation.Horizontal),
- BackgroundColor = Color.Red,
- ItemTemplate = new DataTemplate(() =>
- {
- var image = new Image();
- return image;
- })
- };
- _images.SetValue(Grid.RowProperty,0);
- _images.SetValue(Grid.ColumnProperty,0);
- _images.SetValue(Grid.ColumnSpanProperty,2);
- grid.Children.Add(_images);
-
- MobileButton camera = new MobileButton()
- {
- Image = ImageSource.FromFile("camera"),
- Text = "Take Photo",
- Orientation = StackOrientation.Horizontal
- };
- camera.Clicked += (sender, args) =>
- {
- };
- camera.SetValue(Grid.RowProperty,1);
- camera.SetValue(Grid.ColumnProperty,0);
- grid.Children.Add(camera);
-
- MobileButton library = new MobileButton()
- {
- Image = ImageSource.FromFile("gallery"),
- Text = "Library",
- Orientation = StackOrientation.Horizontal
- };
- library.Clicked += (sender, args) =>
- {
- };
- library.SetValue(Grid.RowProperty,1);
- library.SetValue(Grid.ColumnProperty,1);
- grid.Children.Add(library);
-
- Content = grid;
- }
-
- private void Initialize(DFLayoutMultiImage value)
- {
- UpdateStatus();
- }
- private void UpdateStatus()
- {
-
- }
- }
- }
|