summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/speeddial/SpeedDialFragment.java
diff options
context:
space:
mode:
authorcalderwoodra <calderwoodra@google.com>2018-04-23 15:22:26 -0700
committerCopybara-Service <copybara-piper@google.com>2018-04-23 16:49:13 -0700
commit6c2357ae634cd3413c699d71c542fd5fced48002 (patch)
tree7e0d5fbdcc66dd4fff5944d1d293044647c19fa0 /java/com/android/dialer/speeddial/SpeedDialFragment.java
parenta3f8a79fb2da3d9e11ce1ff178b76cf00719fd56 (diff)
Implemented context menu actions.
Actions implemented in this CL: - placing a voice call - placing a video call - opening an sms conversation - opening a contact card Remove action will be implemented in a follow up CL. Made a few adjustments to the context menu UI. Bug: 77761023 Test: ContextMenuTest PiperOrigin-RevId: 193994428 Change-Id: I85b328f5820175ff91514c0057267b85649b0755
Diffstat (limited to 'java/com/android/dialer/speeddial/SpeedDialFragment.java')
-rw-r--r--java/com/android/dialer/speeddial/SpeedDialFragment.java65
1 files changed, 53 insertions, 12 deletions
diff --git a/java/com/android/dialer/speeddial/SpeedDialFragment.java b/java/com/android/dialer/speeddial/SpeedDialFragment.java
index 793169a81..3654c816b 100644
--- a/java/com/android/dialer/speeddial/SpeedDialFragment.java
+++ b/java/com/android/dialer/speeddial/SpeedDialFragment.java
@@ -17,8 +17,10 @@
package com.android.dialer.speeddial;
import android.content.Intent;
+import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.Contacts;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
@@ -49,6 +51,7 @@ import com.android.dialer.speeddial.draghelper.SpeedDialItemTouchHelperCallback;
import com.android.dialer.speeddial.draghelper.SpeedDialLayoutManager;
import com.android.dialer.speeddial.loader.SpeedDialUiItem;
import com.android.dialer.speeddial.loader.UiItemLoaderComponent;
+import com.android.dialer.util.IntentUtil;
import com.google.common.collect.ImmutableList;
/**
@@ -78,8 +81,6 @@ public class SpeedDialFragment extends Fragment {
*/
private boolean updateSpeedDialItemsOnResume = true;
- private FavoriteContactsListener favoritesListener;
-
public static SpeedDialFragment newInstance() {
return new SpeedDialFragment();
}
@@ -103,14 +104,14 @@ public class SpeedDialFragment extends Fragment {
// Setup our RecyclerView
SpeedDialLayoutManager layoutManager =
new SpeedDialLayoutManager(getContext(), 3 /* spanCount */);
- favoritesListener =
+ FavoriteContactsListener favoritesListener =
new SpeedDialFavoritesListener(
getActivity(),
getChildFragmentManager(),
rootLayout,
contextMenu,
contextMenuBackground,
- new SpeedDialContextMenuItemListener(),
+ new SpeedDialContextMenuItemListener(getActivity(), getChildFragmentManager()),
layoutManager);
adapter =
new SpeedDialAdapter(getContext(), favoritesListener, suggestedListener, headerListener);
@@ -181,6 +182,22 @@ public class SpeedDialFragment extends Fragment {
}
}
+ @Override
+ public void onPause() {
+ super.onPause();
+ contextMenu.hideMenu();
+ contextMenuBackground.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void onHiddenChanged(boolean hidden) {
+ super.onHiddenChanged(hidden);
+ if (hidden) {
+ contextMenu.hideMenu();
+ contextMenuBackground.setVisibility(View.GONE);
+ }
+ }
+
private class SpeedDialFragmentHeaderListener implements SpeedDialHeaderListener {
@Override
@@ -294,29 +311,53 @@ public class SpeedDialFragment extends Fragment {
private static final class SpeedDialContextMenuItemListener implements ContextMenuItemListener {
+ private final FragmentActivity activity;
+ private final FragmentManager childFragmentManager;
+
+ SpeedDialContextMenuItemListener(
+ FragmentActivity activity, FragmentManager childFragmentManager) {
+ this.activity = activity;
+ this.childFragmentManager = childFragmentManager;
+ }
+
@Override
- public void placeVoiceCall(SpeedDialUiItem speedDialUiItem) {
- // TODO(calderwoodra)
+ public void disambiguateCall(SpeedDialUiItem speedDialUiItem) {
+ // TODO(calderwoodra): show only video or voice channels in the disambig dialog
+ DisambigDialog.show(speedDialUiItem, childFragmentManager);
}
@Override
- public void placeVideoCall(SpeedDialUiItem speedDialUiItem) {
- // TODO(calderwoodra)
+ public void placeCall(Channel channel) {
+ if (channel.technology() == Channel.DUO) {
+ Logger.get(activity)
+ .logImpression(DialerImpression.Type.LIGHTBRINGER_VIDEO_REQUESTED_FOR_FAVORITE_CONTACT);
+ Intent intent = DuoComponent.get(activity).getDuo().getIntent(activity, channel.number());
+ activity.startActivityForResult(intent, ActivityRequestCodes.DIALTACTS_DUO);
+ return;
+ }
+ PreCall.start(
+ activity,
+ new CallIntentBuilder(channel.number(), CallInitiationType.Type.SPEED_DIAL)
+ .setIsVideoCall(channel.isVideoTechnology()));
}
@Override
- public void openSmsConversation(SpeedDialUiItem speedDialUiItem) {
- // TODO(calderwoodra)
+ public void openSmsConversation(String number) {
+ activity.startActivity(IntentUtil.getSendSmsIntent(number));
}
@Override
public void removeFavoriteContact(SpeedDialUiItem speedDialUiItem) {
- // TODO(calderwoodra)
+ // TODO(calderwoodra): implement remove
}
@Override
public void openContactInfo(SpeedDialUiItem speedDialUiItem) {
- // TODO(calderwoodra)
+ activity.startActivity(
+ new Intent(
+ Intent.ACTION_VIEW,
+ Uri.withAppendedPath(
+ Contacts.CONTENT_URI, String.valueOf(speedDialUiItem.contactId()))));
}
}
}