1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- using Avalonia.Controls;
- using InABox.Avalonia.Platform;
- using Microsoft.Maui.ApplicationModel;
- namespace InABox.Avalonia
- {
-
- public abstract class MobileDocumentSource
- {
- public abstract Task<MobileDocument> From(TopLevel window);
- }
-
- public abstract class MobileDocumentSource<TOptions> : MobileDocumentSource
- where TOptions : class, IMobileDocumentOptions, new()
- {
- public TOptions Options { get; set; }
- protected MobileDocumentSource(TOptions options)
- {
- Options = options;
- }
-
- protected abstract Task<bool> IsEnabled();
-
- protected async Task<bool> IsEnabled<TPermission>()
- where TPermission : Permissions.BasePermission, new()
- {
- var status = await Permissions.CheckStatusAsync<TPermission>();
- if (status != PermissionStatus.Granted && status != PermissionStatus.Restricted)
- status = await Permissions.RequestAsync<TPermission>();
- return status == PermissionStatus.Granted;
- }
-
- protected abstract Task<ImageFile> Capture(TopLevel window);
-
- public override async Task<MobileDocument> From(TopLevel window)
- {
- var result = new MobileDocument();
- if (await IsEnabled())
- {
- try
- {
- var file = await Capture(window);
- if (file?.Data != null)
- {
- result.FileName = Path.GetFileName(file.FileName);
- result.Data = file.Data;
- //file.OriginalFilename ?? file.Path);
- //await using (var stream = await file.OpenReadAsync())
- //{
- // BinaryReader br = new BinaryReader(file.Stream);
- // result.Data = br.ReadBytes((int)file.Stream.Length);
- //}
- }
- ApplyOptions(result);
- }
- catch (FeatureNotSupportedException fnsEx)
- {
- MobileLogging.Log(fnsEx, "Capture(FNS)");
- MobileDialog.ShowMessage("This operation is not Supported on this Device!");
- }
- catch (PermissionException pEx)
- {
- MobileLogging.Log(pEx, "Capture(PERM)");
- MobileDialog.ShowMessage("This operation is not Permitted on this Device!");
- }
- catch (Exception ex)
- {
- MobileLogging.Log(ex, "Capture(ERR)");
- MobileDialog.ShowMessage("Oops! Something went wrong! Please try again..");
- }
- }
- return result;
- }
- protected abstract void ApplyOptions(MobileDocument document);
- }
- }
|