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

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