ClipboardImpl.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading.Tasks;
  4. using Avalonia.Input;
  5. using Avalonia.Input.Platform;
  6. using Foundation;
  7. using UIKit;
  8. namespace Avalonia.iOS
  9. {
  10. internal class ClipboardImpl : IClipboard
  11. {
  12. public Task<string?> GetTextAsync()
  13. {
  14. return Task.FromResult(UIPasteboard.General.String);
  15. }
  16. public Task SetTextAsync(string? text)
  17. {
  18. UIPasteboard.General.String = text;
  19. return Task.CompletedTask;
  20. }
  21. public Task ClearAsync()
  22. {
  23. UIPasteboard.General.Items = Array.Empty<NSDictionary>();
  24. return Task.CompletedTask;
  25. }
  26. public Task SetDataObjectAsync(IDataObject data)
  27. {
  28. if (data.Contains(DataFormats.Text))
  29. {
  30. UIPasteboard.General.String = data.GetText();
  31. }
  32. return Task.CompletedTask;
  33. }
  34. public Task<string[]> GetFormatsAsync()
  35. {
  36. var formats = new List<string>();
  37. if (UIPasteboard.General.HasStrings)
  38. {
  39. formats.Add(DataFormats.Text);
  40. }
  41. return Task.FromResult(formats.ToArray());
  42. }
  43. public Task<object?> GetDataAsync(string format)
  44. {
  45. if (format == DataFormats.Text)
  46. {
  47. return Task.FromResult<object?>(UIPasteboard.General.String);
  48. }
  49. return Task.FromResult<object?>(null);
  50. }
  51. /// <inheritdoc />
  52. public Task FlushAsync() =>
  53. Task.CompletedTask;
  54. }
  55. }