blob: 8aea63395a989b4fcdf4486a541ab8e3fe68d17c [file] [log] [blame]
package com.savoirfairelinux.sflphone.adapters;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import com.savoirfairelinux.sflphone.R;
import com.savoirfairelinux.sflphone.fragments.HistoryFragment;
import com.savoirfairelinux.sflphone.model.HistoryEntry;
public class HistoryAdapter extends BaseAdapter {
HistoryFragment mContext;
ArrayList<HistoryEntry> dataset;
private static final String TAG = HistoryAdapter.class.getSimpleName();
private ExecutorService infos_fetcher = Executors.newCachedThreadPool();
public HistoryAdapter(HistoryFragment activity, ArrayList<HistoryEntry> history) {
mContext = activity;
dataset = history;
}
@Override
public View getView(final int pos, View convertView, ViewGroup arg2) {
View rowView = convertView;
HistoryView entryView = null;
if (rowView == null) {
// Get a new instance of the row layout view
LayoutInflater inflater = LayoutInflater.from(mContext.getActivity());
rowView = inflater.inflate(R.layout.item_history, null);
// Hold the view objects in an object
// so they don't need to be re-fetched
entryView = new HistoryView();
entryView.photo = (ImageView) rowView.findViewById(R.id.photo);
entryView.displayName = (TextView) rowView.findViewById(R.id.display_name);
entryView.duration = (TextView) rowView.findViewById(R.id.duration);
entryView.date = (TextView) rowView.findViewById(R.id.date_start);
entryView.call_button = (ImageButton) rowView.findViewById(R.id.action_call);
entryView.call_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mContext.makeNewCall(pos);
}
} );
rowView.setTag(entryView);
} else {
entryView = (HistoryView) rowView.getTag();
}
// Transfer the stock data from the data object
// to the view objects
// SipCall call = (SipCall) mCallList.values().toArray()[position];
entryView.displayName.setText(dataset.get(pos).getContact().getmDisplayName());
infos_fetcher.execute(new ContactPictureLoader(mContext.getActivity(), entryView.photo, dataset.get(pos).getContact().getId()));
entryView.date.setText(dataset.get(pos).getCalls().lastEntry().getValue().getDate("yyyy-MM-dd"));
entryView.duration.setText(dataset.get(pos).getTotalDuration());
return rowView;
}
/*********************
* ViewHolder Pattern
*********************/
public class HistoryView {
public ImageView photo;
protected TextView displayName;
protected TextView date;
public TextView duration;
private ImageButton call_button;
}
@Override
public int getCount() {
return dataset.size();
}
@Override
public HistoryEntry getItem(int pos) {
return dataset.get(pos);
}
@Override
public long getItemId(int arg0) {
return 0;
}
public void clear() {
dataset.clear();
}
public void addAll(ArrayList<HashMap<String, String>> history) {
// dataset.addAll(history);
}
}