summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/speeddial/SpeedDialFragment.java
diff options
context:
space:
mode:
authoryueg <yueg@google.com>2018-06-19 16:54:38 -0700
committerCopybara-Service <copybara-piper@google.com>2018-06-19 16:55:54 -0700
commit406de13ab4326bbedae0262709a004da2211d04c (patch)
tree5e9f525d8dc782b1ba778b191184d0960617bcc9 /java/com/android/dialer/speeddial/SpeedDialFragment.java
parentacfab4ed674bb7b0154373c626ce494f37629509 (diff)
Drag favorite to remove
Test: RemoveViewHolderTest, SpeedDialAdapterTest PiperOrigin-RevId: 201266033 Change-Id: Ie7ed9bac8ad9c7bbc35c351409b629e3fbad3de8
Diffstat (limited to 'java/com/android/dialer/speeddial/SpeedDialFragment.java')
-rw-r--r--java/com/android/dialer/speeddial/SpeedDialFragment.java138
1 files changed, 71 insertions, 67 deletions
diff --git a/java/com/android/dialer/speeddial/SpeedDialFragment.java b/java/com/android/dialer/speeddial/SpeedDialFragment.java
index c48eb8d68..aabf28bcb 100644
--- a/java/com/android/dialer/speeddial/SpeedDialFragment.java
+++ b/java/com/android/dialer/speeddial/SpeedDialFragment.java
@@ -151,9 +151,9 @@ public class SpeedDialFragment extends Fragment {
new SpeedDialFavoritesListener(
getActivity(),
getChildFragmentManager(),
- new SpeedDialContextMenuItemListener(
- getActivity(), new UpdateSpeedDialAdapterListener(), speedDialLoaderListener),
- layoutManager);
+ layoutManager,
+ new UpdateSpeedDialAdapterListener(),
+ speedDialLoaderListener);
adapter =
new SpeedDialAdapter(getContext(), favoritesListener, suggestedListener, headerListener);
layoutManager.setSpanSizeLookup(adapter.getSpanSizeLookup());
@@ -339,20 +339,26 @@ public class SpeedDialFragment extends Fragment {
private final FragmentActivity activity;
private final FragmentManager childFragmentManager;
- private final ContextMenuItemListener contextMenuListener;
private final SpeedDialLayoutManager layoutManager;
+ private final UpdateSpeedDialAdapterListener updateAdapterListener;
+ private final SupportUiListener<ImmutableList<SpeedDialUiItem>> speedDialLoaderListener;
+
+ private final SpeedDialContextMenuItemListener speedDialContextMenuItemListener =
+ new SpeedDialContextMenuItemListener();
private ContextMenu contextMenu;
SpeedDialFavoritesListener(
FragmentActivity activity,
FragmentManager childFragmentManager,
- ContextMenuItemListener contextMenuListener,
- SpeedDialLayoutManager layoutManager) {
+ SpeedDialLayoutManager layoutManager,
+ UpdateSpeedDialAdapterListener updateAdapterListener,
+ SupportUiListener<ImmutableList<SpeedDialUiItem>> speedDialLoaderListener) {
this.activity = activity;
this.childFragmentManager = childFragmentManager;
- this.contextMenuListener = contextMenuListener;
this.layoutManager = layoutManager;
+ this.updateAdapterListener = updateAdapterListener;
+ this.speedDialLoaderListener = speedDialLoaderListener;
}
@Override
@@ -384,7 +390,8 @@ public class SpeedDialFragment extends Fragment {
@Override
public void showContextMenu(View view, SpeedDialUiItem speedDialUiItem) {
layoutManager.setScrollEnabled(false);
- contextMenu = ContextMenu.show(activity, view, contextMenuListener, speedDialUiItem);
+ contextMenu =
+ ContextMenu.show(activity, view, speedDialContextMenuItemListener, speedDialUiItem);
}
@Override
@@ -397,12 +404,66 @@ public class SpeedDialFragment extends Fragment {
}
}
- public void hideMenu() {
+ @Override
+ public void onRequestRemove(SpeedDialUiItem speedDialUiItem) {
+ speedDialContextMenuItemListener.removeFavoriteContact(speedDialUiItem);
+ }
+
+ void hideMenu() {
if (contextMenu != null) {
contextMenu.hide();
contextMenu = null;
}
}
+
+ public SpeedDialContextMenuItemListener getSpeedDialContextMenuItemListener() {
+ return speedDialContextMenuItemListener;
+ }
+
+ class SpeedDialContextMenuItemListener implements ContextMenuItemListener {
+
+ @Override
+ public void placeCall(Channel channel) {
+ if (channel.technology() == Channel.DUO) {
+ Logger.get(activity)
+ .logImpression(
+ DialerImpression.Type.LIGHTBRINGER_VIDEO_REQUESTED_FOR_FAVORITE_CONTACT);
+ }
+ PreCall.start(
+ activity,
+ new CallIntentBuilder(channel.number(), CallInitiationType.Type.SPEED_DIAL)
+ .setAllowAssistedDial(true)
+ .setIsVideoCall(channel.isVideoTechnology())
+ .setIsDuoCall(channel.technology() == Channel.DUO));
+ }
+
+ @Override
+ public void openSmsConversation(String number) {
+ activity.startActivity(IntentUtil.getSendSmsIntent(number));
+ }
+
+ @Override
+ public void removeFavoriteContact(SpeedDialUiItem speedDialUiItem) {
+ speedDialLoaderListener.listen(
+ activity,
+ UiItemLoaderComponent.get(activity)
+ .speedDialUiItemMutator()
+ .removeSpeedDialUiItem(speedDialUiItem),
+ updateAdapterListener::updateAdapter,
+ throwable -> {
+ throw new RuntimeException(throwable);
+ });
+ }
+
+ @Override
+ public void openContactInfo(SpeedDialUiItem speedDialUiItem) {
+ activity.startActivity(
+ new Intent(
+ Intent.ACTION_VIEW,
+ Uri.withAppendedPath(
+ Contacts.CONTENT_URI, String.valueOf(speedDialUiItem.contactId()))));
+ }
+ }
}
private final class SpeedDialSuggestedListener implements SuggestedContactsListener {
@@ -530,63 +591,6 @@ public class SpeedDialFragment extends Fragment {
}
}
- private static final class SpeedDialContextMenuItemListener implements ContextMenuItemListener {
-
- private final FragmentActivity activity;
- private final SupportUiListener<ImmutableList<SpeedDialUiItem>> speedDialLoaderListener;
- private final UpdateSpeedDialAdapterListener updateAdapterListener;
-
- SpeedDialContextMenuItemListener(
- FragmentActivity activity,
- UpdateSpeedDialAdapterListener updateAdapterListener,
- SupportUiListener<ImmutableList<SpeedDialUiItem>> speedDialLoaderListener) {
- this.activity = activity;
- this.updateAdapterListener = updateAdapterListener;
- this.speedDialLoaderListener = speedDialLoaderListener;
- }
-
- @Override
- public void placeCall(Channel channel) {
- if (channel.technology() == Channel.DUO) {
- Logger.get(activity)
- .logImpression(DialerImpression.Type.LIGHTBRINGER_VIDEO_REQUESTED_FOR_FAVORITE_CONTACT);
- }
- PreCall.start(
- activity,
- new CallIntentBuilder(channel.number(), CallInitiationType.Type.SPEED_DIAL)
- .setAllowAssistedDial(true)
- .setIsVideoCall(channel.isVideoTechnology())
- .setIsDuoCall(channel.technology() == Channel.DUO));
- }
-
- @Override
- public void openSmsConversation(String number) {
- activity.startActivity(IntentUtil.getSendSmsIntent(number));
- }
-
- @Override
- public void removeFavoriteContact(SpeedDialUiItem speedDialUiItem) {
- speedDialLoaderListener.listen(
- activity,
- UiItemLoaderComponent.get(activity)
- .speedDialUiItemMutator()
- .removeSpeedDialUiItem(speedDialUiItem),
- updateAdapterListener::updateAdapter,
- throwable -> {
- throw new RuntimeException(throwable);
- });
- }
-
- @Override
- public void openContactInfo(SpeedDialUiItem speedDialUiItem) {
- activity.startActivity(
- new Intent(
- Intent.ACTION_VIEW,
- Uri.withAppendedPath(
- Contacts.CONTENT_URI, String.valueOf(speedDialUiItem.contactId()))));
- }
- }
-
private static final class SpeedDialContactPermissionEmptyViewListener
implements OnEmptyViewActionButtonClickedListener {
@@ -628,7 +632,7 @@ public class SpeedDialFragment extends Fragment {
}
/** Listener for when a SpeedDialUiItem is updated. */
- private class UpdateSpeedDialAdapterListener {
+ class UpdateSpeedDialAdapterListener {
void updateAdapter(ImmutableList<SpeedDialUiItem> speedDialUiItems) {
onSpeedDialUiItemListLoaded(speedDialUiItems);