Disable swipe refresh when swiping to archive.
Fixes b/12570813.
Change-Id: Ifa5f427f83e038ed3f5402c85e9416a1512ee691
diff --git a/src/com/android/mail/ui/ConversationListFragment.java b/src/com/android/mail/ui/ConversationListFragment.java
index e00fa3d..e55701d 100644
--- a/src/com/android/mail/ui/ConversationListFragment.java
+++ b/src/com/android/mail/ui/ConversationListFragment.java
@@ -32,7 +32,6 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.view.ViewGroup.MarginLayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
@@ -60,6 +59,7 @@
import com.android.mail.providers.UIProvider.Swipe;
import com.android.mail.ui.SwipeableListView.ListItemSwipedListener;
import com.android.mail.ui.SwipeableListView.ListItemsRemovedListener;
+import com.android.mail.ui.SwipeableListView.SwipeListener;
import com.android.mail.ui.ViewMode.ModeChangeListener;
import com.android.mail.utils.LogTag;
import com.android.mail.utils.LogUtils;
@@ -73,7 +73,8 @@
* The conversation list UI component.
*/
public final class ConversationListFragment extends ListFragment implements
- OnItemLongClickListener, ModeChangeListener, ListItemSwipedListener, OnRefreshListener {
+ OnItemLongClickListener, ModeChangeListener, ListItemSwipedListener, OnRefreshListener,
+ SwipeListener {
/** Key used to pass data to {@link ConversationListFragment}. */
private static final String CONVERSATION_LIST_KEY = "conversation-list";
/** Key used to keep track of the scroll state of the list. */
@@ -165,6 +166,16 @@
super();
}
+ @Override
+ public void onBeginSwipe() {
+ mSwipeRefreshWidget.setEnabled(false);
+ }
+
+ @Override
+ public void onEndSwipe() {
+ mSwipeRefreshWidget.setEnabled(true);
+ }
+
private class ConversationCursorObserver extends DataSetObserver {
@Override
public void onChanged() {
@@ -420,7 +431,8 @@
mListView.setHeaderDividersEnabled(false);
mListView.setOnItemLongClickListener(this);
mListView.enableSwipe(mAccount.supportsCapability(AccountCapabilities.UNDO));
- mListView.setSwipedListener(this);
+ mListView.setListItemSwipedListener(this);
+ mListView.setSwipeListener(this);
if (savedState != null && savedState.containsKey(LIST_STATE_KEY)) {
mListView.onRestoreInstanceState(savedState.getParcelable(LIST_STATE_KEY));
@@ -436,7 +448,6 @@
/**
* Sets the choice mode of the list view
- * @param choiceMode ListView#
*/
private final void setChoiceMode(int choiceMode) {
mListView.setChoiceMode(choiceMode);
diff --git a/src/com/android/mail/ui/SwipeableListView.java b/src/com/android/mail/ui/SwipeableListView.java
index 2c0ca14..8e03b93 100644
--- a/src/com/android/mail/ui/SwipeableListView.java
+++ b/src/com/android/mail/ui/SwipeableListView.java
@@ -23,16 +23,15 @@
import android.graphics.Rect;
import android.net.Uri;
import android.util.AttributeSet;
-import android.widget.AbsListView;
-import android.widget.AbsListView.OnScrollListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
+import android.widget.AbsListView;
+import android.widget.AbsListView.OnScrollListener;
import android.widget.ListView;
import com.android.mail.R;
import com.android.mail.analytics.Analytics;
-import com.android.mail.analytics.AnalyticsUtils;
import com.android.mail.browse.ConversationCursor;
import com.android.mail.browse.ConversationItemView;
import com.android.mail.browse.SwipeableConversationItemView;
@@ -139,7 +138,7 @@
mSwipeAction = action;
}
- public void setSwipedListener(ListItemSwipedListener listener) {
+ public void setListItemSwipedListener(ListItemSwipedListener listener) {
mSwipedListener = listener;
}
@@ -226,6 +225,11 @@
}
public void dismissChild(final ConversationItemView target) {
+ // Notifies the SwipeListener that a swipe has ended.
+ if (mSwipeListener != null) {
+ mSwipeListener.onEndSwipe();
+ }
+
final ToastBarOperation undoOp;
undoOp = new ToastBarOperation(1, mSwipeAction, ToastBarOperation.UNDO, false /* batch */,
@@ -286,9 +290,7 @@
requestDisallowInterceptTouchEvent(true);
cancelDismissCounter();
- // Notifies {@link ConversationListView} to disable pull to refresh since once
- // an item in the list view has been picked up, we don't want any vertical movement
- // to also trigger refresh.
+ // Notifies the SwipeListener that a swipe has begun.
if (mSwipeListener != null) {
mSwipeListener.onBeginSwipe();
}
@@ -301,6 +303,11 @@
adapter.startDismissCounter();
adapter.cancelFadeOutLastLeaveBehindItemText();
}
+
+ // Notifies the SwipeListener that a swipe has ended.
+ if (mSwipeListener != null) {
+ mSwipeListener.onEndSwipe();
+ }
}
/**
@@ -449,5 +456,6 @@
public interface SwipeListener {
public void onBeginSwipe();
+ public void onEndSwipe();
}
}