2010-12-28 04:11:10 -05:00
|
|
|
package com.fsck.k9.view;
|
|
|
|
|
2012-09-10 11:01:51 -04:00
|
|
|
import android.graphics.Paint;
|
2010-12-28 04:11:10 -05:00
|
|
|
import android.graphics.Path;
|
2012-09-20 23:30:52 -04:00
|
|
|
import android.graphics.RectF;
|
2010-12-28 04:11:10 -05:00
|
|
|
import android.graphics.drawable.ShapeDrawable;
|
|
|
|
import android.graphics.drawable.shapes.PathShape;
|
|
|
|
|
2011-02-06 17:09:48 -05:00
|
|
|
public class ColorChip {
|
2012-09-21 16:44:39 -04:00
|
|
|
public static final Path CIRCULAR = new Path();
|
|
|
|
public static final Path LEFT_POINTING = new Path();
|
|
|
|
public static final Path RIGHT_POINTING = new Path();
|
|
|
|
public static final Path STAR = new Path();
|
|
|
|
public static final Path CHECKMARK = new Path();
|
2010-12-28 04:11:10 -05:00
|
|
|
|
|
|
|
|
2012-09-21 16:44:39 -04:00
|
|
|
static {
|
2012-09-20 23:30:52 -04:00
|
|
|
|
2012-09-21 16:44:39 -04:00
|
|
|
CIRCULAR.addCircle(8,8,7f,Path.Direction.CW);
|
|
|
|
CIRCULAR.close();
|
|
|
|
|
2012-09-24 19:25:34 -04:00
|
|
|
RIGHT_POINTING.addArc(new RectF(1f,1f,15f,15f) , 90, 180);
|
|
|
|
RIGHT_POINTING.lineTo(15f,8f);
|
2012-09-21 16:44:39 -04:00
|
|
|
RIGHT_POINTING.lineTo(8f, 15f);
|
|
|
|
RIGHT_POINTING.close();
|
|
|
|
|
2012-09-24 19:25:34 -04:00
|
|
|
LEFT_POINTING.addArc(new RectF(1f,1f,15f,15f) , 270, 180);
|
|
|
|
LEFT_POINTING.moveTo(8f, 1f);
|
|
|
|
LEFT_POINTING.lineTo(0f,8f);
|
2012-09-21 16:44:39 -04:00
|
|
|
LEFT_POINTING.lineTo(8f, 15f);
|
|
|
|
LEFT_POINTING.close();
|
|
|
|
|
|
|
|
STAR.moveTo(8f,0f);
|
|
|
|
STAR.lineTo(11f,5f);
|
|
|
|
STAR.lineTo(16f,6f);
|
|
|
|
STAR.lineTo(12f,10f);
|
|
|
|
STAR.lineTo(14f,16f);
|
|
|
|
STAR.lineTo(8f,13f);
|
|
|
|
STAR.lineTo(2f,16f);
|
|
|
|
STAR.lineTo(4f,10f);
|
|
|
|
STAR.lineTo(0f,6f);
|
|
|
|
STAR.lineTo(5f,5f);
|
|
|
|
STAR.lineTo(8f,0f);
|
|
|
|
STAR.close();
|
|
|
|
|
2012-09-24 19:25:34 -04:00
|
|
|
CHECKMARK.moveTo(1f,10f);
|
|
|
|
CHECKMARK.lineTo(6f,14f);
|
|
|
|
CHECKMARK.lineTo(15f,2f);
|
|
|
|
|
2012-09-20 23:30:52 -04:00
|
|
|
}
|
2010-12-28 04:11:10 -05:00
|
|
|
|
|
|
|
private ShapeDrawable mDrawable;
|
|
|
|
|
2012-09-20 23:30:52 -04:00
|
|
|
|
2012-09-21 16:44:39 -04:00
|
|
|
public ColorChip(int color, boolean messageRead, Path shape) {
|
|
|
|
|
|
|
|
mDrawable = new ShapeDrawable(new PathShape(shape, 16f, 16f));
|
2011-01-06 11:55:08 -05:00
|
|
|
|
2012-09-21 17:27:38 -04:00
|
|
|
if (shape.equals(CHECKMARK)) {
|
|
|
|
mDrawable.getPaint().setStrokeWidth(3);
|
|
|
|
} else {
|
|
|
|
mDrawable.getPaint().setStrokeWidth(1);
|
|
|
|
}
|
2012-09-10 11:01:51 -04:00
|
|
|
if (messageRead) {
|
|
|
|
// Read messages get an outlined circle
|
|
|
|
mDrawable.getPaint().setStyle(Paint.Style.STROKE);
|
2012-09-24 19:25:34 -04:00
|
|
|
} else {
|
|
|
|
// Unread messages get filled, while retaining the outline, so that they stay the same size
|
|
|
|
mDrawable.getPaint().setStyle(Paint.Style.FILL_AND_STROKE);
|
|
|
|
|
2012-09-10 11:01:51 -04:00
|
|
|
}
|
2011-01-06 11:55:08 -05:00
|
|
|
mDrawable.getPaint().setColor(color);
|
2010-12-28 04:11:10 -05:00
|
|
|
|
|
|
|
|
|
|
|
}
|
2011-01-06 11:55:08 -05:00
|
|
|
|
2011-02-06 17:09:48 -05:00
|
|
|
public ShapeDrawable drawable() {
|
2010-12-28 04:11:10 -05:00
|
|
|
return mDrawable;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|