From 5621909c288e785ff9c8a6cc12d3dae8ed837b66 Mon Sep 17 00:00:00 2001 From: calderwoodra Date: Fri, 13 Apr 2018 14:58:17 -0700 Subject: Implement drag to remove contacts in SpeedDialFragment. Bug: 36841782 Test: manual PiperOrigin-RevId: 192828773 Change-Id: Id9066346e6b2a03f672ce3ad11027f15adfbb7e6 --- .../android/dialer/speeddial/SpeedDialAdapter.java | 76 ++++++++++++++-------- 1 file changed, 49 insertions(+), 27 deletions(-) (limited to 'java/com/android/dialer/speeddial/SpeedDialAdapter.java') diff --git a/java/com/android/dialer/speeddial/SpeedDialAdapter.java b/java/com/android/dialer/speeddial/SpeedDialAdapter.java index 3312397c7..6f6ac5498 100644 --- a/java/com/android/dialer/speeddial/SpeedDialAdapter.java +++ b/java/com/android/dialer/speeddial/SpeedDialAdapter.java @@ -21,12 +21,10 @@ import android.content.Context; import android.os.Build.VERSION_CODES; import android.support.annotation.IntDef; import android.support.annotation.NonNull; -import android.support.annotation.VisibleForTesting; -import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.GridLayoutManager.SpanSizeLookup; import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.RecyclerView.LayoutManager; import android.support.v7.widget.RecyclerView.ViewHolder; +import android.support.v7.widget.helper.ItemTouchHelper; import android.util.ArrayMap; import android.view.LayoutInflater; import android.view.ViewGroup; @@ -34,10 +32,12 @@ import com.android.dialer.common.Assert; import com.android.dialer.speeddial.FavoritesViewHolder.FavoriteContactsListener; import com.android.dialer.speeddial.HeaderViewHolder.SpeedDialHeaderListener; import com.android.dialer.speeddial.SuggestionViewHolder.SuggestedContactsListener; +import com.android.dialer.speeddial.draghelper.SpeedDialItemTouchHelperCallback.ItemTouchHelperAdapter; import com.android.dialer.speeddial.loader.SpeedDialUiItem; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -55,7 +55,8 @@ import java.util.Map; */ @SuppressWarnings("AndroidApiChecker") @TargetApi(VERSION_CODES.N) -public final class SpeedDialAdapter extends RecyclerView.Adapter { +public final class SpeedDialAdapter extends RecyclerView.Adapter + implements ItemTouchHelperAdapter { @Retention(RetentionPolicy.SOURCE) @IntDef({RowType.STARRED_HEADER, RowType.SUGGESTION_HEADER, RowType.STARRED, RowType.SUGGESTION}) @@ -74,6 +75,9 @@ public final class SpeedDialAdapter extends RecyclerView.Adapter positionToRowTypeMap = new ArrayMap<>(); private List speedDialUiItems; + // Needed for FavoriteViewHolder + private ItemTouchHelper itemTouchHelper; + public SpeedDialAdapter( Context context, FavoriteContactsListener favoritesListener, @@ -97,7 +101,9 @@ public final class SpeedDialAdapter extends RecyclerView.Adapter toPosition; i--) { + Collections.swap(speedDialUiItems, i, i - 1); + } } + // TODO(calderwoodra): store pinned positions + notifyItemMoved(fromPosition, toPosition); + } + + @Override + public boolean canDropOver(ViewHolder target) { + return target instanceof FavoritesViewHolder; + } + + public void setItemTouchHelper(ItemTouchHelper itemTouchHelper) { + this.itemTouchHelper = itemTouchHelper; } } -- cgit v1.2.3