packages/apps/Dialer/java/com/android/incallui/incall/protocol/PrimaryInfo.java

158 lines
4.5 KiB
Java

/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.incallui.incall.protocol;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.support.annotation.Nullable;
import com.android.dialer.common.LogUtil;
import com.android.dialer.multimedia.MultimediaData;
import com.google.auto.value.AutoValue;
import java.util.Locale;
/** Information about the primary call. */
@AutoValue
public abstract class PrimaryInfo {
@Nullable
public abstract String number();
@Nullable
public abstract String name();
public abstract boolean nameIsNumber();
// This is from contacts and shows the type of number. For example, "Mobile".
@Nullable
public abstract String label();
@Nullable
public abstract String location();
@Nullable
public abstract Drawable photo();
@Nullable
public abstract Uri photoUri();
@ContactPhotoType
public abstract int photoType();
public abstract boolean isSipCall();
public abstract boolean isContactPhotoShown();
public abstract boolean isWorkCall();
public abstract boolean isSpam();
public abstract boolean isLocalContact();
public abstract boolean answeringDisconnectsOngoingCall();
public abstract boolean shouldShowLocation();
// Used for consistent LetterTile coloring.
@Nullable
public abstract String contactInfoLookupKey();
@Nullable
public abstract MultimediaData multimediaData();
public abstract boolean showInCallButtonGrid();
public abstract int numberPresentation();
public static Builder builder() {
return new AutoValue_PrimaryInfo.Builder();
}
/** Builder class for primary call info. */
@AutoValue.Builder
public abstract static class Builder {
public abstract Builder setNumber(String number);
public abstract Builder setName(String name);
public abstract Builder setNameIsNumber(boolean nameIsNumber);
public abstract Builder setLabel(String label);
public abstract Builder setLocation(String location);
public abstract Builder setPhoto(Drawable photo);
public abstract Builder setPhotoUri(Uri photoUri);
public abstract Builder setPhotoType(@ContactPhotoType int photoType);
public abstract Builder setIsSipCall(boolean isSipCall);
public abstract Builder setIsContactPhotoShown(boolean isContactPhotoShown);
public abstract Builder setIsWorkCall(boolean isWorkCall);
public abstract Builder setIsSpam(boolean isSpam);
public abstract Builder setIsLocalContact(boolean isLocalContact);
public abstract Builder setAnsweringDisconnectsOngoingCall(
boolean answeringDisconnectsOngoingCall);
public abstract Builder setShouldShowLocation(boolean shouldShowLocation);
public abstract Builder setContactInfoLookupKey(String contactInfoLookupKey);
public abstract Builder setMultimediaData(MultimediaData multimediaData);
public abstract Builder setShowInCallButtonGrid(boolean showInCallButtonGrid);
public abstract Builder setNumberPresentation(int numberPresentation);
public abstract PrimaryInfo build();
}
public static PrimaryInfo empty() {
return PrimaryInfo.builder()
.setNameIsNumber(false)
.setPhotoType(ContactPhotoType.DEFAULT_PLACEHOLDER)
.setIsSipCall(false)
.setIsContactPhotoShown(false)
.setIsWorkCall(false)
.setIsSpam(false)
.setIsLocalContact(false)
.setAnsweringDisconnectsOngoingCall(false)
.setShouldShowLocation(false)
.setShowInCallButtonGrid(true)
.setNumberPresentation(-1)
.build();
}
@Override
public String toString() {
return String.format(
Locale.US,
"PrimaryInfo, number: %s, name: %s, location: %s, label: %s, "
+ "photo: %s, photoType: %d, isPhotoVisible: %b, MultimediaData: %s",
LogUtil.sanitizePhoneNumber(number()),
LogUtil.sanitizePii(name()),
LogUtil.sanitizePii(location()),
label(),
photo(),
photoType(),
isContactPhotoShown(),
multimediaData());
}
}