summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/speeddial/FavoritesViewHolder.java
diff options
context:
space:
mode:
authorcalderwoodra <calderwoodra@google.com>2018-04-13 14:58:17 -0700
committerCopybara-Service <copybara-piper@google.com>2018-04-13 15:00:08 -0700
commit5621909c288e785ff9c8a6cc12d3dae8ed837b66 (patch)
treea59d481b856647dd26a0aefd0ea3be8e82784303 /java/com/android/dialer/speeddial/FavoritesViewHolder.java
parent0d0afb36ac53cc58f2674d2571c8db6cd75d8cbb (diff)
Implement drag to remove contacts in SpeedDialFragment.
Bug: 36841782 Test: manual PiperOrigin-RevId: 192828773 Change-Id: Id9066346e6b2a03f672ce3ad11027f15adfbb7e6
Diffstat (limited to 'java/com/android/dialer/speeddial/FavoritesViewHolder.java')
-rw-r--r--java/com/android/dialer/speeddial/FavoritesViewHolder.java24
1 files changed, 19 insertions, 5 deletions
diff --git a/java/com/android/dialer/speeddial/FavoritesViewHolder.java b/java/com/android/dialer/speeddial/FavoritesViewHolder.java
index 4f0cf65a0..56d9f36d9 100644
--- a/java/com/android/dialer/speeddial/FavoritesViewHolder.java
+++ b/java/com/android/dialer/speeddial/FavoritesViewHolder.java
@@ -19,9 +19,11 @@ package com.android.dialer.speeddial;
import android.content.Context;
import android.provider.ContactsContract.Contacts;
import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.helper.ItemTouchHelper;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
+import android.view.ViewConfiguration;
import android.widget.FrameLayout;
import android.widget.QuickContactBadge;
import android.widget.TextView;
@@ -29,12 +31,14 @@ import com.android.dialer.common.Assert;
import com.android.dialer.glidephotomanager.GlidePhotoManagerComponent;
import com.android.dialer.glidephotomanager.PhotoInfo;
import com.android.dialer.speeddial.database.SpeedDialEntry.Channel;
+import com.android.dialer.speeddial.draghelper.SpeedDialFavoritesViewHolderOnTouchListener;
+import com.android.dialer.speeddial.draghelper.SpeedDialFavoritesViewHolderOnTouchListener.OnTouchFinishCallback;
import com.android.dialer.speeddial.loader.SpeedDialUiItem;
import java.util.List;
/** ViewHolder for starred/favorite contacts in {@link SpeedDialFragment}. */
public class FavoritesViewHolder extends RecyclerView.ViewHolder
- implements OnClickListener, OnLongClickListener {
+ implements OnClickListener, OnLongClickListener, OnTouchFinishCallback {
private final FavoriteContactsListener listener;
@@ -45,7 +49,7 @@ public class FavoritesViewHolder extends RecyclerView.ViewHolder
private SpeedDialUiItem speedDialUiItem;
- public FavoritesViewHolder(View view, FavoriteContactsListener listener) {
+ public FavoritesViewHolder(View view, ItemTouchHelper helper, FavoriteContactsListener listener) {
super(view);
photoView = view.findViewById(R.id.avatar);
nameView = view.findViewById(R.id.name);
@@ -53,6 +57,9 @@ public class FavoritesViewHolder extends RecyclerView.ViewHolder
videoCallIcon = view.findViewById(R.id.video_call_container);
view.setOnClickListener(this);
view.setOnLongClickListener(this);
+ view.setOnTouchListener(
+ new SpeedDialFavoritesViewHolderOnTouchListener(
+ ViewConfiguration.get(view.getContext()), helper, this, this));
photoView.setClickable(false);
this.listener = listener;
}
@@ -96,12 +103,16 @@ public class FavoritesViewHolder extends RecyclerView.ViewHolder
@Override
public boolean onLongClick(View view) {
- // TODO(calderwoodra): implement drag and drop logic
// TODO(calderwoodra): add bounce/sin wave scale animation
- listener.onLongClick(photoView, speedDialUiItem);
+ listener.showContextMenu(photoView, speedDialUiItem);
return true;
}
+ @Override
+ public void onTouchFinished(boolean closeContextMenu) {
+ listener.onTouchFinished(closeContextMenu);
+ }
+
/** Listener/callback for {@link FavoritesViewHolder} actions. */
public interface FavoriteContactsListener {
@@ -112,6 +123,9 @@ public class FavoritesViewHolder extends RecyclerView.ViewHolder
void onClick(Channel channel);
/** Called when the user long clicks on a favorite contact. */
- void onLongClick(View view, SpeedDialUiItem speedDialUiItem);
+ void showContextMenu(View view, SpeedDialUiItem speedDialUiItem);
+
+ /** Called when the user is no longer touching the favorite contact. */
+ void onTouchFinished(boolean closeContextMenu);
}
}