/**
* 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);
}
}