summaryrefslogtreecommitdiff
path: root/java/com/android/incallui/incall
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/incallui/incall')
-rw-r--r--java/com/android/incallui/incall/impl/InCallFragment.java7
-rw-r--r--java/com/android/incallui/incall/protocol/PrimaryCallState.java261
2 files changed, 152 insertions, 116 deletions
diff --git a/java/com/android/incallui/incall/impl/InCallFragment.java b/java/com/android/incallui/incall/impl/InCallFragment.java
index 9a6d1c41e..29160abef 100644
--- a/java/com/android/incallui/incall/impl/InCallFragment.java
+++ b/java/com/android/incallui/incall/impl/InCallFragment.java
@@ -321,11 +321,12 @@ public class InCallFragment extends Fragment
LogUtil.i("InCallFragment.setCallState", primaryCallState.toString());
contactGridManager.setCallState(primaryCallState);
getButtonController(InCallButtonIds.BUTTON_SWITCH_TO_SECONDARY)
- .setAllowed(primaryCallState.swapToSecondaryButtonState != ButtonState.NOT_SUPPORT);
+ .setAllowed(primaryCallState.swapToSecondaryButtonState() != ButtonState.NOT_SUPPORT);
getButtonController(InCallButtonIds.BUTTON_SWITCH_TO_SECONDARY)
- .setEnabled(primaryCallState.swapToSecondaryButtonState == ButtonState.ENABLED);
+ .setEnabled(primaryCallState.swapToSecondaryButtonState() == ButtonState.ENABLED);
buttonChooser =
- ButtonChooserFactory.newButtonChooser(voiceNetworkType, primaryCallState.isWifi, phoneType);
+ ButtonChooserFactory.newButtonChooser(
+ voiceNetworkType, primaryCallState.isWifi(), phoneType);
updateButtonStates();
}
diff --git a/java/com/android/incallui/incall/protocol/PrimaryCallState.java b/java/com/android/incallui/incall/protocol/PrimaryCallState.java
index 7a3abedcd..1d536e9b9 100644
--- a/java/com/android/incallui/incall/protocol/PrimaryCallState.java
+++ b/java/com/android/incallui/incall/protocol/PrimaryCallState.java
@@ -26,12 +26,14 @@ import com.android.dialer.common.Assert;
import com.android.incallui.call.DialerCall;
import com.android.incallui.call.DialerCall.State;
import com.android.incallui.videotech.utils.SessionModificationState;
+import com.google.auto.value.AutoValue;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Locale;
/** State of the primary call. */
-public class PrimaryCallState {
+@AutoValue
+public abstract class PrimaryCallState {
/**
* Button state that will be invisible if not supported, visible but invalid if disabled, or
@@ -45,126 +47,159 @@ public class PrimaryCallState {
int ENABLED = 2;
}
- public final int state;
- public final boolean isVideoCall;
- @SessionModificationState public final int sessionModificationState;
- public final DisconnectCause disconnectCause;
- public final String connectionLabel;
- public final Drawable connectionIcon;
- public final String gatewayNumber;
- public final String callSubject;
- public final String callbackNumber;
- public final boolean isWifi;
- public final boolean isConference;
- public final boolean isWorkCall;
- public final boolean isHdAttempting;
- public final boolean isHdAudioCall;
- public final boolean isForwardedNumber;
- public final boolean shouldShowContactPhoto;
- public final long connectTimeMillis;
- public final boolean isVoiceMailNumber;
- public final boolean isRemotelyHeld;
- public final boolean isBusinessNumber;
- public final boolean supportsCallOnHold;
- public final @ButtonState int swapToSecondaryButtonState;
- public final boolean isAssistedDialed;
- @Nullable public final String customLabel;
- @Nullable public final TransformationInfo assistedDialingExtras;
-
- // TODO: Convert to autovalue. a bug
- public static PrimaryCallState createEmptyPrimaryCallState() {
- return createEmptyPrimaryCallStateWithState(DialerCall.State.IDLE, null);
- }
+ public abstract int state();
+
+ public abstract boolean isVideoCall();
+
+ @SessionModificationState
+ public abstract int sessionModificationState();
+
+ public abstract DisconnectCause disconnectCause();
+
+ @Nullable
+ public abstract String connectionLabel();
+
+ @Nullable
+ public abstract Drawable connectionIcon();
+
+ @Nullable
+ public abstract String gatewayNumber();
+
+ @Nullable
+ public abstract String callSubject();
+
+ @Nullable
+ public abstract String callbackNumber();
+
+ public abstract boolean isWifi();
+
+ public abstract boolean isConference();
+
+ public abstract boolean isWorkCall();
+
+ public abstract boolean isHdAttempting();
+
+ public abstract boolean isHdAudioCall();
- public static PrimaryCallState createEmptyPrimaryCallStateWithState(
- int state, String customLabel) {
- return new PrimaryCallState(
- state,
- false, /* isVideoCall */
- SessionModificationState.NO_REQUEST,
- new DisconnectCause(DisconnectCause.UNKNOWN),
- null, /* connectionLabel */
- null, /* connectionIcon */
- null, /* gatewayNumber */
- null, /* callSubject */
- null, /* callbackNumber */
- false /* isWifi */,
- false /* isConference */,
- false /* isWorkCall */,
- false /* isHdAttempting */,
- false /* isHdAudioCall */,
- false /* isForwardedNumber */,
- false /* shouldShowContactPhoto */,
- 0,
- false /* isVoiceMailNumber */,
- false /* isRemotelyHeld */,
- false /* isBusinessNumber */,
- true /* supportsCallOnHold */,
- ButtonState.NOT_SUPPORT /* swapToSecondaryButtonState */,
- false /* isAssistedDialed */,
- customLabel,
- null /* assistedDialingExtras */);
+ public abstract boolean isForwardedNumber();
+
+ public abstract boolean shouldShowContactPhoto();
+
+ public abstract long connectTimeMillis();
+
+ public abstract boolean isVoiceMailNumber();
+
+ public abstract boolean isRemotelyHeld();
+
+ public abstract boolean isBusinessNumber();
+
+ public abstract boolean supportsCallOnHold();
+
+ public abstract @ButtonState int swapToSecondaryButtonState();
+
+ public abstract boolean isAssistedDialed();
+
+ @Nullable
+ public abstract String customLabel();
+
+ @Nullable
+ public abstract TransformationInfo assistedDialingExtras();
+
+ public static Builder builder() {
+ return new AutoValue_PrimaryCallState.Builder()
+ .setState(DialerCall.State.IDLE)
+ .setIsVideoCall(false)
+ .setSessionModificationState(SessionModificationState.NO_REQUEST)
+ .setDisconnectCause(new DisconnectCause(DisconnectCause.UNKNOWN))
+ .setIsWifi(false)
+ .setIsConference(false)
+ .setIsWorkCall(false)
+ .setIsHdAttempting(false)
+ .setIsHdAudioCall(false)
+ .setIsForwardedNumber(false)
+ .setShouldShowContactPhoto(false)
+ .setConnectTimeMillis(0)
+ .setIsVoiceMailNumber(false)
+ .setIsRemotelyHeld(false)
+ .setIsBusinessNumber(false)
+ .setSupportsCallOnHold(true)
+ .setSwapToSecondaryButtonState(ButtonState.NOT_SUPPORT)
+ .setIsAssistedDialed(false);
}
- public PrimaryCallState(
- int state,
- boolean isVideoCall,
- @SessionModificationState int sessionModificationState,
- DisconnectCause disconnectCause,
- String connectionLabel,
- Drawable connectionIcon,
- String gatewayNumber,
- String callSubject,
- String callbackNumber,
- boolean isWifi,
- boolean isConference,
- boolean isWorkCall,
- boolean isHdAttempting,
- boolean isHdAudioCall,
- boolean isForwardedNumber,
- boolean shouldShowContactPhoto,
- long connectTimeMillis,
- boolean isVoiceMailNumber,
- boolean isRemotelyHeld,
- boolean isBusinessNumber,
- boolean supportsCallOnHold,
- @ButtonState int swapToSecondaryButtonState,
- boolean isAssistedDialed,
- @Nullable String customLabel,
- @Nullable TransformationInfo assistedDialingExtras) {
- this.state = state;
- this.isVideoCall = isVideoCall;
- this.sessionModificationState = sessionModificationState;
- this.disconnectCause = disconnectCause;
- this.connectionLabel = connectionLabel;
- this.connectionIcon = connectionIcon;
- this.gatewayNumber = gatewayNumber;
- this.callSubject = callSubject;
- this.callbackNumber = callbackNumber;
- this.isWifi = isWifi;
- this.isConference = isConference;
- this.isWorkCall = isWorkCall;
- this.isHdAttempting = isHdAttempting;
- this.isHdAudioCall = isHdAudioCall;
- this.isForwardedNumber = isForwardedNumber;
- this.shouldShowContactPhoto = shouldShowContactPhoto;
- this.connectTimeMillis = connectTimeMillis;
- this.isVoiceMailNumber = isVoiceMailNumber;
- this.isRemotelyHeld = isRemotelyHeld;
- this.isBusinessNumber = isBusinessNumber;
- this.supportsCallOnHold = supportsCallOnHold;
- this.swapToSecondaryButtonState = swapToSecondaryButtonState;
- this.isAssistedDialed = isAssistedDialed;
- if (!TextUtils.isEmpty(customLabel)) {
- Assert.checkArgument(state == State.CALL_PENDING);
+ /** Builder class for primary call state info. */
+ @AutoValue.Builder
+ public abstract static class Builder {
+ public abstract Builder setState(int state);
+
+ public abstract Builder setIsVideoCall(boolean isVideoCall);
+
+ public abstract Builder setSessionModificationState(
+ @SessionModificationState int sessionModificationState);
+
+ public abstract Builder setDisconnectCause(DisconnectCause disconnectCause);
+
+ public abstract Builder setConnectionLabel(String connectionLabel);
+
+ public abstract Builder setConnectionIcon(Drawable connectionIcon);
+
+ public abstract Builder setGatewayNumber(String gatewayNumber);
+
+ public abstract Builder setCallSubject(String callSubject);
+
+ public abstract Builder setCallbackNumber(String callbackNumber);
+
+ public abstract Builder setIsWifi(boolean isWifi);
+
+ public abstract Builder setIsConference(boolean isConference);
+
+ public abstract Builder setIsWorkCall(boolean isWorkCall);
+
+ public abstract Builder setIsHdAttempting(boolean isHdAttempting);
+
+ public abstract Builder setIsHdAudioCall(boolean isHdAudioCall);
+
+ public abstract Builder setIsForwardedNumber(boolean isForwardedNumber);
+
+ public abstract Builder setShouldShowContactPhoto(boolean shouldShowContactPhoto);
+
+ public abstract Builder setConnectTimeMillis(long connectTimeMillis);
+
+ public abstract Builder setIsVoiceMailNumber(boolean isVoiceMailNumber);
+
+ public abstract Builder setIsRemotelyHeld(boolean isRemotelyHeld);
+
+ public abstract Builder setIsBusinessNumber(boolean isBusinessNumber);
+
+ public abstract Builder setSupportsCallOnHold(boolean supportsCallOnHold);
+
+ public abstract Builder setSwapToSecondaryButtonState(
+ @ButtonState int swapToSecondaryButtonState);
+
+ public abstract Builder setIsAssistedDialed(boolean isAssistedDialed);
+
+ public abstract Builder setCustomLabel(String customLabel);
+
+ public abstract Builder setAssistedDialingExtras(TransformationInfo assistedDialingExtras);
+
+ abstract PrimaryCallState autoBuild();
+
+ public PrimaryCallState build() {
+ PrimaryCallState primaryCallState = autoBuild();
+ if (!TextUtils.isEmpty(primaryCallState.customLabel())) {
+ Assert.checkArgument(primaryCallState.state() == State.CALL_PENDING);
+ }
+ return primaryCallState;
}
- this.customLabel = customLabel;
- this.assistedDialingExtras = assistedDialingExtras;
+ }
+
+ public static PrimaryCallState empty() {
+ return PrimaryCallState.builder().build();
}
@Override
public String toString() {
return String.format(
- Locale.US, "PrimaryCallState, state: %d, connectionLabel: %s", state, connectionLabel);
+ Locale.US, "PrimaryCallState, state: %d, connectionLabel: %s", state(), connectionLabel());
}
}