241 lines
7.1 KiB
Java
241 lines
7.1 KiB
Java
package com.safemobile.adapters;
|
|
|
|
import android.app.Activity;
|
|
import android.view.LayoutInflater;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.BaseAdapter;
|
|
import android.widget.ImageView;
|
|
import android.widget.LinearLayout;
|
|
import android.widget.TextView;
|
|
|
|
import com.safemobile.activities.AbstractRecordingsActivity;
|
|
import com.safemobile.lib.R;
|
|
import com.safemobile.lib.Recording;
|
|
import com.safemobile.lib.SM;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.ArrayList;
|
|
import java.util.Calendar;
|
|
import java.util.Date;
|
|
import java.util.Hashtable;
|
|
|
|
public class RecordingsGridViewAdapter extends BaseAdapter {
|
|
private final ArrayList<Recording> listRecordings;
|
|
private final ArrayList<Boolean> recordingExists;
|
|
private final ArrayList<Boolean> playingPositions;
|
|
private final Activity activity;
|
|
|
|
private final Hashtable<Integer, View> hash = new Hashtable<>();
|
|
|
|
public RecordingsGridViewAdapter(Activity activity, ArrayList<Recording> listRecordings, ArrayList<Boolean> recordingExists) {
|
|
super();
|
|
this.activity = activity;
|
|
this.listRecordings = listRecordings;
|
|
this.recordingExists = recordingExists;
|
|
|
|
playingPositions = new ArrayList<>();
|
|
for (int i = 0; i < recordingExists.size(); i++) {
|
|
playingPositions.add(false);
|
|
|
|
listRecordings.get(i).date = listRecordings.get(i).startGMT;
|
|
listRecordings.get(i).duration = listRecordings.get(i).endGMT - listRecordings.get(i).startGMT;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int getCount() {
|
|
return listRecordings.size();
|
|
}
|
|
|
|
@Override
|
|
public Recording getItem(int position) {
|
|
return listRecordings.get(position);
|
|
}
|
|
|
|
@Override
|
|
public long getItemId(int position) {
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
* Define Row Template
|
|
*/
|
|
public static class ViewHolder {
|
|
private LinearLayout layoutRecording;
|
|
private ImageView imageViewPlay;
|
|
private ImageView imageViewRecycle;
|
|
private TextView textViewSender;
|
|
private TextView textViewDuration;
|
|
private TextView textViewDate;
|
|
|
|
public LinearLayout getLayoutRecording() {
|
|
return layoutRecording;
|
|
}
|
|
|
|
public void setLayoutRecording(LinearLayout layoutRecording) {
|
|
this.layoutRecording = layoutRecording;
|
|
}
|
|
|
|
public ImageView getImageViewPlay() {
|
|
return imageViewPlay;
|
|
}
|
|
|
|
public void setImageViewPlay(ImageView imageViewPlay) {
|
|
this.imageViewPlay = imageViewPlay;
|
|
}
|
|
|
|
public ImageView getImageViewRecycle() {
|
|
return imageViewRecycle;
|
|
}
|
|
|
|
public void setImageViewRecycle(ImageView imageViewRecycle) {
|
|
this.imageViewRecycle = imageViewRecycle;
|
|
}
|
|
|
|
public TextView getTextViewSender() {
|
|
return textViewSender;
|
|
}
|
|
|
|
public void setTextViewSender(TextView textViewSender) {
|
|
this.textViewSender = textViewSender;
|
|
}
|
|
|
|
public TextView getTextViewDuration() {
|
|
return textViewDuration;
|
|
}
|
|
|
|
public void setTextViewDuration(TextView textViewDuration) {
|
|
this.textViewDuration = textViewDuration;
|
|
}
|
|
|
|
public TextView getTextViewDate() {
|
|
return textViewDate;
|
|
}
|
|
|
|
public void setTextViewDate(TextView textViewDate) {
|
|
this.textViewDate = textViewDate;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public View getView(final int position, View convertView, ViewGroup parent) {
|
|
final ViewHolder view;
|
|
LayoutInflater layoutInflater = activity.getLayoutInflater();
|
|
if (convertView == null) {
|
|
view = new ViewHolder();
|
|
convertView = layoutInflater.inflate(R.layout.row_recordings, null);
|
|
view.setLayoutRecording(convertView.findViewById(R.id.layoutRecording));
|
|
view.setImageViewPlay(convertView.findViewById(R.id.imageViewPlay));
|
|
view.setTextViewSender(convertView.findViewById(R.id.textViewSender));
|
|
view.setTextViewDuration(convertView.findViewById(R.id.textViewDuration));
|
|
view.setTextViewDate(convertView.findViewById(R.id.textViewDate));
|
|
view.setImageViewRecycle(convertView.findViewById(R.id.imageViewRecycle));
|
|
view.getImageViewRecycle().setVisibility(View.GONE);
|
|
convertView.setTag(view);
|
|
} else {
|
|
view = (ViewHolder) convertView.getTag();
|
|
}
|
|
|
|
hash.put(position, convertView);
|
|
|
|
/* if recording doesn't exists change background */
|
|
if (Boolean.FALSE.equals(recordingExists.get(position)))
|
|
view.getLayoutRecording().setBackgroundColor(0xFFFFFFFF);
|
|
else {
|
|
/* if recording is not playing let background to white */
|
|
if (Boolean.FALSE.equals(playingPositions.get(position)))
|
|
view.getLayoutRecording().setBackgroundColor(0xFFFFFFFF);
|
|
else
|
|
view.getLayoutRecording().setBackgroundColor(0xFF457c98);
|
|
}
|
|
|
|
/* change icon according to call type [outgoing or incoming] */
|
|
SM.Exception("REC TYPE : " + listRecordings.get(position).callType);
|
|
switch (listRecordings.get(position).callType) {
|
|
case 6:
|
|
view.getImageViewPlay().setImageResource(R.drawable.call_received_all);
|
|
break;
|
|
case 2:
|
|
view.getImageViewPlay().setImageResource(R.drawable.call_made_all);
|
|
break;
|
|
case 4:
|
|
view.getImageViewPlay().setImageResource(R.drawable.call_received);
|
|
break;
|
|
case 0:
|
|
view.getImageViewPlay().setImageResource(R.drawable.call_made);
|
|
break;
|
|
case 5:
|
|
view.getImageViewPlay().setImageResource(R.drawable.call_received_group);
|
|
break;
|
|
case 1:
|
|
view.getImageViewPlay().setImageResource(R.drawable.call_made_group);
|
|
break;
|
|
default:
|
|
view.getImageViewPlay().setImageResource(R.drawable.alert);
|
|
}
|
|
|
|
/* intercept Recycle click */
|
|
view.getImageViewRecycle().setOnClickListener(v -> {
|
|
// change the background for marked record
|
|
View view1 = hash.get(position);
|
|
ViewHolder viewHolder = null;
|
|
if (view1 != null) {
|
|
viewHolder = (ViewHolder) view1.getTag();
|
|
}
|
|
if (viewHolder != null) {
|
|
viewHolder.getLayoutRecording().setBackgroundColor(0xFF457c98);
|
|
}
|
|
((AbstractRecordingsActivity) activity).deleteSelected(position);
|
|
});
|
|
|
|
view.getTextViewSender().setText(String.format("%s -> %s", getItem(position).userWhoCalled, getItem(position).userWhoWasCalled));
|
|
view.textViewDuration.setText(String.format("[%d sec]", getItem(position).duration));
|
|
|
|
/* Add call Date */
|
|
Date date = new Date();
|
|
date.setTime(listRecordings.get(position).date * 1000);
|
|
|
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
|
|
Calendar calendar = Calendar.getInstance();
|
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
|
calendar.set(Calendar.MINUTE, 0);
|
|
calendar.set(Calendar.SECOND, 0);
|
|
calendar.set(Calendar.MILLISECOND, 0);
|
|
|
|
if (date.after(calendar.getTime()))
|
|
simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
|
|
else
|
|
simpleDateFormat = new SimpleDateFormat("MMM-dd HH:mm");
|
|
|
|
view.getTextViewDate().setText(simpleDateFormat.format(date));
|
|
|
|
return convertView;
|
|
}
|
|
|
|
/**
|
|
* Get the View for one row in the GridView
|
|
*/
|
|
public View getView(int position) {
|
|
return hash.get(position);
|
|
}
|
|
|
|
/**
|
|
* Change playing recording background
|
|
*/
|
|
public void changePlaying(int position, boolean playing) {
|
|
// change value in the vector
|
|
playingPositions.set(position, playing);
|
|
|
|
RecordingsGridViewAdapter.ViewHolder viewHolder = (RecordingsGridViewAdapter.ViewHolder) getView(position).getTag();
|
|
if (!playing)
|
|
viewHolder.getLayoutRecording().setBackgroundColor(0xFFFFFFFF);
|
|
else
|
|
viewHolder.getLayoutRecording().setBackgroundColor(0xFF457c98);
|
|
|
|
View view = hash.get(position);
|
|
// update hash
|
|
if (view != null)
|
|
view.setTag(viewHolder);
|
|
}
|
|
} |