Skip to content
This repository was archived by the owner on Jul 25, 2024. It is now read-only.

Commit ad68c73

Browse files
committed
Fixes #134: Change ChatBox container to a custom view and listen for swipe on chatBox
1 parent 703b0c7 commit ad68c73

File tree

3 files changed

+73
-5
lines changed

3 files changed

+73
-5
lines changed

app/src/main/java/com/zulip/android/activities/ZulipActivity.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
import com.zulip.android.R;
8686
import com.zulip.android.models.Stream;
8787
import com.zulip.android.networking.AsyncSend;
88+
import com.zulip.android.util.SwipeRemoveLinearLayout;
8889
import com.zulip.android.util.ZLog;
8990
import com.zulip.android.ZulipApp;
9091
import com.zulip.android.gcm.GcmBroadcastReceiver;
@@ -99,7 +100,7 @@
99100
* messages
100101
* */
101102
public class ZulipActivity extends AppCompatActivity implements
102-
MessageListFragment.Listener, NarrowListener {
103+
MessageListFragment.Listener, NarrowListener, SwipeRemoveLinearLayout.leftToRightSwipeListener {
103104

104105
private static final String NARROW = "narrow";
105106
private static final String PARAMS = "params";
@@ -121,8 +122,8 @@ public class ZulipActivity extends AppCompatActivity implements
121122
private ActionBarDrawerToggle drawerToggle;
122123
private ExpandableListView streamsDrawer;
123124
private static final Interpolator FAST_OUT_SLOW_IN_INTERPOLATOR = new FastOutSlowInInterpolator();
124-
private LinearLayout chatBox;
125-
public FloatingActionButton fab;
125+
private SwipeRemoveLinearLayout chatBox;
126+
private FloatingActionButton fab;
126127
private CountDownTimer fabHidder;
127128
private boolean isTextFieldFocused = false;
128129
private static final int HIDE_FAB_AFTER_SEC = 5;
@@ -160,6 +161,11 @@ public void onReceive(Context contenxt, Intent intent) {
160161
}
161162
};
162163

164+
@Override
165+
public void removeChatBox() {
166+
chatBox.setVisibility(View.GONE);
167+
}
168+
163169
// Intent Extra constants
164170
public enum Flag {
165171
RESET_DATABASE,
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package com.zulip.android.util;
2+
3+
import android.content.Context;
4+
import android.util.AttributeSet;
5+
import android.util.DisplayMetrics;
6+
import android.view.MotionEvent;
7+
import android.widget.LinearLayout;
8+
9+
public class SwipeRemoveLinearLayout extends LinearLayout {
10+
11+
private float x1, x2;
12+
private static int MIN_DISTANCE = 150;
13+
private leftToRightSwipeListener leftToRightSwipeListen;
14+
15+
public SwipeRemoveLinearLayout(Context context) {
16+
super(context);
17+
setupMinimumDistance();
18+
}
19+
20+
public SwipeRemoveLinearLayout(Context context, AttributeSet attrs) {
21+
super(context, attrs);
22+
setupMinimumDistance();
23+
}
24+
25+
public SwipeRemoveLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) {
26+
super(context, attrs, defStyleAttr);
27+
setupMinimumDistance();
28+
}
29+
30+
private void setupMinimumDistance() {
31+
DisplayMetrics metrics = getResources().getDisplayMetrics();
32+
MIN_DISTANCE = metrics.widthPixels / 8;
33+
}
34+
35+
@Override
36+
public boolean onInterceptTouchEvent(MotionEvent ev) {
37+
38+
switch (ev.getAction()) {
39+
case MotionEvent.ACTION_DOWN:
40+
x1 = ev.getX();
41+
break;
42+
case MotionEvent.ACTION_UP:
43+
x2 = ev.getX();
44+
float deltaX = x2 - x1;
45+
if (Math.abs(deltaX) > MIN_DISTANCE) {
46+
//swiping right to left
47+
leftToRightSwipeListen.removeChatBox();
48+
return true;
49+
}
50+
break;
51+
}
52+
return super.onInterceptTouchEvent(ev);
53+
}
54+
55+
public interface leftToRightSwipeListener {
56+
void removeChatBox();
57+
}
58+
59+
public void registerToSwipeEvents(leftToRightSwipeListener listener) {
60+
this.leftToRightSwipeListen = listener;
61+
}
62+
}

app/src/main/res/layout/main.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
android:layout_width="match_parent"
3030
android:layout_height="match_parent" />
3131

32-
<LinearLayout
32+
<com.zulip.android.util.SwipeRemoveLinearLayout
3333
android:id="@+id/messageBoxContainer"
3434
android:layout_width="match_parent"
3535
android:layout_height="wrap_content"
@@ -39,7 +39,7 @@
3939
android:background="@color/colorPrimary">
4040

4141
<include layout="@layout/chatbox" />
42-
</LinearLayout>
42+
</com.zulip.android.util.SwipeRemoveLinearLayout>
4343

4444
<android.support.design.widget.FloatingActionButton
4545
android:id="@+id/fab"

0 commit comments

Comments
 (0)