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