/**
*
*/
package org.commcare.android.adapters;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.commcare.dalvik.R;
import org.commcare.dalvik.application.CommCareApplication;
import android.content.Context;
import android.database.Cursor;
import android.database.DataSetObserver;
import android.provider.CallLog.Calls;
import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.TextView;
/**
* @author ctsims
*
*/
public class CallRecordAdapter implements ListAdapter {
Context context;
Cursor cursor;
List<Integer> enabled = new ArrayList<Integer>();
public CallRecordAdapter(Context context, Cursor c) {
this.context = context;
this.cursor = c;
if(c.moveToFirst()) {
while(!c.isAfterLast()) {
int index = cursor.getColumnIndex(Calls.NUMBER);
if(index != -1) {
String num = cursor.getString(index);
if(num != null) {
String name = CommCareApplication._().getCallListener().getCaller(num);
if(name != null) {
enabled.add(c.getPosition());
}
}
}
c.moveToNext();
}
}
}
/* (non-Javadoc)
* @see android.widget.ListAdapter#areAllItemsEnabled()
*/
public boolean areAllItemsEnabled() {
return true;
}
/* (non-Javadoc)
* @see android.widget.ListAdapter#isEnabled(int)
*/
public boolean isEnabled(int position) {
return true;
}
/* (non-Javadoc)
* @see android.widget.Adapter#getCount()
*/
public int getCount() {
return enabled.size();
}
/* (non-Javadoc)
* @see android.widget.Adapter#getItem(int)
*/
public Object getItem(int position) {
cursor.moveToPosition(enabled.get(position));
return cursor.getString(cursor.getColumnIndex(Calls.NUMBER));
}
/* (non-Javadoc)
* @see android.widget.Adapter#getItemId(int)
*/
public long getItemId(int position) {
return enabled.get(position);
}
/* (non-Javadoc)
* @see android.widget.Adapter#getItemViewType(int)
*/
public int getItemViewType(int position) {
return 0;
}
/* (non-Javadoc)
* @see android.widget.Adapter#getView(int, android.view.View, android.view.ViewGroup)
*/
public View getView(int position, View convertView, ViewGroup parent) {
cursor.moveToPosition(enabled.get(position));
LayoutInflater inflater = LayoutInflater.from(context);
View cre = inflater.inflate(R.layout.call_record_entry, null);
TextView name = (TextView)cre.findViewById(R.id.call_log_name);
TextView number = (TextView)cre.findViewById(R.id.call_log_number);
TextView when = (TextView)cre.findViewById(R.id.call_log_when);
ImageView icon = (ImageView)cre.findViewById(R.id.call_status_icon);
String phoneNumber = cursor.getString(cursor.getColumnIndex(Calls.NUMBER));
String callerName = CommCareApplication._().getCallListener().getCaller(phoneNumber);
name.setText(callerName);
number.setText(phoneNumber);
when.setText(DateUtils.formatSameDayTime(new Date(cursor.getLong(cursor.getColumnIndex(Calls.DATE))).getTime(), new Date().getTime(), DateFormat.DEFAULT, DateFormat.DEFAULT));
int iconResource = android.R.drawable.stat_sys_phone_call;
switch (Integer.parseInt(cursor.getString(
cursor.getColumnIndex(Calls.TYPE))))
{
case 1: iconResource = android.R.drawable.sym_call_incoming;
break;
case 2: iconResource = android.R.drawable.sym_call_outgoing;
break;
case 3: iconResource = android.R.drawable.sym_call_missed;
break;
}
icon.setImageResource(iconResource);
return cre;
}
/* (non-Javadoc)
* @see android.widget.Adapter#getViewTypeCount()
*/
public int getViewTypeCount() {
return 1;
}
/* (non-Javadoc)
* @see android.widget.Adapter#hasStableIds()
*/
public boolean hasStableIds() {
return true;
}
/* (non-Javadoc)
* @see android.widget.Adapter#isEmpty()
*/
public boolean isEmpty() {
return this.getCount() > 0;
}
/* (non-Javadoc)
* @see android.widget.Adapter#registerDataSetObserver(android.database.DataSetObserver)
*/
public void registerDataSetObserver(DataSetObserver observer) {
}
/* (non-Javadoc)
* @see android.widget.Adapter#unregisterDataSetObserver(android.database.DataSetObserver)
*/
public void unregisterDataSetObserver(DataSetObserver observer) {
}
}