Android Open Source - SipgateInfo Call List Adapter






From Project

Back to project page SipgateInfo.

License

The source code is released under:

GNU General Public License

If you think the Android project SipgateInfo listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package net.skweez.sipgate.activity;
/*  w  w w  .j  a  v  a 2s  .  c o m*/
import java.util.HashMap;
import java.util.Map;

import net.skweez.sipgate.CallUtils;
import net.skweez.sipgate.R;
import net.skweez.sipgate.api.Call;
import net.skweez.sipgate.db.DataSource;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract.PhoneLookup;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CallListAdapter extends CursorAdapter {

  private static class ViewHolder {
    ImageView callStatusIcon;
    TextView numberText;
    TextView dateText;
  }

  private final LayoutInflater inflater;

  /** Used to resolve contact names for phone numbers. */
  private final ContentResolver contentResolver;

  /** Holds cached names for phone numbers. */
  private final Map<String, String> contactNamesCache;

  public CallListAdapter(Context context, Cursor cursor) {
    super(context, cursor);
    inflater = LayoutInflater.from(context);
    contentResolver = context.getContentResolver();
    contactNamesCache = new HashMap<String, String>();
  }

  @Override
  public View newView(Context context, Cursor cursor, ViewGroup parent) {
    View view = inflater.inflate(R.layout.call_list_item, null);
    CallListAdapter.ViewHolder holder = new CallListAdapter.ViewHolder();
    holder.numberText = (TextView) view.findViewById(R.id.numberText);
    holder.dateText = (TextView) view.findViewById(R.id.dateText);
    holder.callStatusIcon = (ImageView) view
        .findViewById(R.id.callStatusIcon);
    view.setTag(holder);
    return view;
  }

  @Override
  public void bindView(View view, Context context, Cursor cursor) {
    CallListAdapter.ViewHolder holder = (CallListAdapter.ViewHolder) view
        .getTag();
    Call call = DataSource.getCallFromCursor(cursor);
    holder.numberText.setText(resolveName(call.getRemoteNumber()));
    holder.dateText.setText(call.getTimestamp().toString());
    holder.callStatusIcon.setImageResource(CallUtils.getImage(call
        .getStatus()));
  }

  /**
   * Returns the display name for a given phone number.
   * 
   * @param number
   *            The phone number to look up.
   * @return The first name for the given number, if more than one exist. The
   *         <code>number</code> if the name was not found.
   */
  private String resolveName(String number) {

    String name = contactNamesCache.get(number);
    if (name != null) {
      return name;
    }

    String[] projection = new String[] { PhoneLookup.DISPLAY_NAME };

    Uri contactUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,
        Uri.encode(number));

    Cursor c = contentResolver.query(contactUri, projection, null, null,
        null);

    if (c.moveToFirst()) {
      name = c.getString(c.getColumnIndex(PhoneLookup.DISPLAY_NAME));
      contactNamesCache.put(number, name);
      return name;
    }

    // return the original number if no match was found
    return number;
  }

  public Call getCall(int position) {
    return DataSource.getCallFromCursor((Cursor) getItem(position));
  }
}




Java Source Code List

net.skweez.sipgate.CallUtils.java
net.skweez.sipgate.PreferencesAuthenticator.java
net.skweez.sipgate.SipgateApplication.java
net.skweez.sipgate.activity.AccountInfoAdapter.java
net.skweez.sipgate.activity.CallListAdapter.java
net.skweez.sipgate.activity.MainActivity.java
net.skweez.sipgate.activity.SetupActivity.java
net.skweez.sipgate.api.AuthenticationException.java
net.skweez.sipgate.api.Call.java
net.skweez.sipgate.api.ECallStatus.java
net.skweez.sipgate.api.ISipgateAPI.java
net.skweez.sipgate.api.Price.java
net.skweez.sipgate.api.SipgateException.java
net.skweez.sipgate.api.UserName.java
net.skweez.sipgate.api.UserUri.java
net.skweez.sipgate.api.xmlrpc.SipgateUriHelper.java
net.skweez.sipgate.api.xmlrpc.SipgateXmlRpcImpl.java
net.skweez.sipgate.db.DataSource.java
net.skweez.sipgate.db.DatabaseHelper.java
net.skweez.sipgate.model.AccountInfo.java
net.skweez.sipgate.service.QueryResultReceiver.java
net.skweez.sipgate.service.QueryService.java