|
Packit |
1fb8d4 |
package com.freerdp.freerdpcore.utils;
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
import android.annotation.TargetApi;
|
|
Packit |
1fb8d4 |
import android.content.ClipData;
|
|
Packit |
1fb8d4 |
import android.content.ClipboardManager;
|
|
Packit |
1fb8d4 |
import android.content.Context;
|
|
Packit |
1fb8d4 |
import android.os.Build.VERSION;
|
|
Packit |
1fb8d4 |
import android.os.Build.VERSION_CODES;
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
public abstract class ClipboardManagerProxy
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
public static ClipboardManagerProxy getClipboardManager(Context ctx)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
if (VERSION.SDK_INT < VERSION_CODES.HONEYCOMB)
|
|
Packit Service |
5a9772 |
return new PreHCClipboardManager(ctx);
|
|
Packit Service |
5a9772 |
else
|
|
Packit Service |
5a9772 |
return new HCClipboardManager(ctx);
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
public abstract void setClipboardData(String data);
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
public abstract void addClipboardChangedListener(OnClipboardChangedListener listener);
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
public abstract void removeClipboardboardChangedListener(OnClipboardChangedListener listener);
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
public static interface OnClipboardChangedListener {
|
|
Packit Service |
5a9772 |
void onClipboardChanged(String data);
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
private static class PreHCClipboardManager extends ClipboardManagerProxy
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
public PreHCClipboardManager(Context ctx)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
@Override public void setClipboardData(String data)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
@Override public void addClipboardChangedListener(OnClipboardChangedListener listener)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
@Override
|
|
Packit Service |
5a9772 |
public void removeClipboardboardChangedListener(OnClipboardChangedListener listener)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
@TargetApi(11)
|
|
Packit Service |
5a9772 |
private static class HCClipboardManager
|
|
Packit Service |
5a9772 |
extends ClipboardManagerProxy implements ClipboardManager.OnPrimaryClipChangedListener
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
private ClipboardManager mClipboardManager;
|
|
Packit Service |
5a9772 |
private OnClipboardChangedListener mListener;
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
public HCClipboardManager(Context ctx)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
mClipboardManager = (ClipboardManager)ctx.getSystemService(Context.CLIPBOARD_SERVICE);
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
@Override public void setClipboardData(String data)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
mClipboardManager.setPrimaryClip(
|
|
Packit Service |
5a9772 |
ClipData.newPlainText("rdp-clipboard", data == null ? "" : data));
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
@Override public void onPrimaryClipChanged()
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
ClipData clip = mClipboardManager.getPrimaryClip();
|
|
Packit Service |
5a9772 |
String data = null;
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
if (clip != null && clip.getItemCount() > 0)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
CharSequence cs = clip.getItemAt(0).getText();
|
|
Packit Service |
5a9772 |
if (cs != null)
|
|
Packit Service |
5a9772 |
data = cs.toString();
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
if (mListener != null)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
mListener.onClipboardChanged(data);
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
@Override public void addClipboardChangedListener(OnClipboardChangedListener listener)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
mListener = listener;
|
|
Packit Service |
5a9772 |
mClipboardManager.addPrimaryClipChangedListener(this);
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
@Override
|
|
Packit Service |
5a9772 |
public void removeClipboardboardChangedListener(OnClipboardChangedListener listener)
|
|
Packit Service |
5a9772 |
{
|
|
Packit Service |
5a9772 |
mListener = null;
|
|
Packit Service |
5a9772 |
mClipboardManager.removePrimaryClipChangedListener(this);
|
|
Packit Service |
5a9772 |
}
|
|
Packit Service |
5a9772 |
}
|
|
Packit |
1fb8d4 |
}
|