Convert comment touch listener to a lambda
This commit is contained in:
parent
e37336eef2
commit
46139340fe
2 changed files with 24 additions and 44 deletions
|
@ -1,9 +1,13 @@
|
||||||
package org.schabi.newpipe.info_list.holder;
|
package org.schabi.newpipe.info_list.holder;
|
||||||
|
|
||||||
import static org.schabi.newpipe.util.ServiceHelper.getServiceById;
|
import static org.schabi.newpipe.util.ServiceHelper.getServiceById;
|
||||||
|
import static org.schabi.newpipe.util.text.TouchUtils.getOffsetForHorizontalLine;
|
||||||
|
|
||||||
|
import android.text.Spanned;
|
||||||
import android.text.method.LinkMovementMethod;
|
import android.text.method.LinkMovementMethod;
|
||||||
|
import android.text.style.ClickableSpan;
|
||||||
import android.text.style.URLSpan;
|
import android.text.style.URLSpan;
|
||||||
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
|
@ -25,7 +29,6 @@ import org.schabi.newpipe.util.NavigationHelper;
|
||||||
import org.schabi.newpipe.util.external_communication.ShareUtils;
|
import org.schabi.newpipe.util.external_communication.ShareUtils;
|
||||||
import org.schabi.newpipe.util.image.ImageStrategy;
|
import org.schabi.newpipe.util.image.ImageStrategy;
|
||||||
import org.schabi.newpipe.util.image.PicassoHelper;
|
import org.schabi.newpipe.util.image.PicassoHelper;
|
||||||
import org.schabi.newpipe.util.text.CommentTextOnTouchListener;
|
|
||||||
import org.schabi.newpipe.util.text.TextEllipsizer;
|
import org.schabi.newpipe.util.text.TextEllipsizer;
|
||||||
|
|
||||||
public class CommentInfoItemHolder extends InfoItemHolder {
|
public class CommentInfoItemHolder extends InfoItemHolder {
|
||||||
|
@ -128,7 +131,26 @@ public class CommentInfoItemHolder extends InfoItemHolder {
|
||||||
textEllipsizer.ellipsize();
|
textEllipsizer.ellipsize();
|
||||||
|
|
||||||
//noinspection ClickableViewAccessibility
|
//noinspection ClickableViewAccessibility
|
||||||
itemContentView.setOnTouchListener(CommentTextOnTouchListener.INSTANCE);
|
itemContentView.setOnTouchListener((v, event) -> {
|
||||||
|
final CharSequence text = itemContentView.getText();
|
||||||
|
if (text instanceof Spanned buffer) {
|
||||||
|
final int action = event.getAction();
|
||||||
|
|
||||||
|
if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) {
|
||||||
|
final int offset = getOffsetForHorizontalLine(itemContentView, event);
|
||||||
|
final var links = buffer.getSpans(offset, offset, ClickableSpan.class);
|
||||||
|
|
||||||
|
if (links.length != 0) {
|
||||||
|
if (action == MotionEvent.ACTION_UP) {
|
||||||
|
links[0].onClick(itemContentView);
|
||||||
|
}
|
||||||
|
// we handle events that intersect links, so return true
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
itemView.setOnClickListener(view -> {
|
itemView.setOnClickListener(view -> {
|
||||||
textEllipsizer.toggle();
|
textEllipsizer.toggle();
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
package org.schabi.newpipe.util.text;
|
|
||||||
|
|
||||||
import static org.schabi.newpipe.util.text.TouchUtils.getOffsetForHorizontalLine;
|
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
|
||||||
import android.text.Spanned;
|
|
||||||
import android.text.style.ClickableSpan;
|
|
||||||
import android.view.MotionEvent;
|
|
||||||
import android.view.View;
|
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
public class CommentTextOnTouchListener implements View.OnTouchListener {
|
|
||||||
public static final CommentTextOnTouchListener INSTANCE = new CommentTextOnTouchListener();
|
|
||||||
|
|
||||||
@SuppressLint("ClickableViewAccessibility")
|
|
||||||
@Override
|
|
||||||
public boolean onTouch(final View v, final MotionEvent event) {
|
|
||||||
if (!(v instanceof TextView)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
final TextView widget = (TextView) v;
|
|
||||||
final CharSequence text = widget.getText();
|
|
||||||
if (text instanceof Spanned) {
|
|
||||||
final Spanned buffer = (Spanned) text;
|
|
||||||
final int action = event.getAction();
|
|
||||||
|
|
||||||
if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) {
|
|
||||||
final int offset = getOffsetForHorizontalLine(widget, event);
|
|
||||||
final ClickableSpan[] links = buffer.getSpans(offset, offset, ClickableSpan.class);
|
|
||||||
|
|
||||||
if (links.length != 0) {
|
|
||||||
if (action == MotionEvent.ACTION_UP) {
|
|
||||||
links[0].onClick(widget);
|
|
||||||
}
|
|
||||||
// we handle events that intersect links, so return true
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue