package com.papagiannis.tuberun.binders;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.widget.ImageView;
import android.widget.SimpleAdapter.ViewBinder;
import android.widget.TextView;
import com.papagiannis.tuberun.LinePresentation;
import com.papagiannis.tuberun.LineType;
import com.papagiannis.tuberun.R;
import com.papagiannis.tuberun.RouteResultsActivity;
import com.papagiannis.tuberun.plan.PartialRouteType;
public class PartialRoutesBinder implements ViewBinder {
RouteResultsActivity activity;
public PartialRoutesBinder(RouteResultsActivity activity) {
super();
this.activity = activity;
}
private boolean firstEntry=true;
private boolean lastEntry=true;
@Override
public boolean setViewValue(View view, Object o, String s) {
int id = view.getId();
switch (id) {
case R.id.images_layout:
firstEntry=s.equals("first");
lastEntry=s.equals("last");
return true;
case R.id.directions_textview:
if (s.equals("")) {
TextView tv=(TextView) view;
tv.setText("You have reached your destination.");
return true;
}
else return false;
case R.id.mot_imageview:
ImageView iv=(ImageView)view;
if (o!=null && !lastEntry) {
Integer i=(Integer) o;
Bitmap bmp = BitmapFactory.decodeResource(activity.getResources(),i);
iv.setImageBitmap(bmp);
}
else iv.setImageBitmap(null);
return true;
case R.id.start_imageview:
iv=(ImageView)view;
if (firstEntry) {
view.setVisibility(View.VISIBLE);
iv.setBackgroundColor(getImageColor(s));
}
else view.setVisibility(View.GONE);
return true;
case R.id.intermediate_imageview:
iv=(ImageView)view;
iv.setBackgroundColor(getImageColor(s));
return true;
case R.id.destination_imageview:
iv=(ImageView)view;
if (lastEntry) {
view.setVisibility(View.VISIBLE);
iv.setBackgroundColor(getImageColor(s));
}
else view.setVisibility(View.GONE);
return true;
}
return false; // continue with the text
}
public static int getImageColor(String s) {
LineType lineType=LineType.fromString(s);
PartialRouteType type;
if (lineType==LineType.ALL) type=PartialRouteType.fromString(s);
else type=PartialRouteType.TUBE;
if (type!=PartialRouteType.TUBE) return (PartialRouteType.getColor(type));
else return (LinePresentation.getBackgroundColor(LineType.fromString(s)));
}
}