using System; using System.IO; using System.Threading.Tasks; using InABox.Core; using InABox.Mobile; using Syncfusion.SfImageEditor.XForms; using Xamarin.Forms; using Xamarin.Forms.Xaml; using XF.Material.Forms.UI.Dialogs; namespace PRS.Mobile.Modules.DocScanner { [XamlCompilation(XamlCompilationOptions.Compile)] public partial class DocScannerEditor { public DocScannerEditor(DataEntryDocumentShell document) { InitializeComponent(); ViewModel.Document = document; _imageEditor.Source = ImageSource.FromStream(() => new MemoryStream(ViewModel.Image?.Data ?? new byte[] { })); _imageEditor.ToolbarSettings.ToolbarItems.Add( new HeaderToolbarItem { Name = "CustomRotate", Text = "Rotate", }); _imageEditor.ToolbarSettings.ToolbarItemSelected += ToolbarSettings_CustomButtonClicked; } private void ToolbarSettings_CustomButtonClicked(object sender, ToolbarItemSelectedEventArgs e) { switch (e.ToolbarItem.Name) { case "CustomRotate": _imageEditor.Rotate(); break; } } protected override void OnAppearing() { base.OnAppearing(); _imageEditor.SetToolbarItemVisibility("save", false); } private async void ImageEditor_ImageSaving(object sender, ImageSavingEventArgs args) { args.Cancel = true; using (await MaterialDialog.Instance.LoadingDialogAsync("Saving Data")) { if (ViewModel.Image != null) { var stream = args.Stream; MemoryStream memoryStream = new MemoryStream(); await stream.CopyToAsync(memoryStream); ViewModel.Image.Data = memoryStream.ToArray(); ViewModel.Image.CRC = CoreUtils.CalculateCRC(ViewModel.Image.Data); ViewModel.Image.TimeStamp = DateTime.Now; ViewModel.Image.Save("Updated from Mobile Device"); ViewModel.Document.Thumbnail = MobileUtils.ImageTools.CreateThumbnail(ViewModel.Image.Data, 256, 256); } ViewModel.Document.Save("Updated from Mobile Device"); } Navigation.PopAsync(); } private void SaveBtn_Clicked(object sender, MobileMenuButtonClickedEventArgs args) { _imageEditor.Save(); } } }