1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.dialer.voicemail.model; 18 19 import android.support.annotation.NonNull; 20 import android.support.annotation.Nullable; 21 import com.android.dialer.DialerPhoneNumber; 22 import com.android.dialer.NumberAttributes; 23 import com.android.dialer.compat.android.provider.VoicemailCompat; 24 import com.google.auto.value.AutoValue; 25 26 /** Data class containing the contents of a voicemail entry from the AnnotatedCallLog. */ 27 @AutoValue 28 public abstract class VoicemailEntry { 29 builder()30 public static Builder builder() { 31 return new AutoValue_VoicemailEntry.Builder() 32 .setId(0) 33 .setTimestamp(0) 34 .setNumber(DialerPhoneNumber.getDefaultInstance()) 35 .setNumberAttributes(NumberAttributes.getDefaultInstance()) 36 .setDuration(0) 37 .setCallType(0) 38 .setIsRead(0) 39 .setTranscriptionState(VoicemailCompat.TRANSCRIPTION_NOT_STARTED); 40 } 41 id()42 public abstract int id(); 43 timestamp()44 public abstract long timestamp(); 45 46 @NonNull number()47 public abstract DialerPhoneNumber number(); 48 49 @Nullable formattedNumber()50 public abstract String formattedNumber(); 51 52 @Nullable geocodedLocation()53 public abstract String geocodedLocation(); 54 duration()55 public abstract long duration(); 56 57 @Nullable transcription()58 public abstract String transcription(); 59 60 @Nullable voicemailUri()61 public abstract String voicemailUri(); 62 callType()63 public abstract int callType(); 64 isRead()65 public abstract int isRead(); 66 numberAttributes()67 public abstract NumberAttributes numberAttributes(); 68 transcriptionState()69 public abstract int transcriptionState(); 70 71 @Nullable phoneAccountComponentName()72 public abstract String phoneAccountComponentName(); 73 74 @Nullable phoneAccountId()75 public abstract String phoneAccountId(); 76 77 /** Builder for {@link VoicemailEntry}. */ 78 @AutoValue.Builder 79 public abstract static class Builder { 80 setId(int id)81 public abstract Builder setId(int id); 82 setTimestamp(long timestamp)83 public abstract Builder setTimestamp(long timestamp); 84 setNumber(@onNull DialerPhoneNumber number)85 public abstract Builder setNumber(@NonNull DialerPhoneNumber number); 86 setFormattedNumber(@ullable String formattedNumber)87 public abstract Builder setFormattedNumber(@Nullable String formattedNumber); 88 setDuration(long duration)89 public abstract Builder setDuration(long duration); 90 setTranscription(@ullable String transcription)91 public abstract Builder setTranscription(@Nullable String transcription); 92 setVoicemailUri(@ullable String voicemailUri)93 public abstract Builder setVoicemailUri(@Nullable String voicemailUri); 94 setGeocodedLocation(@ullable String geocodedLocation)95 public abstract Builder setGeocodedLocation(@Nullable String geocodedLocation); 96 setCallType(int callType)97 public abstract Builder setCallType(int callType); 98 setIsRead(int isRead)99 public abstract Builder setIsRead(int isRead); 100 setNumberAttributes(NumberAttributes numberAttributes)101 public abstract Builder setNumberAttributes(NumberAttributes numberAttributes); 102 setTranscriptionState(int transcriptionState)103 public abstract Builder setTranscriptionState(int transcriptionState); 104 setPhoneAccountComponentName( @ullable String phoneAccountComponentName)105 public abstract Builder setPhoneAccountComponentName( 106 @Nullable String phoneAccountComponentName); 107 setPhoneAccountId(@ullable String phoneAccountId)108 public abstract Builder setPhoneAccountId(@Nullable String phoneAccountId); 109 build()110 public abstract VoicemailEntry build(); 111 } 112 } 113