194b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng/* 294b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng * Copyright (C) 2011 The Android Open Source Project 394b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng * 494b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng * Licensed under the Apache License, Version 2.0 (the "License"); 594b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng * you may not use this file except in compliance with the License. 694b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng * You may obtain a copy of the License at 794b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng * 894b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng * http://www.apache.org/licenses/LICENSE-2.0 994b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng * 1094b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng * Unless required by applicable law or agreed to in writing, software 1194b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng * distributed under the License is distributed on an "AS IS" BASIS, 1294b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1394b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng * See the License for the specific language governing permissions and 1494b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng * limitations under the License. 1594b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng */ 1694b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng 1794b10b530c0fc297e2974e57e094c500d3ee6003Chiao Chengpackage com.android.dialer.calllog; 1894b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng 1994b10b530c0fc297e2974e57e094c500d3ee6003Chiao Chengimport android.content.res.Resources; 2094b10b530c0fc297e2974e57e094c500d3ee6003Chiao Chengimport android.provider.CallLog.Calls; 2194b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng 229554500572ba82fbd7adb0a1637206ef870ef09eChiao Chengimport com.android.dialer.R; 2394b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng 2494b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng/** 2594b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng * Helper class to perform operations related to call types. 2694b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng */ 2794b10b530c0fc297e2974e57e094c500d3ee6003Chiao Chengpublic class CallTypeHelper { 2894b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng /** Name used to identify incoming calls. */ 2994b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng private final CharSequence mIncomingName; 3094b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng /** Name used to identify outgoing calls. */ 3194b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng private final CharSequence mOutgoingName; 3294b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng /** Name used to identify missed calls. */ 3394b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng private final CharSequence mMissedName; 345619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn /** Name used to identify incoming video calls. */ 355619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn private final CharSequence mIncomingVideoName; 365619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn /** Name used to identify outgoing video calls. */ 375619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn private final CharSequence mOutgoingVideoName; 385619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn /** Name used to identify missed video calls. */ 395619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn private final CharSequence mMissedVideoName; 4094b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng /** Name used to identify voicemail calls. */ 4194b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng private final CharSequence mVoicemailName; 4294b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng /** Color used to identify new missed calls. */ 4394b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng private final int mNewMissedColor; 4494b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng /** Color used to identify new voicemail calls. */ 4594b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng private final int mNewVoicemailColor; 4694b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng 4794b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng public CallTypeHelper(Resources resources) { 4894b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng // Cache these values so that we do not need to look them up each time. 4994b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng mIncomingName = resources.getString(R.string.type_incoming); 5094b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng mOutgoingName = resources.getString(R.string.type_outgoing); 5194b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng mMissedName = resources.getString(R.string.type_missed); 525619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn mIncomingVideoName = resources.getString(R.string.type_incoming_video); 535619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn mOutgoingVideoName = resources.getString(R.string.type_outgoing_video); 545619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn mMissedVideoName = resources.getString(R.string.type_missed_video); 5594b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng mVoicemailName = resources.getString(R.string.type_voicemail); 5694b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng mNewMissedColor = resources.getColor(R.color.call_log_missed_call_highlight_color); 5794b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng mNewVoicemailColor = resources.getColor(R.color.call_log_voicemail_highlight_color); 5894b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng } 5994b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng 6094b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng /** Returns the text used to represent the given call type. */ 615619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn public CharSequence getCallTypeText(int callType, boolean isVideoCall) { 6294b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng switch (callType) { 6394b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng case Calls.INCOMING_TYPE: 645619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn if (isVideoCall) { 655619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn return mIncomingVideoName; 665619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn } else { 675619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn return mIncomingName; 685619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn } 6994b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng 7094b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng case Calls.OUTGOING_TYPE: 715619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn if (isVideoCall) { 725619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn return mOutgoingVideoName; 735619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn } else { 745619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn return mOutgoingName; 755619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn } 7694b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng 7794b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng case Calls.MISSED_TYPE: 785619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn if (isVideoCall) { 795619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn return mMissedVideoName; 805619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn } else { 815619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn return mMissedName; 825619f2ed87cb207352c0ff5578348baeb69ee202Tyler Gunn } 8394b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng 8494b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng case Calls.VOICEMAIL_TYPE: 8594b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng return mVoicemailName; 8694b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng 8794b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng default: 8866b60af960e3bf2e3b425966026e4b8ed8d01a03Yorke Lee return mMissedName; 8994b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng } 9094b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng } 9194b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng 9294b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng /** Returns the color used to highlight the given call type, null if not highlight is needed. */ 9394b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng public Integer getHighlightedColor(int callType) { 9494b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng switch (callType) { 9594b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng case Calls.INCOMING_TYPE: 9694b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng // New incoming calls are not highlighted. 9794b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng return null; 9894b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng 9994b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng case Calls.OUTGOING_TYPE: 10094b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng // New outgoing calls are not highlighted. 10194b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng return null; 10294b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng 10394b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng case Calls.MISSED_TYPE: 10494b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng return mNewMissedColor; 10594b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng 10694b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng case Calls.VOICEMAIL_TYPE: 10794b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng return mNewVoicemailColor; 10894b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng 10994b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng default: 11066b60af960e3bf2e3b425966026e4b8ed8d01a03Yorke Lee // Don't highlight calls of unknown types. They are treated as missed calls by 11166b60af960e3bf2e3b425966026e4b8ed8d01a03Yorke Lee // the rest of the UI, but since they will never be marked as read by 11266b60af960e3bf2e3b425966026e4b8ed8d01a03Yorke Lee // {@link CallLogQueryHandler}, just don't ever highlight them anyway. 11366b60af960e3bf2e3b425966026e4b8ed8d01a03Yorke Lee return null; 11494b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng } 11594b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng } 11666b60af960e3bf2e3b425966026e4b8ed8d01a03Yorke Lee 11766b60af960e3bf2e3b425966026e4b8ed8d01a03Yorke Lee public static boolean isMissedCallType(int callType) { 11866b60af960e3bf2e3b425966026e4b8ed8d01a03Yorke Lee return (callType != Calls.INCOMING_TYPE && callType != Calls.OUTGOING_TYPE && 11966b60af960e3bf2e3b425966026e4b8ed8d01a03Yorke Lee callType != Calls.VOICEMAIL_TYPE); 12066b60af960e3bf2e3b425966026e4b8ed8d01a03Yorke Lee } 12194b10b530c0fc297e2974e57e094c500d3ee6003Chiao Cheng} 122