DocScannerEditor.xaml.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using System.IO;
  3. using System.Threading.Tasks;
  4. using InABox.Core;
  5. using InABox.Mobile;
  6. using Syncfusion.SfImageEditor.XForms;
  7. using Xamarin.Forms;
  8. using Xamarin.Forms.Xaml;
  9. using XF.Material.Forms.UI.Dialogs;
  10. namespace PRS.Mobile.Modules.DocScanner
  11. {
  12. [XamlCompilation(XamlCompilationOptions.Compile)]
  13. public partial class DocScannerEditor
  14. {
  15. public DocScannerEditor(DataEntryDocumentShell document)
  16. {
  17. InitializeComponent();
  18. ViewModel.Document = document;
  19. _imageEditor.Source = ImageSource.FromStream(() => new MemoryStream(ViewModel.Image?.Data ?? new byte[] { }));
  20. _imageEditor.ToolbarSettings.ToolbarItems.Add(
  21. new HeaderToolbarItem
  22. {
  23. Name = "CustomRotate",
  24. Text = "Rotate",
  25. });
  26. _imageEditor.ToolbarSettings.ToolbarItemSelected += ToolbarSettings_CustomButtonClicked;
  27. }
  28. private void ToolbarSettings_CustomButtonClicked(object sender, ToolbarItemSelectedEventArgs e)
  29. {
  30. switch (e.ToolbarItem.Name)
  31. {
  32. case "CustomRotate":
  33. _imageEditor.Rotate();
  34. break;
  35. }
  36. }
  37. protected override void OnAppearing()
  38. {
  39. base.OnAppearing();
  40. _imageEditor.SetToolbarItemVisibility("save", false);
  41. }
  42. private async void ImageEditor_ImageSaving(object sender, ImageSavingEventArgs args)
  43. {
  44. args.Cancel = true;
  45. using (await MaterialDialog.Instance.LoadingDialogAsync("Saving Data"))
  46. {
  47. if (ViewModel.Image != null)
  48. {
  49. var stream = args.Stream;
  50. MemoryStream memoryStream = new MemoryStream();
  51. await stream.CopyToAsync(memoryStream);
  52. ViewModel.Image.Data = memoryStream.ToArray();
  53. ViewModel.Image.CRC = CoreUtils.CalculateCRC(ViewModel.Image.Data);
  54. ViewModel.Image.TimeStamp = DateTime.Now;
  55. ViewModel.Image.Save("Updated from Mobile Device");
  56. ViewModel.Document.Thumbnail =
  57. MobileUtils.ImageTools.CreateThumbnail(ViewModel.Image.Data, 256, 256);
  58. }
  59. ViewModel.Document.Save("Updated from Mobile Device");
  60. }
  61. Navigation.PopAsync();
  62. }
  63. private void SaveBtn_Clicked(object sender, MobileMenuButtonClickedEventArgs args)
  64. {
  65. _imageEditor.Save();
  66. }
  67. }
  68. }