made text selectable again unless text contains more than 1 link

fixes #1615
This commit is contained in:
Daniel Gultsch 2015-12-26 19:18:37 +01:00
parent c40372fc0d
commit be91c0741f

View file

@ -18,6 +18,7 @@ import android.text.style.ForegroundColorSpan;
import android.text.style.RelativeSizeSpan; import android.text.style.RelativeSizeSpan;
import android.text.style.StyleSpan; import android.text.style.StyleSpan;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.Patterns;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener; import android.view.View.OnLongClickListener;
@ -32,6 +33,7 @@ import android.widget.Toast;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.List; import java.util.List;
import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.RejectedExecutionException;
import java.util.regex.Matcher;
import eu.siacs.conversations.R; import eu.siacs.conversations.R;
import eu.siacs.conversations.crypto.axolotl.XmppAxolotlSession; import eu.siacs.conversations.crypto.axolotl.XmppAxolotlSession;
@ -244,6 +246,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
viewHolder.messageBody.setText(text); viewHolder.messageBody.setText(text);
viewHolder.messageBody.setTextColor(getMessageTextColor(darkBackground, false)); viewHolder.messageBody.setTextColor(getMessageTextColor(darkBackground, false));
viewHolder.messageBody.setTypeface(null, Typeface.ITALIC); viewHolder.messageBody.setTypeface(null, Typeface.ITALIC);
viewHolder.messageBody.setTextIsSelectable(false);
} }
private void displayDecryptionFailed(ViewHolder viewHolder, boolean darkBackground) { private void displayDecryptionFailed(ViewHolder viewHolder, boolean darkBackground) {
@ -256,6 +259,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
R.string.decryption_failed)); R.string.decryption_failed));
viewHolder.messageBody.setTextColor(getMessageTextColor(darkBackground, false)); viewHolder.messageBody.setTextColor(getMessageTextColor(darkBackground, false));
viewHolder.messageBody.setTypeface(null, Typeface.NORMAL); viewHolder.messageBody.setTypeface(null, Typeface.NORMAL);
viewHolder.messageBody.setTextIsSelectable(false);
} }
private void displayHeartMessage(final ViewHolder viewHolder, final String body) { private void displayHeartMessage(final ViewHolder viewHolder, final String body) {
@ -330,8 +334,15 @@ public class MessageAdapter extends ArrayAdapter<Message> {
} }
viewHolder.messageBody.setText(span); viewHolder.messageBody.setText(span);
} }
int urlCount = 0;
Matcher matcher = Patterns.WEB_URL.matcher(body);
while (matcher.find()) {
urlCount++;
}
viewHolder.messageBody.setTextIsSelectable(urlCount <= 1);
} else { } else {
viewHolder.messageBody.setText(""); viewHolder.messageBody.setText("");
viewHolder.messageBody.setTextIsSelectable(false);
} }
viewHolder.messageBody.setTextColor(this.getMessageTextColor(darkBackground, true)); viewHolder.messageBody.setTextColor(this.getMessageTextColor(darkBackground, true));
viewHolder.messageBody.setLinkTextColor(this.getMessageTextColor(darkBackground, true)); viewHolder.messageBody.setLinkTextColor(this.getMessageTextColor(darkBackground, true));