/** * Copyright (C) 2010-2012 Regis Montoya (aka r3gis - www.r3gis.fr) * This file is part of CSipSimple. * * CSipSimple is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * If you own a pjsip commercial license you can also redistribute it * and/or modify it under the terms of the GNU Lesser General Public License * as an android library. * * CSipSimple is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with CSipSimple. If not, see <http://www.gnu.org/licenses/>. */ /** * This file contains relicensed code from som Apache copyright of * Copyright (C) 2011, The Android Open Source Project */ package com.csipsimple.ui.calllog; import android.content.Context; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.text.TextUtils; import android.view.View; import com.csipsimple.R; import com.csipsimple.utils.Theme; /** * Helper class to fill in the views of a call log entry. */ /* package */class CallLogListItemHelper { /** Helper for populating the details of a phone call. */ private final PhoneCallDetailsHelper mPhoneCallDetailsHelper; /** Resources to look up strings. */ private final Resources mResources; private final Theme mTheme; /** * Creates a new helper instance. * * @param phoneCallDetailsHelper used to set the details of a phone call * @param phoneNumberHelper used to process phone number */ public CallLogListItemHelper(PhoneCallDetailsHelper phoneCallDetailsHelper, Context ctxt) { mPhoneCallDetailsHelper = phoneCallDetailsHelper; mResources = ctxt.getResources(); mTheme = Theme.getCurrentTheme(ctxt); } /** * Sets the name, label, and number for a contact. * * @param views the views to populate * @param details the details of a phone call needed to fill in the data * @param isHighlighted whether to use the highlight text for the call */ public void setPhoneCallDetails(CallLogListItemViews views, PhoneCallDetails details) { mPhoneCallDetailsHelper.setPhoneCallDetails(views.phoneCallDetailsViews, details); // Call is the secondary action. configureCallSecondaryAction(views, details); views.dividerView.setVisibility(View.VISIBLE); if(mTheme != null) { mTheme.applyBackgroundDrawable(views.dividerView, "ic_vertical_divider"); } } /** Sets the secondary action to correspond to the call button. */ private void configureCallSecondaryAction(CallLogListItemViews views, PhoneCallDetails details) { views.secondaryActionView.setVisibility(View.VISIBLE); Drawable d = null; if(mTheme != null) { d = mTheme.getDrawableResource("badge_action_call"); } if(d == null) { views.secondaryActionView.setImageResource(R.drawable.ic_ab_dialer_holo_dark); }else { views.secondaryActionView.setImageDrawable(d); } views.secondaryActionView.setContentDescription(getCallActionDescription(details)); } /** Returns the description used by the call action for this phone call. */ private CharSequence getCallActionDescription(PhoneCallDetails details) { CharSequence recipient; if (!TextUtils.isEmpty(details.name)) { recipient = details.name; } else { recipient = details.number; } return mResources.getString(R.string.description_call, recipient); } }