package com.zulip.android.util;
import android.content.Context;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.widget.LinearLayout;
public class SwipeRemoveLinearLayout extends LinearLayout {
private static int MIN_DISTANCE = 150;
private float x1, x2;
private leftToRightSwipeListener leftToRightSwipeListen;
public SwipeRemoveLinearLayout(Context context) {
super(context);
setupMinimumDistance();
}
public SwipeRemoveLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
setupMinimumDistance();
}
public SwipeRemoveLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setupMinimumDistance();
}
private void setupMinimumDistance() {
DisplayMetrics metrics = getResources().getDisplayMetrics();
MIN_DISTANCE = metrics.widthPixels / 8;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
x1 = ev.getX();
break;
case MotionEvent.ACTION_UP:
x2 = ev.getX();
float deltaX = x2 - x1;
if (Math.abs(deltaX) > MIN_DISTANCE) {
leftToRightSwipeListen.removeChatBox((deltaX > 0));
return true;
}
break;
}
return super.onInterceptTouchEvent(ev);
}
public void registerToSwipeEvents(leftToRightSwipeListener listener) {
this.leftToRightSwipeListen = listener;
}
public interface leftToRightSwipeListener {
void removeChatBox(boolean animToRight);
}
}