From fd4c9f75aa2eba3e6a896d107f05ff370c2ad2b1 Mon Sep 17 00:00:00 2001 From: wangqi Date: Thu, 8 Mar 2018 18:21:50 -0800 Subject: Add support of dialpad in RTT call. This change also dismiss overflow menu when any button is clicked inside it. Bug: 67596257 Test: manual PiperOrigin-RevId: 188424236 Change-Id: I90b803d592f12525cdb8727aaeebc45c3da5dcdd --- .../dialer/dialpadview/res/layout/dialpad.xml | 1 + java/com/android/incallui/DialpadFragment.java | 8 +++++++ java/com/android/incallui/InCallActivity.java | 25 +++++++++++++++++----- .../android/incallui/rtt/impl/RttChatFragment.java | 6 ++++-- .../android/incallui/rtt/impl/RttOverflowMenu.java | 4 ++++ .../incallui/rtt/impl/res/layout/frag_rtt_chat.xml | 7 ++++++ .../incallui/rtt/protocol/RttCallScreen.java | 3 ++- 7 files changed, 46 insertions(+), 8 deletions(-) diff --git a/java/com/android/dialer/dialpadview/res/layout/dialpad.xml b/java/com/android/dialer/dialpadview/res/layout/dialpad.xml index 0061d5497..fe4e28664 100644 --- a/java/com/android/dialer/dialpadview/res/layout/dialpad.xml +++ b/java/com/android/dialer/dialpadview/res/layout/dialpad.xml @@ -96,6 +96,7 @@ diff --git a/java/com/android/incallui/DialpadFragment.java b/java/com/android/incallui/DialpadFragment.java index 44eaf212a..343cb34fd 100644 --- a/java/com/android/incallui/DialpadFragment.java +++ b/java/com/android/incallui/DialpadFragment.java @@ -84,6 +84,8 @@ public class DialpadFragment extends BaseFragment private DtmfKeyListener dtmfKeyListener; private DialpadView dialpadView; private int currentTextColor; + private View endCallSpace; + private boolean shouldShowEndCallSpace = true; @Override public void onClick(View v) { @@ -152,6 +154,7 @@ public class DialpadFragment extends BaseFragment View backButton = dialpadView.findViewById(R.id.dialpad_back); backButton.setVisibility(View.VISIBLE); backButton.setOnClickListener(this); + endCallSpace = dialpadView.findViewById(R.id.end_call_space); return parent; } @@ -160,6 +163,7 @@ public class DialpadFragment extends BaseFragment public void onResume() { super.onResume(); updateColors(); + endCallSpace.setVisibility(shouldShowEndCallSpace ? View.VISIBLE : View.GONE); } public void updateColors() { @@ -268,6 +272,10 @@ public class DialpadFragment extends BaseFragment } } + public void setShouldShowEndCallSpace(boolean show) { + shouldShowEndCallSpace = show; + } + /** * LinearLayout with getter and setter methods for the translationY property using floats, for * animation purposes. diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java index dee5e7eb1..6f2ad8bf3 100644 --- a/java/com/android/incallui/InCallActivity.java +++ b/java/com/android/incallui/InCallActivity.java @@ -830,7 +830,7 @@ public class InCallActivity extends TransactionSafeFragmentActivity // Note: onInCallScreenDialpadVisibilityChange is called here to ensure that the dialpad FAB // repositions itself. - getInCallScreen().onInCallScreenDialpadVisibilityChange(show); + getInCallOrRttCallScreen().onInCallScreenDialpadVisibilityChange(show); } private void showDialpadFragment() { @@ -842,11 +842,15 @@ public class InCallActivity extends TransactionSafeFragmentActivity FragmentTransaction transaction = dialpadFragmentManager.beginTransaction(); DialpadFragment dialpadFragment = getDialpadFragment(); if (dialpadFragment == null) { - transaction.add(getDialpadContainerId(), new DialpadFragment(), Tags.DIALPAD_FRAGMENT); + dialpadFragment = new DialpadFragment(); + transaction.add(getDialpadContainerId(), dialpadFragment, Tags.DIALPAD_FRAGMENT); } else { transaction.show(dialpadFragment); dialpadFragment.setUserVisibleHint(true); } + // RTT call screen doesn't show end call button inside dialpad, thus the space reserved for end + // call button should be removed. + dialpadFragment.setShouldShowEndCallSpace(didShowInCallScreen); transaction.commitAllowingStateLoss(); dialpadFragmentManager.executePendingTransactions(); @@ -967,7 +971,7 @@ public class InCallActivity extends TransactionSafeFragmentActivity } public boolean getCallCardFragmentVisible() { - return didShowInCallScreen || didShowVideoCallScreen; + return didShowInCallScreen || didShowVideoCallScreen || didShowRttCallScreen; } public void dismissKeyguard(boolean dismiss) { @@ -1100,7 +1104,7 @@ public class InCallActivity extends TransactionSafeFragmentActivity @Nullable public FragmentManager getDialpadFragmentManager() { - InCallScreen inCallScreen = getInCallScreen(); + InCallScreen inCallScreen = getInCallOrRttCallScreen(); if (inCallScreen != null) { return inCallScreen.getInCallScreenFragment().getChildFragmentManager(); } @@ -1108,7 +1112,7 @@ public class InCallActivity extends TransactionSafeFragmentActivity } public int getDialpadContainerId() { - return getInCallScreen().getAnswerAndDialpadContainerResourceId(); + return getInCallOrRttCallScreen().getAnswerAndDialpadContainerResourceId(); } @Override @@ -1586,6 +1590,17 @@ public class InCallActivity extends TransactionSafeFragmentActivity return (RttCallScreen) getSupportFragmentManager().findFragmentByTag(Tags.RTT_CALL_SCREEN); } + private InCallScreen getInCallOrRttCallScreen() { + InCallScreen inCallScreen = null; + if (didShowInCallScreen) { + inCallScreen = getInCallScreen(); + } + if (didShowRttCallScreen) { + inCallScreen = getRttCallScreen(); + } + return inCallScreen; + } + @Override public void onPseudoScreenStateChanged(boolean isOn) { LogUtil.i("InCallActivity.onPseudoScreenStateChanged", "isOn: " + isOn); diff --git a/java/com/android/incallui/rtt/impl/RttChatFragment.java b/java/com/android/incallui/rtt/impl/RttChatFragment.java index 5094c318e..f9c91e5fb 100644 --- a/java/com/android/incallui/rtt/impl/RttChatFragment.java +++ b/java/com/android/incallui/rtt/impl/RttChatFragment.java @@ -333,11 +333,13 @@ public class RttChatFragment extends Fragment public void updateInCallScreenColors() {} @Override - public void onInCallScreenDialpadVisibilityChange(boolean isShowing) {} + public void onInCallScreenDialpadVisibilityChange(boolean isShowing) { + overflowMenu.setDialpadButtonChecked(isShowing); + } @Override public int getAnswerAndDialpadContainerResourceId() { - return 0; + return R.id.incall_dialpad_container; } @Override diff --git a/java/com/android/incallui/rtt/impl/RttOverflowMenu.java b/java/com/android/incallui/rtt/impl/RttOverflowMenu.java index 2b56364be..cca36318e 100644 --- a/java/com/android/incallui/rtt/impl/RttOverflowMenu.java +++ b/java/com/android/incallui/rtt/impl/RttOverflowMenu.java @@ -87,4 +87,8 @@ public class RttOverflowMenu extends PopupWindow implements OnCheckedChangeListe speakerButton.setOnCheckedChangeListener(null); } } + + void setDialpadButtonChecked(boolean isChecked) { + dialpadButton.setChecked(isChecked); + } } diff --git a/java/com/android/incallui/rtt/impl/res/layout/frag_rtt_chat.xml b/java/com/android/incallui/rtt/impl/res/layout/frag_rtt_chat.xml index d85075106..3194b75bc 100644 --- a/java/com/android/incallui/rtt/impl/res/layout/frag_rtt_chat.xml +++ b/java/com/android/incallui/rtt/impl/res/layout/frag_rtt_chat.xml @@ -67,4 +67,11 @@ android:tint="@color/submit_button_color"/> + \ No newline at end of file diff --git a/java/com/android/incallui/rtt/protocol/RttCallScreen.java b/java/com/android/incallui/rtt/protocol/RttCallScreen.java index 916dfb84d..531b18df6 100644 --- a/java/com/android/incallui/rtt/protocol/RttCallScreen.java +++ b/java/com/android/incallui/rtt/protocol/RttCallScreen.java @@ -17,9 +17,10 @@ package com.android.incallui.rtt.protocol; import android.support.v4.app.Fragment; +import com.android.incallui.incall.protocol.InCallScreen; /** Interface for call RTT call module. */ -public interface RttCallScreen { +public interface RttCallScreen extends InCallScreen { void onRttScreenStart(); -- cgit v1.2.3