1/*
2 * Copyright (C) 2009 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
17package com.android.contacts;
18
19import android.accounts.Account;
20import android.provider.ContactsContract.CommonDataKinds.Email;
21import android.provider.ContactsContract.CommonDataKinds.Im;
22import android.provider.ContactsContract.CommonDataKinds.Organization;
23import android.provider.ContactsContract.CommonDataKinds.Phone;
24import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
25
26import com.android.contacts.common.model.RawContactModifier;
27
28/**
29 * This class contains utility functions for determining the precedence of
30 * different types associated with contact data items.
31 *
32 * @deprecated use {@link RawContactModifier#getTypePrecedence} instead, since this
33 *             list isn't {@link Account} based.
34 */
35@Deprecated
36public final class TypePrecedence {
37
38    public static final String MIME_TYPE_VIDEO_CHAT = "vnd.android.cursor.item/video-chat-address";
39
40    /* This utility class has cannot be instantiated.*/
41    private TypePrecedence() {}
42
43    //TODO These may need to be tweaked.
44    private static final int[] TYPE_PRECEDENCE_PHONES = {
45            Phone.TYPE_CUSTOM,
46            Phone.TYPE_MAIN,
47            Phone.TYPE_MOBILE,
48            Phone.TYPE_HOME,
49            Phone.TYPE_WORK,
50            Phone.TYPE_OTHER,
51            Phone.TYPE_FAX_HOME,
52            Phone.TYPE_FAX_WORK,
53            Phone.TYPE_PAGER};
54
55    private static final int[] TYPE_PRECEDENCE_EMAIL = {
56            Email.TYPE_CUSTOM,
57            Email.TYPE_HOME,
58            Email.TYPE_WORK,
59            Email.TYPE_OTHER};
60
61    private static final int[] TYPE_PRECEDENCE_POSTAL = {
62            StructuredPostal.TYPE_CUSTOM,
63            StructuredPostal.TYPE_HOME,
64            StructuredPostal.TYPE_WORK,
65            StructuredPostal.TYPE_OTHER};
66
67    private static final int[] TYPE_PRECEDENCE_IM = {
68            Im.TYPE_CUSTOM,
69            Im.TYPE_HOME,
70            Im.TYPE_WORK,
71            Im.TYPE_OTHER};
72
73    private static final int[] TYPE_PRECEDENCE_ORG = {
74            Organization.TYPE_CUSTOM,
75            Organization.TYPE_WORK,
76            Organization.TYPE_OTHER};
77
78    /**
79     * Returns the precedence (1 being the highest) of a type in the context of it's mimetype.
80     *
81     * @param mimetype The mimetype of the data with which the type is associated.
82     * @param type The integer type as defined in {@Link ContactsContract#CommonDataKinds}.
83     * @return The integer precedence, where 1 is the highest.
84     */
85    @Deprecated
86    public static int getTypePrecedence(String mimetype, int type) {
87        int[] typePrecedence = getTypePrecedenceList(mimetype);
88        if (typePrecedence == null) {
89            return -1;
90        }
91
92        for (int i = 0; i < typePrecedence.length; i++) {
93            if (typePrecedence[i] == type) {
94                return i;
95            }
96        }
97        return typePrecedence.length;
98    }
99
100    @Deprecated
101    private static int[] getTypePrecedenceList(String mimetype) {
102        if (mimetype.equals(Phone.CONTENT_ITEM_TYPE)) {
103            return TYPE_PRECEDENCE_PHONES;
104        } else if (mimetype.equals(Email.CONTENT_ITEM_TYPE)) {
105            return TYPE_PRECEDENCE_EMAIL;
106        } else if (mimetype.equals(StructuredPostal.CONTENT_ITEM_TYPE)) {
107            return TYPE_PRECEDENCE_POSTAL;
108        } else if (mimetype.equals(Im.CONTENT_ITEM_TYPE)) {
109            return TYPE_PRECEDENCE_IM;
110        } else if (mimetype.equals(MIME_TYPE_VIDEO_CHAT)) {
111            return TYPE_PRECEDENCE_IM;
112        } else if (mimetype.equals(Organization.CONTENT_ITEM_TYPE)) {
113            return TYPE_PRECEDENCE_ORG;
114        } else {
115            return null;
116        }
117    }
118
119
120}
121