package edu.mit.mitmobile2.shuttles;
import edu.mit.mitmobile2.R;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
public class ShuttlesStatusView extends View {
enum ShuttleStatus {
ON,
OFF,
}
enum Position {
START,
BETWEEN,
END,
}
ShuttleStatus mStatus;
Position mPosition;
public ShuttlesStatusView(Context context, AttributeSet attributes) {
super(context, attributes);
}
public void setStatus(ShuttleStatus status) {
mStatus = status;
invalidate();
}
public void setPosition(Position position) {
mPosition = position;
invalidate();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int height = MeasureSpec.getSize(heightMeasureSpec);
int width = getContext().getResources().getDimensionPixelSize(R.dimen.shuttlesStatusWidth);
setMeasuredDimension(width, height);
}
@Override
protected void onDraw(Canvas canvas) {
float width = getMeasuredWidth();
float height = getMeasuredHeight();
float lineWidth = getContext().getResources().getDimension(R.dimen.shuttlesStatusGrayWidth);
RectF lineRect = new RectF();
lineRect.left = (width - lineWidth) / 2.0f;
lineRect.right = lineRect.left + lineWidth;
lineRect.top = 0;
if (mPosition == Position.START) {
lineRect.top = height / 2.0f;
}
lineRect.bottom = height;
if (mPosition == Position.END) {
lineRect.bottom = height / 2.0f;
}
Paint paint = new Paint();
paint.setAntiAlias(true);
int gray = getContext().getResources().getColor(R.color.shuttlesStatusOffColor);
paint.setColor(gray);
canvas.drawRect(lineRect, paint);
float grayRadius = getContext().getResources().getDimension(R.dimen.shuttlesStatusGrayRadius);
canvas.drawCircle(width/2.0f, height/2.0f, grayRadius, paint);
int red = getContext().getResources().getColor(R.color.shuttlesStatusOnColor);
paint.setColor(red);
float redRadius = getContext().getResources().getDimension(R.dimen.shuttlesStatusRedRadius);
if (mStatus == ShuttleStatus.ON) {
canvas.drawCircle(width/2.0f, height/2.0f, redRadius, paint);
}
}
}