From 4d1608d68e5682d1885772e5fe00ca8a3c4080aa Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Thu, 5 Sep 2013 17:29:58 +0200 Subject: [PATCH] Moved non-retrocompatible clipboard code to a new class so it wont crash --- .../ClibpoardPlugin/ClipboardListener.java | 52 +++++++++++++++++++ .../ClibpoardPlugin/ClipboardPlugin.java | 38 +++----------- 2 files changed, 59 insertions(+), 31 deletions(-) create mode 100644 KdeConnect/src/main/java/org/kde/kdeconnect/Plugins/ClibpoardPlugin/ClipboardListener.java diff --git a/KdeConnect/src/main/java/org/kde/kdeconnect/Plugins/ClibpoardPlugin/ClipboardListener.java b/KdeConnect/src/main/java/org/kde/kdeconnect/Plugins/ClibpoardPlugin/ClipboardListener.java new file mode 100644 index 00000000..58eabb6f --- /dev/null +++ b/KdeConnect/src/main/java/org/kde/kdeconnect/Plugins/ClibpoardPlugin/ClipboardListener.java @@ -0,0 +1,52 @@ +package org.kde.kdeconnect.Plugins.ClibpoardPlugin; + +import android.content.ClipData; +import android.content.Context; +import android.content.ClipboardManager; + +import org.kde.kdeconnect.Device; +import org.kde.kdeconnect.NetworkPackage; + +public class ClipboardListener { + + + private String currentContent; + + private ClipboardManager cm = null; + ClipboardManager.OnPrimaryClipChangedListener listener; + + ClipboardListener(final Context context, final Device device) { + cm = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE); + listener = new ClipboardManager.OnPrimaryClipChangedListener() { + @Override + public void onPrimaryClipChanged() { + try { + + ClipData.Item item = cm.getPrimaryClip().getItemAt(0); + String content = item.coerceToText(context).toString(); + + if (!content.equals(currentContent)) { + NetworkPackage np = new NetworkPackage(NetworkPackage.PACKAGE_TYPE_CLIPBOARD); + np.set("content", content); + device.sendPackage(np); + currentContent = content; + } + + } catch(Exception e) { + //Probably clipboard was not text + } + } + }; + cm.addPrimaryClipChangedListener(listener); + } + + public void stop() { + cm.removePrimaryClipChangedListener(listener); + } + + public void setText(String text) { + currentContent = text; + cm.setText(text); + } + +} diff --git a/KdeConnect/src/main/java/org/kde/kdeconnect/Plugins/ClibpoardPlugin/ClipboardPlugin.java b/KdeConnect/src/main/java/org/kde/kdeconnect/Plugins/ClibpoardPlugin/ClipboardPlugin.java index 452dd2f2..ed339cce 100644 --- a/KdeConnect/src/main/java/org/kde/kdeconnect/Plugins/ClibpoardPlugin/ClipboardPlugin.java +++ b/KdeConnect/src/main/java/org/kde/kdeconnect/Plugins/ClibpoardPlugin/ClipboardPlugin.java @@ -2,8 +2,6 @@ package org.kde.kdeconnect.Plugins.ClibpoardPlugin; import android.app.Activity; import android.app.AlertDialog; -import android.content.ClipData; -import android.content.ClipboardManager; import android.content.Context; import android.content.DialogInterface; import android.graphics.drawable.Drawable; @@ -16,8 +14,6 @@ import org.kde.kdeconnect_tp.R; public class ClipboardPlugin extends Plugin { - private String currentContent; - /*static { PluginFactory.registerPlugin(ClipboardPlugin.class); }*/ @@ -46,38 +42,16 @@ public class ClipboardPlugin extends Plugin { return (Build.VERSION.SDK_INT >= 11); } - private ClipboardManager cm; - private ClipboardManager.OnPrimaryClipChangedListener listener = new ClipboardManager.OnPrimaryClipChangedListener() { - @Override - public void onPrimaryClipChanged() { - try { - - ClipData.Item item = cm.getPrimaryClip().getItemAt(0); - String content = item.coerceToText(context).toString(); - - if (!content.equals(currentContent)) { - NetworkPackage np = new NetworkPackage(NetworkPackage.PACKAGE_TYPE_CLIPBOARD); - np.set("content", content); - device.sendPackage(np); - currentContent = content; - } - - } catch(Exception e) { - //Probably clipboard was not text - } - } - }; + private ClipboardListener listener; @Override public boolean onCreate() { - cm = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE); - if (Build.VERSION.SDK_INT < 11) { return false; } - cm.addPrimaryClipChangedListener(listener); + listener = new ClipboardListener(context, device); return true; @@ -86,7 +60,9 @@ public class ClipboardPlugin extends Plugin { @Override public void onDestroy() { - cm.removePrimaryClipChangedListener(listener); + if (Build.VERSION.SDK_INT < 11) return; + + listener.stop(); } @@ -97,8 +73,8 @@ public class ClipboardPlugin extends Plugin { return false; } - currentContent = np.getString("content"); - cm.setText(currentContent); + String content = np.getString("content"); + listener.setText(content); return true; }