summaryrefslogtreecommitdiff
path: root/java/com/android/incallui/answer/impl/AnswerFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/incallui/answer/impl/AnswerFragment.java')
-rw-r--r--java/com/android/incallui/answer/impl/AnswerFragment.java64
1 files changed, 41 insertions, 23 deletions
diff --git a/java/com/android/incallui/answer/impl/AnswerFragment.java b/java/com/android/incallui/answer/impl/AnswerFragment.java
index f5da3effd..8bfdcbaf6 100644
--- a/java/com/android/incallui/answer/impl/AnswerFragment.java
+++ b/java/com/android/incallui/answer/impl/AnswerFragment.java
@@ -50,11 +50,12 @@ import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
import android.widget.ImageView;
import android.widget.LinearLayout;
+import android.widget.TextView;
import com.android.dialer.common.Assert;
import com.android.dialer.common.FragmentUtils;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.MathUtil;
-import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.DialerImpression.Type;
import com.android.dialer.logging.Logger;
import com.android.dialer.multimedia.MultimediaData;
import com.android.dialer.telecom.TelecomUtil;
@@ -83,15 +84,15 @@ import com.android.incallui.incalluilock.InCallUiLock;
import com.android.incallui.maps.MapsComponent;
import com.android.incallui.sessiondata.AvatarPresenter;
import com.android.incallui.sessiondata.MultimediaFragment;
-import com.android.incallui.speakeasy.Annotations.SpeakEasyChipResourceId;
+import com.android.incallui.sessiondata.MultimediaFragment.Holder;
import com.android.incallui.speakeasy.SpeakEasyComponent;
import com.android.incallui.util.AccessibilityUtil;
import com.android.incallui.video.protocol.VideoCallScreen;
import com.android.incallui.videotech.utils.VideoUtils;
-import com.google.common.base.Optional;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
+import java.util.Optional;
/** The new version of the incoming call screen. */
@SuppressLint("ClickableViewAccessibility")
@@ -101,7 +102,7 @@ public class AnswerFragment extends Fragment
SmsSheetHolder,
CreateCustomSmsHolder,
AnswerMethodHolder,
- MultimediaFragment.Holder {
+ Holder {
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
static final String ARG_CALL_ID = "call_id";
@@ -432,6 +433,11 @@ public class AnswerFragment extends Fragment
secondaryButton.setFocusable(AccessibilityUtil.isAccessibilityEnabled(getContext()));
secondaryButton.setAccessibilityDelegate(accessibilityDelegate);
+ // TODO(wangqi): Remove this when all secondary behavior is migrated to chip button.
+ if (secondaryBehavior.equals(SecondaryBehavior.REJECT_WITH_SMS)) {
+ secondaryButton.setVisibility(View.INVISIBLE);
+ }
+
if (isVideoUpgradeRequest()) {
secondaryButton.setVisibility(View.INVISIBLE);
} else if (isVideoCall()) {
@@ -461,26 +467,39 @@ public class AnswerFragment extends Fragment
});
}
+ private void addSecondaryActionChip(
+ @DrawableRes int iconRes, @StringRes int textRes, OnClickListener onClickListener) {
+ LinearLayout button =
+ (LinearLayout)
+ getLayoutInflater().inflate(R.layout.secondary_action_chip, chipContainer, false);
+
+ ImageView icon = button.findViewById(R.id.secondary_action_icon);
+ icon.setImageResource(iconRes);
+ TextView text = button.findViewById(R.id.secondary_action_text);
+ text.setText(textRes);
+ button.setOnClickListener(onClickListener);
+ chipContainer.addView(button);
+ }
+
/** Initialize chip buttons */
private void initChips() {
-
- if (!allowSpeakEasy()) {
- chipContainer.setVisibility(View.GONE);
- return;
+ if (allowSpeakEasy()) {
+ Optional<Integer> speakEasyIconOptional =
+ SpeakEasyComponent.get(getContext()).speakEasyIconResource();
+ Optional<Integer> speakEasyTextOptional =
+ SpeakEasyComponent.get(getContext()).speakEasyTextResource();
+ if (speakEasyIconOptional.isPresent() && speakEasyTextOptional.isPresent()) {
+ addSecondaryActionChip(
+ speakEasyIconOptional.get(), speakEasyTextOptional.get(), this::performSpeakEasy);
+ }
}
- chipContainer.setVisibility(View.VISIBLE);
-
- @SpeakEasyChipResourceId
- Optional<Integer> chipLayoutOptional = SpeakEasyComponent.get(getContext()).speakEasyChip();
- if (chipLayoutOptional.isPresent()) {
-
- LinearLayout chipLayout =
- (LinearLayout) getLayoutInflater().inflate(chipLayoutOptional.get(), null);
-
- chipLayout.setOnClickListener(this::performSpeakEasy);
-
- chipContainer.addView(chipLayout);
+ if (!isVideoCall() && !isVideoUpgradeRequest()) {
+ addSecondaryActionChip(
+ R.drawable.quantum_ic_message_white_24,
+ R.string.call_incoming_reply_with_sms,
+ v -> performSecondaryButtonAction());
}
+ chipContainer.setVisibility(chipContainer.getChildCount() > 0 ? View.VISIBLE : View.GONE);
}
@Override
@@ -986,8 +1005,7 @@ public class AnswerFragment extends Fragment
"AnswerFragment.rejectCall",
"Null context when rejecting call. Logger call was skipped");
} else {
- Logger.get(context)
- .logImpression(DialerImpression.Type.REJECT_INCOMING_CALL_FROM_ANSWER_SCREEN);
+ Logger.get(context).logImpression(Type.REJECT_INCOMING_CALL_FROM_ANSWER_SCREEN);
}
buttonRejectClicked = true;
answerScreenDelegate.onReject();
@@ -1138,7 +1156,7 @@ public class AnswerFragment extends Fragment
public void onViewCreated(View view, @Nullable Bundle bundle) {
super.onViewCreated(view, bundle);
avatarImageView = ((ImageView) view.findViewById(R.id.contactgrid_avatar));
- FragmentUtils.getParentUnsafe(this, MultimediaFragment.Holder.class).updateAvatar(this);
+ FragmentUtils.getParentUnsafe(this, Holder.class).updateAvatar(this);
}
@NonNull