summaryrefslogtreecommitdiffstats
path: root/src/com/android/car/dialer/ui/activecall/InCallActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/car/dialer/ui/activecall/InCallActivity.java')
-rw-r--r--src/com/android/car/dialer/ui/activecall/InCallActivity.java60
1 files changed, 34 insertions, 26 deletions
diff --git a/src/com/android/car/dialer/ui/activecall/InCallActivity.java b/src/com/android/car/dialer/ui/activecall/InCallActivity.java
index af438a18..bf22b279 100644
--- a/src/com/android/car/dialer/ui/activecall/InCallActivity.java
+++ b/src/com/android/car/dialer/ui/activecall/InCallActivity.java
@@ -23,6 +23,7 @@ import android.telecom.Call;
import androidx.core.util.Pair;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
+import androidx.fragment.app.FragmentTransaction;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModelProviders;
@@ -32,13 +33,13 @@ import com.android.car.dialer.Constants;
import com.android.car.dialer.R;
import com.android.car.dialer.log.L;
import com.android.car.dialer.notification.InCallNotificationController;
-
-import java.util.List;
+import com.android.car.telephony.common.CallDetail;
/** Activity for ongoing call and incoming call. */
public class InCallActivity extends FragmentActivity {
private static final String TAG = "CD.InCallActivity";
private Fragment mOngoingCallFragment;
+ private Fragment mOngoingConfCallFragment;
private Fragment mIncomingCallFragment;
private InCallViewModel mInCallViewModel;
@@ -54,14 +55,23 @@ public class InCallActivity extends FragmentActivity {
mOngoingCallFragment = getSupportFragmentManager().findFragmentById(
R.id.ongoing_call_fragment);
+ mOngoingConfCallFragment = getSupportFragmentManager().findFragmentById(
+ R.id.ongoing_conf_call_fragment);
mIncomingCallFragment = getSupportFragmentManager().findFragmentById(
R.id.incoming_call_fragment);
+ // Initially hide all fragments to prevent animation flicker
+ getSupportFragmentManager().beginTransaction()
+ .hide(mIncomingCallFragment)
+ .hide(mOngoingCallFragment)
+ .hide(mOngoingConfCallFragment)
+ .commit();
+
mShowIncomingCall = new MutableLiveData<>();
mInCallViewModel = ViewModelProviders.of(this).get(InCallViewModel.class);
mIncomingCallLiveData = LiveDataFunctions.iff(mShowIncomingCall,
mInCallViewModel.getIncomingCall());
- LiveDataFunctions.pair(mInCallViewModel.getOngoingCallList(),
+ LiveDataFunctions.pair(mInCallViewModel.getPrimaryCallDetail(),
mIncomingCallLiveData).observe(this, this::updateVisibility);
handleIntent();
@@ -85,14 +95,32 @@ public class InCallActivity extends FragmentActivity {
handleIntent();
}
- private void updateVisibility(Pair<List<Call>, Call> callList) {
- if ((callList.first == null || callList.first.isEmpty()) && callList.second == null) {
+ private void updateVisibility(Pair<CallDetail, Call> callList) {
+ CallDetail detail = callList.first;
+ Call incomingCall = callList.second;
+
+ if (detail == null && incomingCall == null) {
L.d(TAG, "No call to show. Finish InCallActivity");
finish();
return;
}
- updateIncomingCallVisibility(callList.second);
+ FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
+
+ if (incomingCall == null) {
+ ft.show(detail.isConference() ? mOngoingConfCallFragment : mOngoingCallFragment)
+ .hide(detail.isConference() ? mOngoingCallFragment : mOngoingConfCallFragment)
+ .hide(mIncomingCallFragment);
+
+ mShowIncomingCall.setValue(false);
+ setIntent(null);
+ } else {
+ ft.show(mIncomingCallFragment)
+ .hide(mOngoingCallFragment)
+ .hide(mOngoingConfCallFragment);
+ }
+
+ ft.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out).commit();
}
private void handleIntent() {
@@ -107,24 +135,4 @@ public class InCallActivity extends FragmentActivity {
mShowIncomingCall.setValue(false);
}
}
-
- private void updateIncomingCallVisibility(Call incomingCall) {
- if (incomingCall == null) {
- getSupportFragmentManager()
- .beginTransaction()
- .show(mOngoingCallFragment)
- .hide(mIncomingCallFragment)
- .setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out)
- .commit();
- mShowIncomingCall.setValue(false);
- setIntent(null);
- } else {
- getSupportFragmentManager()
- .beginTransaction()
- .show(mIncomingCallFragment)
- .hide(mOngoingCallFragment)
- .setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out)
- .commit();
- }
- }
}