alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 1 | package com.savoirfairelinux.sflphone.adapters; |
| 2 | |
alision | 73424b6 | 2013-04-26 11:49:18 -0400 | [diff] [blame] | 3 | import java.text.SimpleDateFormat; |
alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 4 | import java.util.ArrayList; |
alision | 73424b6 | 2013-04-26 11:49:18 -0400 | [diff] [blame] | 5 | import java.util.Calendar; |
alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 6 | import java.util.HashMap; |
alision | 73424b6 | 2013-04-26 11:49:18 -0400 | [diff] [blame] | 7 | import java.util.Locale; |
| 8 | import java.util.TimeZone; |
alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 9 | |
| 10 | import android.app.Activity; |
| 11 | import android.content.Context; |
alision | 73424b6 | 2013-04-26 11:49:18 -0400 | [diff] [blame] | 12 | import android.util.Log; |
alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 13 | import android.view.LayoutInflater; |
| 14 | import android.view.View; |
| 15 | import android.view.ViewGroup; |
| 16 | import android.widget.BaseAdapter; |
| 17 | import android.widget.ImageView; |
| 18 | import android.widget.TextView; |
| 19 | |
alision | 73424b6 | 2013-04-26 11:49:18 -0400 | [diff] [blame] | 20 | import com.savoirfairelinux.sflphone.R; |
| 21 | import com.savoirfairelinux.sflphone.service.ServiceConstants; |
| 22 | |
| 23 | public class HistoryAdapter extends BaseAdapter { |
alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 24 | |
| 25 | Context mContext; |
| 26 | ArrayList<HashMap<String, String>> dataset; |
alision | 73424b6 | 2013-04-26 11:49:18 -0400 | [diff] [blame] | 27 | private static final String TAG = HistoryAdapter.class.getSimpleName(); |
alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 28 | |
| 29 | public HistoryAdapter(Activity activity, ArrayList<HashMap<String, String>> entries) { |
| 30 | mContext = activity; |
| 31 | dataset = entries; |
| 32 | } |
| 33 | |
| 34 | @Override |
| 35 | public View getView(int pos, View convertView, ViewGroup arg2) { |
| 36 | View rowView = convertView; |
| 37 | HistoryView entryView = null; |
| 38 | |
| 39 | if (rowView == null) { |
| 40 | // Get a new instance of the row layout view |
| 41 | LayoutInflater inflater = LayoutInflater.from(mContext); |
alision | 73424b6 | 2013-04-26 11:49:18 -0400 | [diff] [blame] | 42 | rowView = inflater.inflate(R.layout.item_history, null); |
alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 43 | |
| 44 | // Hold the view objects in an object |
| 45 | // so they don't need to be re-fetched |
| 46 | entryView = new HistoryView(); |
| 47 | entryView.displayName = (TextView) rowView.findViewById(R.id.display_name); |
alision | 73424b6 | 2013-04-26 11:49:18 -0400 | [diff] [blame] | 48 | entryView.duration = (TextView) rowView.findViewById(R.id.duration); |
| 49 | entryView.date = (TextView) rowView.findViewById(R.id.date_start); |
alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 50 | |
| 51 | rowView.setTag(entryView); |
| 52 | } else { |
| 53 | entryView = (HistoryView) rowView.getTag(); |
| 54 | } |
| 55 | |
| 56 | // Transfer the stock data from the data object |
| 57 | // to the view objects |
| 58 | |
| 59 | // SipCall call = (SipCall) mCallList.values().toArray()[position]; |
| 60 | entryView.displayName.setText(dataset.get(pos).get(ServiceConstants.HISTORY_ACCOUNT_ID_KEY)); |
alision | 73424b6 | 2013-04-26 11:49:18 -0400 | [diff] [blame] | 61 | |
| 62 | |
| 63 | long timestampEnd = Long.parseLong(dataset.get(pos).get(ServiceConstants.HISTORY_TIMESTAMP_STOP_KEY)); |
| 64 | long timestampStart = Long.parseLong(dataset.get(pos).get(ServiceConstants.HISTORY_TIMESTAMP_START_KEY)); |
| 65 | entryView.date.setText(getDate(timestampStart,"yyyy-MM-dd")); |
| 66 | |
| 67 | long duration = timestampEnd - timestampStart; |
| 68 | entryView.duration.setText("Duration: "+duration); |
alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 69 | |
| 70 | return rowView; |
| 71 | |
| 72 | } |
alision | 73424b6 | 2013-04-26 11:49:18 -0400 | [diff] [blame] | 73 | |
| 74 | private String getDate(long timeStamp, String format) { |
| 75 | Calendar cal = Calendar.getInstance(); |
| 76 | TimeZone tz = cal.getTimeZone(); |
| 77 | SimpleDateFormat objFormatter = new SimpleDateFormat(format, Locale.CANADA); |
| 78 | objFormatter.setTimeZone(tz); |
| 79 | |
| 80 | Calendar objCalendar = Calendar.getInstance(tz); |
| 81 | objCalendar.setTimeInMillis(timeStamp*1000); |
| 82 | String result = objFormatter.format(objCalendar.getTime()); |
| 83 | objCalendar.clear(); |
| 84 | return result; |
| 85 | } |
| 86 | |
alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 87 | /********************* |
| 88 | * ViewHolder Pattern |
| 89 | *********************/ |
| 90 | public class HistoryView { |
alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 91 | protected TextView displayName; |
alision | 73424b6 | 2013-04-26 11:49:18 -0400 | [diff] [blame] | 92 | protected TextView date; |
| 93 | public TextView duration; |
alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 94 | } |
alision | 73424b6 | 2013-04-26 11:49:18 -0400 | [diff] [blame] | 95 | |
alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 96 | @Override |
| 97 | public int getCount() { |
alision | 73424b6 | 2013-04-26 11:49:18 -0400 | [diff] [blame] | 98 | |
alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 99 | return dataset.size(); |
| 100 | } |
| 101 | |
| 102 | @Override |
| 103 | public HashMap<String, String> getItem(int pos) { |
| 104 | return dataset.get(pos); |
| 105 | } |
| 106 | |
| 107 | @Override |
| 108 | public long getItemId(int arg0) { |
| 109 | return 0; |
| 110 | } |
| 111 | |
| 112 | public void clear() { |
alision | 73424b6 | 2013-04-26 11:49:18 -0400 | [diff] [blame] | 113 | dataset.clear(); |
| 114 | |
alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 115 | } |
| 116 | |
| 117 | public void addAll(ArrayList<HashMap<String, String>> history) { |
| 118 | dataset.addAll(history); |
alision | 73424b6 | 2013-04-26 11:49:18 -0400 | [diff] [blame] | 119 | |
alision | e2a38e1 | 2013-04-25 14:20:20 -0400 | [diff] [blame] | 120 | } |
| 121 | |
| 122 | } |