Blame client/Android/Studio/freeRDPCore/src/main/java/com/freerdp/freerdpcore/utils/ClipboardManagerProxy.java

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
}