summaryrefslogtreecommitdiffstats
path: root/src/com/android/incallui
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/incallui')
-rw-r--r--src/com/android/incallui/CallCardFragment.java11
-rw-r--r--src/com/android/incallui/CallCardPresenter.java38
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);