1/*
2 * Copyright (C) 2011 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.calllog;
18
19import com.android.contacts.R;
20
21import android.content.res.Resources;
22import android.provider.CallLog.Calls;
23
24/**
25 * Helper class to perform operations related to call types.
26 */
27public class CallTypeHelper {
28    /** Name used to identify incoming calls. */
29    private final CharSequence mIncomingName;
30    /** Name used to identify outgoing calls. */
31    private final CharSequence mOutgoingName;
32    /** Name used to identify missed calls. */
33    private final CharSequence mMissedName;
34    /** Name used to identify voicemail calls. */
35    private final CharSequence mVoicemailName;
36    /** Color used to identify new missed calls. */
37    private final int mNewMissedColor;
38    /** Color used to identify new voicemail calls. */
39    private final int mNewVoicemailColor;
40
41    public CallTypeHelper(Resources resources) {
42        // Cache these values so that we do not need to look them up each time.
43        mIncomingName = resources.getString(R.string.type_incoming);
44        mOutgoingName = resources.getString(R.string.type_outgoing);
45        mMissedName = resources.getString(R.string.type_missed);
46        mVoicemailName = resources.getString(R.string.type_voicemail);
47        mNewMissedColor = resources.getColor(R.color.call_log_missed_call_highlight_color);
48        mNewVoicemailColor = resources.getColor(R.color.call_log_voicemail_highlight_color);
49    }
50
51    /** Returns the text used to represent the given call type. */
52    public CharSequence getCallTypeText(int callType) {
53        switch (callType) {
54            case Calls.INCOMING_TYPE:
55                return mIncomingName;
56
57            case Calls.OUTGOING_TYPE:
58                return mOutgoingName;
59
60            case Calls.MISSED_TYPE:
61                return mMissedName;
62
63            case Calls.VOICEMAIL_TYPE:
64                return mVoicemailName;
65
66            default:
67                throw new IllegalArgumentException("invalid call type: " + callType);
68        }
69    }
70
71    /** Returns the color used to highlight the given call type, null if not highlight is needed. */
72    public Integer getHighlightedColor(int callType) {
73        switch (callType) {
74            case Calls.INCOMING_TYPE:
75                // New incoming calls are not highlighted.
76                return null;
77
78            case Calls.OUTGOING_TYPE:
79                // New outgoing calls are not highlighted.
80                return null;
81
82            case Calls.MISSED_TYPE:
83                return mNewMissedColor;
84
85            case Calls.VOICEMAIL_TYPE:
86                return mNewVoicemailColor;
87
88            default:
89                throw new IllegalArgumentException("invalid call type: " + callType);
90        }
91    }
92}
93