using System; using System.Collections.Generic; using System.IO; using System.Linq; using InABox.Clients; using InABox.Core; using InABox.Mobile; using JetBrains.Annotations; using Xamarin.Forms; namespace PRS.Mobile { public class ImageViewerPageChangedEventArgs { public Document Document { get; private set; } public String AuditMessage { get; private set; } public ImageViewerPageChangedEventArgs(Document document, String auditmessage) { Document = document; AuditMessage = auditmessage; } } public delegate void ImageViewerPageImageChangedEvent(object sender, ImageViewerPageChangedEventArgs args); public partial class ImageViewerPage { [CanBeNull] private Action _deleteaction = null; private Document _doc; public event ImageViewerPageImageChangedEvent ImageChanged; public ImageViewerPage(ImageSource image, Action ondelete) { InitializeComponent(); BindingContext = image; _deleteaction = ondelete; _delete.IsVisible = ondelete != null; } public ImageViewerPage(byte[] data, Action ondelete) { InitializeComponent(); BindingContext = ImageSource.FromStream(() => new MemoryStream(data)); _deleteaction = ondelete; _delete.IsVisible = ondelete != null; } public ImageViewerPage(Guid id) { InitializeComponent(); new Client().Query( new Filter(x => x.ID).IsEqualTo(id), null, null, (o, e) => { _doc = o?.Rows.FirstOrDefault()?.ToObject(); if (_doc != null) { Dispatcher.BeginInvokeOnMainThread(() => { BindingContext = ImageSource.FromStream(() => new MemoryStream(_doc.Data)); _rotate.IsVisible = true; }); } } ); } private void DeleteBtn_Clicked(object sender, EventArgs e) { _deleteaction?.Invoke(); Navigation.PopAsync(); } private void _rotate_Clicked(object sender, MobileButtonClickEventArgs args) { if (_doc == null) return; _doc.Data = MobileUtils.ImageTools.RotateImage(_doc.Data,90F,100); _doc.CRC = CoreUtils.CalculateCRC(_doc.Data); var msg = "Image Rotated on Mobile Device"; new Client().Save(_doc, msg); BindingContext = ImageSource.FromStream(() => new MemoryStream(_doc.Data)); ImageChanged?.Invoke(this, new ImageViewerPageChangedEventArgs(_doc,msg)); } } }