package de.jeisfeld.augendiagnoselib.components;
import android.app.Activity;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.HashMap;
import java.util.Map;
import de.jeisfeld.augendiagnoselib.R;
import de.jeisfeld.augendiagnoselib.activities.DisplayOneActivity;
import de.jeisfeld.augendiagnoselib.activities.DisplayTwoActivity;
import de.jeisfeld.augendiagnoselib.fragments.ListPicturesForNameFragment;
import de.jeisfeld.augendiagnoselib.util.ImageSelectionAndDisplayHandler;
import de.jeisfeld.augendiagnoselib.util.imagefile.EyePhotoPair;
/**
* Array adapter class to display an eye photo pair in a list (initial display).
*/
public class ListPicturesForNameArrayAdapter extends ListPicturesForNameBaseArrayAdapter {
/**
* A map linking the TextViews containing the date to their position.
*/
private final Map<TextView, Integer> mPositionMap = new HashMap<>();
/**
* The fragment using the adapter.
*/
private ListPicturesForNameFragment mFragment;
/**
* Constructor for the adapter.
*
* @param activity The activity using the adapter.
* @param fragment The fragment using the adapter.
* @param eyePhotoPairs The array of eye photo pairs to be displayed.
*/
public ListPicturesForNameArrayAdapter(final Activity activity, final ListPicturesForNameFragment fragment,
final EyePhotoPair[] eyePhotoPairs) {
super(activity, eyePhotoPairs);
this.mFragment = fragment;
}
/**
* Default adapter to be used by the framework.
*
* @param context The Context the view is running in.
*/
public ListPicturesForNameArrayAdapter(final Context context) {
super(context);
}
@Override
protected final int getLayout() {
return R.layout.adapter_list_pictures_for_name;
}
@Override
protected final void prepareViewForSelection(@NonNull final EyeImageView view) {
ImageSelectionAndDisplayHandler.getInstance().prepareViewForFirstSelection(view);
}
/*
* When clicking on date, display the two pictures of that date.
*/
@Override
public final View getView(final int position, final View convertView, final ViewGroup parent) {
View rowView = super.getView(position, convertView, parent);
final TextView textView = (TextView) rowView.findViewById(R.id.textPictureDate);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
ImageSelectionAndDisplayHandler.getInstance().cleanSelectedViews();
if (mEyePhotoPairs[position].isComplete()) {
DisplayTwoActivity
.startActivity(ListPicturesForNameArrayAdapter.this.mActivity, mEyePhotoPairs[position]
.getRightEye().getAbsolutePath(), mEyePhotoPairs[position].getLeftEye()
.getAbsolutePath(), true);
}
else if (mEyePhotoPairs[position].getRightEye() != null) {
DisplayOneActivity.startActivity(ListPicturesForNameArrayAdapter.this.mActivity,
mEyePhotoPairs[position].getRightEye().getAbsolutePath());
}
else if (mEyePhotoPairs[position].getLeftEye() != null) {
DisplayOneActivity.startActivity(ListPicturesForNameArrayAdapter.this.mActivity,
mEyePhotoPairs[position].getLeftEye().getAbsolutePath());
}
}
});
mPositionMap.put(textView, position);
textView.setOnCreateContextMenuListener(mFragment);
return rowView;
}
/**
* Retrieve the row corresponding to a TextView displaying the date.
*
* @param view The TextView displaying the date.
* @return The row
*/
public final int getRow(final TextView view) {
return mPositionMap.get(view);
}
}