diff options
Diffstat (limited to 'src/com/android/incallui')
-rw-r--r-- | src/com/android/incallui/CallCardFragment.java | 11 | ||||
-rw-r--r-- | src/com/android/incallui/CallCardPresenter.java | 38 |
2 files changed, 27 insertions, 22 deletions
diff --git a/src/com/android/incallui/CallCardFragment.java b/src/com/android/incallui/CallCardFragment.java index 34ca11b9..b46fe229 100644 --- a/src/com/android/incallui/CallCardFragment.java +++ b/src/com/android/incallui/CallCardFragment.java @@ -356,7 +356,8 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr @Override public void setCallState(int state, Call.DisconnectCause cause, boolean bluetoothOn, - String gatewayLabel, String gatewayNumber, boolean isHeldRemotely, int callType) { + String gatewayLabel, String gatewayNumber, boolean isWaitingForRemoteSide, + int callType) { String callStateLabel = null; // If this is a video call then update the state of the VideoCallPanel @@ -369,7 +370,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr } // States other than disconnected not yet supported - callStateLabel = getCallStateLabelFromState(state, cause, isHeldRemotely); + callStateLabel = getCallStateLabelFromState(state, cause, isWaitingForRemoteSide); Log.v(this, "setCallState " + callStateLabel); Log.v(this, "DisconnectCause " + cause); @@ -502,7 +503,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr * cause of disconnect */ private String getCallStateLabelFromState(int state, Call.DisconnectCause cause, - boolean isHeldRemotely) { + boolean isWaitingForRemoteSide) { final Context context = getView().getContext(); String callStateLabel = null; // Label to display as part of the call banner @@ -512,13 +513,13 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr } else if (Call.State.ACTIVE == state) { // We normally don't show a "call state label" at all in // this state (but see below for some special cases). - if (isHeldRemotely) { + if (isWaitingForRemoteSide) { callStateLabel = context.getString(R.string.card_title_waiting_call); } } else if (Call.State.ONHOLD == state) { callStateLabel = context.getString(R.string.card_title_on_hold); } else if (Call.State.DIALING == state) { - callStateLabel = context.getString(isHeldRemotely + callStateLabel = context.getString(isWaitingForRemoteSide ? R.string.card_title_dialing_waiting : R.string.card_title_dialing); } else if (Call.State.REDIALING == state) { callStateLabel = context.getString(R.string.card_title_redialing); diff --git a/src/com/android/incallui/CallCardPresenter.java b/src/com/android/incallui/CallCardPresenter.java index 608be80e..7e28ad1c 100644 --- a/src/com/android/incallui/CallCardPresenter.java +++ b/src/com/android/incallui/CallCardPresenter.java @@ -209,27 +209,13 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> } // Set the call state - final int callType = CallUtils.getCallType(mPrimary); - - if (mPrimary != null) { - final boolean bluetoothOn = - (AudioModeProvider.getInstance().getAudioMode() == AudioMode.BLUETOOTH); - ui.setCallState(mPrimary.getState(), mPrimary.getDisconnectCause(), bluetoothOn, - getGatewayLabel(), getGatewayNumber(), mPrimary.isHeldRemotely(), callType); - } else { - ui.setCallState(Call.State.IDLE, Call.DisconnectCause.UNKNOWN, - false, null, null, false, callType); - } + updateCallState(mPrimary, AudioModeProvider.getInstance().getAudioMode()); } @Override public void onAudioMode(int mode) { if (mPrimary != null && getUi() != null) { - final boolean bluetoothOn = (AudioMode.BLUETOOTH == mode); - - getUi().setCallState(mPrimary.getState(), mPrimary.getDisconnectCause(), bluetoothOn, - getGatewayLabel(), getGatewayNumber(), mPrimary.isHeldRemotely(), - CallUtils.getCallType(mPrimary)); + updateCallState(mPrimary, mode); } } @@ -241,6 +227,23 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> public void onMute(boolean muted) { } + private void updateCallState(Call call, int audioMode) { + final int callType = CallUtils.getCallType(call); + if (call == null) { + getUi().setCallState(Call.State.IDLE, Call.DisconnectCause.UNKNOWN, + false, null, null, false, callType); + return; + } + + final boolean bluetoothOn = audioMode == AudioMode.BLUETOOTH; + final int state = call.getState(); + final boolean isWaitingForRemoteSide = + (state == Call.State.ACTIVE && call.isHeldRemotely()) || + (state == Call.State.DIALING && call.isDialingWaiting()); + getUi().setCallState(call.getState(), call.getDisconnectCause(), bluetoothOn, + getGatewayLabel(), getGatewayNumber(), isWaitingForRemoteSide, callType); + } + public void updateCallTime() { final CallCardUi ui = getUi(); @@ -520,7 +523,8 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> Drawable photo, boolean isConference, boolean isGeneric); void setSecondaryImage(Drawable image); void setCallState(int state, Call.DisconnectCause cause, boolean bluetoothOn, - String gatewayLabel, String gatewayNumber, boolean isHeldRemotely, int callType); + String gatewayLabel, String gatewayNumber, + boolean isWaitingForRemoteSide, int callType); void setPrimaryCallElapsedTime(boolean show, String duration); void setPrimaryName(String name, boolean nameIsNumber); void setPrimaryImage(Drawable image); |