1 /*
2  * Copyright (C) 2012 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.contacts.common.model.dataitem;
18 
19 import android.content.ContentValues;
20 import android.content.Context;
21 import android.provider.ContactsContract;
22 import android.provider.ContactsContract.CommonDataKinds.Phone;
23 
24 import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
25 import com.android.contacts.common.model.dataitem.DataKind;
26 
27 /**
28  * Represents a phone data item, wrapping the columns in
29  * {@link ContactsContract.CommonDataKinds.Phone}.
30  */
31 public class PhoneDataItem extends DataItem {
32 
33     public static final String KEY_FORMATTED_PHONE_NUMBER = "formattedPhoneNumber";
34 
PhoneDataItem(ContentValues values)35     /* package */ PhoneDataItem(ContentValues values) {
36         super(values);
37     }
38 
getNumber()39     public String getNumber() {
40         return getContentValues().getAsString(Phone.NUMBER);
41     }
42 
43     /**
44      * Returns the normalized phone number in E164 format.
45      */
getNormalizedNumber()46     public String getNormalizedNumber() {
47         return getContentValues().getAsString(Phone.NORMALIZED_NUMBER);
48     }
49 
getFormattedPhoneNumber()50     public String getFormattedPhoneNumber() {
51         return getContentValues().getAsString(KEY_FORMATTED_PHONE_NUMBER);
52     }
53 
getLabel()54     public String getLabel() {
55         return getContentValues().getAsString(Phone.LABEL);
56     }
57 
computeFormattedPhoneNumber(String defaultCountryIso)58     public void computeFormattedPhoneNumber(String defaultCountryIso) {
59         final String phoneNumber = getNumber();
60         if (phoneNumber != null) {
61             final String formattedPhoneNumber = PhoneNumberUtilsCompat.formatNumber(phoneNumber,
62                     getNormalizedNumber(), defaultCountryIso);
63             getContentValues().put(KEY_FORMATTED_PHONE_NUMBER, formattedPhoneNumber);
64         }
65     }
66 
67     /**
68      * Returns the formatted phone number (if already computed using {@link
69      * #computeFormattedPhoneNumber}). Otherwise this method returns the unformatted phone number.
70      */
71     @Override
buildDataStringForDisplay(Context context, DataKind kind)72     public String buildDataStringForDisplay(Context context, DataKind kind) {
73         final String formatted = getFormattedPhoneNumber();
74         if (formatted != null) {
75             return formatted;
76         } else {
77             return getNumber();
78         }
79     }
80 }
81