diff options
author | yueg <yueg@google.com> | 2018-06-19 16:54:38 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-06-19 16:55:54 -0700 |
commit | 406de13ab4326bbedae0262709a004da2211d04c (patch) | |
tree | 5e9f525d8dc782b1ba778b191184d0960617bcc9 /java/com/android/dialer/speeddial/SpeedDialFragment.java | |
parent | acfab4ed674bb7b0154373c626ce494f37629509 (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.java | 138 |
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); |