blob: 628d6cb068bc0c2b6d3da4d1a4e8cac011cff955 [file] [log] [blame]
alisione2a38e12013-04-25 14:20:20 -04001package com.savoirfairelinux.sflphone.adapters;
2
alision73424b62013-04-26 11:49:18 -04003import java.text.SimpleDateFormat;
alisione2a38e12013-04-25 14:20:20 -04004import java.util.ArrayList;
alision73424b62013-04-26 11:49:18 -04005import java.util.Calendar;
alisione2a38e12013-04-25 14:20:20 -04006import java.util.HashMap;
alision73424b62013-04-26 11:49:18 -04007import java.util.Locale;
8import java.util.TimeZone;
alision2ec64f92013-06-17 17:28:58 -04009import java.util.concurrent.ExecutorService;
10import java.util.concurrent.Executors;
alisione2a38e12013-04-25 14:20:20 -040011
12import android.app.Activity;
13import android.content.Context;
alision73424b62013-04-26 11:49:18 -040014import android.util.Log;
alisione2a38e12013-04-25 14:20:20 -040015import android.view.LayoutInflater;
16import android.view.View;
alision2ec64f92013-06-17 17:28:58 -040017import android.view.View.OnClickListener;
alisione2a38e12013-04-25 14:20:20 -040018import android.view.ViewGroup;
19import android.widget.BaseAdapter;
alision2ec64f92013-06-17 17:28:58 -040020import android.widget.ImageButton;
alisione2a38e12013-04-25 14:20:20 -040021import android.widget.ImageView;
22import android.widget.TextView;
23
alision73424b62013-04-26 11:49:18 -040024import com.savoirfairelinux.sflphone.R;
alision2ec64f92013-06-17 17:28:58 -040025import com.savoirfairelinux.sflphone.fragments.HistoryFragment;
26import com.savoirfairelinux.sflphone.model.HistoryEntry;
alision73424b62013-04-26 11:49:18 -040027import com.savoirfairelinux.sflphone.service.ServiceConstants;
28
29public class HistoryAdapter extends BaseAdapter {
alisione2a38e12013-04-25 14:20:20 -040030
alision2ec64f92013-06-17 17:28:58 -040031 HistoryFragment mContext;
32 ArrayList<HistoryEntry> dataset;
alision73424b62013-04-26 11:49:18 -040033 private static final String TAG = HistoryAdapter.class.getSimpleName();
alision2ec64f92013-06-17 17:28:58 -040034 private ExecutorService infos_fetcher = Executors.newCachedThreadPool();
alisione2a38e12013-04-25 14:20:20 -040035
alision2ec64f92013-06-17 17:28:58 -040036
37
38 public HistoryAdapter(HistoryFragment activity, ArrayList<HistoryEntry> history) {
alisione2a38e12013-04-25 14:20:20 -040039 mContext = activity;
alision2ec64f92013-06-17 17:28:58 -040040 dataset = history;
alisione2a38e12013-04-25 14:20:20 -040041 }
42
43 @Override
alision2ec64f92013-06-17 17:28:58 -040044 public View getView(final int pos, View convertView, ViewGroup arg2) {
alisione2a38e12013-04-25 14:20:20 -040045 View rowView = convertView;
46 HistoryView entryView = null;
47
48 if (rowView == null) {
49 // Get a new instance of the row layout view
alision2ec64f92013-06-17 17:28:58 -040050 LayoutInflater inflater = LayoutInflater.from(mContext.getActivity());
alision73424b62013-04-26 11:49:18 -040051 rowView = inflater.inflate(R.layout.item_history, null);
alisione2a38e12013-04-25 14:20:20 -040052
53 // Hold the view objects in an object
54 // so they don't need to be re-fetched
55 entryView = new HistoryView();
alision2ec64f92013-06-17 17:28:58 -040056 entryView.photo = (ImageView) rowView.findViewById(R.id.photo);
alisione2a38e12013-04-25 14:20:20 -040057 entryView.displayName = (TextView) rowView.findViewById(R.id.display_name);
alision73424b62013-04-26 11:49:18 -040058 entryView.duration = (TextView) rowView.findViewById(R.id.duration);
59 entryView.date = (TextView) rowView.findViewById(R.id.date_start);
alision2ec64f92013-06-17 17:28:58 -040060 entryView.call_button = (ImageButton) rowView.findViewById(R.id.action_call);
61 entryView.call_button.setOnClickListener(new OnClickListener() {
62
63 @Override
64 public void onClick(View v) {
65 mContext.makeNewCall(pos);
66
67 }
68 } );
alisione2a38e12013-04-25 14:20:20 -040069 rowView.setTag(entryView);
70 } else {
71 entryView = (HistoryView) rowView.getTag();
72 }
73
74 // Transfer the stock data from the data object
75 // to the view objects
76
77// SipCall call = (SipCall) mCallList.values().toArray()[position];
alision2ec64f92013-06-17 17:28:58 -040078 entryView.displayName.setText(dataset.get(pos).getContact().getmDisplayName());
79
80 infos_fetcher.execute(new ContactPictureLoader(mContext.getActivity(), entryView.photo, dataset.get(pos).getContact().getId()));
alision73424b62013-04-26 11:49:18 -040081
82
alision2ec64f92013-06-17 17:28:58 -040083
84 entryView.date.setText(dataset.get(pos).getCalls().lastEntry().getValue().getDate("yyyy-MM-dd"));
85 entryView.duration.setText(dataset.get(pos).getTotalDuration());
86
alisione2a38e12013-04-25 14:20:20 -040087
88 return rowView;
89
90 }
alision73424b62013-04-26 11:49:18 -040091
alision2ec64f92013-06-17 17:28:58 -040092
alision73424b62013-04-26 11:49:18 -040093
alisione2a38e12013-04-25 14:20:20 -040094 /*********************
95 * ViewHolder Pattern
96 *********************/
97 public class HistoryView {
alision2ec64f92013-06-17 17:28:58 -040098 public ImageView photo;
alisione2a38e12013-04-25 14:20:20 -040099 protected TextView displayName;
alision73424b62013-04-26 11:49:18 -0400100 protected TextView date;
101 public TextView duration;
alision2ec64f92013-06-17 17:28:58 -0400102 private ImageButton call_button;
alisione2a38e12013-04-25 14:20:20 -0400103 }
alision73424b62013-04-26 11:49:18 -0400104
alisione2a38e12013-04-25 14:20:20 -0400105 @Override
106 public int getCount() {
alision73424b62013-04-26 11:49:18 -0400107
alisione2a38e12013-04-25 14:20:20 -0400108 return dataset.size();
109 }
110
111 @Override
alision2ec64f92013-06-17 17:28:58 -0400112 public HistoryEntry getItem(int pos) {
alisione2a38e12013-04-25 14:20:20 -0400113 return dataset.get(pos);
114 }
115
116 @Override
117 public long getItemId(int arg0) {
118 return 0;
119 }
120
121 public void clear() {
alision73424b62013-04-26 11:49:18 -0400122 dataset.clear();
123
alisione2a38e12013-04-25 14:20:20 -0400124 }
125
126 public void addAll(ArrayList<HashMap<String, String>> history) {
alision2ec64f92013-06-17 17:28:58 -0400127// dataset.addAll(history);
alision73424b62013-04-26 11:49:18 -0400128
alisione2a38e12013-04-25 14:20:20 -0400129 }
130
131}