ClipboardImpl.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System;
  2. using System.Threading.Tasks;
  3. using Android.Content;
  4. using Avalonia.Input;
  5. using Avalonia.Input.Platform;
  6. namespace Avalonia.Android.Platform
  7. {
  8. internal class ClipboardImpl : IClipboard
  9. {
  10. private ClipboardManager? _clipboardManager;
  11. internal ClipboardImpl(ClipboardManager? value)
  12. {
  13. _clipboardManager = value;
  14. }
  15. public Task<string> GetTextAsync()
  16. {
  17. if (_clipboardManager?.HasPrimaryClip == true)
  18. {
  19. return Task.FromResult<string>(_clipboardManager.PrimaryClip.GetItemAt(0).Text);
  20. }
  21. return Task.FromResult<string>(null);
  22. }
  23. public Task SetTextAsync(string text)
  24. {
  25. if(_clipboardManager == null)
  26. {
  27. return Task.CompletedTask;
  28. }
  29. ClipData clip = ClipData.NewPlainText("text", text);
  30. _clipboardManager.PrimaryClip = clip;
  31. return Task.FromResult<object>(null);
  32. }
  33. public Task ClearAsync()
  34. {
  35. if (_clipboardManager == null)
  36. {
  37. return Task.CompletedTask;
  38. }
  39. _clipboardManager.PrimaryClip = null;
  40. return Task.FromResult<object>(null);
  41. }
  42. public Task SetDataObjectAsync(IDataObject data) => throw new PlatformNotSupportedException();
  43. public Task<string[]> GetFormatsAsync() => throw new PlatformNotSupportedException();
  44. public Task<object> GetDataAsync(string format) => throw new PlatformNotSupportedException();
  45. }
  46. }