|
|
|
@ -2,32 +2,26 @@ using System; |
|
|
|
using System.Threading.Tasks; |
|
|
|
|
|
|
|
using Android.Content; |
|
|
|
using Android.Runtime; |
|
|
|
using Android.Views; |
|
|
|
|
|
|
|
using Avalonia.Input; |
|
|
|
using Avalonia.Input.Platform; |
|
|
|
using Avalonia.Platform; |
|
|
|
|
|
|
|
namespace Avalonia.Android.Platform |
|
|
|
{ |
|
|
|
internal class ClipboardImpl : IClipboard |
|
|
|
{ |
|
|
|
private Context context = (AvaloniaLocator.Current.GetService<IWindowImpl>() as View).Context; |
|
|
|
private ClipboardManager? _clipboardManager; |
|
|
|
|
|
|
|
private ClipboardManager ClipboardManager |
|
|
|
internal void SetClipboardManager(ClipboardManager? value) |
|
|
|
{ |
|
|
|
get |
|
|
|
{ |
|
|
|
return this.context.GetSystemService(Context.ClipboardService).JavaCast<ClipboardManager>(); |
|
|
|
} |
|
|
|
_clipboardManager = value; |
|
|
|
} |
|
|
|
|
|
|
|
public Task<string> GetTextAsync() |
|
|
|
{ |
|
|
|
if (ClipboardManager.HasPrimaryClip) |
|
|
|
if (_clipboardManager?.HasPrimaryClip == true) |
|
|
|
{ |
|
|
|
return Task.FromResult<string>(ClipboardManager.PrimaryClip.GetItemAt(0).Text); |
|
|
|
return Task.FromResult<string>(_clipboardManager.PrimaryClip.GetItemAt(0).Text); |
|
|
|
} |
|
|
|
|
|
|
|
return Task.FromResult<string>(null); |
|
|
|
@ -35,15 +29,25 @@ namespace Avalonia.Android.Platform |
|
|
|
|
|
|
|
public Task SetTextAsync(string text) |
|
|
|
{ |
|
|
|
if(_clipboardManager == null) |
|
|
|
{ |
|
|
|
return Task.CompletedTask; |
|
|
|
} |
|
|
|
|
|
|
|
ClipData clip = ClipData.NewPlainText("text", text); |
|
|
|
ClipboardManager.PrimaryClip = clip; |
|
|
|
_clipboardManager.PrimaryClip = clip; |
|
|
|
|
|
|
|
return Task.FromResult<object>(null); |
|
|
|
} |
|
|
|
|
|
|
|
public Task ClearAsync() |
|
|
|
{ |
|
|
|
ClipboardManager.PrimaryClip = null; |
|
|
|
if (_clipboardManager == null) |
|
|
|
{ |
|
|
|
return Task.CompletedTask; |
|
|
|
} |
|
|
|
|
|
|
|
_clipboardManager.PrimaryClip = null; |
|
|
|
|
|
|
|
return Task.FromResult<object>(null); |
|
|
|
} |
|
|
|
|