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